2013年4月29日 星期一

提昇電腦操作效率的小技巧 - 工作站 Bash 篇

使用 Unix 工作站的時候,會不會覺得指令界面(command-line interface) 很難操作、用起來沒有效率呢?其實指令界面原先是設計給只有鍵盤的電腦使用的,對於經常使用滑鼠的我們來說,難免會有些不習慣。但也因為它是設計給鍵盤使用的,指令界面的程式往往有許多的快速鍵可供使用,只要熟悉了這些快速鍵,使用的效率一定會增加不少。



安裝 GNU/Linux 的系統最常見的文字界面 shell 是 bash,如下圖:

Bash on openSUSE 12.3

指令編輯

輸入 ls <路徑> 然後按 Enter 的結果
Bash 提供了一個輸入指令的界面,只要在裡面打入要執行的指令,然後按下 Enter 就可以執行指令,並顯示執行之後的輸出訊息(如右圖),等到打了一段時間之後,顯示的資料可能會佔滿整個螢幕,這時可以按下 Ctrl-L,螢幕就會被清空。這個清空螢幕的效果跟執行 clear 指令是一樣的,但是不需要清空輸入到一半的指令,也不需要按那麼多按鍵。
清空螢幕內容 (Ctrl-L)

有時候打指令打到一半的時候,會發現輸入的指令是不正確的,需要重新輸入。大部分的使用者可能會按住 Backspace 鍵不放,讓游標重複往前刪除直到行首,但是按鍵重複的頻率一般不會太高,可能要等幾秒鐘才會把整行刪除完畢。碰到這種狀況,可以按下 Ctrl-U,游標就會從當前位置立刻往前刪除直到行首,馬上就可以再輸入下一個指令。
刪除到行首(Ctrl-U)
如果是要刪除游標之後到行尾的話則是按 Ctrl-K

游標的移動也有許多快速的操作方式,如果要往右 (前端,Forward) 移動一個字元,可以按 Ctrl-F 或是方向鍵的右鍵,往左 (後端,Backward) 移動則是 Ctrl-B 或是方向鍵的左鍵。一次移動一個字元可能速度還是不夠快,所以 bash 還提供了一次操作一個單字(以空格或符號分隔的多個字元)的指令,規則相當的簡單,就是把上面的快速鍵中的 Ctrl 換成 Alt,例如往右一個字是 Alt-F,往左一個字則是 Alt-B,當然用方向鍵取代 F, B 也是可以的,但是會需要移動右手的位置,會額外延遲一段時間。Alt 的指令還不只可以移動游標,還可以配合 Backspace 和 Delete 鍵使用,按下 Alt-Backspace 會刪除游標往左的一個字,Alt-Delete 則是刪除游標往右的一個字,又因為 Delete 的位置太遠了,bash 還提供了一個快速鍵 Alt-D 來達到跟 Alt-Delete 一樣的效果。直接把游標移動到行首的快速鍵是 Ctrl-A,移到行尾是 Ctrl-E
移動游標到行首(Ctrl-A)
Bash 還提供了 Undo 的功能,如果不小心按了 Ctrl-U 刪除了一整行,想要回復的話,可以按 Ctrl-/ 來回復前一個編輯步驟。

歷史紀錄

Bash 也提供了叫出之前輸入過的指令的快速鍵,Ctrl-P 是叫出上一個指令,Ctrl-N 是下一個指令。這兩個指令的功能也可以按方向鍵的上、下鍵。除了直接呼叫歷史之外,還可以用 Reverse Search 模式尋找之前打過的指令:按下 Ctrl-R 之後輸入想要搜尋的字詞,最接近的搜尋結果會立即顯示出來,可以避免按重複按 Ctrl-P 尋找。
Reverse Search (按下 Ctrl-R 之後,輸入 ins 後的結果)
按下 Alt-. (Alt+句點) 可以叫出前一個指令的最後一個參數,這在連續輸入相關的指令的時候非常有用。例如建立一個目錄 ~/documents/works/my-new-project 並切換到它,在命令列裡面需要輸入

mkdir ~/documents/works/my-new-project
cd ~/documents/works/my-new-project

不需要輸入兩次 ~/documents/works/my-new-project,只要這樣輸入就可以了:

mkdir ~/documents/works/my-new-project<按下Enter>
cd <按下Alt-.>

按下 Alt-. 的結果
最後,最常用也最強大的一個快速鍵是 Tab (也可以按 Ctrl-I)。按下 Tab 的時候,Shell 就會猜測你要輸入的文字,然後幫你補完到它可以確定的範圍。可以用來補完指令、檔案路徑、某些指令的參數等等。

Bash 常用快速鍵整理

按鍵功能
Tab自動補完
Ctrl-L清除螢幕
Ctrl-A移動游標到行首
Ctrl-E移動游標到行尾
Ctrl-F往右(前)移動一個字元
Ctrl-B往左(後)移動一個字元
Alt-F往右(前)移動一個單字,同 Alt-右鍵
Alt-B往左(後)移動一個單字,同 Alt-左鍵
Ctrl-U刪除游標到行首
Ctrl-K刪除游標到行尾
Ctrl-W往左刪除一個字,同 Alt-Backspace
Ctrl-D刪除游標右方的一個字元,同 Del
Alt-D刪除游標右方的一個單字
Ctrl-Y貼上剛剛被刪除的字
Ctrl-/回復上一個編輯(Undo),同 Ctrl-_
Ctrl-N下一筆歷史紀錄
Ctrl-P上一筆歷史紀錄
Ctrl-R搜尋歷史紀錄
Alt-.插入上一個指令的最後一個參數

參考資料

沒有留言: