shell特殊符号,cut,sort,wc,uniq,tee,tr,split命令
Linux shell中的特殊符号 *代表零个或多个任意字符,它的用法如下: #ls /tmp/4_6/test* /tmp/4_6/test1 /tmp/4_6/test22 /tmp/4_6/test333
?只代表一个任意的字符,它的用法如下: #touch /tmp/4_6/test* /tmp/4_6/test1 /tmp/4_6/test2 /tmp/4_6/testa 注释符号#,这个符号在Linux中表示注释说明,即#后面的内容都会被忽略。用法如下: #abc=123 #aaaa #echo $abc 123 脱义字符 这个字符会将后面的特殊符号(如*)还原为普通字符。用法如下: #ls –d test* ls:无法访问test*:没有那个文件或目录 再说管道符| 它的作用是将前面命令的输出作为后面命令的输入。并不是所有的命令都可以,一般常用对文档操作的命令比较常用。例如cat、less、head、tail、grep、cut、sort、wc、uniq、tee、tr、split、sed、awk等。其中grep、sed和awk都是正则表达式工具。 命令cut cut命令用来截取某一个字段,其格式为cut –d ‘分隔字符’[-cf]n,这里n是数字。 选项: -d 后面跟分隔符,分隔字符要有单引号括起来。 -c 后面接的是第几个字符。 -f 后面接的是第几个区块。 cut命令用法如下: #cut /etc/passwd|cut –d ‘:’ –f 1 |head -5 root bin dameon adm lp -d选项后面加冒号作为分隔符,-f表现截取第一段,-f和1之间的空格可有可无。 示例命令如下: #head -n2 /etc/passwd |cut -c2 o i #head -n2 /etc/passwd |cut -c1 r b #head -n2/etc/passwd|cut -c1-10 root:x:0:0 bin:x:1:1: #head -n2 /etc/passwd|cut -c5-10 x:0:0 x:1:1: -c选项后面可以是1个数字n,也可以是一个区间n1-n2,还可以是多个数字n1、n2、n3。 #head -n2 /etc/passwd|cut -c1,3,10 ro0 bn: 命令sort sort命令用作排序,其格式为sort[-t分隔符][-kn1,n2][-nru],这里n1和n2指的是数字,其 他选项的含义如下。 -t 后面跟分割字符,作用跟cut的-d选项一样。 -n 表示使用纯数字排序。 -r 表示反向排序。 -u表示去重复 -kn1,n2 表示由n1区间排序到n2区间,可以只写-kn1,即对n1字段排序。 如果sort不加任何选项,则从首字符向后依次按ASCII码值进行比较,最后将它们按升序输出。示例命令如下: #head –n5 /etc/passwd|sort adm:x:3:4:adm:/var/adm:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin dameon:x:2:2:dameon:/sbin:/sbin/nologin lp:x:4:7:lp:/var/spool.lpd:/sbin/nologin root:x:0:0:root:/root:/bin/bash -t选项后面跟分隔符,-k选项后跟单个数字表示对第几个区域的字符串排序, -n选项则表示使用纯数字排序。 #head –n5 /etc/passwd|sort -t: -k3 -n head –n5 /etc/passwd|sort -t: -k3 -n -k选项和n2表示对n1和n2区域内的字符串排序,-r选项则表示反向排序。示例命令如下: #head –n5 /etc/passwd|sort –t: -k3,5 –r 这里-k3,5表示对第3区域至第5区域间字符串排序。 命令wc wc命令用于统计文档的行数、字符数、或词数。该命令的常用选项由-l(统计行数)、-m(统计字符数)和-w(统计词数)。示例命令如下: #wc /etc/passwd 45 90 2361 /etc/passwd #wc -l /etc/passwd 45 /etc/passwd #wc -m /etc/passwd 2361 /ett/passwd #wc -w /etc/passwd 90 /etc/passwd 如果wc不跟任何选项,直接跟文档,则会把行数、词数、字符数依次输出。
命令uniq uniq命令用来删除重复的行,该命令只有-c选项比较常用,它表示统计重复的行数,并把行数写在前面,示例命令如下: #vim testb.txt //把下面的内容写入test.txt并保存 111 222 333 使用uniq前,必须先给文件排序,否则不管用。示例命令如下: #uniq testb.txt #sort testb.txt|uniq #sort testb.txt|uniq -c 2 111 1 222 1 333
命令tee tee命令后面跟文件名,其作用类似于重定向>,但它比重定向多一个功能,即把文件写入后面所跟的文件时,还显示在屏幕上。该命令通常用于管道符|后。示例命令如下: #echo “aaaaaaaaaaaaaaa” |tee testb.txt aaaaaaaaaaaaaaa #cat testb.txt 命令tr tr命令用于替换字符,常用来处理文档中出现的特殊符号,如DOS文档中出现的符号^M。该命令常用的选项有如下两个。 -d 表示删除某个字符,后面跟要删除的字符。 -s 表示删除重复的字符。 tr命令常用于把小写字母变成大写字母,如tr’[a-z]’’[A-Z]’。示例命令如下: #head –n2 /etc/passwd |tr’[a-z]’’[A-Z]’ ROOT:X:O:O:ROOT:/ROOT:/BIN/BASH BIN:X:11:BIN:/BIN:/SBIN/NOLOGIN tr命令还可以替换一个字符,示例命令如下: #grep ‘root’ /etc/passwd |tr ‘r’ ‘R’ Root:x:o:o:Root:/Root:/bin/bash opeRatoR:x:11:0:opeRatoR:/Root:/sbin/nologin 命令split split命令用于切割文档,常用的选项为-b和-l。 -b 表示依据大小来分割文档,单位为byte,示例命令如下: #mkdir split_dir #cd !$ cd split_dir #cp /etc/passwd ./ #split –b 500 passwd #ls passwd xaa xab xac xad xae 如果split不指定目标文件名,则会以xaa、xab……这样的文件名来存取切割后的文件。指定目标文件名,示例如下: #rm –f xa* #split –b 500 passwd 123 #123aa 123ab 123ac 123ad 123ae passwd -l 表示依据行数来分割文档,示例命令如下: #rm -f 123a* #split -l 10 passwd #wc -l * 45 passwd 10 xaa 10 xab 10 xac 10 xad 5 xae 90 总用量 特殊符号$ 符号$可以用作变量前面的标识符,还可以和!结合使用。示例命令如下: #cd .. #ls testb.txt testb.txt #ls !$ ls testb.txt !$表示上条命令的最后一个变量,本例中上条命令最后是testb.txt,那么在当前命令下输入!$则表示testb.txt。 特殊符号; 通常,我们在一行命令中输入一个命令,然后回车就运行了。如果想在一行中运行两个或两个以上的命令,需要在命令之间加符号;。示例命令如下: #mkdir testb.txt ; touch test1.txt ; touch test2.txt ; ls –d test* 特殊符号~ 符号~代表用户的家目录,root用户的家目录是/root,普通用户的家目录是/home/username。示例命令如下: #cd ~ #pwd /root #su ccj /home/ccj 特殊符号& 如果想把一条命令放到后台执行,则需要加上符号&,它通常用于命令运行时间较长的情况。比如,可以用在sleep后,如下所示: #sleep 30 & [1]3008 #jobs [1]+ 运行中 sleep 30 & 重定向符号>、>>、2>和2>> >和>>分别表示取代和追加的意思。当我们运行一个命令报错时,报错信息会输出到当前屏幕。如果想重定向到一个文本,则要用重定向符号2>或者2>>,它们分别表示错误重定向和错误追加重定向。示例命令如下: #ls aaaa ls:无法访问aaaa:没有那个文件或目录 #ls aaaa 2> /tmp/error #cat /tmp/error ls:无法访问aaaa:没有那个文件或目录 #ls aaaa 2>> /tmp/error 中括号[] 中括号内为字符组合,代表字符组合中的任意一个,可以是一个范围(1-3,a-z),用法如下: #cd /tmp/10 #ls –d test* test1.txt test2.txt testb.txt testdir #ls –d test[1-3].txt test1.txt test2.txt #ls –d test[12b].txt test1.txt test2.txt testb.txt #ls –d test[1-9].txt test1.txt test2.txt #ls –d test[1-9a-z].txt 特殊符号&& || #命令1;命令2 #命令1&&命令2 #命令1||命令2 使用;时,不管命令1是否执行成功,都会执行命令2。 使用&&时,只有命令1执行成功,才会执行命令2,否则不执行命令2。 使用||时,命令1执行成功后则不执行命令2,否则执行命令2。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |