Página principal » cómo » Cómo guardar la salida de un comando en un archivo en Bash (también conocido como Terminal de Linux y macOS)

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

    Cuando ejecuta un comando en el indicador de bash, normalmente imprime la salida de ese comando directamente en el terminal para que pueda leerlo inmediatamente. Pero bash también le permite "redirigir" la salida de cualquier comando, guardándolo 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: redirigir la salida a un archivo solamente

    Para usar la redirección de bash, ejecuta un comando, especifique el > o >> operador, 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.

    Aquí hay un ejemplo simple. los ls El comando enumera los archivos y carpetas en el directorio actual. Asi que. cuando ejecutas el siguiente comando, ls listará 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 especificar 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 salida del comando. Por ejemplo, el gato El comando imprime el contenido de un archivo en el terminal:

    cat / path / to / file

    Recuerda el >  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á 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 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..

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

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

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

    Puede que no te guste redirigir la salida con el > o >> Operadores, ya que no verá la salida del comando en el terminal. Eso es lo que el tee el comando es para. El comando tee imprime la entrada que recibe a la pantalla. y lo guarda en un archivo al mismo tiempo.

    Para canalizar la salida de un comando para tee, imprimiéndolo en su pantalla y guardándolo 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 la > operador.

    Para canalizar la salida de un comando para tee , imprimiendo en su pantalla y guardándolo en un archivo, pero agregándolo al final del archivo:

    comando | tee -a / ruta / a / archivo

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

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