GNU/Linux >> Linux の 問題 >  >> Linux

ティーコマンドはどのように機能しますか?

閉鎖 。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。

この質問を改善したいですか? この投稿を編集して、詳細を追加し、問題を明確にしてください。

4年前に閉鎖されました。


この質問を改善する

約3つのteeに出くわした後 私が非現実的だと思う説明は、Linuxの初心者を対象とした、このコマンドについての簡単で一般的で段階的な(可能であれば)説明を求めます。

パイプを介して、コマンドのstdoutで、または特定のファイルを直接使用することは理解していますが、コマンドがこのコンテンツで実際に何を実行し、いつ役立つかを見逃していると思います。

ですから、教訓的な説明を見つけたいと思って、明確で段階的な方法で新参者に提供したものをここに示します。

  1. コマンドは、コマンドのstdoutで、またはファイル自体でどのように機能しますか?

  2. 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 プロセスのどこにいるのかを知るためだけに。

関連:関数とパラメーターを変数として持つシェルスクリプト?
Linux
  1. スティッキービットはどのように機能しますか?

  2. ワイルドカード*はコマンドとしてどのように解釈されますか?

  3. 「ls」コマンドは Linux/Unix でどのように機能しますか?

  1. Linuxgrepコマンドの使用方法

  2. Linuxでhistoryコマンドを使用する方法

  3. OpenShiftでのocdebugコマンドの動作

  1. basenameコマンドの使用方法は?

  2. UnixターミナルでExitコマンドはどのように機能しますか?

  3. コマンドSed‘1!g; h; $!d’は、ファイルの内容をどのように逆にしますか?