tee
パイプ標準入力を標準出力にリダイレクトできます。そして文書。
echo Hello, World! | tee greeting.txt
上記のコマンドは、端末画面にグリーティングを表示し、ファイルの内容に保存するか、greeting.txt
その名前のファイルがない場合はファイルを生成します。
上書きするのではなく、既存のファイルに追加する-a
スイッチもあります。tee
パイプ入力をコマンドにリダイレクトします。標準出力ファイルの代わりに?
ラッパースクリプトを作成しようとしています。buku
インデックス番号で指定されたブックマークの URL をデフォルトの選択項目にコピーします。
# bukuc:
#!/bin/sh
url=$(buku -f 1 -p $1 | cut -f 2) # NUMBER : URL
echo $url # DISPLAY
echo $url | xsel # PRIMARY SELECTION
ここで私は使うecho
二つ最初に端末に表示され、次にデフォルトの選択項目(クリップボード)に保存されます。
私は、次のコマンド(接続されたコマンド)を渡す前に出力を表示するものやショートカットを想像しています。echo $url | teeC xsel
これにより、結果を保存することなく、1行にコマンド全体をリンクできます。変える次のように:
buku -f 1 -p $1 | cut -f 2 | teeC xsel
私も使えるurlview
次のコマンドを使用して表示、選択、および開く$BROWSER
:
bukuc 10-20 | urlview
答え1
サポートされているシェルでは簡単です。プロセスの交換、例えば、
$ echo foo | tee >(xsel)
foo
$ xsel -o
foo
それ以外の場合は、FIFOを使用できます(利便性は不十分ですが)。
$ mkfifo _myfifo
$ xsel < _myfifo &
$ echo bar | tee _myfifo
bar
$ xsel -o
bar
[1] + Done xsel 0<_myfifo
$
答え2
「コマンド用ティー」と直接的な類似点は次のとおりです。pee
moreutilsのコマンド(tee
、しかしパイプを含む)。その引数はパスではなく実行コマンドとして使用され、入力はファイルに書き込まれずにパイプに渡されます。すべてのコマンドはpee
独自の標準入力にパイプされます。
を使用すると、実行して入力を入力するように指示して、目的のpee
結果を得ることができます。xsel
cat
echo foo | pee xsel cat
出力を実行するための追加cat
プロセスがあることは、ユースケースでは実際には問題になりませんが、他の場合には理想的ではないかもしれません。プロセスの交換とは異なり、これはすべてのシェルで機能しますが、もちろん追加(おそらくあまり一般的ではない)ツールをインストールする必要があります。
次のように引用すると、より複雑なコマンドを発行できますpee "xsel --display :1" cat
。これはシェルメタ文字を使用して実行されるため、sh
注意する必要があります。