パイプコマンドが期待どおりに動作しません。説明が必要です。

パイプコマンドが期待どおりに動作しません。説明が必要です。

私は以下を試しています

touch ~/scratches/scr6.txt | cat ~/scr.txt > ~/scratches/scr6.txt | cat /dev/null > ~/scr.txt

scr6.txtが常に空である理由はわかりませんが、次のようにするとファイルがいっぱいになります。

cat ~/scr.txt > ~/scratches/scr6.txt

最初のケースがなぜ機能しないのか疑問に思います。

ベストアンサー1

各ステップを細分化すると、次のようになります。

  • touch ~/scratches/scr6.txt

    ファイルが存在する場合は、タイムスタンプを今すぐ更新します。存在しない場合は作成してください。

  • cat ~/scr.txt > ~/scratches/scr6.txt

    ~/scr.txt を読み、内容を ~scratches/scr6.txt に書き込みます。

  • cat /dev/null > ~/scr.txt

    ~/scr.txt ファイルの消去

コメントで述べたように、コマンドの間に「|」(PIPE)の代わりに「&&」(AND)を使用する方が適切です。

おすすめ記事