tee

提供: ArchWiki
2022年7月1日 (金) 10:15時点におけるKusanaginoturugi (トーク | 投稿記録)による版 (→‎ヒントとテクニック: 飜訳)
ナビゲーションに移動 検索に移動

Wikipedia より:

コンピュータでは、tee は標準ストリームを使用するコマンドラインインタプリタ(シェル)のコマンドで、標準入力を読み込んで標準出力と 1 つ以上のファイルの両方に書き込み、入力を効果的に複製するものです。主にパイプやフィルタと組み合わせて使用される。コマンド名は、配管工事で使用される T 字分岐にちなんで付けられています。

インストール

tee(1)coreutils パッケージの一部です。

使い方

ファイルにコンテンツを書き込むには

$ input stream | tee file1 file2...

デフォルトでは、tee は再度使用されると、ファイル内のコンテンツを上書きします。 ただし、必要に応じて、-a/--append 引数を使用してファイルにコンテンツを追加できます。

詳細は、tee(1) を参照してください。

ヒントとテクニック

保護されたファイルに書き込む

tee は保護されたファイルへの書き込みに非常に便利です。

$ input stream | sudo tee --option protected file1 protected file2...

パーミッションの関係で、単純な >/>> ではうまくいかなかった場合に。

Vim

同様のコンセプトは、root が所有する設定ファイルを編集する際に、sudoVim を起動するのを忘れた場合に便利です。この場合、Vim 内部で以下のようにしてファイルを保存することができます。

:w !sudo tee %

これを ~/.vimrc に追加すると、コマンドモードでの :w!!! マッピングでこのトリックを簡単に使えるようになります。

~/.vimrc
" Allow saving of files as sudo when I forgot to start vim using sudo
 cmap w!! w !sudo tee > /dev/null %

The > /dev/null part explicitly throws away the standard output since we do not need to pass anything to another piped command.

More detailed explanation of how and why this works can be found in How does the vim “write with sudo” trick work? article on StackOverflow.

参照