出力がどのファイル記述子から出てくるのか、どうすれば確認できますか?
$エコこんにちは こんにちは $エコこんにちは1>&2 こんにちは
すべて/dev/pts/0に移動します
が、3つのファイル記述子0,1,2があります。
答え1
通常の出力はファイル記述子1(標準出力)で発生します。診断出力とのユーザー対話(プロンプトなど)はファイル記述子2(標準エラー)から発生し、入力はファイル記述子0(標準入力)のプログラムに移動します。
標準出力/エラーへの出力例:
echo 'This goes to stdout'
echo 'This goes to stderr' >&2
上記の2つのインスタンスではecho
標準出力が書き込まれますが、2番目のコマンドではコマンドの標準出力が標準エラーにリダイレクトされます。
一方または他の(または両方)出力チャネルフィルタリング(削除)の例:
{
echo 'This goes to stdout'
echo 'This goes to stderr' >&2
} >/dev/null # stderr will still be let through
{
echo 'This goes to stdout'
echo 'This goes to stderr' >&2
} 2>/dev/null # stdout will still be let through
{
echo 'This goes to stdout'
echo 'This goes to stderr' >&2
} >/dev/null 2>&1 # neither stdout nor stderr will be let through
出力ストリームは、/dev/pts/0
(上記のように)他の場所にリダイレクトされない限り、現在の端末(あなたの場合)に接続されます。