第2章Shell命令郑谦益韩京宇内容提要2.1Shell命令概述2.2目录和文件操作2.3用户和用户组管理2.4文件的权限管理2.5进程管理2.6inux的备份与恢复2.7Linux应用软件包管理2.8输入输出重定向和管道2.9元字符与正则表达式2.1Shell命令概述2.1.1目录的组织结构2.1.2文件的路径2.1.3linux命令语法结构2.1.4shell命令分类2.1.5联机帮助2.1.1目录的组织结构Linux系统启动时,选择一个分区作为根目录其他分区的文件系统根据需要动态挂载至某个目录,形成一棵目录树。2.1.1目录的组织结构binbootdevetcusrmntgrubvmlinuzsrcLinux-2.4Linux-2.6root.图2-1Linux系统根文件系统目录结构根目录../当前目录绝对路径/usr/src/Linux-2.4相对路径../usr/src/Linux-2.4/2.1.1文件系统目录结构目录名内容描述/bin所有用户可使用的可执行文件/sbin系统管理员使用的执行文件/bootLinux内核映像文件和与引导加载有关的文件/dev所有设备文件,包括字符设备和块设备/etc系统配置文件/lib共享库文件,供/bin和/sbin下的文件使用/mnt挂载点,常用于挂载文件系统/proc基于内存的文件系统,用于显示内核信息。/usr/usr/bin用户命令工具/usr/includeC头文件/usr/lib函数库/usr/src/源代码目录/usr/sbin系统命令工具2.1.1目录的组织结构根目录:用“/”表示每个目录中存放两个特殊目录,分别表示当前目录和父目录(1)当前目录:用“.”表示(2)父目录:用“..”表示2.1.2文件的路径路径是表示文件所在文件系统中的位置,路径由一系列由“/”分割的目录名组成的字符串,例如,/usr/src。当/位于字符串首位时,表示根目录;位于两个目录名之间,表示分隔符。2.1.2文件的路径1.用户主目录每个用户在登录进系统时,都位于某个目录,该目录称为用户主目录.例如,root的用户主目录是/root,普通用户的用户主目录通常是/home/username。2.工作目录工作目录是指用户当前所处的目录,3.用户主目录由系统定义,用户在使用计算机的过程中一般不变;工作目录可由用户动态改变。2.1.2文件的路径4.绝对路径绝对路径表示从根目录开始到目标文件所经历的一系列目录名构成的字符串,目录名之间用/分割。例如:/usr/src/linux-2.6.5.相对路径相对路径指从当前目录开始到目标文件所经历的一系列目录序列。例如,如图2-1所示,若当前用户的工作目录为/root,绝对路径为/usr/src/Linux-2.4的目录,相对路径可表示为../usr/src/Linux-2.4/。2.1.3Linux命令的语法结构Linux系统通过Shell的用户交互接口访问Linux系统Shell是架构于Linux内核之上的命令解析器,Shell循环等待并解释执行用户从终端上输入的命令。Shell有多个版本,例如:csh、bash和ksh等。Linux系统中常用的Shell是bash。2.1.3Linux命令的语法结构$命令名[选项][参数列表]$为提示符,提示符可通过环境变量重新设置;命令名代表命令的名称;选项表示用户对功能的特定要求,有如下两种格式-f和-zxvf为短选项格式--filesize=512为长选项格式参数列表表示要操作的对象列表,对象可以是文件、目录、用户和用户组等,对象的性质由命令决定。例如:ls-l/homecp-rf/demo//test$ls-l/home命令提示符命令字命令选项命令组成部分间用空格进行分隔命令参数命令格式举例2.1.4Shell命令分类1.内部命令内部命令由Shell实现,具有较高的执行效率,运行于当前的shell进程;可通过命令type判断是否为内部或外部命令。例如:$type-tls#判断命令ls是否为内部命令2.外部命令外部命令是指存储于文件系统中的可执行二进制映像文件,Shell通过创建子进程,在子进程中加载并执行外部命令。可通过file命令查看文件类型信息。例如:$filecp#查看外部命令cp的相关信息使用man命令阅读手册页$manls2.1.5获得命令帮助2.2目录和文件操作2.2.1目录操作2.2.2文件操作2.2.3显示文本文件内容2.2.4硬链接和软链接命令功能pwd显示当前目录的绝对路径名称cd进入指定的目录mkdir创建指定名称的目录rmdir删除指定名称的目录2.2.1目录操作命令显示当前目录的绝对路径名称$pwd更改当前目录$cd/etc$cd../bin$cd/$cd~/demo$cd..2.2.1目录操作2.2.1目录操作建立和删除目录$mkdirmydir$mkdir~/demo$mkdir–p/demo/test$rmdirmydir$rmdir–p/demo/test命令功能file显示指定文件的类型touch建立指定名称的文件或更新文件时间cp复制文件或目录rm删除文件或目录mv移动文件或目录,文件或目录重命名find在指定目录查找符合条件的文件2.2.2文件操作2.2.2文件操作ls命令语法:ls[选项]目录或文件功能:显示文件和目录信息。选项含义-a查询所有文件,包括文件名以.开头的隐藏文件-l以详细列表的方式显示文件属性-i显示文件的i-节点编号-R连同子目录内容一起列出2.2.2文件操作示例:$ls–l~/#详细列出用户主目录下所有文件的信息$ls–a./#列出当前目录下所有文件,包括隐藏文件$ls–Ri~/#递归列出~/所有文件,并显示文件的i节点号2.2.2文件操作cp命令语法:cp[选项]源文件目标文件功能:将源文件复制到目标文件。选项含义:-i若目标文件已存在,提示是否要覆盖-p连同源文件的属性一起复制到目标文件-r递归复制用于目录复制-u若目标文件比源文件旧,则更新目标文件$cpfile1file2#将文件file1复制为文件file2$cp-rdir1dir2#复制目录dir1到目录dir2$cp–ur~/dir1~/dir2#更新dir1的备份目录dir22.2.2文件操作rm[选项]文件列表功能:删除文件列表中的文件。选项含义:-i在删除文件前给出提示-r递归删除,用于删除目录-f强制删除,不给出提示$rmfile1file2#删除文件file1和file2$rm–rdir1#删除目录dir1$rm-ir~/dir1#删除~/dir1目录,并给出提示2.2.2文件操作mv命令语法:mv[选项]文件和目录列表目标目录功能:将列表中的所有文件和目录移动到目标目录选项含义:-f强制移动,若目标文件已存在,不进行提示-i若目标文件已存在,提示是否覆盖-u若目标文件存在且比较旧,则用源文件更新$mvfole1file2#将文件file1更名为file2$mvfile1dir1dir2#将文件file1和目录dir1移动至目录dir22.2.2文件操作find命令语法:find[目录列表][匹配方式]功能:在目录列表中按照匹配方式搜索符合条件的文件。匹配方式含义-name文件名在目录列表中搜索和文件名相匹配的文件-typex在目录列表中搜索类型为x的文件,例如,d表示目录-newer文件名搜索所有修改时间比file文件更新的文件-sizen匹配所有大小为n块的文件,c在n后表示字节数-mtimen匹配所有在前n天内修改过的文件-atimen匹配所有在前n天内访问过的文件-print显示整个文件路径和名称-user用户名搜索所有属主为用户名的文件2.2.2文件操作$find/-namedemo.c-print#查找文件demo.c$find~-name“dev”-print#查找所有文件名中包含dev的文件$find/-typed-print#查找所有目录文件$find/usr-namemy*-typef-print#查找以my开头的所有普通文件$find~/mydir-typef-mtime-10-print#查找10天以内修改过的所有文件命令功能cat显示文本文件内容more分页显示文本文件内容less分页显示文本文件内容,并可方便反复浏览head显示文件首部内容tail显示文件尾部内容2.2.3文本文件查看命令显示文本$cat/etc/passwd分页显示文本$more/etc/passwd分页文本浏览,可以pagedonw,pageup翻页$less/etc/passwd显示文件首部若干行$head-5/etc/passwd显示文件尾部若干行$tail-5/etc/passwd文本查看实例2.2.4链接文件硬链接和软链接:快捷方式硬链接:文件系统中的每一个文件都有它自己的i-结点,每个i-结点都保存了一个文件的属性和它在硬盘上的位置,当两个不同的文件名代表同一个文件时复制i-结点,“链接计数器”增加一个值。不同分区上的两个文件之间不能建立硬链接,这是因为硬链接是通过i-结点指向原始文件的,而文件i-结点在不同的文件系统中可能会不同。例如:lnexamole1examole2软链接又叫符号链接,符号链接是通过文件名指向另外一个文件的.这就允许符号链接指向定位于其他分区,甚至是其他网络硬盘的某个文件.例如:ln-sexample1example22.3用户和用户组管理2.3.1用户的分类2.3.2用户组管理2.3.3用户管理2.3.4用户属性管理2.3.5用户管理相关配置文件2.3.1用户分类在Linux系统中,所有用户都有一个唯一的标识UID。从用户的角度,每个用户都有一个名字,例如:超级用户rootLinux系统为了方便用户使用,在用户名和UID之间建立一对一的关系。2.3.1用户分类Linux系统将用户分为超级用户、虚拟用户和普通用户。1.超级用户:超级用户一般用于系统管理,可不加限制地使用系统资源,具有所有权限,用户名为root,UID为0。2.虚拟用户:与超级用户不同,虚拟用户是一种受限用户,为满足系统进程对文件资源的访问控制而建立,虚拟用户不能用来登录。例如,bin、daemon、adm和lp等都是虚拟用户,用户UID一般为1~499。3.普通用户:与虚拟用户一样,普通用户也是受限用户,建立普通用户的目的是为了让使用者登录系统,分享Linux系统的软硬件资源,用户的UID在500~60000之间。2.3.2用户组管理用户组是由若干相关用户构成的集合,属于该组的用户对某些文件具有相同的存取权限一个用户也可属于多个用户组,在这多个用户组中,必须有一个是主用户组,其他则为附加用户组。创建文件的用户成为该文件的属主用户,该用户的主用户组则成为该文件的属组,每个文件的属主用户和属组是唯一的。命令功能groupadd添加指定名称的用户组帐号groupdel删除指定名称的用户组帐号文件功能/etc/group保存用户组帐号信息2.3.2用户组管理命令及文件命令功能adduser添加用户帐号passwd设置(更改)用户登录密码userdel删除用户帐号(及宿主目录)2.3.3用户管理命令建立用户帐号#adduserst01设置用户口令#passwdst01删除用户帐号#userdel-rst012.3.3用户帐号管理2.3.4用户属性的修改usermod命令语法:usermod[选项]用户名功能:修改用户属性。选项含义-d修改用户登录用户主目录-s修改用户登录Shell-g修改用户所属的主用户组-G修改用户的附加用户组-U修改用户ID实例分析$usermod-ggrp2usr1#将用户usr1的主用户组更改为grp2$usermod-s/bin/bashusr1#将用户usr1的登录Shell更改为bash2.3.4用户属性的修改chown命令语法:chown[用户]:[用户组]文件列表功能:改变文