2.1 Linux基础介绍
2.1.1 用户和用户组管理
1.用户管理
在Linux系统中,用户是分角色的。角色不同,权限和所完成的任务也不同。值得注意的是,用户是通过UID来识别的,用户的UID是全局唯一的。Linux系统中的用户可分为3类,具体如图2-1所示。
图2-1 Linux系统中用户的三类角色
(1)添加用户
若向Linux系统中添加一个用户,则使用useradd命令。
语法:
useradd 选项 用户名
参数说明:
选项:
· -c:comment,指定一段注释性描述。
· -d:目录,指定用户主目录,若此目录不存在,则同时使用-m选项,可以创建主目录。
· -g:用户组,指定用户所属的用户组。
· -G:用户组,指定用户所属的附加组。
· -s:Shell文件,指定用户登录Shell。
· -u:用户号,指定用户的用户号,若同时有-o选项,则可以重复使用其他用户的标识号。
用户名:指定新账号的登录名。
示例:
# useradd –d /usr/dataxiong-m dataxiong
此命令创建了一个用户dataxiong,其中-d和-m选项用来为登录名dataxiong产生一个主目录/usr/dataxiong(/usr为默认的用户主目录所在的父目录)。
# useradd -s /bin/sh -g group –G adm,root xiong
此命令新建了一个用户xiong,该用户的登录Shell是/bin/sh,它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。
(2)删除用户
若一个用户的账号不再使用,则可以将该用户账号从Linux系统中删除。删除用户账号就是要将/etc/passwd等系统文件中的该用户记录删除,必要时还需删除用户的主目录。要删除一个已有的用户账号,使用userdel命令。
语法:
userdel 选项 用户名
参数说明:
选项:常用的选项是-r,其作用是把用户的主目录一起删除。
用户名:指定删除用户的登录名。
示例:
# userdel -r dataxiong
此命令删除用户dataxiong在系统文件中(主要是/etc/passwd、/etc/shadow、/etc/group等)的记录,同时删除用户的主目录。
(3)修改用户
修改用户的账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录Shell等。要修改已有用户的信息,使用usermod命令。
语法:
usermod 选项 用户名
参数说明:
选项:常用的选项包括-c、-d、-m、-g、-G、-s、-u以及-o等,这些选项的意义与useradd命令中的选项一样,可以为用户指定新的资源值。此外,有些系统可以使用选项:-l新用户名,这个选项指定一个新的账号,即将原来的用户名改为新的用户名。
用户名:指定修改用户的登录名。
示例:
# usermod -s /bin/ksh -d /home/z –g developer dataxiong
此命令将用户dataxiong的登录Shell修改为ksh,主目录改为/home/z,用户组改为developer。
(4)用户口令管理
用户管理的一项重要内容是用户口令的管理。用户账号刚创建时无口令,但是被系统锁定无法使用,必须为其指定口令后才可使用,即使是指定空口令。超级用户可以为自己和其他用户指定口令,普通用户只能用它修改自己的口令。
语法:
passwd 选项 用户名
参数说明:
选项:
· -l:锁定口令,即禁用账号。
· -u:口令解锁。
· -d:使账号无口令。
· -f:强迫用户下次登录时修改口令。
用户名:指定口令的用户登录名。
若默认用户名,则修改当前用户的口令。
示例:
假设当前用户是dataxiong,则下面的命令修改该用户自己的口令:
$ passwd
如果是超级用户,可以用下列形式指定任何用户的口令:
# passwd dataxiong
2.用户组管理
每个用户都有一个用户组,Linux系统可以对一个用户组中的所有用户进行集中管理。不同的Linux系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理,涉及用户组的添加、删除和修改。用户组的增加、删除和修改实际上就是对/etc/group文件的更新。
(1)添加用户组
若向Linux系统中添加一个用户组,则使用groupadd命令。
语法:
groupadd 选项 用户组
参数说明:
选项:
· -g:GID,指定新用户组的组标识号(GID)。
· -o:一般与-g选项同时使用,表示新用户组的GID可与系统已有用户组的GID相同。
用户组:指定新用户组。
示例:
# groupadd group1
此命令向Linux系统中增加了一个新组group1,新组的组标识号是在当前已有的最大组标识号的基础上加1。
# groupadd -g 101 group2
此命令向Linux系统中增加了一个新组group2,同时指定新组的组标识号是101。
(2)删除用户组
若要删除一个已有的用户组,则使用groupdel命令。
语法:
groupdel用户组
参数说明:
用户组:指定删除的用户组的组名。
注意
若该用户组中包含某些用户,则必须先删除这些用户之后,才可以删除该用户组。通过tail命令可以查看需要删除的用户组是否能找到,若找不到就表明已删除。
示例:
# groupdel group1
此命令从Linux系统中删除组group1。
# tail –l /etc/group
此命令用于查看文件/etc/group中group1是否被删除。
(3)修改用户组
修改用户组的属性使用groupmod命令。
语法:
groupmod 选项 用户组
参数说明:
选项:
· -g:GID,为用户组指定新的组标识号。
· -o:与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
· -n:新用户组,将用户组的组名改为新组名。
用户组:指定修改用户组的组名。
示例:
# groupmod -g 102 group2
此命令将用户组group2的组标识号修改为102。
# groupmod –g 10000 -n group3 group2
此命令将用户组group2的标识号改为10000,组名修改为group3。
(4)用户组间切换
若一个用户同时属于多个用户组,则该用户可以在用户组之间切换,以便具有其他用户组的权限。用户可以在登录后,使用命令newgrp切换到其他用户组,这个命令的参数就是目的用户组。
语法:
$ newgrp root
说明
这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。类似于用户账号的管理,用户组的管理也可以通过集成的系统管理工具来完成。
2.1.2 文件和目录操作
1.文件操作
几个常见的处理文件的命令:
· ls:列出文件。
· cp:复制文件。
· mv:移动文件。
· rm:删除文件。
可以使用man [命令]来查看各个命令的使用手册。
示例:
# man cp
(1)列出文件
Linux系统当中,ls命令可能是最常被执行的命令,主要用于列出文件。
语法:
ls 选项 目录名称
选项说明:
· -a :全部的文件,连同隐藏文件(开头为.的文件)一起列出来(常用)。
· -d :仅列出目录本身,而不是列出目录内的文件数据(常用)。
· -l :以长数据串方式列出,包含文件的属性、权限等数据(常用)。
示例:
[root@dataxiong ~]# ls –al ~
将目录下的所有文件列出来(含属性文件和隐藏文件)。
(2)复制文件
Linux系统当中,cp命令用于复制文件。
语法:
cp 选项 来源文件(source)、目标文件(destination)
cp 选项 source1 source2 source3 ... Directory
选项说明:
· -a:相当于-pdr的意思,至于pdr请参考下列说明(常用)。
· -d:若来源文件为链接文件的属性(link file),则复制链接文件属性而非文件本身。
· -f:为强制(force)的意思,表示强行复制文件或目录,不论目标文件或目录是否已经存在。
· -i:若目标文件(destination)已经存在时,在覆盖时会先询问覆盖操作是否继续(常用)。
· -l:创建硬链接(hard link)的链接文件,而非复制文件本身。
· -p:连同文件的属性一起复制过去,而非使用默认属性(备份常用)。
· -r:以递归方式持续复制,用于目录的复制操作(常用)。
· -s:复制成为符号链接文件(symbolic link),即软链接文件。
· -u:只有来源文件比目标文件版本新时,才复制文件。
示例:
[root@dataxiong ~]# cp~/.bashrc /tmp/bashrc
用root身份,将root目录下的.bashrc复制到/tmp下,并命名为bashrc。
(3)移动文件
Linux系统当中,mv命令用于移动文件,或者修改名称。
语法:
mv 选项 来源文件(source)、目标文件(destination)
mv 选项 source1 source2 source3 ... Directory
选项说明:
· -f:强制(force)的意思,如果目标文件已经存在,不会询问而直接执行覆盖操作。
· -i:若目标文件(destination)已经存在时,就会询问是否执行覆盖操作。
· -u:若目标文件已经存在,且来源文件比较新,才会执行更新(update)操作。
示例:
[root@dataxiong ~]# cd /tmp [root@dataxiong tmp]# cp ~/.bashrc bashrc [root@dataxiong tmp]# mkdir mvtest [root@dataxiong tmp]# mv bashrc mvtest [root@dataxiong tmp]# mv mvtest mvtest2
以上操作是将某个文件移动到某个目录去。最后一行表示将刚刚创建的目录名称mvtest更名为mvtest2。
(4)删除文件
Linux系统当中,rm命令用于删除文件。
语法:
rm 选项 文件
选项说明:
· -f:就是force的意思,忽略不存在的文件,不会出现警告信息。
· -i:互动模式,在删除操作前会询问用户是否继续执行此删除操作。
· -r:递归删除!最常用于目录的删除!这是非常危险的选项!!!
示例:
[root@dataxiong tmp]# rm -i bashrc rm: remove regular file 'bashrc'? y
把刚刚在cp命令的实例中创建的bashrc删除掉。如果加上-i的选项,就会主动询问用户是否继续删除操作,以避免用户误删除。
2.目录操作
几个常见的处理目录的命令:
· mkdir:创建一个新的目录。
· rmdir:删除一个空的目录。
· cd:切换目录。
· pwd:显示当前的目录。
可以使用man [命令]来查看各个命令的使用手册(即帮助文档)。
示例:
# man cd
(1)创建目录
Linux系统当中,mkdir命令用于创建目录。
语法:
mkdir 选项 目录名称
选项说明:
· -m:配置文件的权限。直接配置,不需要看默认权限(umask)。
· -p:帮助你直接将所需要的目录(包含上一级目录)以递归方式创建起来。
示例:
[root@dataxiong ~]# cd /tmp [root@dataxiong tmp]# mkdir test
创建一个名为test的新目录。
[root@dataxiong tmp]# mkdir test1/test2/test3/test4 mkdir: cannot create directory 'test1/test2/test3/test4': No such file or directory
提示无法直接创建此目录。
[root@dataxiong tmp]# mkdir -p test1/test2/test3/test4
请到/tmp目录下尝试创建数个新目录看看,加了这个-p的选项,可以自行帮你创建多层目录。
(2)删除目录
Linux系统当中,rmdir命令用于删除目录。
语法:
rmdir 选项 目录名称
选项说明:
· -p :连同上一级空目录也会一起删除。
示例:
[root@dataxiong tmp]# rmdir test/
删除test目录。
[root@dataxiong tmp]# ls -l
查看有多少目录存在。
[root@dataxiong tmp]# rmdir test
可直接删除,没问题。
[root@dataxiong tmp]# rmdir test1 rmdir: 'test1': Directory not empty
因为目录下尚有内容,所以无法删除。
[root@dataxiong tmp]# rmdir -p test1/test2/test3/test4 [root@dataxiong tmp]# ls -l drwx--x--x 2 root root 4096 Jul 18 12:54 test2
上面输出中test与test1不见了。
将mkdir实例中创建的目录(/tmp底下)删除掉,利用-p这个选项,立刻就可以将test1/test2/test3/test4一次删除。不过要注意的是,这个rmdir仅能删除空的目录,你可以使用rm命令来删除非空目录。
(3)切换目录
Linux系统当中,cd命令用于删除目录。
语法:
cd [相对路径或绝对路径]
示例:
#使用mkdir命令创建test 目录 [root@dataxiong ~]# mkdir test #使用绝对路径切换到test 目录 [root@dataxiong ~]# cd /root/test/ #使用相对路径切换到test 目录 [root@dataxiong ~]# cd ./test/ # 表示回到自己的目录,亦即是/root 这个目录 [root@dataxiong test]# cd~ # 表示切换到当前目录的上一级目录,亦即/root上一级目录的意思 [root@dataxiong ~]# cd ...
2.1.3 文本编辑器
1.什么是vim
vim是从vi发展出来的一个文本编辑器。代码补完全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。简单地说,vi是老式的字处理器,不过功能已经很齐全了,但是还有可以改进的地方。vim则可以说是程序开发者的一项很好用的工具,连vim的官方网站(http://www.vim.org)都说vim是一个程序开发工具,而不是文字处理软件。图2-2所示为vin/vim键盘图。
图2-2 vin/vim键盘图
2.vi/vim的使用
基本上,vi/vim共分为3种工作模式(见图2-3),分别为:
· 命令模式(Command mode)。
· 输入模式(Insert mode)。
· 底线命令模式(Last line mode)。
图2-3 vi/vim工作模式
(1)命令模式
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下为常用的几个命令:
· i,切换到输入模式,以输入字符。
· x,删除当前光标所在处的字符。
· :,切换到底线命令模式,以便在最底一行输入命令。
若想要编辑文本,启动vim,进入子命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍然要依靠底线命令模式输入更多命令。
(2)输入模式
以下所列是输入模式中常用的几个命令,在命令模式下按下i就进入了输入模式。在输入模式中,可以使用以下按键:
· 字符按键以及Shift组合键:输入字符。
· Enter:回车键,换行。
· BACK SPACE:退格键,删除光标前一个字符。
· Delete:删除键,删除光标后一个字符。
· 方向键:在文本中移动光标。
· HOME/END:移动光标到行首/行尾。
· Page Up/Page Down:上/下翻页。
· Insert:切换光标为输入/替换模式,光标将变成竖线/下画线。
· Esc:退出输入模式,切换到命令模式。
(3)底线命令模式
命令模式下按下:(英文冒号)就进入了底线命令模式。底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。在底线命令模式中,基本的命令有(已经省略了冒号):
· q:退出程序。
· w:保存文件。
按ESC键可随时退出底线命令模式。