私は誰かにbashワイルドカードの仕組みを教えています。私は、コマンドを呼び出す前にbashがパターンを拡張する方法を(可能であればいくつかのbashデバッグ機能を介して)表示したいと思います。たとえば、次のことをしたいと思います。
ls -l file*.txt
file*.txt
その後、bashは拡張コンテンツを表示したいと思います。
ls -l file1.txt file2.txt file3.txt file4.txt
私はこれをスクリプトで使用する方法を知っていますが、対話型シェルbash -x
で実行することを好むので、スクリプトのアイデアを紹介する必要はありません。これを行う方法はありますか?インタラクティブモード?
答え1
単にコマンド全体をエコーできます。
echo ls -l file*.txt
答え2
まあ、これは基本的に私の設定で一般的に同様の動作を.inputrc
得ることです。zsh
bash
set show-all-if-unmodified on
set show-all-if-ambiguous on
上記の行を入力してください~.inputrc
。タブなどの操作を実行すると、すべてが提供され、ls *.txt
一致するファイルが出力されます。
編集:引用man bash
:
不明な場合はすべて表示(解除) これは、完成関数のデフォルトの動作を変更します。 「オン」に設定すると、完了可能な単語が複数ある場合、ベルを鳴らすのではなく、一致するものがすぐに一覧表示されます。
変更されていない場合はすべて表示(オフ) これは、「あいまいな場合はすべて表示」と同様に、完成関数のデフォルトの動作を変更します。 「on」に設定すると、部分的な完成(共通プレフィックスを共有しない可能性のある完成)なしで複数の可能な完成した単語は、ベルを鳴らすのではなく、すぐに一致がリストされます。
EDIT2:サンプル出力
$ ls *
books dev music templates
$ ls *
次を拡張しようとすると(次の引数を完成しようとするため~/some/other/folder
)、動作しません。
$ cd * ~/some/other/folder