65.shell特殊符號與和cut,sort,wc,uniq,tee,tr,split命令
- 代表字母或者數字 多個
? 任意一個字符
"#" 註釋
\ 脫義字符
| 管道符
1.* 代表任意個任意字符或者數字
[root@localhost /]# ls *.txt
1.txt
[root@localhost /]#
2.?任意一個字符
[root@localhost /]# ls ?.txt
1.txt
[root@localhost /]#
3.註釋
[root@localhost /]# #11111
[root@localhost /]#
PS:意思就代表著說明
4、\脫義
[root@localhost /]# ls .txt
1.txt
ls: 無法訪問.txt: 沒有那個文件或目錄
[root@localhost /]#
5.管道符
[root@localhost /]# cat /etc/passwd|grep root
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@localhost /]#
cut命令
命令類型
文件管理
命令描述
用來截取某一個字段來顯示出來
命令語法
cut 【參數】
參數
-d, --delimiter=分界符 使用指定分界符代替制表符作為區域分界
-c, --characters=列表 只選中指定的這些字符
案例:查看/etc/passwd文件 以:為分割符 顯示 第一段
[root@localhost /]# cat /etc/passwd|head |cut -d ":" -f 1
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
[root@localhost /]#
sort命令
命令描述
此命令就是用來針對文檔進行排序的
命令語法
sort [參數] [文件]
參數
-t 分割符:和cut -d 一樣
-n :使用純數字排序
-r :方向排序
-u :去重復
-k :-kn1,n2 :由n1區間排序到n2區間,可以只寫-kn1,即對n1字段排序
案例一:不加任何參數,會用ASCII碼值進行比較,最後將他們按升序輸出。
[root@localhost /]#
[root@localhost /]# head /etc/passwd|sort
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
halt:x:7:0:halt:/sbin:/sbin/halt
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
sync:x:5:0:sync:/sbin:/bin/sync
[root@localhost /]#
WC命令
命令描述
用於統計
命令語法
wc [參數]
參數
-l:統計行數
-m:統計字符數
-w:統計詞數
案例
[root@localhost /]# cat /etc/passwd |wc -l -m -w
19 29 883
[root@localhost /]# cat /etc/passwd |wc
19 29 883
[root@localhost /]#
PS:其實不需要加參數的
unip命令
命令描述
用來刪除重復的行
命令語法
xxxxx|unip
參數
-c 統計重復的行數
案例
[root@localhost ~]# uniq testb.txt
111
222
111
333
[root@localhost ~]# sort testb.txt |uniq
111
222
333
[root@localhost ~]# sort testb.txt |uniq -c
2 111
1 222
1 333
tee命令
tee後面跟文件名,其作用類似於重定向>,比重定向多一個功能,把文件寫入後面所跟的文件時並顯示在屏幕上,通常用於管道符 |後。
案例
#echo “aaaaaaaaaaaaaaa” |tee testb.txt
aaaaaaaaaaaaaaa
#cat testb.txt
aaaaaaaaaaaaaaa
命令tr
tr用於替換字符,常用來處理文檔中出現的特殊符號,如DOS文檔中出現的符號 ^M 。
選項:
參數
-d 表示刪除某個字符,後面跟要刪除的字符。
-s 表示刪除重復的字符。
把小寫字母變成大寫字母,如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
還可以替換一個字符:
#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
-l 表示依據行數來分割文檔
案例
#split –b 500 passwd
#ls
passwd xaa xab xac xad xae
shell一些其他特殊符號
1、特殊符號$
$可以用作變量前面的標識符,還可以和!結合使用。
#cd ..
#ls testb.txt
testb.txt
#ls !$
ls testb.txt
testb.txt
!$表示上條命令的最後一個變量,本例中上條命令最後是testb.txt,那麽在當前命令下輸入!$則表示testb.txt。
2、特殊符號;
在一行命令中運行兩個或兩個以上的命令,需要在命令之間加符號;。
#mkdir testb.txt ; touch test1.txt ; touch test2.txt ; ls –d test* 創建目錄、創建文件、列出目錄
3、特殊符號~
符號~代表用戶的家目錄,root用戶的家目錄是/root,普通用戶的家目錄是/home/username。
4、特殊符號&
把一條命令放到後臺執行,則需要加上符號&,它通常用於命令運行時間較長的情況。比如,可以用在sleep後,如下所示:
#sleep 30 &
[1]3008
#jobs
[1]+ 運行中 sleep 30 &
5、重定向符號>、>>、2>和2>>
和>>分別表示取代和追加的意思。當我們運行一個命令報錯時,報錯信息會輸出到當前屏幕。如果想重定向到一個文本,則要用重定向符號2>或者2>>,它們分別表示錯誤重定向和錯誤追加重定向。
#ls aaaa
ls:無法訪問aaaa:沒有那個文件或目錄
#ls aaaa 2> /tmp/error
#cat /tmp/error
ls:無法訪問aaaa:沒有那個文件或目錄
#ls aaaa 2>> /tmp/error
#cat /tmp/error
ls:無法訪問aaaa:沒有那個文件或目錄
ls:無法訪問aaaa:沒有那個文件或目錄
6、中括號[ ]
中括號內為字符組合,代表字符組合中的任意一個,還可以表示一個範圍(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
test1.txt test2.txt testb.txt
7、特殊符號&& ||
在上面剛剛提到了分號,用於多條命令間的分隔符。另外還有兩個可以用於多條命令中間的特殊符號,那就是 “&&” 和 “||” 下面把這幾種情況全列出:
command1 ; command2
command1 && command2
command1 || command2
使用 ”;” 時,不管command1是否執行成功都會執行command2;
使用 “&&” 時,只有command1執行成功後,command2才會執行,否則command2不執行;
使用 “||” 時,command1執行成功後command2 不執行,否則去執行command2,總之command1和command2總有一條命令會執行。
65.shell特殊符號與和cut,sort,wc,uniq,tee,tr,split命令