Linux / Debian-moreutilsの「おしっこ」とは何ですか?


21

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

コマンドの1つは「おしっこ」です。マニュアルページには次のように書かれています:

おしっこはティーに似ていますが、パイプ用です。

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

回答:


29

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

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)

1
これはファイル名jockersで動作しますか?zgp.org/~dmarti/tips/git-multiple-post-receive-hooksを参照してください-おしっこはstdinファイル名パターンを作成するすべてのスクリプトにクローンを掛けて与えるために使用されます、純粋なbashはこれを行うことができますか?AFAIUそれは次のようなものcausnigカッコ内のアスタリスクを拡大するtee >(app1 app2 app3 app4)されていない>(app1) >(app2) >(app3) >(app4)あなたの答えを示すこと
アリオク「ザ・

@ Arioch、bash構文はフックジョーカー手法では機能しません。moreutilsをインストールするだけです。
東武

1
使用すると、tee >/dev/null標準出力に標準入力を複製避けるために
JFS

1
Tシャツよりもおしっこの本当の利点は、各サブプロセスから標準出力をおしっこ自体の標準出力に送信することです。teeでは、各プロセスの標準出力を保存する場合はファイルにリダイレクトする必要がありますが、おしっこでは標準出力を保存するだけです。もちろん、各サブコマンドが同様にフォーマットされたものを出力している場合にのみ意味があります。grepの方法や正規表現がわからない場合はcat file | pee 'grep this' 'grep that' > lines.with.this.or.that.txt... teeを使用するとfile、stdoutのコピーを取得できます。
アンダーラン14

この>(command)機能は、プロセス置換と呼ばれます。
VlastimilOvčáčík

16

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

echo "Hello world" | tee one two

名前の2つのファイルが作成されますonetwo、両方が文字列を含みます、Hello world。また、端末にも印刷されます。


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

echo "Hello world" | pee cat cat

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.