1. ホーム
  2. bash

[解決済み] とはどういう意味ですか?

2023-01-25 18:55:01

質問

この表現に少し戸惑いました。

gcc -c -g program.c >& compiler.txt

私は知っている &>filename は stdout と stderr の両方をファイルにリダイレクトします。 filename . しかし、この場合、アンパサンドは大なり記号の後にあります。 これは、次のような形式です。 M>&N ここで MN はファイルディスクリプタです。

上のスニペットでは M=1N='compiler.txt' ? とは具体的にどう違うのでしょうか。

gcc -c -g program.c > compiler.txt     (ampersand removed)

私の理解では、開いている各ファイルは2より大きいファイル記述子に関連付けられています。

もしそうなら、リダイレクトの対象として、ファイル名はそのファイル記述子と交換可能なのでしょうか?

どのように解決するのですか?

これは &> . bashのmanpageから。

標準出力と標準エラーのリダイレクト この構文により、標準出力 (ファイル記述子 1) と標準エラー出力 (ファイル記述子 2) の両方を 標準エラー出力(ファイル記述子2)の両方を、wordを展開した名前のファイルにリダイレクトすることができます。 ファイルにリダイレクトさせることができます。

There are two formats for  redirecting  standard  output  and  standard
error:

       &>word
and
       >&word

Of the two forms, the first is preferred.  This is semantically equiva-
lent to

       >word 2>&1