次の一連のコマンドがあります。
cd / && ls | ( cd /tmp && cat >dumpfile)
この一連のコマンドは次のことを行います。/tmp/dumpfile
このファイルにはルートディレクトリのリストが含まれています。
出力はcd / && ls
サブシェルにパイプされます。私が見つけたもの奇妙なサブシェルでは、出力をcd /tmp
飲み込むのではなく、後でls
インポートcat >dumpfile
してファイルに書き込みます。ここで何が起こっているのでしょうか?
ベストアンサー1
ls
パイプはサブシェルから開始するように標準出力を設定します。
サブシェルは同じプロセスで実行されますcd /tmp
。cat
cd /tmp
標準入力(パイプ)から読み取らないため、cat
標準入力から読み取るとすべての出力が得られますls
。