第六部分(鍵盤操作技巧)

2020-08-11 20:28:40

2020-04-06
Bash 使用了一個名爲 Readline 的庫(共用的例程集合,可以被不同的程式使用),來實現命令列編輯。

移動遊標


光标移动命令

修改文字

文本编辑命令

剪下和貼上文字

Readline 的文件使用術語 killing 和 yanking 來指我們平常所說的剪下和貼上。剪下下來的文字被儲存在一個叫做剪下環 (kill-ring) 的緩衝區中。
剪切和粘贴命令

元鍵
如果你冒險進入到 Readline 的文件中,你會在 bash 手冊頁的READLINE 段落,遇到一個術語 「元鍵」(meta key)。在當今的鍵盤上,這個元鍵是指 Alt 鍵,但並不總是這樣。

自動補全

自動補全也能對變數(如果字的開頭是一個 「$」)、使用者名稱字(單詞以」∼」 開始)、命令(如果單詞是一行的第一個單詞)和主機名(如果單詞的開頭是 「@」)起作用。主機名自動補全只對包含在檔案/etc/hosts 中的主機名有效。
自动补全命令

利用歷史命令

bash 維護着一個已經執行過的命令的歷史列表。這個命令列表
被儲存在你家目錄下,一個叫做.bash_history 的檔案裡。

搜尋歷史命令

在任何時候,我們都可以瀏覽歷史列表的內容,通過:

[root@VM_0_7_centos ~]# history | less

在預設情況下,bash 會儲存你所輸入的最後 500 個命令。

比方說我們想在自己曾經用過的命令中,找出和/usr/bin 這一目錄相關的。那麼我們就可以這樣做:

[root@VM_0_7_centos ~]# history | grep /usr/bin

比方說在我們的搜尋結果之中,我們得到一行,包含了有趣的命令,像這樣:

88 ls -l /usr/bin > ls-output.txt

數位 「88」 是這個命令在歷史列表中的行號。我們可以使用另一種叫做歷史命令展開的方式,來呼叫「88」所代表的這一行命令:

[root@VM_0_7_centos ~]# !88

bash 會把 「!88」 展開成爲歷史列表中 88 行的內容。

bash 也具有增量搜尋歷史列表的能力。意思是在字元輸入的同時,bash 會去搜尋歷史列表(直接出結果,並高亮匹配的第一個字),每多輸入一個字元都會使搜尋結果更接近目標。輸入 Ctrl-r 來啓動增量搜尋,接着輸入你要尋找的字。當你找到它以後,你可以敲入Enter 來執行命令,或者輸入 Ctrl-j,從歷史列表中複製這一行到當前命令列。再次輸入 Ctrl-r,來找到下一個匹配項(歷史列表中向上移動)。輸入 Ctrl-g 或者 Ctrl-c,退出搜尋。

历史命令

歷史命令展開

通過使用 「!」 字元,shell 爲歷史列表中的命令,提供了一個特殊的展開型別。我們已經知道一個感嘆號,其後再加上一個數位,可以把來自歷史列表中的命令插入到命令列中。這裏還有一些其它的展開特性:
历史展开命令
應該小心謹慎地使用 「!string」 和 「!?string」 格式,除非你完全確信歷史列表條目的內容。