2

指示:

echo "a" | tee `tty`

出力:

a

指示:

echo "a" | tee /dev/pts/0

出力:

a
a

現在の端末に接続されているファイルは/dev/pts/0です。両方のコマンドが同じ出力を生成するべきではありませんか? ここで何が欠けていますか?

4

1 に答える 1

2

teeコマンドライン指定されたすべてのファイル記述子と標準出力に標準入力を複製するため、ファイルの1つが現在の端末にある場合( も使用できます-)、入力は標準出力に2回書き込まれます。

最初のケースでは、stdin は tty に接続されていない (ただし、echoコマンドの出力には接続されている) ためttynot a tty. したがって、コマンドは になりecho "a" | tee not a tty、それぞれ「a」を含む 3 つのファイル (「not」、「a」、「tty」と呼ばれる) と、stdout に書き込まれる「a」が作成されます。

于 2015-08-30T08:38:56.683 に答える