ls *
と入力すると、現在のファイルにa
、b
、c
が直接含まれている場合、実際にはls a b c
に展開されます。
Enterキーを押す前に、これを拡張する方法があるかどうか疑問に思っていました。 Ctrl + X のしくみ、または tab complete のしくみに似ています。
自分を明確にするために
$ ls *
<press magic key>
$ ls a b c
同様に:
$ ls ~/
<press tab>
$ ls /home/username
私は以前にこれを見たと思ったが、私は間違っていたかもしれない。
bash
から、glob-expand-Word
関数を使用できます。
単語の前の単語はパス名のパターンとして扱われます 展開され、一致するファイル名のリストが挿入されます。 単語を置き換えます。数値引数が指定されている場合、パス名展開の前に アスタリスクが追加されます。
このようなものを~/.inputrc
に追加します。
Control-x: glob-expand-Word
$ ls *
の後に Ctrl-X あなたの例では、$ ls a b c
に展開されます。
Bashでは、readline機能はglob-expand-Word
と呼ばれ、 CtrlX* デフォルトでは。
vi
モード(set -o vi
)、「マジックキー」は Esc*。これはbash
とksh
の両方で機能します。
$ bind -q glob-expand-Word glob-expand-Wordは、「\ Cx *」を介して呼び出すことができます。 $ bind -q insert-補完 挿入補完は、「\ e *」を介して呼び出すことができます。
これらを使用するには、次のことができます
ls *
Ctrl+x*
または
ls *
Esc*
Glob-expand-Word(\ C-x *)の代わりに、挿入補完(\ e *)があります。最後にアスタリスクがなくても機能しますが、隠しファイルなどの他の補完機能も含まれます。 〜/ .inputrcの両方にリバウンドしました:
# insert glob results (\C-x* by default)
"\C-g": glob-expand-Word
# insert completion list (\e* by default)
"\ei": insert-completions
glob-complete-Word(\ eg)を使用して、たとえば/System/Library/Launch*/*Finder
を/System/Library/LaunchAgents/com.Apple.Finder.plist
に変換できます。