シェルスクリプトを作成しています。スクリプトにコマンドを記述したいのですが、出力を他のkonsoleセッションにリダイレクトします。 (kdeを使用)
まず、現在のttyセッションを識別する番号を探します。数をX
と考えてみましょう:
| terminal 1 | terminal 2 |
------------------------------------------------------
| $ tty | $ |
| /dev/pts/X | |
次に、指定された番号を使用して、選択したttyに書き込みます。
| terminal 1 | terminal 2 |
------------------------------------------------------
| $ tty | $ echo "foo" > /dev/pts/X |
| /dev/pts/X | |
そしてそれは生成します:
| terminal 1 | terminal 2 |
------------------------------------------------------
| $ tty | $ echo "foo" > /dev/pts/X |
| /dev/pts/X | |
| foo | |
出力を、他のセッションによって調整されたログファイルにパイプすることができます。
その他の端末の場合:
touch foo && tail -f foo
「メイン」ターミナル:
script.sh > foo
各端末でtty
コマンドを使用して、それらを識別します。
$ tty
/dev/pts/0
$ tty
/dev/pts/1
これらのTTYを想定して、最初のstdoutを2番目にリダイレクトするには、最初のターミナルでこれを実行します。
exec 1>/dev/pts/1
注:すべてのコマンド出力がpts/1に表示されるようになりました
Pts/0のデフォルトの動作標準出力を復元するには:
exec 1>/dev/pts/0
デモについては このビデオ を参照してください。
現在使用している端末ではなく、端末出力をファイルに出力します。
commands >>outputfile
新しいターミナルでは、tailを使用して出力ファイルの内容を表示し、テキストが追加されると自動的に更新します。
tail -f outputfile
遅くなりますが、おそらく決して良くはありません... :-)
mkfifo ~/MyOutput # Create the FIFO (Special file)
./MyScript.sh > ~/MyOutput # In the terminal/console 1
cat ~/MyOutput # In another tty/console
info coreutils 'mkfifo invocation'
から:
「FIFO」は、独立したプロセスが通信できるようにする特別なファイルタイプです。 1つのプロセスは書き込み用にFIFOファイルを開き、別のプロセスは読み取り用に開きます。その後、データはシェルまたは他の場所の通常の無名パイプと同じように流れることができます。
サイドノート:
FIFO
を持つことができます。FIFOs
からのダンプを要求しない限り、すべての出力が保持されます。cat MyOutput >> NewRealFile
cat MyOutput
を使用できます!FIFOs
にリダイレクトするように要求すると、フラックスがマージされます(いいえその行がどのプログラムから来ているかを区別するための先験的な方法)。