こんにちは。スクリプト出力をファイルに送信しようとしています。
私のスクリプトは
gnome-terminal -- ./program +config
いくつかの投稿を確認してみました。
gnome-terminal -- "./program +config 2>&1 | tee output.txt"
または
gnome-terminal -- 'bash -c "./program +config 2>&1 | tee output.txt"'
そして他の多くのバリエーションがありますが、うまくいきません
Ubuntu 22.04を使用しています。
答え1
正解
あなたがやっていることを実装するためにそれを使う必要はありませんgnome-terminal
。./program
gnome-terminalで実行するよりも出力をキャプチャするより良い方法があるかもしれません。
まだgnome-terminalを使いたいですか?
Konsoleやxtermなどの他の端末とは異なり、セッション出力を記録するオプションが見つかりません。 Gnomeのマニュアルにはデータのロールバックが記載されています。
ロールバックデータは、ディスク上のシステム一時ファイルのデフォルトの場所(通常は/ tmp)に圧縮および暗号化されたファイルとして保存されます。これらのファイルは作成直後に切断され、ディレクトリリストには表示されません。その端末が閉じると、占有されているディスク容量が解放されます。
Gnomeは、ユーザーが出力ログを取得できないように最善を尽くしているようです。このユーティリティを使用してこの問題を解決できますscript
。マニュアルページから:
script - make typescript of terminal session
答えは簡単です。script
プログラムを実行する前に起動してください。つまり、次のものを交換してください。
gnome-terminal -- ./program +config
そしてgnome-terminal -- script -f $LOG_FILE -c "./program +config"
。
たとえば、プログラムが終了した後に出力を見つける必要がある場所$LOG_FILE
に正しい値を指定する必要があります。LOG_FILE=$HOME/.terminal.log