¿Cómo guardo la salida de un comando en un archivo?
¿Hay alguna manera sin usar ningún software? Me gustaria saber como
command-line
led-Zepp
fuente
fuente

someCommand 2> someFile.txtysomeCommand 2>> someFile.txttambién redirigestterra someFile.txtmakecomando en un archivo, se requiere esta sintaxis:make > someFile.txt 2>&1(fuente: linuxquestions.org/questions/linux-newbie-8/… )Para escribir la salida de un comando en un archivo, existen básicamente 10 formas de uso común.
Visión de conjunto:
Lista:
command > output.txtLa secuencia de salida estándar se redirigirá solo al archivo, no será visible en el terminal. Si el archivo ya existe, se sobrescribe.
command >> output.txtLa secuencia de salida estándar se redirigirá solo al archivo, no será visible en el terminal. Si el archivo ya existe, los nuevos datos se agregarán al final del archivo.
command 2> output.txtEl flujo de error estándar será redirigido solo al archivo, no será visible en el terminal. Si el archivo ya existe, se sobrescribe.
command 2>> output.txtEl flujo de error estándar será redirigido solo al archivo, no será visible en el terminal. Si el archivo ya existe, los nuevos datos se agregarán al final del archivo.
command &> output.txtTanto la salida estándar como la secuencia de error estándar se redirigirán al archivo solamente, no habrá nada visible en el terminal. Si el archivo ya existe, se sobrescribe.
command &>> output.txtTanto la salida estándar como la secuencia de error estándar se redirigirán al archivo solamente, no habrá nada visible en el terminal. Si el archivo ya existe, los nuevos datos se agregarán al final del archivo.
command | tee output.txtLa secuencia de salida estándar se copiará en el archivo, aún estará visible en el terminal. Si el archivo ya existe, se sobrescribe.
command | tee -a output.txtLa secuencia de salida estándar se copiará en el archivo, aún estará visible en el terminal. Si el archivo ya existe, los nuevos datos se agregarán al final del archivo.
(*)
Bash no tiene una sintaxis abreviada que permita canalizar solo StdErr a un segundo comando, que se necesitaría aquí en combinación con
teenuevamente para completar la tabla. Si realmente necesita algo así, consulte "¿Cómo canalizar stderr y no stdout?" en Stack Overflow para ver cómo se puede hacer, por ejemplo, intercambiando flujos o usando la sustitución de procesos.command |& tee output.txtTanto la salida estándar como las secuencias de error estándar se copiarán en el archivo sin dejar de ser visibles en el terminal. Si el archivo ya existe, se sobrescribe.
command |& tee -a output.txtTanto la salida estándar como las secuencias de error estándar se copiarán en el archivo sin dejar de ser visibles en el terminal. Si el archivo ya existe, los nuevos datos se agregarán al final del archivo.
fuente
2>&1redirige STDERR a STDOUT,1>&2redirige STDOUT a STDERR y3>&1redirigiría la secuencia 3 a STDERR.sh: 1: Syntax error: "&" unexpectedcuando lo uso|& teedesde un script de Python en un servidor c9.io. Parece que se está utilizando un caparazón diferente.echo $SHELLmuestra/bin/bashy$SHELL --versionmuestra la versión 4.3.11 (1) -lanzamiento. Intenté#!/bin/bashen mi script de Python pero todavía consigosh: 1: Syntax error. Obtuve lo que necesitaba, así que renuncio a ordenar las rarezas entreshybashen mi servidor. Gracias.shy nobash(o tal vezbashenshmodo ...). Puede verificar qué está utilizando exactamente su proceso de shell actualps -p $$ -o cmd=, porqueecho $SHELLno es confiable y le mostrará su shell de inicio de sesión, ignorando si podría haber iniciado un subshell diferente.También puede usar
teepara enviar la salida a un archivo:Una ligera modificación también atrapará a stderr:
o un poco más corto y menos complicado:
teees útil si desea poder capturar la salida del comando mientras lo ve en vivo .fuente
2>&1?Puede redirigir la salida del comando a un archivo:
Para agregar el resultado del comando a un archivo en lugar de sobrescribirlo, use:
fuente
Una mejora a tener en cuenta:
Varios scripts inyectarán códigos de color en la salida que quizás no desee saturar su archivo de registro.
Para solucionar esto, puede usar el programa sed para eliminar esos códigos. Ejemplo:
fuente
lsygrep, soportan--color=auto, que genera códigos de color solo si la salida estándar es un terminal.Para
crontrabajos, etc., desea evitar las extensiones Bash. Losshoperadores de redireccionamiento POSIX equivalentes sonNotarás que la instalación POSIX es, en cierto sentido, más simple y más directa. Se
&>tomó prestada la sintaxis,cshque ya debería convencerlo de que es una mala idea.fuente
some_command | tee command.logysome_command > command.logtienen el problema de que no guardan la salida del comando en elcommand.logarchivo en tiempo real.Para evitar ese problema y guardar la salida del comando en tiempo real, puede agregar
unbuffer, que viene con elexpectpaquete.Ejemplo:
Suponiendo que
log.pycontiene:puedes correr
unbuffer python log.py | tee command.logounbuffer python log.py > command.logMás información: ¿Cómo puedo guardar la salida de un comando en un archivo en tiempo real?
fuente