bash的基礎(chǔ)特性
globbing:文件名通配(整體文件名匹配潮罪,非局部文件名匹配)
匹配模式:元字符
-
* :匹配任意長度的任意字符
str*,*str*,*str,*s*t*r* -
?:匹配任何單個字符
str?,?str,?str?,?s?t?r? - []:匹配指定范圍內(nèi)的任意單個字符
- [[:upper:]]或[A-Z]:所有大寫字母
- [[:lower:]]:所有小寫字母
- [[:alpha:]]或[a-z]:所有字母
- [[:digit:]]或[0-9]:所有數(shù)字
- [[:alnum:]]:所有字母和數(shù)字
- [[:space:]]:所有空白字符
- [[:punct:]]:所有標點符號
-
[^]:匹配指定范圍外的任意單個字符磕道,相當于反向匹配
*“\”為轉(zhuǎn)義符
IO重定向及管道
程序是指令加數(shù)據(jù)适贸,必須有IO
- 輸入設(shè)備包括:鍵盤設(shè)備、文件系統(tǒng)上的常規(guī)文件泼诱、網(wǎng)卡等
- 輸出設(shè)備包括:顯示器、文件系統(tǒng)上的常規(guī)文件碉克,網(wǎng)卡等
程序的數(shù)據(jù)流分三種:
- 輸入的數(shù)據(jù)流:標準輸入(stdin),鍵盤
- 輸出的數(shù)據(jù)流:標準輸出(stdon)赁还,顯示器
- 錯誤輸出流: 錯誤輸出(stderr)妖泄,顯示器
fd:file descriptor,文件描述符
- 標準輸入:0
- 標準輸出:1
- 錯誤輸出:2
IO重定向
輸出重定向秽浇,>
特性:覆蓋輸出浮庐,無提示,不可恢復(fù)柬焕,危險操作审残!
set
設(shè)置或撤銷,僅針對當前特性
-c 禁止覆蓋輸出重定向已經(jīng)存在的文件斑举;
~]# set -c 表示打開set特性搅轿,此時若要強行覆蓋可以使用[path] >| [path]實現(xiàn)
~]# set +c 表示關(guān)閉set特性輸出重定向,>>
特性:追加輸出富玷,把輸出添加到目標
錯誤輸出流重定向: 2> (同樣會覆蓋文件)璧坟,2>>
合并正常輸出流和錯誤輸出流
&>,&>>
~]# COMMAND > [path] 2>&1
~]# COMMAND >> [path] 2>&1特殊設(shè)備:/dev/null
任何數(shù)據(jù)的輸入/dev/null都會丟棄,也叫數(shù)據(jù)黑洞
單不需要輸入的結(jié)果時就可以把數(shù)據(jù)流定向到/dev/null
如:~]# head -1 /etc/passwd &> /dev/null輸入重定向赎懦,<
tr命令:
把輸入的數(shù)據(jù)當中的字符雀鹃,凡是在SET1定義范圍出現(xiàn)的,全部對位轉(zhuǎn)換為SET2出現(xiàn)的字符励两。
其過程不會修改源文件,只是把結(jié)果輸出到顯示器
tr [option]...SET1[SET2]
~]# tr SET1 SET2 < [PATH]
-d
如:~]# tr [a-z][A-Z]
表示接下來的輸入會把小寫字母轉(zhuǎn)換為大寫字母輸出在顯示器
~]# tr [a-z][A-Z] < [PATH]
表示把[PATH]內(nèi)容中的小寫字母替換為大寫字母并輸出
~]# tr -d SET1 < [PATH]
表示把[PATH]中符合SET1條件的內(nèi)容刪除并輸出
-
<< :Here Document
cat << [結(jié)束符]
表示接下來輸入的內(nèi)容在輸入結(jié)束符后會全部輸出至顯示器
*結(jié)束符不應(yīng)與輸入內(nèi)容匹配
cat > [PATH&NAME] << [結(jié)束符]
表示接下來輸入的內(nèi)容將在[PATH&NAME]中創(chuàng)建一個名為NAME的文檔黎茎,并保存
管道
連接程序,實現(xiàn)將前一個命令的輸出直接定向給后一個程序當輸入數(shù)據(jù)流
COMMAND1 | COMMAND2 | COMMAND3……
如:
~]# cat /etc/issue | tr [a-z][A-Z]
tee命令
把輸入數(shù)據(jù)流輸出至顯示器并保存至指定文件当悔,經(jīng)常跟管道一起使用傅瞻,實現(xiàn)數(shù)據(jù)流分方向發(fā)送
COMMAND | tee /PATH/TO/SOMEFILE
如:
~]# cat /etc/issue | tee /tmp/issue.tee