什么是bash:
shell作為用戶與計算機內核交互的接口,是用戶與計算機溝通的橋梁,而bash(borne again shell)是眾多shell里面最為流行一種,bash作為眾多shell里面的一種有著眾多的特性,掌握bash的眾多特性將會是我們今后學習linux必經之路。
首先介紹一下bash的特性之一
命令歷史:這個特性是將用戶之前執行過的命令保存到緩存當中,通過上下鍵以及history命令的特殊選項來方便用過順利完成操作系統功能。鍵入不帶任何選項的:history,bash會把你使用過的命令全部顯示出來,那有人就問來,這些命令是存到哪里的,注銷后這些命令還有嗎?別著急,我們一一來回答,首次登陸系統后用戶所鍵入的命令都是緩存到內存當中的,當該用戶注銷,這些命令會保存到家目錄下的/.bash.history當中。
下面就讓我們來看看history的用法:
history [n]:表示是要列出最近的 n 條命令行內容;
history -c:清空所有命令歷史;
history -a:將目前新增的 history 命令新增入 histfiles 中,若沒有加 histfiles ,則默認寫入 ~/.bash_history
歷史命令使用的竅門
?。。褐貜颓耙粋€命令
!char(字符): 重復前一個以“字符”開頭的命令
!num :按照history命令輸出中的序號來重復對應命令
!?abc :重復前一個包含abc的命令
!-n: 重復n個命令之前的那個命令
按鍵組合
1:使用up和down鍵來上下瀏覽之前執行的命令
2:鍵入ctr+r來在命令歷史中搜索命令
3:要重新調用前一個命令中的參數:Esc + .(點擊Esc鍵,然后點擊.鍵)
bash重要特性之二
命令行補全以及路徑補全:
首先看什么是命令行補全,根據內部命令或外部命令各自查找方式,查找以用戶指定字符開頭命令如果用戶指定開頭的字符串能唯一標識命令,則按TAB鍵可以直接補全此命令,否則,按兩次TAB鍵可以顯示所有以指定字符串開頭的命令;看到這樣的解釋是不是頭都蒙來,別著急,打個比方:就好比有一天老師沒拿花名冊點名字,突然忘記某個人的全名來,只知道姓什么,只點了一個姓,而剛剛班里就一個人是這個姓,那這個人就直接答到,如果班上有好幾個都是這個姓的,那這幾個人會同時站出來讓你選擇你要點的是那個。有個這個特性,再也不用擔心某個英文單詞記不住,這簡直是我這種記憶力不好的人的福音啊,知道來命令行補全,還會擔心路徑補全嗎;
bash重要特性之三
命令執行狀態返回值:該特性是指命令在執行過程中成功與否的狀態,由bash自己追蹤,如果命令失敗bash變量$?會被置為非零值,所以這個特性在腳本編程中非常重要。
bash重要特性之四
命令行展開:所謂命令行展開就是“~”:自動展開當前用戶的家目錄;“~USERNAME”:自動展開指定用戶的家目錄;有圖有真像: bash重要特性之五
命令別名和命令引用:
所謂命令別名其實就是給某個命令取名,當命令別名與命令名稱相同時,可以使用\COMMAND來調用命令本身,而非命令別名;
命令別名的方法:alias ALIAS="COMMAND";對于一些較常用而且命令參數較長的命令,這無疑又是一大福音啊
命令引用可以分為1:強引用使用單引號‘’
2:弱引用使用雙引號“”
3:命令引用使用反引號“
bash重要特性之六
文件名通配:文件名中可以用的通配符
* :能匹配任意長度的任意字符;
? :能匹配任意單個字符;
[] :字符范圍匹配指定字符集中的任意單個字符;[a-z]、[0-9]、[a-z0-9]
[^]:匹配指定字符集合外的任意單個字符,也就是反向;
以下是字符集合表示方式:[:lower:]所以的小寫字符;[:upper:]所有大寫字母;[:digit:]所有數字;[:alnum:]所有字母和數字;[:punct:]所有標點符號;[:space:]所有空白字符;[:alpha:]所有字母;[^[:lower:]]除小寫字母以外的所有字符
bash重要特性之七
輸入輸出重定向以及管道:
要想弄明白什么是輸入輸出重定向,首先我們來看什么是程序,通常來說,為實現特定目標或解決特定問題而用計算機語言編寫的命令序列的集合叫程序,程序是由指令加數據組成,也可以理解為具有一定結構的數據通過指定的算法來實現特定目的或者解決特定問題的,但是我們如何把數據輸入進去,把結果呈現出來那,這里就需要提到計算機兩個重要部件輸入設備和輸出設備,而標準的輸入設備(stdin)通常是鍵盤,標準的輸出設備(stdout)通常是監視器,而我們這里所說的輸入輸出重定向,就是要改變默認的輸入設備或輸出位置;
首先來看如何使用輸出重定向:> or >>
COMMAND > NEW_FILE 覆蓋輸出重定向,會清空NEW_FILE文件上所有的數據然后把剛剛命令的執行結果寫入到該文件中;
COMMAND >> NEW_FILE 追加輸出重定向,會把命令的執行結果追加寫入NEW_FILE這個文件中;
注意:由于命令的執行結果既可能成功,也可能是失敗的,而正常輸出流和錯誤輸出流是兩個不同的輸出流,所以還需要知道錯誤輸出重定向
COMMAND 2> NEW_FILE 覆蓋輸出重定向,會清空NEW_FILE文件上所有的數據然后把剛剛命令的執行結果寫入到該文件中;
COMMAND 2>> NEW_FILE 追加輸出重定向,會把命令的執行結果追加寫入NEW_FILE這個文件中;
有人就問了,可不可以把正確輸出和錯誤輸出到同一個文件當中那,答案是可以的
COMMAND &> NEW_FILE覆蓋輸出重定向,會清空NEW_FILE文件上所有的數據然后把剛剛命令的執行結果寫入到該文件中;
COMMAND &>> NEW_FILE 追加輸出重定向,會把命令的執行結果追加寫入NEW_FILE這個文件中;
輸入重定向的方法類似,在這里不再贅述;
會不會還有這樣一種情況,我們既想把結果輸出到文件當中,有想輸出到監視器上哪,這就需要多到輸出的命令:tee
使用方法也比較簡單:COMMAND | tee /PATH/SOMEFILE
接下來看一下什么是管道,其實從字面意思我們大概也能猜到,就是將上一個命令的執行結果給下一個命令再去執行,具體使用方法:
COMMAND1 | COMMAND2 | COMMAND 3 | …….
了解和掌握bash的這些特性,將會讓我們對使用bash有更深入的認識,同時也會大大提高我們工作的效率。
原創文章,作者:zhang,如若轉載,請注明出處:http://www.www58058.com/8485
內容很豐滿,只是格式上沒有層次,很容易流失用戶。
@stanley:謝謝評論,以后會注意