Bash

如何讓 bash 自動完成萬用字元?

  • October 6, 2021

如果我有包含文件的目錄

foo.bar.a.cat
foo.bar.a.hat

然後我輸入ls f+ TABbash shell 自動完成到ls foo.bar.a.. 如果我輸入ls *bar*+TAB我希望它自動完成到*bar*.a.. 這可能嗎?

這看起來類似於問題

如何在bash中啟用萬用字元的製表符完成?

但建議的答案“它對我來說是開箱即用的”,卻沒有。我也試過TAB TAB了,沒有效果。命令``bash –version givesGNU bash,版本 4.2.37(1)-release (x86_64-pc-linux-gnu)`。

你想要:

插入完成

ALT``*對於’插入所有完成'

有了這個,一個包含文件名’aa ab ac ad'

ls a*的目錄alt + *將完成ls aa ab ac ad

綁定手冊頁條目:

插入完成(M-*)

在可能由可能完成生成的點之前插入文本的所有完成。

全域擴展詞

在某些系統上,上述內容不適用於萬用字元,以下對我來說確實適用於此類系統:

ctrl``x, *(兩衝程組合)

範例:我填充了一個目錄:

touch {a,b,c,d,e,f}{1,2,3,4,5,6,7,8,9,0}00{a,b,c,d,f,e}

然後我ls *100*跟著ctrl + x, *,這將我的 readline 變成:

ls a100a a100b a100c a100d a100e a100f b100a b100b b100c b100d b100e b100f c100a c100b c100c c100d c100e c100f d100a d100b d100c d100d d100e d100f e100a e100b e100c e100d e100e e100f f100a f100b f100c f100d f100e f100f

用於綁定的手冊頁條目:

全域擴展字 (Cx *)

point 之前的單詞被視為路徑名擴展的模式,並插入匹配的文件名列表,替換單詞。如果提供了數字參數,則在路徑名擴展之前附加一個“*”。

Bash 參考手冊頁

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