内部にtcsh マンページ、の影響はset complete = enhance
次のように定義されます。
[...]完了1)大文字と小文字を無視する、2)ピリオド、ハイフン、アンダースコア(「.」、「-」、および「_」)を単語区切り文字として処理し、ハイフンとアンダースコアは同じです。
readline
1)については、構成を通じて事例を無視できることがわかっていますset completion-ignore-case on
。だから私の質問は2)にのみ関連しています。
たとえば、次のようにデフォルト名は似ていますが、拡張子が異なる複数のファイルを含むディレクトリがある場合:
$ ls
file0.dat file1.dat file2.dat files.sh
その後、シェルはファイル拡張子を完成させたいと思います。
$ cat .sh<TAB>
$ cat files.sh
この動作を達成するか、少なくとも模倣する方法はありますかbash
?
編集する
最初の回答に続いて、tcsh
機能のしくみをより正確に示す追加の例は次のとおりです。
$ ls
abc.foo abc.bar cab.foo cab.bar
$ cat a.f<TAB>
$ cat abc.foo
または:
$ cat .b<TAB>
abc.bar cab.bar
$ cat .bar
実際、tcsh
基本名と拡張子が完成しました。ここでの振る舞いは、TABの完成をすべて挿入するのではなく、通常行うのと同じように、いくつかの可能性をリストすることです。
ベストアンサー1
これは必ずしも必要ではありませんが、ほぼ近いです。Ctrl+ x、ショートカットg(C-x g
emacsspeakから)ショートカットはglobの拡張をリストします。したがって、あなたの例では次のようになります。
$ cat *.b*<Ctrl><x><g>
abc.bar cab.bar
したがって、説明するのとは異なり、tcsh
有効なglobが必要です。つまり、次のようになります。
$ echo *.b*
ショートカットは、Ctrlを同時に押してxから手を離して押しますg。
これに関する文書は次のとおりですman bash
。
glob-list-expansions (C-x g)
The list of expansions that would have been generated by
glob-expand-word is displayed, and the line is redrawn. If a
numeric argument is supplied, an asterisk is appended before
pathname expansion.