処理の中間段階でパイプラインのコンテンツをキャプチャするために、ls /bin /usr/bin | sort | uniq | tee abc.txt | grep out
としてteeを使用しますが、uniqの後にのコンテンツをabc.txtにリダイレクトしたくない場合はどうでしょうか。 butto screen(through stdout、ofcourse)最終結果として、画面に表示されます。uniqの後の中間コンテンツとgrepの後のコンテンツです。
/ dev/ttyがそのために使用できることもあります...
ls /bin /usr/bin | sort | uniq | tee /dev/tty | grep out | wc
このコマンドでうまくいきました。
ls /bin /usr/bin | sort | uniq | tee /dev/pts/0 | grep out
コマンドtty
を使用して端末を確認し、ティーを置き換えて出力をその端末にリダイレクトできます。
参照
もう1つのオプション:プロセス置換を使用します。
ls /bin /usr/bin | sort | uniq | tee abc.txt >(grep out)
または、別の形式で:
ls /bin /usr/bin | sort | uniq | tee abc.txt >(cat) | grep out
ls /bin /usr/bin | sort | uniq | tee /dev/fd/2 | grep out | wc
Linuxシステムでは、/dev/fd/[num]
多くの場合、名前付きパイプのようなリンク。これはstdoutをstderrに複製します。これは通常、端末screenですが、そうである必要はありません。
mkfifo myfifo
cat myfifo& ls /bin /usr/bin | sort | uniq | tee myfifo | grep out
mkfifo
は、名前付きパイプとも呼ばれるFIFO(先入れ先出し))特殊ファイルを作成します。非同期cat
を開始してfifoから読み取り、次にパイプラインを実行し、中間結果をfifoにtee
ingします。
これにより、最後に[1]+ Done cat myfifo
メッセージが生成されます。あなたはこの手品でそれを抑制することができます:
(cat myfifo&); ls /bin /usr/bin | sort | uniq | tee myfifo | grep out
長期的で堅牢なソリューションの場合、毎回新しいものを作成するのではなく、永続的なfifo($HOME/myfifo
など)を作成したい場合があります。しかし、これの複数のインスタンスを同時に実行している場合は、失敗します。または、
mktemp
)。/tmp
など)にfifoを作成します。これがあなたができるターミナルから実行されている場合
touch abc.txt
、次にtail -f abc.txt
http://tldp.org/LDP/abs/html/io-redirection.html
cat stuff | 3>&1 tee 3 | xsel -i
編集:残念ながら、上記の↑は正しくありません。以前の答え
cat stuff | tee >(cat) | xsel -i
でもいいです。