天天看點

65.shell特殊符号與和cut,sort,wc,uniq,tee,tr,split指令liunx的特殊符号cut指令sort指令WC指令unip指令指令splitshell一些其他特殊符号1、特殊符号$2、特殊符号;3、特殊符号~4、特殊符号&

代表字母或者數字 多個 

? 任意一個字元

"#" 注釋

\ 脫義字元

| 管道符

[root@localhost /]# ls *.txt

1.txt

[root@localhost /]#

[root@localhost /]# ls ?.txt

[root@localhost /]# #11111

[root@localhost /]# 

PS:意思就代表着說明

[root@localhost /]# ls .txt

ls: 無法通路.txt: 沒有那個檔案或目錄

[root@localhost /]# cat /etc/passwd|grep root

root:x:0:0:root:/root:/bin/bash

operator:x:11:0:operator:/root:/sbin/nologin

檔案管理

用來截取某一個字段來顯示出來

cut 【參數】

-d, --delimiter=分界符 使用指定分界符代替制表符作為區域分界

-c, --characters=清單 隻選中指定的這些字元

-f :指定某一段

[root@localhost /]# cat /etc/passwd|head |cut -d ":" -f 1

root

bin

daemon

adm

lp

sync

shutdown

halt

mail

operator

此指令就是用來針對文檔進行排序的

sort [參數] [檔案]

-t 分割符:和cut -d 一樣

-n :使用純數字排序

-r :方向排序

-u :去重複

-k :-kn1,n2 :由n1區間排序到n2區間,可以隻寫-kn1,即對n1字段排序

[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

shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

sync:x:5:0:sync:/sbin:/bin/sync

用于統計

wc [參數]

-l:統計行數

-m:統計字元數

-w:統計詞數

[root@localhost /]# cat /etc/passwd |wc -l -m -w

19 29 883

[root@localhost /]# cat /etc/passwd |wc

PS:其實不需要加參數的

用來删除重複的行

xxxxx|unip

參數

-c 統計重複的行數

[root@localhost ~]# uniq testb.txt

111

222

333

[root@localhost ~]# sort testb.txt |uniq

[root@localhost ~]# sort testb.txt |uniq -c

2 111

1 222

1 333

tee後面跟檔案名,其作用類似于重定向>,比重定向多一個功能,把檔案寫入後面所跟的檔案時并顯示在螢幕上,通常用于管道符 |後。

#echo “aaaaaaaaaaaaaaa” |tee testb.txt

aaaaaaaaaaaaaaa

#cat testb.txt

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用于切割文檔,常用的選項為-b和-l。

-b 表示依據大小來分割文檔,機關為byte

-l 表示依據行數來分割文檔

#split –b 500 passwd

#ls

passwd xaa xab xac xad xae

$可以用作變量前面的辨別符,還可以和!結合使用。

#cd ..

#ls testb.txt

testb.txt

#ls !$ 

ls testb.txt

!$表示上條指令的最後一個變量,本例中上條指令最後是testb.txt,那麼在目前指令下輸入!$則表示testb.txt。

在一行指令中運作兩個或兩個以上的指令,需要在指令之間加符号;。

#mkdir testb.txt ; touch test1.txt ; touch test2.txt ; ls –d test* 建立目錄、建立檔案、列出目錄

符号~代表使用者的家目錄,root使用者的家目錄是/root,普通使用者的家目錄是/home/username。

把一條指令放到背景執行,則需要加上符号&,它通常用于指令運作時間較長的情況。比如,可以用在sleep後,如下所示:

#sleep 30 &

[1]3008

#jobs

[1]+ 運作中 sleep 30 &

和>>分别表示取代和追加的意思。當我們運作一個指令報錯時,報錯資訊會輸出到目前螢幕。如果想重定向到一個文本,則要用重定向符号2>或者2>>,它們分别表示錯誤重定向和錯誤追加重定向。

#ls aaaa

ls:無法通路aaaa:沒有那個檔案或目錄

#ls aaaa 2> /tmp/error

#cat /tmp/error

ls:無法通路aaaa:沒有那個檔案或目錄

#ls aaaa 2>> /tmp/error

中括号内為字元組合,代表字元組合中的任意一個,還可以表示一個範圍(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

在上面剛剛提到了分号,用于多條指令間的分隔符。另外還有兩個可以用于多條指令中間的特殊符号,那就是 “&&” 和 “||” 下面把這幾種情況全列出:

command1 ; command2

command1 && command2

command1 || command2

使用 ”;” 時,不管command1是否執行成功都會執行command2;

使用 “&&” 時,隻有command1執行成功後,command2才會執行,否則command2不執行;

使用 “||” 時,command1執行成功後command2 不執行,否則去執行command2,總之command1和command2總有一條指令會執行。

本文轉自 閃電王 51CTO部落格,原文連結:http://blog.51cto.com/sdwaqw/2060908