Cinco formas de usar operadores de redirección en Bash

Los datos se ingresan en el ordenador a través de estándar (generalmente el teclado), y la salida resultante va a salida estándar (normalmente la concha). Estas rutas se llaman. Sin embargo, es posible cambiar estas ubicaciones de entrada y salida, lo que hace que el ordenador obtenga información de una ubicación que no sea estándar o enviar los resultados a otro lugar que no sea salida estándar. Esta característica se llama.

En este artículo, aprenderá acerca de cinco operadores de redirección, incluido uno para estándar. Proporcioné ejemplos de cada uno y presenté el hardware de una manera que puede duplicar en su propio sistema Linux.

Índice

    Salida normal > operador

    El redirector de salida es probablemente el más reconocido de los operadores. Salida estándar (salida estándar) suele estar en la ventana de la terminal. Por ejemplo, cuando escribe el date comando, la hora y la fecha resultantes aparecen en la pantalla.

    [[email protected] ~]$ date
    Tue Dec 29 04:07:37 PM MST 2020
    [[email protected] ~]$

    Sin embargo, es posible redirigir esta salida desde salida estándar a otra ubicación. En este caso, redirigiré los resultados a un archivo llamado specifications.txt. Confirmaré que funcionó usando el cat comando para mostrar el contenido del archivo.

    [[email protected] ~]$ date > specifications.txt
    [[email protected] ~]$ cat specifications.txt 
    Tue Dec 29 04:08:44 PM MST 2020
    [[email protected] ~]$ 

    El problema con el > redirector es que sobrescribe todos los datos existentes en el archivo. En este punto ahora tienes date información en el specifications.txt archivo, ¿verdad? si escribes hostname > specifications.txt, la salida se enviará al archivo de texto, pero sobrescribirá la información de fecha y hora existente de los pasos anteriores.

    [[email protected] ~]$ hostname > specifications.txt 
    [[email protected] ~]$ cat specifications.txt 
    localhost.localdomain
    [[email protected] ~]$ 

    Es fácil meterse en problemas con el > redirector sobrescribiendo accidentalmente la información existente.

    operador de suma de salida normal >>

    anexo >> El operador agrega la salida al contenido existente en lugar de sobrescribirlo. Esto le permite redirigir la salida de múltiples comandos a un solo archivo. Por ejemplo, podría redirigir la salida de date utilizando el > operador luego redirigir hostname y uname -r a la specifications.txt archivo usando >> operador.

    [[email protected] ~]$ date > specifications.txt
    [[email protected] ~]$ hostname >> specifications.txt 
    [[email protected] ~]$ uname -r >> specifications.txt 
    [[email protected] ~]$ cat specifications.txt 
    Tue Dec 29 04:11:51 PM MST 2020
    localhost.localdomain
    5.9.16-200.fc33.x86_64
    [[email protected] ~]$ 

    Notar: El >> redirector incluso funciona en un archivo vacío. Esto significa que usted podría posiblemente

    ignorar lo regular > redirector para mitigar el potencial de sobrescritura de datos, y siempre confíe en el >> redirector en su lugar. No es un mal hábito tomar.

    Entrada normal

    El redirector de entrada extrae datos para un flujo de una fuente dada. Por lo general, los programas reciben su entrada desde el teclado. Sin embargo, los datos se pueden extraer de otra fuente, como un archivo.

    Es hora de construir un ejemplo usando el sort pedido. Primero, crea un archivo de texto llamado mylist.txt que contiene las siguientes líneas:

    cat
    dog
    horse
    cow

    Observe que los animales están listados en orden alfabético.

    ¿Qué pasaría si tuvieras que enumerarlos en orden? Puede extraer el contenido del archivo en el sort comando usando el < operador.

    [[email protected] ~]$ sort < mylist.txt 
    cat
    cow
    dog
    horse
    [[email protected] ~]$ 

    Incluso puede volverse un poco más sofisticado y redirigir los resultados ordenados a un nuevo archivo:

    [[email protected] ~]$ sort < mylist.txt > alphabetical-file.txt
    [[email protected] ~]$ cat alphabetical-file.txt 
    cat
    cow
    dog
    horse
    [[email protected] ~]$ 

    Error normal 2> operador

    el salida estándar muestra los resultados esperados. Si aparecen errores, se manejan de manera diferente. Los errores se etiquetan como descriptor de archivo 2 (la salida estándar es el descriptor de archivo 1). Cuando un programa o script no genera los resultados esperados, devuelve un error. El error generalmente se envía al salida estándar, pero se puede redirigir a otro lugar. el estándar el operador es 2> (para el descriptor de archivo 2).

    Aquí hay un ejemplo simple, usando el error de ortografía ping pedido:

    [[email protected] ~]$ png
    bash: png: command not found...
    [[email protected] ~]$

    Aquí está el mismo comando mal escrito con la salida de error redirigida a /dev/null:

    [[email protected] ~]$ png 2> /dev/null
    [[email protected] ~]$ 

    El mensaje de error resultante se redirige a /dev/null en vez de salida estándar, para que no se muestre ningún resultado o mensaje de error en la pantalla.

    Notar: /dev/null, o the, se utiliza como basurero para la línea de comandos. Las salidas no deseadas se pueden redirigir a esta ubicación solo para deshacerse de ellas. Por ejemplo, tal vez esté escribiendo un script y desee probar algunas de sus funciones, pero sabe que generará errores que no le interesan en esta etapa de desarrollo. Puede ejecutar el script y decirle que redirija los errores a /dev/null por conveniencia.

    Pipa | operador

    Ken Hess ya tiene una artículo sólido sobre el uso de la manguera | operador, así que solo voy a mostrar una demostración muy rápida aquí.

    La tubería toma la salida del primer comando y la convierte en la entrada del segundo comando. Es posible que desee ver una lista de todos los directorios y archivos en el /etc directorio telefónico. Sabe que la lista será larga y la mayoría de los resultados se desplazarán por la parte superior de la pantalla. el less El comando dividirá la salida en páginas y luego podrá desplazar las páginas hacia arriba o hacia abajo para ver los resultados. La sintaxis es emitir el ls Comando para listar el contenido de /etc, luego use la tubería para enviar este listado a less para que se pueda dividir en páginas.

    [[email protected] ~]$ ls /etc | less

    El artículo de Ken tiene muchos más ejemplos excelentes. Personalmente, me encuentro usando | less y | grep casi siempre.

    Conclusión

    Los operadores de redirección son útiles y espero que este breve resumen le haya brindado algunos consejos para manejar la entrada y la salida. La clave es recordar que el > el operador sobrescribirá los datos existentes.

    Artículos de interés

    Subir