Linux shell基础知识_8(下)

时间:2022-12-04 08:11:55

shell特殊符_10

特殊符号

  • *任意个任意字符

  • ?任意一个字符

  • #注释字符,#后面的命令不生效

  • \脱义字符,取消特殊字符的原意

[root@zyshanlinux-01 ~]# a=1
[root@zyshanlinux-01 ~]# b=2
[root@zyshanlinux-01 ~]# c='$a$b'
[root@zyshanlinux-01 ~]# echo $c
$a$b
[root@zyshanlinux-01 ~]# c=\$a\$b  ##脱义
[root@zyshanlinux-01 ~]# echo $c
$a$b


  • |管道符

几个和管道有关的命令,这些命令并没有更改文件的内容。

1、cut分割

cut命令用来显示行中的指定部分,删除文件中指定字段。cut经常用来显示文件的内容,类似于下的type命令。

说明:该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数file所指 明的文件,将它们的内容输出到标准输出上;其二是连接两个或多个文件,如cut fl f2 > f3将把文件fl和几的内容合并起来,然后通过输出重定向符“>”的作用,将它们放入文件f3中。

当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more等命令分屏显示。为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏。按Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态。

语法

cut (选项) (参数)

选项

-d:指定字段的分隔符,默认的字段分隔符为“TAB”;-f:显示指定字段的内容;-c:仅显示行中指定范围的字符;

参数

文件:指定要进行内容过滤的文件。

示例

[root@zyshanlinux-01 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1
root
bin
[root@zyshanlinux-01 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1,2
root:x
bin:x
[root@zyshanlinux-01 ~]# cat /etc/passwd |head -2 |cut -d ":" -f 1-3
root:x:0
bin:x:1
[root@zyshanlinux-01 ~]# cat /etc/passwd |head -2 |cut -c 4
t
:

2、sort排序

sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入。

ASCII码排序

ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。 [1] 请注意,ASCII是American Standard Code for Information Interchange缩写,而不是ASCⅡ(罗马数字2),有很多人在这个地方产生误解。

语法

sort (选项) (参数)

选项

-n:依照数值的大小排序;

-r:以相反的顺序来排序;

-t<分隔字符>:指定排序时所用的栏位分隔字符; -kn1/-kn1,2

参数

文件:指定待排的文件列表。

示例

[root@zyshanlinux-01 ~]# sort /etc/passwd
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin


3、wc计算数字

wc命令用来计算数字。利用wc指令我们可以计算文件的Byte数、字数或是列数,若不指定文件名称,或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据。

语法

wc (选项) (参数)

选项

-l或——lines:只显示行数;-m: 统计字符数;-w或——words:只显示字数;-c或--bytes或——chars:只显示Bytes数;

参数

文件:需要统计的文件列表。

示例

[root@zyshanlinux-01 ~]# wc -l 1.txt10 1.txt

[root@zyshanlinux-01 ~]# wc -m 2.txt8 2.txt[root@zyshanlinux-01 ~]# cat -A 2.txtawk$wwc$[root@zyshanlinux-01 ~]# wc -w 2.txt2 2.txt

4、uniq去重

uniq命令用于报告或忽略文件中的重复行,一般与sort命令结合使用。

语法

uniq (选项) (参数)

选项

-c或——count:在每列旁边显示该行重复出现的次数;

参数

输入文件:指定要去除的重复行文件。如果不指定此项,则从标准读取数据;输出文件:指定要去除重复行后的内容要写入的输出文件。如果不指定此选项,则将内容显示到标准输出设备(显示终端)。

示例

[root@zyshanlinux-01 ~]# sort 2.txt |uniq   ##先排序,再去重复,否则去重复失败

123
awk
c
ww


5、tee和>类似,重定向的同时还在屏幕显示

tee命令用于将数据重定向到文件,另一方面还可以提供一份重定向数据的副本作为后续命令的stdin。简单的说就是把数据重定向到给定文件和屏幕上。

语法

tee (选项) (参数)

选项

-a:向文件中重定向时使用追加模式;-i:忽略中断(interrupt)信号。

参数

文件:指定输出重定向的文件。

示例

[root@zyshanlinux-01 ~]# sort 2.txt |uniq -c > a.txt
[root@zyshanlinux-01 ~]# cat a.txt
      1 
      2 123
      1 awk
      1 c
      2 ww
[root@zyshanlinux-01 ~]# > a.txt  ##清空a.txt的内容
[root@zyshanlinux-01 ~]# cat a.txt
[root@zyshanlinux-01 ~]# sort 2.txt |uniq -c |tee a.txt
      1 
      2 123
      1 awk
      1 c
      2 ww
[root@zyshanlinux-01 ~]# cat a.txt
      1 
      2 123
      1 awk
      1 c
      2 ww
[root@zyshanlinux-01 ~]# sort 2.txt |uniq -c |tee -a a.txt  ##与>>追加类似
      1 
      2 123
      1 awk
      1 c
      2 ww
[root@zyshanlinux-01 ~]# cat a.txt
      1 
      2 123
      1 awk
      1 c
      2 ww
      1 
      2 123
      1 awk
      1 c
      2 ww


6、tr替换字符,tr'a''b',大小写替换tr'[a-z]''[A-Z]'

tr命令可以对来自标准输入的字符进行替换、压缩和删除。它可以将一组字符变成另一组字符,经常用来编写优美的单行命令,作用很强大。

语法

tr (选项) (参数)

选项

-c或——complerment:取代所有不属于第一字符集的字符;-d或——delete:删除所有属于第一字符集的字符;-s或--squeeze-repeats:把连续重复的字符以单独一个字符表示;-t或--truncate-set1:先删除第一字符集较第二字符集多出的字符。

参数

字符集1:指定要转换或删除的原字符集。当执行转换操作时,必须使用参数“字符集2”指定转换的目标字符集。但执行删除操作时,不需要参数“字符集2”;字符集2:指定要转换成的目标字符集。

示例

[root@zyshanlinux-01 ~]# echo "zyshanlinux" |tr '[al]' '[AL]'
zyshAnLinux
[root@zyshanlinux-01 ~]# echo "zyshanlinux" |tr '[zl]' '[ZL]'
ZyshanLinux
[root@zyshanlinux-01 ~]# echo "zyshanlinux" |tr 'z' 'Z'
Zyshanlinux


7、split切割,-b大小(默认单位字节),-l行数

split命令可以将一个大文件分割成很多个小文件,有时需要将文件分割成更小的片段,比如为提高可读性,生成日志等。

选项

-b:值为每一输出档案的大小,单位为 byte。-C:每一输出档中,单行的最大 byte 数。-d:使用数字作为后缀。-l:值为每一输出档的列数大小。

示例

[root@zyshanlinux-01 ~]# split -b 100M bigfile
[root@zyshanlinux-01 ~]# split -l 1000 bigfile


  • $变量前缀,!$组合,正则里面表示行尾

  • ;多条命令写到一行,用分号分割

  • ~用户家目录,后面正则表达式表示匹配符

  • &放到命令后面,会把命令丢到后台

  • > >> 2> 2>> &>

  • []指定字符中的要给,[0-9],[z-zA-Z],[abc]

  • ||和&& ,用于命令之间,||类似或,&&类似与

[root@zyshanlinux-01 ~]# ls 1.txt ||wc -l 1.txt  ##前一条命令成功,不执行后一条命令
1.txt
[root@zyshanlinux-01 ~]# ls 1a.txt ||wc -l 1.txt  ##前一条命令失败,执行后一条命令
ls: 无法访问1a.txt: 没有那个文件或目录
10 1.txt
[root@zyshanlinux-01 ~]# ls 1.txt &&wc -l 1.txt  ##前一条命令成功,执行后一条命令
1.txt
10 1.txt
[root@zyshanlinux-01 ~]# ls 1a.txt &&wc -l 1.txt  ##前一条命令失败,不执行后条命令
ls: 无法访问1a.txt: 没有那个文件或目录


相关测验题目(必须要做):http://ask.apelearn.com/question/5437

简易审计系统(必须要预习): http://www.68idc.cn/help/server/linux/2014042190951.html

扩展:

关于PROMPT_COMMAND环境变量的含义 http://www.linuxnote.org/prompt_command-environment-variables.html

source exec 区别 http://alsww.blog.51cto.com/2001924/1113112

Linux特殊符号大全http://ask.apelearn.com/question/7720

sort并未按ASCII排序 http://blog.csdn.net/zenghui08/article/details/7938975