[解決済み】画面に表示したままstdoutをパイプする方法は?(出力ファイルには出力しない)
質問
プログラムの標準出力を画面に表示したまま、パイプ出力したい。
簡単な例では、(
echo
ここで使用しているのは説明のためです) :
$ echo 'ee' | foo
ee
<-私が見たいと思う出力
teeが標準出力をファイルにコピーできることは知っていますが、それは私が欲しいものではありません。
$ echo 'ee' | tee output.txt | foo
試してみた
$ echo 'ee' | tee /dev/stdout | foo
に出力されますが、うまくいきません。
/dev/stdout
はパイプで
foo
解決方法は?
ここでは、どのような Unix / Linux 実装でも動作する解決策を紹介します。
POSIX
規格に準拠しています。のような非Unix環境でも動作します。
cygwin
もあります。
echo 'ee' | tee /dev/tty | foo
参考 The Open Group基本仕様書第7号 IEEE Std 1003.1、2013年版、§10.1 :
/dev/tty
そのプロセスのプロセスグループがある場合、それに関連付けられたもの。 これは を確認したいプログラムやシェルプロシージャに便利です。 へのメッセージの書き込み からデータを読み取るか がどのようなものであっても、端末は 出力がリダイレクトされました。 また、以下のようなアプリケーションにも使用できます。 出力にファイル名を要求する場合、タイプされた出力が必要で、かつ 現在どの端末が使われているかを調べるのが面倒。各プロセスにおいて、制御する端末の同義語である
Google Colabのような一部の環境では、実装されていないことが報告されています。
/dev/tty
を持つ一方で
tty
コマンドは、使用可能なデバイスを返します。以下は、その回避策です。
tty=$(tty)
echo 'ee' | tee $tty | foo
または古代のBourneシェルで。
tty=`tty`
echo 'ee' | tee $tty | foo
関連
-
[解決済み] OS X で 'find' コマンドを使用して 'sed' を使用するとエラーが発生する。"無効なコマンドコードです。"
-
[解決済み] docker alpine /bin/sh script.sh not found
-
[解決済み] bashスクリプトでfindコマンドを使用する
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Bashで標準出力と標準エラーの両方をファイルにリダイレクトして追記する方法
-
[解決済み] 出力をファイルや標準出力にリダイレクトする方法
-
[解決済み] 標準出力ではなく標準エラー出力にパイプを通すにはどうしたらいいですか?
-
[解決済み] Windowsのcmdの標準出力と標準エラー出力を1つのファイルにリダイレクトする
-
[解決済み] パイプで "tee "を使用しているときに、標準エラーをファイルに書き込むにはどうすればよいですか?
-
[解決済み] Bashでパイプ出力と終了ステータスをキャプチャする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Bashで$()と`の違いはあるのでしょうか?重複] [重複
-
[解決済み] Bashでの動的な変数名
-
[解決済み] bashでjsonファイルを解析するためにjqの出力からダブルクオートを削除する方法は?
-
[解決済み] awk で行を飛ばすにはどうしたらいいですか?
-
[解決済み] プロジェクトからすべての .pyc ファイルを削除するにはどうすればよいですか?
-
[解決済み] cygwin の ssh が終了時に "Killed by signal 1" と表示される
-
[解決済み] シンプルなAsciiテーブルをCSVに変換する【終了】。
-
[解決済み] nohupプロセスを終了させる方法を教えてください。
-
[解決済み] Bashのforeachループ
-
[解決済み】Dockerfileを1つのコマンドでビルドして実行する。