bash的基礎(chǔ)特性
globbing:文件名速配(整體文件名匹配,而非部分)
匹配模式:元字符
*:匹配任意長(zhǎng)度的任意字符
pa* pa,paa passwd
*pa* abdpaee
*pa rreeepa
*p*a* eeepdda eeepadd
?:匹配任意單個(gè)字符
pa? pab,paa,pac
??pa
p?a
p?a?
[ ]:匹配指定范圍內(nèi)的任意單個(gè)字符
有幾種特殊格式
[a-z],[A-Z],[0-9],[a-z0-9]
[[:upper:]] 所有大寫(xiě)字母
[[:lower:]] 所有小寫(xiě)字母
[[:alpha:]] 所有字母
[[:digit:]] 所有數(shù)字
[[:alnum:]] 所有的字母和數(shù)字
[[:space:]] 所有空白字符
[[:punct:]] 所有標(biāo)點(diǎn)符號(hào)
pa[0-9] pa3
pa[0-9][0-9] pa56
[^]匹配指定范圍外的任意單個(gè)字符
[^[:upper:]]
[^[:alnum:]]
練習(xí)1:顯示var目錄下所有以l開(kāi)頭,以一個(gè)小寫(xiě)字母結(jié)尾,且中間出現(xiàn)任意一個(gè)字符的文件或目錄
ls -d /var/l?[[:lower:]]
練習(xí)2:顯示/etc目錄,以任意一位數(shù)字開(kāi)頭,且以非數(shù)字結(jié)尾的文件或者目錄
ls -d /etc/[0-9]*[^0-9]
練習(xí)3:顯示/etc 目錄下,以非字母開(kāi)頭,后面跟一個(gè)字母及其他任意字符任意長(zhǎng)度的文件或者目錄
ls -d /etc/[^a-z][a-z]*
練習(xí)4:復(fù)制/etc 目錄下,所有以m開(kāi)頭,以非數(shù)字結(jié)尾的文件或者目錄至/tmp/test123目錄
cp -r /etc/m*[^0-9] /tmp/test123/
練習(xí)5:復(fù)制/usr/share/man目錄下,所有以man開(kāi)頭后面跟一個(gè)數(shù)字結(jié)尾的文件或目錄至/tmp/man目錄
cp -r /usr/share/man/man[0-9] /tmp/man/
練習(xí)6:復(fù)制/etc目錄下,所有以.conf結(jié)尾,并且以m,n,r,p開(kāi)頭的文件至/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),鍵盤(pán)
輸出的數(shù)據(jù)流:-->標(biāo)準(zhǔn)輸出(stdout),顯示器
錯(cuò)誤輸出流:--> 錯(cuò)誤輸出(stderr),顯示器
fd: file descriptor , 文件描述符
標(biāo)準(zhǔn)輸入:0
標(biāo)注輸出:1
錯(cuò)誤輸出:2
IO重定向:
輸出重定向:>
特性: 覆蓋輸出
cat /etc/issue > /tmp/123.txt
輸出重定向:>>
特性:追加輸出
cat /etc/issue >> /tmp/123.txt
set -C
禁止覆蓋輸出重定向至已存在的文件
此時(shí)可使用強(qiáng)制覆蓋輸出: >|
set +C
關(guān)閉上述特性
錯(cuò)誤輸出流重定向:2>,2>>
合并正常輸出流和錯(cuò)誤輸出流:
(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)的,通通對(duì)位轉(zhuǎn)換為SET2出現(xiàn)的字符
用法1:
tr SET1 SET2 < /path/from/somefile
tr [a-z] [A-Z] < /etc/issue 把所有字符替換為大寫(xiě)
用法2:
tr -d SET11 < /path/form/somefile
tr -d 'abc' < /etc/issue 刪除abc字母
tr -d '[A-Z]' < /etc/issue 刪除所有大寫(xiě)字母
注意:不修改源文件
Here Document: <<
cat << EOF
cat > /path/to/somefile <<EOF 寫(xiě)入到文件
管道:連接程序,實(shí)現(xiàn)將前一個(gè)命令的輸出直接定向給后一個(gè)程序當(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)換為大寫(xiě)字母輸出
head -n 6 /etc/passwd | tr [a-z] [A-Z]
2016年10月25日 下午2:38 沙發(fā)
訪問(wèn)您的博客已成習(xí)慣!