variable una txt salida redireccionamiento guardar entrada comando archivo almacenar bash io-redirection

bash - una - guardar salida de un comando en un archivo linux



cómo redirigir la salida de múltiples comandos a un archivo (3)

La mejor respuesta a esto es probablemente deshacerse de la ssh .... | grep ... ssh .... | grep ... y modifique la secuencia de comandos awk en el otro comando para agregar la funcionalidad que estaba recibiendo del comando grep ...

Eso eliminará cualquier problema de intercalado como un efecto secundario adicional.

Tengo un script de bash, que tiene los siguientes dos comandos:

ssh host tail -f /some/file | awk ..... > /some/file & ssh host tail -f /some/file | grep .... > /some/file &

¿Cómo puedo hacer que la salida de ambos comandos se dirija al mismo archivo?


Tenga en cuenta que puede reducir el número de llamadas ssh:

{ ssh host tail -f /some/file | tee >(awk ...) >(grep ...) >/dev/null } > /some/file &

ejemplo:

{ echo foobar | tee >(sed ''s/foo/FOO/'') >(sed ''s/bar/BAR/'') > /dev/null; } > outputfile cat outputfile

fooBAR FOObar


Use ''agregar'' con >> o use llaves para abarcar las redirecciones de E / S, o (ocasionalmente) use exec :

ssh host tail -f /some/file | awk ..... > /some/file & ssh host tail -f /some/file | grep .... >> /some/file &

o:

{ ssh host tail -f /some/file | awk ..... & ssh host tail -f /some/file | grep .... & } > /some/file

o:

exec > /some/file ssh host tail -f /some/file | awk ..... & ssh host tail -f /some/file | grep .... &

Después del exec , la salida estándar de la secuencia de comandos en su conjunto va a /some/file . Rara vez utilizo esta técnica; Usualmente uso el { ...; } { ...; } técnica en su lugar.

Nota: Tienes que tener cuidado con la anotación de llaves. Lo que mostré funcionará. Tratar de aplanarlo en una línea requiere que trate el { como si fuera un comando (seguido de un espacio, por ejemplo) y que también trate el } como si fuera un comando. Debe tener un terminador de comando antes del } : utilicé una nueva línea, pero un & para el fondo o ; funcionaria tambien

Así:

{ command1; command2; } >/some/file { command1 & command2 & } >/some/file

Tampoco he abordado la cuestión de por qué tiene dos operaciones tail -f separadas ejecutándose en un solo archivo remoto y por qué no está usando awk power como super- grep para manejar todo en uno, solo he tratado la superficie cuestión de cómo redireccionar la E / S de los dos comandos a un archivo.