この質問を改善したいですか? この投稿を編集して、詳細を追加し、問題を明確にしてください。
4年前に閉鎖されました。
この質問を改善する
約3つのtee
に出くわした後 私が非現実的だと思う説明は、Linuxの初心者を対象とした、このコマンドについての簡単で一般的で段階的な(可能であれば)説明を求めます。
パイプを介して、コマンドのstdoutで、または特定のファイルを直接使用することは理解していますが、コマンドがこのコンテンツで実際に何を実行し、いつ役立つかを見逃していると思います。
ですから、教訓的な説明を見つけたいと思って、明確で段階的な方法で新参者に提供したものをここに示します。
-
コマンドは、コマンドのstdoutで、またはファイル自体でどのように機能しますか?
-
tee
と言うのが一般的なのはなぜですか 標準入力を読み取りますか?つまり、ls -l
を実行すると 、tee
構文ls -l
を読み取らない それ自体ではなく、セッションに出力された標準です。
また、必要に応じて、tee
の時期について、日常業務の実際的な例を教えてください。 とても便利ですか?
承認された回答:
tee
から 私のシステムのマニュアル:
teeユーティリティは、標準入力を標準出力にコピーし、
ゼロ個以上のファイルにコピーを作成します。出力はバッファリングされていません。
そのため、標準入力から読み取り、それを標準出力にコピーします。その間、ストリームを1つまたは複数のファイルに複製します。
次のパイプラインでは、tee
パイプラインの最初のコマンドの出力を取得し、それを標準出力(ターミナル)にコピーすると同時に、ファイルone
にもコピーします。 、two
およびthree
:
$ somecommand | tee one two three
tee
多くの用途があり、1つはsudo
と組み合わせて使用します ルートが所有するファイルに出力をリダイレクトするには:
$ somecommand | sudo tee /root/somefile >/dev/null
以下は リダイレクトが非特権ユーザーとして発生してから機能しています(somecommand
も実行されます) 不要なルートとして):
$ sudo somecommand >/root/somefile
固定された行のセットを一度に多くのファイルに追加する人為的な例(すべてのユーザー~/.profile
*
を想定したファイル ユーザー名に展開され、展開されたコマンドラインがシェルで処理できるほど長くならないようにします):
$ tee -a /home/*/.profile <<'END_NEWPATH'
PATH="$PATH:/opt/bin"
END_NEWPATH
tee
の実際の使用例 :
time doas box-build.sh 2>&1 | tee build.out | grep '^=*>'
これは私がOpenBSDベースシステムを構築しているところです。 doas
sudo
と「同等」のOpenBSDです。 およびbox-build.sh
ビルドを実行する小さなシェルスクリプトです(基本的にcd /usr/src && make obj && make build
)。エラーや警告を含むビルドプロセス全体の出力を保存したいのですが、すべてをターミナルに吐き出させたくありません。この目的のために、私はtee
を使用します すべてをbuild.out
に保存します 次にgrep
プロセスのどこにいるのかを知るためだけに。