UNIX出力を添付ファイルにリダイレクトする

UNIX出力を添付ファイルにリダイレクトする

だから私はUnixコマンドにさまざまな引数を渡すPythonスクリプトを書いており、すべてのコマンド出力を同じファイルに保存する必要があります。

しかし、私が知っている唯一の方法は、ファイルを書き換えることです。シェルスクリプトにファイルを追加する方法を知っている人はいますか?

私のUnixコマンドが次のようになっているとしましょう。

Foo

私の交換員は次のとおりです。

bar
bar1
bar2

Unixコマンドは次のとおりです。

foo bar > output.txt
foo bar1 > output.txt
foo bar2 > output.txt

Output.txtの内容は「foo bar2」のみです。

3つのコマンド出力がすべて出力ファイルに表示されるようにファイルを追加する方法を知っている人はいますか?

ベストアンサー1

3つの個別のコマンドは、output.txtそれぞれ新しいデータを書き込む前にファイルを消去します。これが、ファイルが最後に実行されたコマンドのデータのみを含むようになる理由です。

一連のコマンドを使用できるファイルにリダイレクトするには

{
    foo bar
    foo bar1
    foo bar2
} >output.txt

または一行で、

{ foo bar; foo bar1; foo bar2; } >output.txt

中かっこは複合コマンド。リダイレクト終了}後のリダイレクトみんな複合コマンドの完全な出力です。

を使用しているため、>複合output.txtコマンドの出力がファイルに書き込まれる前にファイルは空になります。ファイルに追加するには>>


別のオプション:

for operand in bar bar1 bar2; do
    foo "$operand"
done >output.txt

または中括弧拡張を含むシェルで

for operand in bar{,1,2}; do
    foo "$operand"
done >output.txt

ここでforループは複合命令で、{ ...; }上記の複合命令のように方向転換が可能です。

同様に、ファイルの元の内容を保持してoutput.txtファイルに追加するだけの場合は、リダイレクトに>>代わりに使用してください。>

おすすめ記事