Shell操作命令分类
Shell操作命令有目录操作命令,文件操作命令,用户操作命令,状态操作命令和压缩命令共5类,各类命令请看如下详解;
1. 目录操作命令:
pwd命令
命令:pwd(print working directory)
格式:pwd
功能:显示出用户当前工作目录的全路径名
cd 命令
命令:cd(change directory)
格式:cd directory_name
功能:改变当前工作目录
注释:目录名选项有:
Ø 目录名,转到当前目录下的子目录。
Ø .. 表示转到当前目录的父目录。
Ø / 表示转到根目录。
Ø 没有选项时,转到用户的主目录。
Ø 例如:cd directory
mkidr命令
命令:mkdir(make directory)
格式:mkdirdirectory_name
功能:建立新目录
选项:
Ø -m设定权限<模式>
Ø -p 需要时创建上层目录
Ø 例如:mkdir directory
rmdir命令
命令:rmdir (remove directory)
格式:rmdirdirectory_name
功能:删除不存在文件的子目录名。
注释:删除子目录时,要求被删除的目录中不存在文件或子目录,否则无法删除。
选项:
Ø -p删除<目录>,然后尝试删除指定路径中的所有上层目录。
Ø 例如:rmdir directory
2. 文件操作命令
rm命令
命令:rm (remove)
格式:rm filename
功能:删除指定的文件或一个目录中的文件。
选项:
Ø -f 略过不存在的文件,不显示任何信息
Ø -i 进行任何删除操作前必须先确认
Ø -r 同时删除该目录下的所有目录层以及文件
Ø 例如:rm filename
ls命令
命令:ls (list)
格式:ls [option] directory_name
功能:列出指定目录中的文件名和子目录名。
选项:
Ø -a 列出所有文件,包括以点开头的隐含文件
Ø -R 列出包括子目录下所有文件
Ø -F 加上文件类型的指示符号
Ø -t 按文件生成日期排序
Ø -l按长格式列出文件名,包括文件类型标识,权限,链接数,文件主名,文件组名,字节数,日期。
Ø 例如:ls -la
cat 、more、 less 命令
命令:cat 、more 、less
格式:cat/more/less filename
功能:显示出文件的内容。
注释:在屏幕显示过程中有功能键、空格键和继续下一屏的输出;回车键查看下一行的输出;q键跳出查看状态。
Ø 例如:more filename
head 、tail 命令
命令:head 、tail
格式:head/tail [option] filename
功能:显示文件的头[尾]部
选项:缺省显示文件的头[末]10行
Ø -i 显示文件的开始[最后]i行
Ø 例如:head/tail filename
cp、mv 命令
命令:cp (copy)、mv (move)
格式:cp(mv) [option] filename1 filename2
功能:把一个文件的全部内容拷贝(剪切)到另一个文件,也可将一个或多个文件拷贝(剪切)到另一个目录中。
选项:
Ø -i 覆盖文件前需要确认
Ø -p 按原文件日期进行拷贝。(cp)
Ø -r 对子目录下所有文件进行拷贝。(cp)
Ø 例如:cp filename1 filename2
mv filename1 filename2
ln命令
命令:ln (link)
格式:ln [选项]... 目标[链接名]
功能:为文件或目录建立一个链接。
选项:
Ø -s 为文件或目录建立符号链接。
Ø -f 强迫删除任何已存在的目的地文件
Ø 注释:硬连接不能跨越文件系统,不能连接目录。
Ø 例如:ln -s filename linkname
chown命令
chown (change owner)
格式:chown username filename
功能:改变文件或目录的所有权
选项:-R 将改变目录中所有文件及目录的拥有者
Ø 例如:chown username filename
chmod命令
命令:chmod (change mode)
格式:chmod {u|g|o|a}{+|-|=}{r|w|x} filename
chmod [who][op][mode] directory
功能:改变文件的读写和执行权限,有符号法和八进制数字法
选项:
Ø -R 以递归方式更改所有的文件及子目录
Ø 使用方法:
Ø 符号法:
Ø u (user) 表示用户本人。
Ø g (group) 表示同组用户。
Ø o (oher) 表示其他用户。
Ø a (all) 表示所有用户。
Ø + 用于给予指定用户的许可权限。
Ø - 用于取消指定用户的许可权限。
Ø = 将所许可的权限赋给文件。
Ø r (read) 读许可,表示可以拷贝该文件或目录的内容。
Ø w (write) 写许可,表示可以修改该文件或目录的内容。
Ø x (execute)执行许可,表示可以执行该文件或进入目录
Ø (2)八进制数字法:
Ø 此方法用三位八进制数作任选项,每位数字分别表示用户本人、同组用户、其他用户的权限,其中:
Ø 4 (100) 表示可读。
Ø 2 (010) 表示可写。
Ø 1 (001) 表示可执行。
Ø 例如:chmoda+rx filename让所有用户可以读和执行文件filename。
Ø chmod go-rx filename取消同组和其他用户的读和执行文件filename的权限。
Ø chmod 741 filename让本人可读写执行、同组用户可读、其他用户可执行文件filename。
find 命令
命令:find
格式:find pathname [option] expression
功能:在所给的路经名下寻找符合表达式相匹配的文件。
选项:
Ø -name 表示文件名
Ø -user 用户名,选取该用户所属的文件
Ø -group 组名,选取该用户组属的文件
Ø -newer fn选取比文件名为fn更晚修改的文件
Ø 例如:find . -name '*abc*
comm命令
命令:comm (common)
格式:comm [-123] filename1 filename2
功能:比较两个文件或目录(diff)的不同
Ø 例如:comm file1 file2
diff file1 file2
vi 命令
命令:vi(visual)
格式:vi filename
功能:编辑文件内容
工作方式:
Ø 命令方式/编辑方式:当前键入的字符都作为命令。
Ø 插入方式:当前键入的字符都被插入到文件缓冲区的当前光标位置。
Ø 转义方式/末行模式:进行查找、退出等特殊操作。
Ø 例如:vi file1
file 命令
命令:file
格式:file filename ...
功能:按文件内容来推测文件类型,如ascii,C,executable。
Ø 例如:file *
touch 命令
命令:touch
格式:touch filenae
功能:改变文件的日期,不对文件的内容做改动,若文件不存在则建立新文件。
选项:
Ø -t 使用[[CC]YY]MMDDhhmm[.ss] 格式的时间而非目前的时间
Ø 例如:touch file
wc命令
命令:wc (word characters)
格式:wc [option] filename
功能:统计文件中的文件行数、字数和字符数。
选项:
Ø -l 统计文件的行数
Ø -w 统计文件的字数
Ø -c 统计文件的字符数
Ø 注释:若缺省文件名则指标准输入
Ø 例如:wc file
3. 用户操作命令:
su命令
命令:su
格式:su [option] username
功能:切换用户
选项:
Ø - 执行新用户环境设置
Ø 例如:su – root
useradd命令
命令:useradd
格式:useradd [option] username
功能:添加用户。
与用户相关的文件
Ø /etc/passwd:记录用户的账号等信息。
Ø /etc/shadow:记录用户的密码信息。
Ø /etc/group:记录工作组的信息。
Ø $HOME:用户主目录(登录后所在的原始目录)
用户分类
Ø 管理员UID= 0 GID= 1
Ø 普通用户UID >= 100
Ø 系统用户UID:1—100
选项:
Ø -u 指定用户ID号
Ø -g 制定所在组
Ø -d 指定用户目录
Ø -s 制定用户SHELL
Ø -c 用户的注释
Ø -m 建立用户目录
Ø 例如:useradd –u 1024 –d /export/home/mpf –m –gdba –c “描述字符串”–s /bin/cshmpf
passwd命令
命令:passwd
格式:passwd [option] username
功能:为用户设置密码
选项:
Ø -S 报告口令状态
Ø -l 锁定口令,即禁用帐号
Ø -n 设置两次修改口令的最小期限
Ø -d 使帐号无口令,即删除口令
Ø -w 提醒用户口令存活期将尽的天数
Ø -x 设置口令存活期
Ø 例如:passwdmpf
userdel命令
命令:userdel
格式:userdel [option] username
功能:为用户设置密码
选项:
Ø -r 把用户的家目录以及mail信息一同删除
Ø 例如:userdel -r mpf
4. 状态信息命令
whoami命令
命令:whoami/who/w
格式:whoami/who/w [option] [username]
功能:显示出当前终端上使用的用户
Ø 例如:w
date命令
命令:date
格式:date -u mmddHHMM[[cc]yy].ss
功能:显示或设置日期和时间
选项:
Ø -u 显示或设置日期以及时间(GMT)
Ø 注释:只有超级用户有权设置日期
Ø 例如:
Ø # date -u 1128153006.15
cal命令
命令:cal (calendar)
格式:cal [month] year
功能:显示某年内指定的日历
Ø 例如:cal 1752
hostname 命令
命令:hostname
格式:hostname
功能:显示或设置主机名
注释:只有超级用户才能设置主机名
Ø 例如:hostname
ps命令
命令:ps
格式:ps [option]
功能:显示系统中进程的信息。包括进程ID、控制进程终端、执行时间和命令。
选项:
Ø -a 列出当前系统中所有进程的信息
Ø -l 显示一个长列表
Ø -e 显示当前运行的每一个进程信息
Ø -f 显示一个完整的列表
Ø 例如:ps –ef
df命令
命令:df (disk free)
格式:df [option]
功能:显示磁盘空间的使用情况,包括文件系统安装的目录名、块设备名、总字节数、已用字节数、剩余字节数占用百分比。
选项:
Ø -k 显示磁盘空间的使用信息
Ø 例如:df -o i
du 命令
命令:du (disk usage)
格式:du [option] [filename]
功能:显示目录或文件所占磁盘空间大小
选项:
Ø -a 显示所有文件的大小
Ø -s 显示制定目录所占磁盘大小
Ø 例如:du -sk
man命令
命令:man (manual)
格式:man command_name
功能:显示参考手册,提供联机帮助信息。
Ø 例如:man who
5. 压缩命令
tar命令
命令:tar
格式:tar [option] filename.tar [filename]
功能:打包归档或者解包分离文件
选项:
Ø -c:创建新的tar文件
Ø -t:列出tar文件的内容
Ø -x:从tar文件中分离文件
Ø -v:在详细模式下执行tar命令,将输出写到标准输出上去
Ø -f:定义归档文件或磁带设备.
Ø 例如: tar -cvf files.tar file1 file2 file3
tar -xvf files.tar
gzip、zcat命令
命令:gzip、zcat
格式:gzip [option] filename
功能:压缩以及解压文件
选项:
Ø -d:解压缩的参数。
Ø -t:可以用来检验一个压缩档的一致性,看看文件有无错误。
Ø -#:压缩等级,-1 最快,但是压缩比最差!-9 最慢,但是压缩比最好!预设是-6。
Ø 例如:gziphttp.conf
gzip -d http.conf.gz gunzip http.conf.gz
bzip2、bzcat命令
命令:bzip2, bzcat
格式:bzip2 [option] filename
功能:压缩以及解压文件
选项:
Ø -d:解压缩的参数
Ø -z:压缩的参数
Ø -#:与gzip同样的,都是在计算压缩比的参数,-9 最佳,-1 最快!
Ø 例如:bzip2 -d http.conf.bz2
compress 命令
命令:compress
格式:compress [option] filename
功能:压缩以及解压文件
选项:
Ø -d :用来解压缩的参数
Ø 例如:compress -d http.conf.Z
uncompresshttp.conf.Z
zip命令
命令:zip
格式:zip [option] filename
功能:压缩以及解压文件
选项:
Ø -r:用来压缩目录的参数
Ø 例如:zip http.conf.zip http.conf
unzip http.conf.zip
grep命令
命令:grep
格式:grep [option] filter
功能:行内容过滤
选项:
Ø -v:非操作
Ø 例如:grep –v ccc ./*.sh
crontab命令
命令:crontab
格式:grep [option] filename
功能:设置定时任务
选项:
Ø -r:停止crontab任务
Ø -l:列出crontab任务
Ø -e:编辑定时任务
Ø 例如:crontabcrontab.crn(把crontab.crn的内容设置为定时任务)
二、正则表达式
1. 基本语法
我们知道C的变量和Shell脚本变量的定义和使用方法很不相同,表达能力也不相同,C的变量有各种类型,而Shell脚本变量都是字符串。同样道理,各种工具和编程语言所使用的正则表达式规范的语法并不相同,表达能力也各不相同,有的正则表达式规范引入很多扩展,能表达更复杂的模式,但各种正则表达式规范的基本概念都是相通的。
字符类
字符 | 含义 | 举例 |
. | 匹配任意一个字符 | abc.可以匹配abcd、abc9等 |
[] | 匹配括号中的任意一个字符 | [abc]d可以匹配ad、bd或cd |
- | 在[]括号内表示字符范围 | [0-9a-fA-F]可以匹配一位十六进制数字 |
^ | 位于[]括号内的开头,匹配除括号中的字符之外的任意一个字符 | [^xy]匹配除xy之外的任一字符,因此[^xy]1可以匹配a1、b1但不匹配x1、y1 |
[[:xxx:]] | grep工具预定义的一些命名字符类 | [[:alpha:]]匹配一个字母,[[:digit:]]匹配一个数字 |
数量限定符
字符 | 含义 | 举例 |
? | 紧跟在它前面的单元应匹配零次或一次 | [0-9]?\.[0-9]匹配0.0、2.3、.5等,由于.在正则表达式中是一个特殊字符,所以需要用\转义一下,取字面值 |
+ | 紧跟在它前面的单元应匹配一次或多次 | [a-zA-Z0-9_.-]+@[a-zA-Z0-9_.-]+\.[a-zA-Z0-9_.-]+匹配email地址 |
* | 紧跟在它前面的单元应匹配零次或多次 | [0-9][0-9]*匹配至少一位数字,等价于[0-9]+,[a-zA-Z_]+[a-zA-Z_0-9]*匹配C语言的标识符 |
{N} | 紧跟在它前面的单元应精确匹配N次 | [1-9][0-9]{2}匹配从100到999的整数 |
{N,} | 紧跟在它前面的单元应匹配至少N次 | [1-9][0-9]{2,}匹配三位以上(含三位)的整数 |
{,M} | 紧跟在它前面的单元应匹配最多M次 | [0-9]{,1}相当于[0-9]? |
{N,M} | 紧跟在它前面的单元应匹配至少N次,最多M次 | [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}匹配IP地址 |
再次注意grep找的是包含某一模式的行,而不是完全匹配某一模式的行。再举个例子,如果文本文件的内容是
查找a*这个模式的结果是三行都被找出来了
$ egrep 'a*' testfile
aabc
aad
efg
a*匹配0个或多个a,而第三行包含0个a,所以也包含了这一模式。单独用a*这样的正则表达式做查找没什么意义,一般是把a*作为正则表达式的一部分来用。
位置限定符
字符 | 含义 | 举例 |
^ | 匹配行首的位置 | ^Content匹配位于一行开头的Content |
$ | 匹配行末的位置 | ;$匹配位于一行结尾的;号,^$匹配空行 |
\< | 匹配单词开头的位置 | \<th匹配...this,但不匹配ethernet、tenth |
\> | 匹配单词结尾的位置 | p\>匹配leap ...,但不匹配parent、sleepy |
\b | 匹配单词开头或结尾的位置 | \bat\b匹配... at ...,但不匹配cat、atexit、batch |
\B | 匹配非单词开头和结尾的位置 | \Bat\B匹配battery,但不匹配... attend、hat ... |
位置限定符可以帮助grep更准确地查找,例如上一节我们用[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}查找IP地址,找到这两行
192.168.1.1
1234.234.04.5678
如果用^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$查找,就可以把1234.234.04.5678这一行过滤掉了。
其它特殊字符
字符 | 含义 | 举例 |
\ | 转义字符,普通字符转义为特殊字符,特殊字符转义为普通字符 | 普通字符<写成\<表示单词开头的位置,特殊字符.写成\.以及\写成\\就当作普通字符来匹配 |
() | 将正则表达式的一部分括起来组成一个单元,可以对整个单元使用数量限定符 | ([0-9]{1,3}\.){3}[0-9]{1,3}匹配IP地址 |
| | 连接两个子表达式,表示或的关系 | n(o|either)匹配no或neither |