指示がないと思われる約3つの説明に触れた後、tee
Linux初心者を対象に、このコマンドの簡単で一般的なステップバイステップ(可能な場合)の説明を依頼します。
パイプ、コマンドのstdout、またはファイルで直接使用できることはわかっていますが、コマンドが実際にこれらのタスクを実行するタスクと役に立つ時期はありません。
したがって、初心者に明確で段階的に役立つ教訓的な説明を見つけるために私が求めるものは次のとおりです。
このコマンドは、コマンドの標準出力またはファイル自体とどのように機能しますか?
tee
なぜ通常は標準入力から読み取ると言いますか?つまり、これにより構文自体は読み込まれませんが、ls -l
stdoutはセッションに印刷されます。tee
ls -l
また、ご希望の場合は日常業務の実際の事例を共有してください。tee
これはいつ効果がありましたか?
答え1
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
はいOpenBSD「同等」sudo
box-build.sh
(本質的に)ビルド用の小さなシェルスクリプトですcd /usr/src && make obj && make build
。エラーや警告を含むビルドプロセス全体の出力を保存したいのですが、すべてが私の端末にあふれたくありません。これを行うには、すべてを保存し、端末からtee
プロセスの現在位置を取得するように求められます。build.out
grep
ここにタグ付けされた他の質問も参照してくださいティーブランド。