¿Cómo escribo la salida de Portage en un archivo txt?

¿Cómo escribo la salida de Portage en un archivo txt?

Me gustaría poder escribir la salida de los comandos de Portage, junto con otros comandos, que realizo en tty (es decir, los terminales de toda la pantalla que comienzan con Ctrl+ Alt+ donde n representa un número entero entre 1 y 6. Estos terminales son comencé a usar el comando, que yo sepa) donde no hay portapapeles, a un archivo de texto. Ahora leo en elFngettyforos de ubuntuque tal vez el comando Unix catpueda hacer esto, si se usa correctamente. Desafortunadamente, seguir el comando sugerido no parece agregar el resultado completo del emergecomando a un archivo de texto. Mira, corrí:

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

donde fusion809 es mi nombre de usuario y solo escribió cuatro líneas de salida en output.txt, a saber:

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*"

También probé:

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

y:

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

ambos escribieron el mismo resultado en output.txt.

Respuesta1

Estás en el camino correcto. En Unix/Linux también hay un flujo de errores. Cada comando obtiene entrada estándar, salida estándar y error estándar.

Has estado trabajando con salida estándar. Para capturar también el flujo de error estándar del comando use 2>. Por ejemplo:

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

Ahora si quieres la salida estándaryerror al entrar en elmismoarchivo, utilícelo 2>&1para indicarle al shell que envíe la salida de error estándar al mismo lugar que la salida estándar:

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

Además, si necesita hacer referencia y obtener más información, siempre puede buscarlo en la página de manual de Shell man sh.

¡Gracias por la pregunta informativa y bien pensada!

Respuesta2

  1. no necesitas el > catallí. de hecho, eso simplemente crea otro archivo llamado caten el directorio actual. y si quería escribir | cat, eso es superfluo, puede redirigir la salida sin canalizarla a través de cat.

  2. emerge dev-qt/qtwayland > /home/fusion809/output.txtAhorraréTODOde la salida estándar de su emergecomando a /home/fusion809/output.txt. Todo ello. Si solo hay 4 líneas en el archivo, es porque emergesolo se imprimieron 4 líneas en la salida estándar.

  3. Es posible que emerge haya impreso más cosas en stderr. Si quieres capturar eso también, prueba emerge dev-qt/qtwayland >& /home/fusion809/output.txt. Eso redirige tanto stdout como stderr al mismo archivo.

  4. la diferencia entre >y >>es que >borra el archivo si existe antes de crearlo, y >>lo agrega al archivo si ya existe o lo crea si no existe (dependiendo de las opciones del shell).

  5. si desea capturar la salida en un archivoYverlo en la pantalla al mismo tiempo, use tee. Por ejemplo:

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

teeLa -aopción le indica que agregue en lugar de borrar y sobrescribir.

información relacionada