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.
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.
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