Ubuntu

如何在終端中自動完成長文件名

  • September 16, 2018

如果我在目前目錄中有一個以“build”開頭的長名稱的文件,我可以在控制台“build”中寫入,按下Tab並自動完成為我輸入完整的文件名。但是,如果我有多個以build自動完成開頭的文件不起作用 - 它只會給我一個以build.

相反,在 Windows 中,Tab按鍵立即給我第一個文件的完整文件名,如果我Tab第二次按鍵,它給我第二個文件名。

如何像在 Windows 中一樣在 Linux 中自動完成文件名?PS:如果我有幾個僅通過副檔名不同的長文件名,那真的很糟糕。

如果它們的副檔名不同,則只有自動完成功能會自動填充所有內容,直到有多個選項。當製表符產生名稱列表時,鍵入下一個字元並再次按製表符以恢復自動完成。

由於我是 linux 思想,我真的對 Windows 自動完成的工作方式有異議,猜猜這是你習慣的;)

對我來說可以挽救生命的事情是讓 bash 循環遍歷各種可能性,而不是顯示一個愚蠢的列表。

由於 bashreadline用於自動完成,因此將以下行添加到~/.inputrc

一旦您滿意並在幾天/幾週內對以下解決方案進行了徹底測試,請剪切並粘貼(不要複製!)包含系統範圍設置的相同設置,~/.inputrc使其/etc/inputrc可供系統上的所有使用者使用.

編碼:

# mappings to have up and down arrow searching through history:
"\e[A": history-search-backward
"\e[B": history-search-forward
# mappings to have left and right arrow go left and right: 
"\e[C": forward-char
"\e[D": backward-char

# mapping to have [Tab] and [Shift]+[Tab] to cycle through all the possible completions:
"\t": menu-complete
"\e[Z": menu-complete-backward

然後exit你的終端(或膩子之類的遠端終端)並再次打開它……

例子:

  1. 當您有 3 個文件時:file1file2並且file3您鍵入:
e f`Tab``Tab``Tab`

它將向前循環:

e file1
e file2
e file3

當你想向後循環時,只需點擊Shift+Tab 2. 當您鍵入:

very-complicated-command with lots of command line parameters

下次您需要相同的命令時,只需鍵入:

very`↑`

它會為你輸入:

very-complicated-command with lots of command line parameters

這將為您節省大量的 bash 時間!;-)

來源

引用自:https://serverfault.com/questions/761673