Portageの出力をtxtファイルに書き込むには?

Portageの出力をtxtファイルに書き込むには?

Ctrl私は他のコマンド(つまり、++で始まる画面全体の端末)だけでなく、ttyで実行されるPortageコマンドの出力を作成できるようにしたいと思います。Altここで、nは1から6の間の整数を表します。この端末はコマンドを使用して開始されます。私が知っている限り)をクリップボードなしでテキストファイルに変換します。今私は読むFngettyUbuntuフォーラムおそらくUnixコマンドを正しく使用している場合は、catこれを行うことができます。残念ながら、提案されたコマンドによると、emergeコマンドの出力全体がテキストファイルに追加されないようです。私が逃げるのを見てください:

emerge dev-qt/qtwayland > cat >> /home/fusion809/output.txt

fusion809が私のユーザー名の場合、output.txtに次の4行の出力のみを書き込みます。

Calculating dependencies  ....... .. ....... done!
[ebuild   R    ] media-libs/mesa-11.0.4  USE="-wayland*" ABI_X86="32*"
[ebuild   R    ] dev-qt/qtgui-5.5.1  USE="-egl* -evdev* -ibus*"
[ebuild   R    ] dev-qt/qtwayland-5.5.1  USE="-egl*"

私も次のことを試しました。

emerge dev-qt/qtwayland > /home/fusion809/output.txt

そして:

emerge dev-qt/qtwayland >> /home/fusion809/output.txt

どちらも同じ出力をoutput.txtに書き込みます。

答え1

あなたは正しい道を行っています。 Unix / Linuxにもエラーストリームがあります。すべてのコマンドには標準入力、標準出力、標準エラーがあります。

標準出力を使用しています。コマンドから標準エラー・ストリームもキャプチャーするには、2>次のようにします。

emerge dev-qt/qtwayland > emerge.out 2> emerge.err

今標準出力が必要な場合そしてエラーを入力してください同じ2>&1標準エラー出力を標準出力と同じ場所に送信するようにシェルに指示するファイル:

emerge dev-qt/qtwayland > emerge.out 2>&1

また、参照や追加情報が必要な場合は、いつでもシェルのマニュアルページで参照できますman sh

有益で深く考えた質問に感謝します!

答え2

  1. あなたはそこにいる必要はありません> cat。実際、これはcat現在のディレクトリに呼び出される別のファイルを生成することです。 inputが必要な場合は| cat冗長なので、catを介してパイピングせずに出力をリダイレクトできます。

  2. emerge dev-qt/qtwayland > /home/fusion809/output.txt節約するみんなコマンドのstdout出力は.allemergeに移動します/home/fusion809/output.txt。ファイルに4行しかない場合、emergestdoutには4行だけが印刷されるためです。

  3. 今後は、より多くのコンテンツを印刷した可能性がありますstderr。この内容も確認したい場合は試してみてくださいemerge dev-qt/qtwayland >& /home/fusion809/output.txt。これにより、stdoutとstderrが同じファイルにリダイレクトされます。

  4. >との違いは、>>ファイル>が存在する場合は作成する前に削除され、>>ファイルがすでに存在する場合はファイルに追加され、存在しない場合は作成されることです(シェルオプションによって異なります)。

  5. 出力をファイルとしてキャプチャする場合そして同時に画面で表示するにはを使用しますtee。たとえば、次のようになります。

emerge dev-qt/qtwayland |& tee -a /home/fusion809/output.txt

teeオプション-aは、消去して上書きするのではなく追加するように指示します。

関連情報