Cómo guardar la salida de un comando en un archivo en Bash (también conocido como Terminal Linux y macOS)

Cuando ejecuta un comando en el indicador de bash, normalmente imprime el resultado de ese comando directamente en la terminal para que pueda leerlo de inmediato. Pero bash también le permite «redirigir» la salida de cualquier comando, guardándola en un archivo de texto para que pueda revisar la salida más tarde.

Esto funciona en bash en cualquier sistema operativo, desde Linux y macOS hasta el entorno bash basado en Ubuntu de Windows 10 .

Opción uno: redireccionar la salida a un archivo solamente

Para usar la redirección bash, ejecute un comando, especifique el operador >o >>y luego proporcione la ruta de un archivo al que desea redirigir la salida.

  • > redirige la salida de un comando a un archivo, reemplazando el contenido existente del archivo.
  • >> redirige la salida de un comando a un archivo, agregando la salida al contenido existente del archivo.

Técnicamente, esto redirige «stdout», la salida estándar, que es la pantalla, a un archivo.

He aquí un ejemplo sencillo. El lscomando enumera archivos y carpetas en el directorio actual. Entonces. cuando ejecute el siguiente comando, ls mostrará una lista de archivos y carpetas en el directorio actual. Pero no los imprimirá en la pantalla, los guardará en el archivo que especifique.

ls> / ruta / a / archivo

No es necesario que especifique la ruta a un archivo existente. Especifique cualquier ruta válida y bash creará un archivo en esa ubicación.

Si ve el contenido del archivo, verá el ls resultado del comando. Por ejemplo, el cat comando imprime el contenido de un archivo en la terminal:

cat / ruta / a / archivo

Recuerde, el operador reemplaza el contenido existente del archivo con la salida del comando. Si desea guardar la salida de varios comandos en un solo archivo, usaría el operador en su lugar. Por ejemplo, el siguiente comando agregará información del sistema al archivo que especifique: > >>

uname -a >> / ruta / a / archivo

Si el archivo aún no existe, bash creará el archivo. De lo contrario, bash dejará el contenido existente del archivo solo y agregará la salida al final del archivo.

Relacionado:  Cómo seleccionar rápidamente emoji en mensajes en un iPhone o iPad

Cuando vea el contenido del archivo, verá que los resultados de su segundo comando se agregaron al final del archivo:

Puede repetir este proceso tantas veces como desee para seguir agregando resultados al final del archivo.

Opción dos: imprimir la salida normalmente y redirigirla a un archivo

Es posible que no le guste redirigir la salida con los operadores > o >>, ya que no verá la salida del comando en la terminal. Para eso es el tee comando. El comando tee imprime la entrada que recibe en la pantalla y la guarda en un archivo al mismo tiempo.

Para canalizar la salida de un comando tee, imprimirlo en su pantalla y guardarlo en un archivo, use la siguiente sintaxis:

comando | tee / ruta / a / archivo

Esto reemplazará cualquier cosa en el archivo con la salida del comando, al igual que el >operador.

Para canalizar la salida de un comando a tee, imprimir en su pantalla y guardarlo en un archivo, pero anexarlo al final del archivo:

comando | tee -a / ruta / a / archivo

Esto agregará la salida al final del archivo, al igual que el >>operador.

El shell bash incluye algunos operadores avanzados adicionales que realizan funciones similares. Serán particularmente útiles si está escribiendo scripts bash . Consulte el capítulo Redirección de E / S de la Guía avanzada de scripts de bash para obtener información más detallada.