web-dev-qa-db-ja.com

Linux / Debian-moreutilsの「pee」は何をしますか?

最近 Debian(およびUbuntu)の 'moreutils'パッケージ を発見しました。これは、便利なUNIXツールのコレクションです。

コマンドの1つは「おしっこ」です。マンページは言う:

おしっこはティーのようですが、パイプ用です。

しかし、それは短いmanページです 私はそれについてバグを提出しました 。誰かがそれが何をするか、それをどのように使うか、なぜそれを使うのかを知っていますか?

21
Rory

おしっこでできることは次のとおりです。

seq 5 -1 1 > file
cat file |pee 'sort -u > sorted' 'sort -R > unsorted'

したがって、peeはファイルの代わりにシェルパイプで動作します。

bashはおしっこを必要としません。シェルコマンドをファイルとして開くことができます。

cat file |tee >(sort -u > sorted) >(sort -R > unsorted)
29
Tobu

最初にteeを使用した方が理解しやすいでしょう。この便利な古いツールは、標準入力を取り、複数のファイルと標準出力に書き込みます。以下:

echo "Hello world" | tee one two

onetwoという名前の2つのファイルが作成され、どちらにも文字列Hello worldが含まれます。端末にも出力されます。


peeは同様の機能を実行しますが、出力を複数のファイルにリダイレクトする代わりに、パイプなどの複数のセカンダリコマンドにリダイレクトします。元のstdinをstdoutに送信しないという点でteeとは少し異なります。これは、2次コマンドの出力と組み合わせても意味がないためです。次の非常に単純な例:

echo "Hello world" | pee cat cat

文字列Hello worldを端末に2回出力します。これは、catの2つのインスタンスのそれぞれが標準出力を受け取り、catが実行する処理を実行するためです。

16
Dan Carley