在学习 linux 过程中,也许已经接触过某个特殊符号,例如: * ,它是一个通配符,代表零个或者多个字符或数字。下面我们就介绍下常用的特殊符号。
*
代表零个或者多个任意字符
[root@evan-01 ~]# ls
11.txt 3.txt a.txt test test2.txt.bak txtdir
1.txt anaconda-ks.cfg bb.txt test2 test3_soft.txt
2.txt anaconda-ks.cfg.bak ojbk.txt test2_heard.txt test3.txt.bak
[root@evan-01 ~]# ls *.txt
11.txt 1.txt 2.txt 3.txt a.txt bb.txt ojbk.txt test2_heard.txt test3_soft.txt
[root@evan-01 ~]#
?
代表一个任意的字符
[root@evan-01 ~]# ls
11.txt 3.txt a.txt test test2.txt.bak txtdir
1.txt anaconda-ks.cfg bb.txt test2 test3_soft.txt
2.txt anaconda-ks.cfg.bak ojbk.txt test2_heard.txt test3.txt.bak
[root@evan-01 ~]# ls ?.txt
1.txt 2.txt 3.txt a.txt
[root@evan-01 ~]#
#
注释符号(注释不会被展示出来)
[root@evan-01 ~]# name=evan #这个符号后面内容都是注释,不被显示
[root@evan-01 ~]# echo $name
evan
[root@evan-01 ~]#
\
脱义字符
[root@evan-01 ~]# a=1
[root@evan-01 ~]# b=2
[root@evan-01 ~]# c=$a$b
[root@evan-01 ~]# echo $c
12
[root@evan-01 ~]#
我们实际想要的是吧 $a$b
输出出来,而不是作为变量 a b 输出出来,怎么办呢
之前介绍过一种方法,放到 ''
号里面,这样就会认为是字符串,直接输出了
[root@evan-01 ~]# a=1
[root@evan-01 ~]# b=2
[root@evan-01 ~]# c='$a$b'
[root@evan-01 ~]# echo $c
$a$b
[root@evan-01 ~]#
在这再介绍一种方法,把 $ 代表变量的含义给去掉,也就是脱义
[root@evan-01 ~]# a=1
[root@evan-01 ~]# b=2
[root@evan-01 ~]# c=\$a\%b
[root@evan-01 ~]# echo $c
$a%b
[root@evan-01 ~]#
|
管道符
这个字符在前面多次出现过,它的作用是将前面命令的输出作为后面命令的输入。这里提到的后面的命令,并不是所有的命令都可以的,一般针对文档操作的命令比较常用。例如:cat 、less、head、tail、grep、cut 、sort、wc、uniq、tee、tr、split、sed、awk等,其中 grep、sed 和 awk 是正则表达式所掌握的工具
[root@evan-01 ~]# ls
11.txt 3.txt a.txt test test2.txt.bak txtdir
1.txt anaconda-ks.cfg bb.txt test2 test3_soft.txt
2.txt anaconda-ks.cfg.bak ojbk.txt test2_heard.txt test3.txt.bak
[root@evan-01 ~]# cat 3.txt | wc -l
4714
[root@evan-01 ~]#
cut 命令
cut 命令用来截取某一个字段
选项 | 含义 |
---|---|
-d | 后面跟分隔字符,分隔字符要用单引号括起来 |
-c | 后面接的是第几个字符(后面可以是数字 n,也可以是区间 n1-n2) |
-f | 后面接的是第几个区块(后面可以是数字 n,也可以是区间 n1-n2) |
按区块截取
[root@evan-01 ~]# cat /etc/passwd | head -2
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@evan-01 ~]# cat /etc/passwd | head -2 | cut -d ':' -f 1
root
bin
[root@evan-01 ~]# cat /etc/passwd | head -2 | cut -d ':' -f 1,2
root:x
bin:x
[root@evan-01 ~]# cat /etc/passwd | head -2 | cut -d ':' -f 1-3
root:x:0
bin:x:1
[root@evan-01 ~]#
按字符截取
[root@evan-01 ~]# cat /etc/passwd | head -2
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[root@evan-01 ~]# cat /etc/passwd | head -2 | cut -c1
r
b
[root@evan-01 ~]# cat /etc/passwd | head -2 | cut -c1,2
ro
bi
[root@evan-01 ~]# cat /etc/passwd | head -2 | cut -c1-10
root:x:0:0
bin:x:1:1:
[root@evan-01 ~]#