Bash
如何讓 bash 自動完成萬用字元?
如果我有包含文件的目錄
foo.bar.a.cat foo.bar.a.hat
然後我輸入
ls f
+TAB
bash shell 自動完成到ls foo.bar.a.
. 如果我輸入ls *bar*
+TAB
我希望它自動完成到*bar*.a.
. 這可能嗎?這看起來類似於問題
但建議的答案“它對我來說是開箱即用的”,卻沒有。我也試過
TAB
TAB
了,沒有效果。命令``bash –versiongives
GNU 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 之前的單詞被視為路徑名擴展的模式,並插入匹配的文件名列表,替換單詞。如果提供了數字參數,則在路徑名擴展之前附加一個“*”。