実行によってbashワイルドカードがどのように機能するかを表示できますか?

実行によってbashワイルドカードがどのように機能するかを表示できますか?

私は誰かに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得ることです。zshbash

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

関連情報