私は様々なbash「予約語」の意味を自分で教えてきました。
これを実行中に、誤ってコマンドを入力しました。
echo !()
驚くべきことに、このコマンドはコマンドと同じ出力を実行して生成します。
echo *
つまり、出力は現在のディレクトリの内容のリストです。
file1 file2 directory1 directory2
!()
bashが本質的に拡張されるのはなぜですか*
?
()
他の文脈では間違った表現であるようで意味を判断できません。
ベストアンサー1
これはバッシュです。extglobパターンマッチングKornシェル(そのサブセット)から構文をコピーします。!(pattern)
、extglob
何らかの方法で有効にすると(たとえば、bash_completion
インタラクティブシェルのアドインを介して)、現在の作業ディレクトリで一致しない(デフォルトでは隠されていない)ファイルの名前に展開されますpattern
。
空のパターンを使用する場合は、名前が現在ディレクトリにあるすべてのファイルを意味します。いいえ空の文字列ですが、ファイル名は空白にできないため、これはすべて(デフォルトでは隠されていない)ファイルです。
オプションが有効になると、zsh
kshと同じ結果が得られます。echo ^
extendedglob
^pattern
!(pattern)