2006-10-31

在 command line 下一些好用的按鍵

command line 模式,至今仍然是常為人使用的一種方式,甚至很多 linux 的老手都建議新手進入這個領域時,最好從這個模式入門。

在 linux 中預定的 shell 是 bash,但 bash 真的是一個複雜的 shell,不信,可 man bash 看看。

其實,我要的 shell 功能在編輯上很簡單,只要具備以下功能:

1. 歷史指令(history)紀錄,以及如何方便的叫用先前使用的指令,畢竟在 linux 下的一些目錄或是檔名,都有點給它長,減少一些打字,相信不單單在時間上的節省,對於手腕上的保健、健康上來說,也是件好事。
2. 方便的指令行編輯功能,這些像是一些在 command line 上游標的行動,如到行首、行尾、一個字的向前或退後,或是快速的移動到下一個 word(非一個字元),及刪除 word 功能。

以第一項來說,bash 中雖然有自動完成的功能,但個人覺得不是很完美。從前使用 FreeBSD 時所用的 shell 是 tcsh,在這方面就做得很好。

BASH 是以另一種方式來呈現。例如,我們曾輸入過幾次 gedit xxxx 的指令,用向上鍵來找實在是一個沒效率的方式,那麼是否有較好的方式呢?

// 20061103 修正,感謝網友告知

使用 ctrl-r 來替代吧,會先顯示最近一次類似的指令(如附圖),想執行就直接按 enter,如不是,按 ctrl-r 繼續找下一個吧。 想放棄按 ctrl-g,想不直接執行可用 ctrl-j,這樣可對你想要的指令做進一步的編輯。



另外在上述第二項,其實 linux 和 unix 關係密切,所以以前在 unix 下一些鍵盤下使用的一些特殊按鍵未經消化、整理也帶了進來,在 unix 下的鍵盤和目前 pc 使用的鍵盤差滿多的,所以難免有些怪怪的。

這些像一個字向前或是後退(ctrl-f及ctrl-b)可用 左右方向鍵來替代;移到行首及最後端(ctrl-a及ctrl-e)可用 "Home" 及 "End" 這兩個鍵來取代。

另外像是一些 ctrl-C、ctrl-Z .. 等按鍵就不再說明了。

還有個名詞 META 鍵,這在 pc 鍵盤上是沒有的,我們可使用 "esc" 這個按鍵來代替。

要注意的是使用 meta 這個鍵搭配其它按鍵時,不是一直按著再按其它鍵,而是先按 meta(也就是 esc 鍵)放掉 meta 鍵後,再按其它按鍵,這點請注意一下。

以下是我個人常用的一些按鍵。

● 在刪除部份

1. 清除畫面 -> 使用 ctrl-l
2. 刪除所有目前游標前的東東 -> ctrl-u
3. 刪除游標後所有的字 -> ctrl-k
4. 向前刪一個 word -> ctrl-w
5. 向後刪一個 word -> meta-d

● 快速移動游標

除了前面提到的一些外,個人覺得如何一個 word(如 gedit 這個 word) 而不是一個字元(如 g 這個字元) 的移動是很重要的,尤其在 unix-like 傳統中,參數很多、檔名又臭又長的情況下更是重要。

1. 移到下一個 word -> meta-f
2. 移動前個 word -> meta-b

----

當然,bash 的功能不只這些,這些只是個人所常用的一些按鍵,對 bash 有興趣的人,不妨 man 一下 bash。