安裝 GNU/Linux 的系統最常見的文字界面 shell 是 bash,如下圖:
Bash on openSUSE 12.3 |
指令編輯
輸入 ls <路徑> 然後按 Enter 的結果 |
清空螢幕內容 (Ctrl-L) |
有時候打指令打到一半的時候,會發現輸入的指令是不正確的,需要重新輸入。大部分的使用者可能會按住 Backspace 鍵不放,讓游標重複往前刪除直到行首,但是按鍵重複的頻率一般不會太高,可能要等幾秒鐘才會把整行刪除完畢。碰到這種狀況,可以按下 Ctrl-U,游標就會從當前位置立刻往前刪除直到行首,馬上就可以再輸入下一個指令。
刪除到行首(Ctrl-U) |
游標的移動也有許多快速的操作方式,如果要往右 (前端,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 也提供了叫出之前輸入過的指令的快速鍵,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-.>
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-. | 插入上一個指令的最後一個參數 |
沒有留言:
張貼留言