2010-05-15 15 views
14

Estoy ejecutando una tarea en la CLI, que me solicita una entrada de sí/no.Cómo canalizar la salida de un comando al archivo en Linux

Después de seleccionar una opción, se desplaza una gran cantidad de información en la pantalla, incluidos varios errores. Quiero canalizar esta salida a un archivo para que pueda ver los errores. Un simple '>' no funciona, ya que el comando espera la entrada del teclado.

Funciono en Ubuntu 9.1.

+0

¿Cuál es el nombre del comando que está ejecutando? ¿hacer? – Cristina

Respuesta

1

Uso 2> en lugar de sólo >.

1

Si el programa fue escrito por una persona sensata, lo que probablemente quiera es la stderr no la stdout. Se podría lograr esto mediante el uso de algo así como

foo 2> errors.txt

37
command &> output.txt 

Puede utilizar &> para redirigir stdout y stderr a un archivo. Esto es una abreviatura de command > output.txt 2>&1 donde 2>&1 significa "enviar stderr al mismo lugar que stdout" (stdout es el descriptor de archivo 1, stderr es 2).

Para los comandos interactivos que por lo general no se molestan en guardar en un archivo si puedo usar less y leer los resultados de inmediato:

command 2>&1 | less 
+1

Redirigir tanto stdout como stderr a un archivo significa que no verá el aviso real. No veo cómo estaría mejor que la situación que describe en su pregunta. – Epcylon

+0

Usó '&' en ambos lados de los números ('1',' 2'). ¿Usar '& 2' o' 2 & ', incluso' 2 &> 1' o '2> & 1' hace alguna diferencia? –

+0

@FredrickGauss ¡Vaya! Tuve un error tipográfico en mi respuesta. '2 &> 1' no es válido. Quise escribir '2> & 1'. –

4
echo yes | command > output.txt 

Dependiendo de cómo el comando lee su entrada (algunos programas descartar todo lo que estaba en stdin antes de que muestre que es rápido, pero la mayoría no), esto debería funcionar en cualquier entorno CLI sensato.

+1

Creo que quieres decir 'echo yes | command' en lugar de 'command <\' echo yes \ ''. (También está el comando 'yes' que podría ser útil.) –

+0

Tienes razón.Empecé pensando que podía poner su entrada en un archivo, y cambié mi parecer a simplemente usar echo, pero olvidé cambiar la línea de comando para que coincida. Solucionado ahora – Epcylon

+0

Esto vuelve a formatear el JSON. Quería escribir un archivo desafortunadamente. – metanerd

1

puede usar la opción 2> para enviar errores al archivo.

ejemplo:

comando 2> error.txt

(uso de la opción 2>) --- ver si sus sería un error durante la ejecución de la orden se enviará al archivo error.txt.

Cuestiones relacionadas