bash的基礎(chǔ)特性、IO重定向及管道

2016年10月24日00:28:19 1 4,054 ℃

bash的基礎(chǔ)特性

globbing:文件名速配(整體文件名匹配,而非部分)

匹配模式:元字符

*:匹配任意長度的任意字符

pa*      pa,paa passwd

*pa*     abdpaee 

*pa      rreeepa

*p*a*   eeepdda eeepadd

?:匹配任意單個字符

pa?     pab,paa,pac

??pa

p?a

p?a?

[ ]:匹配指定范圍內(nèi)的任意單個字符

有幾種特殊格式

[a-z],[A-Z],[0-9],[a-z0-9]

[[:upper:]] 所有大寫字母

[[:lower:]]  所有小寫字母

[[:alpha:]] 所有字母

[[:digit:]]  所有數(shù)字

[[:alnum:]] 所有的字母和數(shù)字

[[:space:]] 所有空白字符

[[:punct:]] 所有標(biāo)點(diǎn)符號

pa[0-9]           pa3

pa[0-9][0-9]   pa56

[^]匹配指定范圍外的任意單個字符

[^[:upper:]]

[^[:alnum:]]

練習(xí)1:顯示var目錄下所有以l開頭,以一個小寫字母結(jié)尾,且中間出現(xiàn)任意一個字符的文件或目錄

ls -d /var/l?[[:lower:]]

練習(xí)2:顯示/etc目錄,以任意一位數(shù)字開頭,且以非數(shù)字結(jié)尾的文件或者目錄

ls -d /etc/[0-9]*[^0-9]

練習(xí)3:顯示/etc 目錄下,以非字母開頭,后面跟一個字母及其他任意字符任意長度的文件或者目錄

ls -d /etc/[^a-z][a-z]*

練習(xí)4:復(fù)制/etc 目錄下,所有以m開頭,以非數(shù)字結(jié)尾的文件或者目錄至/tmp/test123目錄

cp -r /etc/m*[^0-9] /tmp/test123/

練習(xí)5:復(fù)制/usr/share/man目錄下,所有以man開頭后面跟一個數(shù)字結(jié)尾的文件或目錄至/tmp/man目錄

cp -r /usr/share/man/man[0-9] /tmp/man/

練習(xí)6:復(fù)制/etc目錄下,所有以.conf結(jié)尾,并且以m,n,r,p開頭的文件至/tem/conf.d/ 目錄

cp -r /etc/[mnrp]*.conf /tmp/conf.d/

IO重定向及管道

程序:指令+數(shù)據(jù)

程序:IO

可用于輸入的設(shè)備:文件

可用于輸出的設(shè)備:文件

程序的數(shù)據(jù)流有三種:

輸入的數(shù)據(jù)流:<--標(biāo)準(zhǔn)輸入(stdin),鍵盤

輸出的數(shù)據(jù)流:-->標(biāo)準(zhǔn)輸出(stdout),顯示器

錯誤輸出流:--> 錯誤輸出(stderr),顯示器

fd: file descriptor , 文件描述符

標(biāo)準(zhǔn)輸入:0

標(biāo)注輸出:1

錯誤輸出:2

IO重定向:

輸出重定向:>

特性: 覆蓋輸出

cat /etc/issue > /tmp/123.txt

輸出重定向:>>

特性:追加輸出

cat /etc/issue >> /tmp/123.txt

set -C

禁止覆蓋輸出重定向至已存在的文件

此時可使用強(qiáng)制覆蓋輸出: >|

set +C

關(guān)閉上述特性

錯誤輸出流重定向:2>,2>>

合并正常輸出流和錯誤輸出流:

(1)&>, &>>

(2)COMMAND > /path/to/somefile 2>&1

     COMMAND >> /path/to/somefile 2>&1

特殊設(shè)備:/dev/null

輸入重定向: <

tr命令:

tr [OPTION]... SET1 [SET2]

把輸入的數(shù)據(jù)當(dāng)中的字符,凡是在SITE1定義范圍內(nèi)出現(xiàn)的,通通對位轉(zhuǎn)換為SET2出現(xiàn)的字符

用法1:

tr SET1 SET2 < /path/from/somefile

tr [a-z] [A-Z] < /etc/issue 把所有字符替換為大寫

用法2:

tr -d SET11 < /path/form/somefile

tr -d 'abc' < /etc/issue  刪除abc字母

tr -d '[A-Z]' < /etc/issue 刪除所有大寫字母

注意:不修改源文件

Here Document: <<

cat << EOF

cat > /path/to/somefile <<EOF 寫入到文件

管道:連接程序,實(shí)現(xiàn)將前一個命令的輸出直接定向給后一個程序當(dāng)作輸入數(shù)據(jù)流

COMMAND1 | COMMAND2 | COMMAND3| 

例:who | head -1 | tr [a-z] [A-Z] | tr -d [0-9]

tee命令:輸出的

COMMAND | tee /path/to/somefile

練習(xí)1:把/etc/passwd文件的前六行轉(zhuǎn)換為大寫字母輸出

head -n 6 /etc/passwd | tr [a-z] [A-Z]

【騰訊云】云服務(wù)器、云數(shù)據(jù)庫、COS、CDN、短信等云產(chǎn)品特惠熱賣中

發(fā)表評論取消回復(fù)

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前評論:1   其中:訪客  0   博主  0

    • avatar 蘿莉 1

      訪問您的博客已成習(xí)慣!