如何將 Portage 的輸出寫入 txt 檔?

如何將 Portage 的輸出寫入 txt 檔?

我希望能夠編寫在 tty 中執行的 Portage 命令以及其他命令的輸出(即,以Ctrl+ Alt+開頭的屏幕寬終端,其中 n 代表 1 到 6 之間的整數。這些終端是開始使用命令,據我所知)在沒有剪貼簿的情況下,到文字檔。現在我讀到FngettyUbuntu 論壇如果使用得當,也許 Unix 指令cat可以做到這一點。不幸的是,按照建議的命令似乎沒有將emerge命令的完整輸出添加到文字檔案中。看我跑了:

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

其中fusion809是我的用戶名,它只會寫入四行輸出,即:

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告訴 shell 將標準錯誤輸出傳送到與標準輸出相同的位置:

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

另外,如果您需要參考和了解更多信息,您可以隨時在 shell 手冊頁中查找man sh

感謝您提供資訊豐富且經過深思熟慮的問題!

答案2

  1. 你不需要> cat那裡。事實上,這只是創建了另一個cat在當前目錄中調用的檔案。如果您想輸入| cat,那是多餘的,您可以重定向輸出,而無需透過 cat 進行管道傳輸。

  2. emerge dev-qt/qtwayland > /home/fusion809/output.txt會保存全部指令的 stdout 輸出emerge/home/fusion809/output.txt.所有的。如果檔案中只有 4 行,那是因為emerge只將 4 行列印到 stdout。

  3. emerge 可能已經印製了更多的東西到stderr.如果你也想捕捉到這一點,請嘗試emerge dev-qt/qtwayland >& /home/fusion809/output.txt。這會將 stdout 和 stderr 重新導向到同一個檔案。

  4. >和之間的區別>>在於,>如果檔案存在,則在建立檔案之前將其刪除;>>如果檔案已存在,則將其追加到檔案中;如果不存在則建立檔案(取決於 shell 選項)。

  5. 如果您想將輸出捕獲到文件中同時在螢幕上看到它,使用tee.例如:

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

tee-a選項告訴它追加而不是擦除和覆蓋。

相關內容