awkコマンドの出力を次のコマンドにパイプするサイトの例を見たばかりです。
(echo "this is a header";cat -)
これにより、出力の上部にヘッダー文字列が効果的に追加されます。-はそこにあるstdoutを表しているようです。しかし、この構成は何ですか?かっこで、それから猫-?これはどのように機能しますか、これは非常に便利なようですが、私がそれを見るのは初めてです。
-
多くの場合stdin
、ファイル名の引数を受け入れるコマンド ライン オプションを示すために使用できます。cat -
is の効果はplain と同じであることに注意してください。cat
つまり、どちらのバージョンでも読み取りstdin
ます。
括弧により、シェルはサブシェルでコマンドを実行します。(...)
シェルbash -c '...'
がbash
. xyz | echo "..."; cat
の出力でxyz
パイプされecho
て失われるため、これが行われます。
ここでの括弧の使用は「グループ化構造」です。詳細については、bash リファレンス マニュアルを参照してください。
同様の構成では中括弧が使用されます。
{ echo "this is a header"; cat -; }
これは、中括弧と末尾のセミコロンの周りに空白を必要とする別の構文です。
中括弧と括弧の使用の違いは次のとおりです。中括弧内のコマンド リストは現在のシェルで実行され、括弧内のコマンド リストはサブシェルで実行されます。これは、コマンド リストで環境を変更する場合に重要です。サブシェルが終了すると、環境の変更は失われます。