在學習 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 ~]#