(echo 'text' ; cat file.txt)> new file.txt実際にどのように機能しますか? [コピー]

(echo 'text' ; cat file.txt)> new file.txt実際にどのように機能しますか? [コピー]

したがって、これは単純なコードです。

(echo "Some text to prepend"; cat gero.txt) > file.txt

このコードのメカニズムを実際に理解することはできません。したがって、デフォルトではgero.txtはすでに存在するファイルであり、「前に追加するテキスト」+ gero.txtを使用して新しいfile.txtを作成します。私が得なかったのは括弧内の部分です。パイプのような明白な演算子なしでecho出力をcatにどのようにリダイレクトしますか|

答え1

一連のコマンドを実行するときインタラクティブシェルなど

echo xxx; cat file; ls; echo yyy

その後、すべてが継続的に実行され、出力が端末に送信されます。

ただし、角かっこ内でこれらのコマンドを実行すると、()新しいコマンドが表示されます。非対話型シェルが作成され、すべてがその中で実行されます。これで、この隠しサブシェルの出力全体をファイルに>file.txtリダイレクトします。()

答え2

シェルは次の3つの部分でコマンドラインを取得します。

  1. (echo ...)
  2. >
  3. file.txt

パート#1の(標準)出力(stderr出力ではありません)は、パート#2によってパート#3に指定されたファイルにリダイレクトされます。最初の部分の括弧は、リダイレクト演算子のすべての出力をグループ化します>

関連情報