一、Linux的登陆流程
login:
用户名:每个用户名都有一个用户ID(用户标识符),计算机处理的就是用户ID(数字)而不是用户名(字符),。
认证机制:Authentication,比如密码或者其他生物识别技术
授权:Authorization,资源访问的权限授权。但是授权不代表权限可以滥用,因此需要审计。
审计:Audition(通过日志)。
登陆成功后,进入prompt,命令提示符界面,因此需要输入命令来执行程序。这些命令既可以是二进制程序也可以是脚本文件。对于内核而言,严格区分两者不同。一般情况,一个可执行程序文件,必须有程序的执行入口。一般这个二进制文件开始处,有几个特殊字符,我们称为程序的magic number(魔数)。
二、命令
1、命令格式
command options arguments
选项是用来修改命令的执行特性,它有两种格式:短选项和长选项。其中,短选项可以合并。而且,有些选项是可以带参数的。
参数指定命令的作用对象。
2、命令类型
内置命令(shell内置):bash内部的基本实现管理功能的命令,不同的shell内置不同的命令,一般都有cd 等。
外部命令:在文件系统的某个路径下有一个与命令名称相对应的可执行文件,比如ls,su等。虽然执行命令都应该指定其所在路径,但是由于环境变量的存在,所以不必指定其路径,直接去PATH中查找路径下,是否拥有该条命令,因此直接使用ls su就可以了。当然,如果执行一条命令就去查找环境变量,会特别慢,因此第一次查找后,会在内存的缓存中保存该命令和其路径,使用hash命令可以查看,hash保存的键值对,查找时间复杂度O(1)。
可以用type来显示指定命令属于哪种类型。
hao@hao:~$
which
ls
/bin/
ls
hao@hao:~$
which
su
/bin/
su
hao@hao:~$
which
cd
这里的3,1,1表示命中的次数
hao@hao:~
$
hash
?戒腑 ?
戒护
3
/usr/bin/
which
1
/usr/bin/
sudo
1
/usr/bin/printenv
3、常用命令:
ls: 显示文件目录及属性(在文件及目录专门讲)
pwd: 显示当前目录
root@hao:/home/hao#
pwd
/home/hao
cd: change directory切换目录。家目录(Home Directory),也叫主目录,
cd ,不加参数可以直接回到家目录,家目录用~表示.
cd ~ username,可以直接回到某个用户的家目录。
cd - 在当前目录和前一次所在目录来回切换
root@hao:/home/hao#
ls
/
bin cdrom etc initrd.img lost
+
found mnt proc run selinux sys usr vmlinuz
boot dev home lib media opt root sbin srv tmp var
root@hao:
/home/hao#
cd
/
usr
root@hao
:
/usr#
root@hao:
/home/hao#
cd
/usr
root@hao:
/usr#
cd
root@hao:
~#
pwd
/root
root@hao:~#
cd
~
hao
root@hao:/home/hao#
date: 显示当前时间
4、环境变量
环境变量是命名的内存空间,变量声明的过程就是向内存请求空间的过程,向内存空间放置数据的过程叫做赋值。
hao@hao:~
$
printenv
SHELL
=/bin/
bash
TERM
=
xterm
XDG_SESSION_COOKIE
=42b11f1fd75eaec16fec907e00000020-
1413373884.792806
-
1786291659
HUSHLOGIN
=
FALSE
USER
=
hao
LS_COLORS
=rs=
0
:di=
01
;
34
:
ln
=
01
;
36
:mh=
00
:pi=
40
;
33
:so=
01
;
。。。
MAIL
=/var/mail/
hao
PATH
=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/
games
PWD
=/home/
hao
LANG
=
en_US
SHLVL
=
1
HOME
=/home/
hao
LANGUAGE
=
zh_CN:zh
LOGNAME
=
hao
LESSOPEN
=| /usr/bin/lesspipe %
s
LESSCLOSE
=/usr/bin/lesspipe %s %
s
_
=/usr/bin/printenv
5、使用帮助
对于内部命令,可以使用help command
对于外部命令,可以使用command --help 获取简要帮助信息。
当然无论内部还是外部命令,可以通过man命令查看命令使用手册,比如man ls,可以打开命令使用手册。对于内部命令,不是man的内部命令,而是man的这个内部命令所属的shell,如man cd,会显示bashell的,因此内部命令很少使用man命令。
man:分章节,8个章节。默认显示第一个出现的章节(不一定是第一章),可以通过whatis command 来查看命令出现的章节。
hao@hao:~$
whatis
ls
whatis: can
'
t set the locale; make sure $LC_* and $LANG are correct
ls
(
1
) - list directory contents
root@hao:~
#
whatis
read
read (
2
) - read from a
file
descriptor
1:用户命令 (/bin,/usr/bin,usr/local/bin)2:系统调用 3:库调用 4:设备文件 5:文件格式(解释被指文件的语法) 6:游戏 7:杂项
8:管理命令(/sbin,/usr/sbin,/usr/local/sbin)
DATE(
1
) User Commands DATE(
1
)
NAME
date
- print or set the system
date
and
time
SYNOPSIS
date
[OPTION]... [+
FORMAT]
date
[-u|--utc|--
universal] [MMDDhhmm[[CC]YY][.ss]]
DESCRIPTION
Display the current
time
in
the given FORMAT, or set the system
date
.
-d, --
date
=
STRING
display
time
described by STRING, not `now
'
-f, --
file
=
DATEFILE
like
--
date
once
for
each line of DATEFILE
...
如/etc/passwd文件保存的是用户的情况,man 5 passwd 便可以看该文件的语法。
root@hao:~#
cat
/etc/
passwd
root:x:
0
:
0
:root:/root:/bin/
bash
daemon:x:
1
:
1
:daemon:/usr/sbin:/bin/
sh
bin:x:
2
:
2
:bin:/bin:/bin/
sh
...
root@hao:
~#
man
5
passwd

