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 elFngetty
foros de ubuntuque tal vez el comando Unix cat
pueda hacer esto, si se usa correctamente. Desafortunadamente, seguir el comando sugerido no parece agregar el resultado completo del emerge
comando 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>&1
para 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
no necesitas el
> cat
allí. de hecho, eso simplemente crea otro archivo llamadocat
en el directorio actual. y si quería escribir| cat
, eso es superfluo, puede redirigir la salida sin canalizarla a través de cat.emerge dev-qt/qtwayland > /home/fusion809/output.txt
AhorraréTODOde la salida estándar de suemerge
comando a/home/fusion809/output.txt
. Todo ello. Si solo hay 4 líneas en el archivo, es porqueemerge
solo se imprimieron 4 líneas en la salida estándar.Es posible que emerge haya impreso más cosas en
stderr
. Si quieres capturar eso también, pruebaemerge dev-qt/qtwayland >& /home/fusion809/output.txt
. Eso redirige tanto stdout como stderr al mismo archivo.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).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
tee
La -a
opción le indica que agregue en lugar de borrar y sobrescribir.