Autocomplete

猜出完整的文件名

  • November 28, 2013

我的伺服器上有一些名稱很長的文件,寫完整的名稱有點像皮塔餅,所以我問我的 Linux 系統(Debian 7)是否可以猜出完整的文件名?我想寫類似的東西

rm some_file_1

代替

rm_some_file_1_very_long_information_bla_bla_foo_bar_meow

沒有其他文件,some_file_1_very_long_information_bla_bla_foo_bar_meow其名稱包含some_file_1

這就是shell glob的用途(除其他外):

echo some_file_1*

請注意,我正在使用echo而不是rm故意使用。當您滿意您的 glob 與您希望刪除的文件完全匹配時,您可以替換echorm.

您正在尋找的功能是autocompletion。在 shell 命令行上鍵入文件名的前幾個字元,然後按Tab。如果您鍵入的前綴明確,文件名將自動完成。

如果有歧義,shell 將至少完成到存在多種可能性的程度。例如,如果有名為some_file_1,some_file_2和的文件some_fiddlesticks,並且您鍵入some_然後按Tab,則插入字元fi(至少)。根據您的 shell 配置,這可能會選擇一個文件名來完成,而不是僅僅插入fi,並且如果您Tab重複按下,行為也會有所不同。

自動補全在 bash、zsh、(t)csh 和 fish 以及一些 BusyBox 變體中開箱即用。在大多數 ksh 安裝中,您需要按Esc Esc而不是Tab.

如果您的 shell 沒有完成,您可以使用萬用字元:輸入rm some_file_1*刪除所有名稱以 . 開頭的文件some_file_1。與補全方法相比,這種方法的缺點是對錯別字非常不寬容。例如,如果有另一個以相同前綴開頭的文件,它將被刪除。如果不小心在 前放了一個空格*,目前目錄下的所有文件都會被刪除。你可以把echo命令放在前面看看它會做什麼,然後再次執行命令而不echo執行操作。或者,執行rm -i some_file_1*以提示輸入每個文件名。

引用自:https://unix.stackexchange.com/questions/102820