Linux系统 shell基础(三)

一、shell中的特殊符号

号:通配符,可以匹配零个或任意多个字符
? 号:单配符,
#号:注释符,该符号后跟的命令或参数不会执行
\号:加注在特殊符号前使其失去指令意义
|管道符:把一条命令的结果传递给另外一条命令,注意后一条命令不是什么命令都可以,一般是针对文档的命令。例如less、more、head、tail、grep、sed、awk等等。
$ :变量前缀,!¥
; 多条命令写到一行时用;分割
~ 用户家目录替代符,root的家目录,正则中表示匹配符
& 放在命令末尾表示把命令放到后台

把正确和错误的结果都输出到一个文件

用在shell中表示或者
表示如果命令1失败则执行命令2,若命令1成功则不执行命令2,命令1、2之间只有一条命令会执行
&&表示如果命令1失败,则命令终止,所有命令都不会执行,若命令1成功则命令2才会执行,命令1、2要么都执行,要么都不执行。

示例

1、II与&&特殊符号含义示例
Linux系统 shell基础(三)
本例中只有当ls test2成功后才会执行 touch test2命令。因为test2不存在,所以前一条命令不成功,后面一条命令就不会执行

那么我们换成 ls test2 || touch test2看看
Linux系统 shell基础(三)
本例中,因为前面一条命令 ls test2失败了,于是第2条命令就被执行了

二、和管道符相关的命令

(一)cut命令

分隔符
cut命令用来显示行中的指定部分,删除文件中指定字符串。
命令写法:cut -d “分割标记” -f 第几段至第几段 cut -c n(第几个字符)
选项:
-c:仅显示行中指定范围的字符;
-d:指定字段的分隔符,默认的字段分隔符为“TAB”;
-f:显示指定字段的内容;
用法举例:
1、命令:cat /etc/passwd |head -2 |cut -d ":" -f 1
图中标记1:选项-d用来制定分割符号,passwd文件中用的是“;”号,于是我们就输入-d “;”让程序认出文本中的分段,为-f 选项提供分段依据
图中标记2:选项-f是选择第几段到第几段,竖排的叫段,相当于excel的选取单列。
图中的命令含义就是显示passwd文件中的前2行文字的第1段,分段符是分号“;”
Linux系统 shell基础(三)

2、命令:cat /etc/passwd |head -2 |cut -c 4

Linux系统 shell基础(三)

(二)sort命令

sort命令对文件中的某一字段进行排序,默认按ASCII码顺序,但受环境变量LC_ALL影响,默认情况下该变量值为空,并将排序结果标准输出(相当于把排序结果cat到屏幕上)。sort命令既可以从特定的文件,也可以从stdin中获取输入。关于sort命令的排序标准,参见Linux sort命令的几个细节问题这篇文章(转载至:http://blog.csdn.net/zenghui08/article/details/7938975

命令写法
选项:
-t<分隔字符>:指定排序时所用的栏位分隔字符;
-n:依照数值的大小排序,采用该选项时,字母或者符号开头的文字会被认为数值是0而排在前面
-r:以相反的顺序来排序;
-u:表示去重复
-kn1,n2:表示由n1区间排序到n2区间,可以只写-kn1,即对n2字段排序。
用法举例:
1、对文件passwd前5行进行排序
命令:head -n 5 /etc/passwd | sort
Linux系统 shell基础(三)
默认情况是root在第一行的。这里adm这个到第一行了。
2、对文件test1按数字排序
Linux系统 shell基础(三)
注意符号和字母的行因为等于0所以排在前面
3、对passwd文件前三行按照第三列数字大小排序并输出结果。

head -n 3 /etc/passwd | sort -t “:” -k3 -n

Linux系统 shell基础(三)

(三)wc命令

wc命令用于统计文档的行数、字符数或词数。
选项:
-l :统计行数
-m:统计字符数
-w:统计词数
用法举例
我先新建一个测试文档,他的内容是下面这个
Linux系统 shell基础(三)
1、wc -l 统计行数
Linux系统 shell基础(三)
2、wc -m统计字符数(注意末尾那个$表示换行的意思)
Linux系统 shell基础(三)
3、wc -w统计词数
Linux系统 shell基础(三)
看来应该是把只要是两个分隔符之间的东西就认为是一个word。这个word不是语言学上的word。

(四)uniq命令

uniq命令是用来去重的,他去的是两个连续行之间的重,那么你第一行和第三行内容重复的话,uniq是不去的,所以我们一般把这个命令和sort一起用,先排序再去重。注意结果是输出到屏幕中,不会去修改原始文件,除非你用重定向把原始文件内容修改掉。
选项:
-c 统计某一内容重复次数
用法举例:
1、排序1.txt 并去重显示,同时显示某一字符串重复次数。
Linux系统 shell基础(三)

(五)tee命令

tee命令用于将数据重定向到文件,另一方面还可以提供一份重定向数据的副本作为后续命令的stdin。tee - read from standard input and write to standard output and files,简单的说就是把数据重定向到给定文件和屏幕上。该命令一般跟在|管道符之后。
选项:
-a 追加,像>>追加重定向。
用法举例:

echo "i am learning linux" | tee 2.txt

Linux系统 shell基础(三)

(六)tr命令

tr命令用于替换字符,从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。
用法:tr [选项]... SET1 [SET2]
选项:
-d 删除某个字符,后面跟要删除的字符
-s删除重复的字符,注意是连续相同的字符
用法举例:
1、替换文字中的小写字母为大写字母

echo "HELLOWORLD" | tr '[A-Z]' '[a-z]'

Linux系统 shell基础(三)

2、替换某个字符

cat 1.txt | tr '1' '@'

Linux系统 shell基础(三)

(七)split命令

split命令可以将一个大文件分割成很多个小文件,有时需要将文件分割成更小的片段,比如为提高可读性,生成日志等。实际工作中比如你碰到一个10G的日志文件,这时你不做切割基本无法查看他,所以我们需要split他来查阅。

用法:split [选项]... [输入 [前缀]]

选项
-b 指定分割后每个文件大小,可以写成10KB、1.44MB等等
-l 指定多少行为一个分割文件

用法举例:
1、把一个文件拆成1000字节一个文件,并以test为前缀

split -b 1000 a.txt test

Linux系统 shell基础(三)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章