Linux 命令好幫手 Bash
發表于:2007-07-01來源:作者:點擊數:
標簽:
Bash(Bourne Again Shell)是大多數 Linux 發行版本中的缺省Shell。它包含了許多其它優秀Shell的良好特性,在此僅介紹它的一些常用操作方法。這些操作方法簡單易學,相信讀者能夠很快地學會并喜歡上它們。 命令補齊 當輸入了命令名的前幾個字母后,按下Tab
Bash(Bourne Again Shell)是大多數
Linux發行版本中的缺省Shell。它包含了許多其它優秀Shell的良好特性,在此僅介紹它的一些常用操作方法。這些操作方法簡單易學,相信讀者能夠很快地學會并喜歡上它們。
命令補齊
當輸入了命令名的前幾個字母后,按下Tab鍵,則Bash會嘗試著補齊該命令剩下的幾個字母。例如,我們想要輸入命令“Xconfigurator”,先輸入“Xcon”,然后按下Tab鍵,則Bash將會把剩下“figurator”自動補上??梢?,命令補齊功能具有效率高、不易出錯的特點。
有時,輸入的前幾個字母太少,包含前面這幾個字母的命令有多個。此時,按下Tab鍵,則機器的蜂鳴器會發出警告聲,再次按下Tab鍵時Bash會列出可能的命令,此時用戶可以補充輸入幾個字母,然后再次按下Tab鍵。當Bash能夠唯一確定用戶想要的是哪個命令時就可以將該命令補齊了。
在命令行輸入過程中,當想要輸入的是文件名或目錄名時,自動補齊功能也同樣適用,且用法與命令名補齊相同。建議在命令行的輸入過程中經常按一下Tab鍵,只要多用幾次你就會喜歡上這個非常有用的功能,簡單吧!
命令行編輯
用戶在命令行上輸入字符的過程中,只要是在按Enter鍵之前,就可以對所輸入的內容進行一些編輯和修改。也就是說,可以利用箭頭在當前命令行上移動,刪除或插入所需的字符。完成后,不論光標處于哪個位置,只要按Enter鍵就可以執行該命令了。
Bash為用戶提供了幾個重要的快捷鍵,可以提高編輯的速度:
* Backspace 刪除當前光標左邊的字符;
* Ctrl+a 光標跳到行頭;
* Ctrl+e 光標跳到行尾;
* Ctrl+d 刪除光標所在處的字符;
* Ctrl+k 刪除當前光標所在處到行末的字符;
* Ctrl+l 清屏并把當前命令作為屏幕上第一條命令顯示。
命令歷史記錄
當用戶輸入命令后按下Enter鍵,那么剛才輸入的命令就被加入到命令歷史記錄中,用戶可以通過按向上或向下箭頭訪問命令歷史記錄。如果某個命令輸入錯了而未被正常執行,則也會把按Enter鍵時命令行上的內容加入到命令歷史記錄中。這樣可以很方便地將其調出來,經過修改后再讓其執行。命令歷史記錄的另一個作用是為多次執行重復的命令提供了方便。
訪問歷史表命令的一個快捷方法是用!符號。輸入!號和歷史表中命令的第一個字符,就可以執行最近一條以該字母開頭的命令。
例如,如果前面用過命令
#find / -name *.doc -print
而要再次執行這個命令,可以用
#!find
只要使用“find / -name *.doc -print”之后沒有使用其它以find開頭的命令,則可以執行這個命令。利用!find,執行歷史表中最近一條以字符串find開頭的命令。
其中最有趣的是Ctrl+r,它可以動態地、交互式地在歷史表中逆向搜索。輸入命令時,Bash顯示匹配所輸入內容的最近一條命令。輸入越多,匹配越接近。
假設要執行已經用過的復雜find命令,可以用Ctrl+R在歷史表中逆向搜索。這時,Bash會顯示交互式搜索提示:
(reverse-i-search):
在冒號后面輸入字母時,Bash顯示匹配所輸入內容的最近一條命令。例如,輸入時可能顯示:
(reverse-i-search)f:file inittab
繼續輸入到fi時可能顯示
(reverse—i—search)fi:file inittab
而最后輸入到fin時則顯示
(reverse-i-search)fin:find / -name *.txt -print
這正是所需的命令。這時,按Enter鍵就可以執行這個命令了。
選取和粘貼文本
Bash允許用戶選取屏幕任何地方上的文本,然后將其粘貼到命令行中。具體的方法是,將鼠標放到所選文本的開始處并按下鼠標左鍵,按住鼠標左鍵的同時拖動鼠標到所選取文本的結束處,松開鼠標左鍵,這樣就選定了一段文本。
當想要將選取的文本粘貼到命令行的光標所在處時,只要按一下鼠標右鍵(或中間鍵)即可。
管道與輸入、輸出重定向
可以使用管道(|)將多個命令連接起來,把前一個命令的輸出作為后一個命令的輸入。例如,在命令
#ls -l -a | more
中,前一個命令“ls -l -a”的輸出不再是顯示到標準輸出設備(屏幕終端),而是被重定向為后一個命令“more”的標準輸入。
Bash中還可以利用重定向符號“〈”和“〉”重定向標準輸入和輸出。例如,使用命令
#ls -l -a 〉 f1
則可以將命令“ls -l -a”的輸出保存到文件“f1”中。在執行該重定向命令前,若文件f1不存在則會創建該文件,若文件f1已經存在則會覆蓋原先的文件。有時,在使用該重定向功能時,我們希望將一個命令的執行結果追加到已有的文件之后,而不是將原先的文件覆蓋,這時可以使用非破壞性的追加重定向操作符“〉〉”。例如,可以使用命令
#ls -l -a 〉〉 f1
同樣,可以用符號“〈”把文件內容作為標準輸入。
命令替換
命令替換類似于管道命令,但不同之處在于,管道中一個命令的標準輸出被重定向到另一命令的標準輸入,而命令替換中一個命令的標準輸出變成另一命令的變元或參數。它的語法格式可以表示為
#command1 `command2`
注:所使用的是向后的單引號(`,也稱為重音號)。
下面,我們來看一個例子。假設要壓縮所有擴展名為 .txt的文件,可以用命令:
#gzip `find / -name *.txt -print`
其中,命令“find / -name *.txt -print”的作用是得到所有這些文件的清單。
原文轉自:http://www.anti-gravitydesign.com