it-swarm-ja.com

行頭での出力リダイレクト

私は次のように行の終わりに出力リダイレクトを指定するために使用されます:

echo blah > output.txt

Windowsと* nixの両方。

最近、次のように、行の先頭にリダイレクトする例がますます増えています。

> output.txt echo blah

繰り返しますが、これはWindowsと* nixの両方で機能するようです。

行の先頭で出力をリダイレクトする利点はありますか?行末でのリダイレクトと同じように動作しますか、それともいくつかの違いがありますか?なぜ2つのオプションさえあるのですか?

3
Martin Prikryl

このような単純な例では、リダイレクトがどこで発生するかは問題ではありません。ここではコーディングスタイルの選択です。 Bashの手動による状態

(...)リダイレクト演算子は、単純なコマンド内のどこかに先行または表示される場合と、コマンドの後に続く場合があります。

単純なコマンド とは何ですか?

単純なコマンドは、最も頻繁に遭遇する種類のコマンドです。これは、空白で区切られた一連の単語であり、シェルの制御演算子の1つで終了します( 定義 を参照)。通常、最初のWordは実行するコマンドを指定し、残りのWordはそのコマンドの引数です。

明らかに、リダイレクトコマンドが複数ある場合は、リダイレクトコマンドの順序が重要になります。

3
slhck

count: 1をファイルに書き込みたいとします。

Windowsの場合、1はstdoutを意味すると解釈されるため、echo count: 1>file.txtはファイルにcount :を(1なしで)書き込みます。 echo count: 1 >file.txtを使用することもできますが、その場合、不要な末尾のスペースがあります。リダイレクトを前面に配置すると、問題が回避されます:>file.txt echo count: 1

これが 'nixにも当てはまるかどうかはわかりませんが、当てはまると思います。

2
dbenham