shell特殊符號,cut,sort,wc,uniq,tee,tr,split命令
*代表零個或多個任意字符,它的用法如下:
#ls /tmp/4_6/test*
/tmp/4_6/test1 /tmp/4_6/test22 /tmp/4_6/test333
?只代表一個任意的字符,它的用法如下:
#touch /tmp/4_6/test*
/tmp/4_6/test1 /tmp/4_6/test2 /tmp/4_6/testa
註釋符號#,這個符號在Linux中表示註釋說明,即#後面的內容都會被忽略。用法如下:
#abc=123 #aaaa
#echo $abc
123
脫義字符\
這個字符會將後面的特殊符號(如*)還原為普通字符。用法如下:
#ls –d test\*
ls:無法訪問test*:沒有那個文件或目錄
再說管道符|
它的作用是將前面命令的輸出作為後面命令的輸入。並不是所有的命令都可以,一般常用對文檔操作的命令比較常用。例如cat、less、head、tail、grep、cut、sort、wc、uniq、tee、tr、split、sed、awk等。其中grep、sed和awk都是正則表達式工具。
命令cut
cut命令用來截取某一個字段,其格式為cut –d ‘分隔字符’[-cf]n,這裏n是數字。
選項:
-d 後面跟分隔符,分隔字符要有單引號括起來。
-c 後面接的是第幾個字符。
-f 後面接的是第幾個區塊。
cut命令用法如下:
#cut /etc/passwd|cut –d ‘:’ –f 1 |head -5
root
bin
dameon
adm
lp
-d選項後面加冒號作為分隔符,-f表現截取第一段,-f和1之間的空格可有可無。
示例命令如下:
#head -n2 /etc/passwd |cut -c2
o
i
#head -n2 /etc/passwd |cut -c1
r
b
#head -n2/etc/passwd|cut -c1-10
root:x:0:0
bin:x:1:1:
#head -n2 /etc/passwd|cut -c5-10
x:0:0
x:1:1:
-c選項後面可以是1個數字n,也可以是一個區間n1-n2,還可以是多個數字n1、n2、n3。
示例命令如下:
#head -n2 /etc/passwd|cut -c1,3,10
ro0
bn:
命令sort
sort命令用作排序,其格式為sort[-t分隔符][-kn1,n2][-nru],這裏n1和n2指的是數字,其
他選項的含義如下。
-t 後面跟分割字符,作用跟cut的-d選項一樣。
-n 表示使用純數字排序。
-r 表示反向排序。
-u表示去重復
-kn1,n2 表示由n1區間排序到n2區間,可以只寫-kn1,即對n1字段排序。
如果sort不加任何選項,則從首字符向後依次按ASCII碼值進行比較,最後將它們按升序輸出。示例命令如下:
#head –n5 /etc/passwd|sort
adm:x:3:4:adm:/var/adm:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
dameon:x:2:2:dameon:/sbin:/sbin/nologin
lp:x:4:7:lp:/var/spool.lpd:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
-t選項後面跟分隔符,-k選項後跟單個數字表示對第幾個區域的字符串排序,
-n選項則表示使用純數字排序。
示例命令如下:
#head –n5 /etc/passwd|sort -t: -k3 -n
head –n5 /etc/passwd|sort -t: -k3 -n
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
dameon:x:2:2:dameon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool.lpd:/sbin/nologin
-k選項和n2表示對n1和n2區域內的字符串排序,-r選項則表示反向排序。示例命令如下:
#head –n5 /etc/passwd|sort –t: -k3,5 –r
lp:x:4:7:lp:/var/spool.lpd:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
dameon:x:2:2:dameon:/sbin:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
這裏-k3,5表示對第3區域至第5區域間字符串排序。
命令wc
wc命令用於統計文檔的行數、字符數、或詞數。該命令的常用選項由-l(統計行數)、-m(統計字符數)和-w(統計詞數)。示例命令如下:
#wc /etc/passwd
45 90 2361 /etc/passwd
#wc -l /etc/passwd
45 /etc/passwd
#wc -m /etc/passwd
2361 /ett/passwd
#wc -w /etc/passwd
90 /etc/passwd
如果wc不跟任何選項,直接跟文檔,則會把行數、詞數、字符數依次輸出。
命令uniq
uniq命令用來刪除重復的行,該命令只有-c選項比較常用,它表示統計重復的行數,並把行數寫在前面,示例命令如下:
#vim testb.txt //把下面的內容寫入test.txt並保存
111
222
111
333
使用uniq前,必須先給文件排序,否則不管用。示例命令如下:
#uniq testb.txt
111
222
111
333
#sort testb.txt|uniq
111
222
333
#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命令常用於把小寫字母變成大寫字母,如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
tr命令還可以替換一個字符,示例命令如下:
#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,示例命令如下:
#mkdir split_dir
#cd !$
cd split_dir
#cp /etc/passwd ./
#split –b 500 passwd
#ls
passwd xaa xab xac xad xae
如果split不指定目標文件名,則會以xaa、xab……這樣的文件名來存取切割後的文件。指定目標文件名,示例如下:
#rm –f xa*
#split –b 500 passwd 123
#ls
#123aa 123ab 123ac 123ad 123ae passwd
-l 表示依據行數來分割文檔,示例命令如下:
#rm -f 123a*
#split -l 10 passwd
#wc -l *
45 passwd
10 xaa
10 xab
10 xac
10 xad
5 xae
90 總用量
特殊符號$
符號$可以用作變量前面的標識符,還可以和!結合使用。示例命令如下:
#cd ..
#ls testb.txt
testb.txt
#ls !$
ls testb.txt
testb.txt
!$表示上條命令的最後一個變量,本例中上條命令最後是testb.txt,那麽在當前命令下輸入!$則表示testb.txt。
特殊符號;
通常,我們在一行命令中輸入一個命令,然後回車就運行了。如果想在一行中運行兩個或兩個以上的命令,需要在命令之間加符號;。示例命令如下:
#mkdir testb.txt ; touch test1.txt ; touch test2.txt ; ls –d test*
特殊符號~
符號~代表用戶的家目錄,root用戶的家目錄是/root,普通用戶的家目錄是/home/username。示例命令如下:
#cd ~
#pwd
/root
#su ccj
#cd ~
#pwd
/home/ccj
特殊符號&
如果想把一條命令放到後臺執行,則需要加上符號&,它通常用於命令運行時間較長的情況。比如,可以用在sleep後,如下所示:
#sleep 30 &
[1]3008
#jobs
[1]+ 運行中 sleep 30 &
重定向符號>、>>、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:沒有那個文件或目錄
中括號[]
中括號內為字符組合,代表字符組合中的任意一個,可以是一個範圍(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
特殊符號&& ||
#命令1;命令2
#命令1&&命令2
#命令1||命令2
使用;時,不管命令1是否執行成功,都會執行命令2。
使用&&時,只有命令1執行成功,才會執行命令2,否則不執行命令2。
使用||時,命令1執行成功後則不執行命令2,否則執行命令2。
shell特殊符號,cut,sort,wc,uniq,tee,tr,split命令