- STDIN (0) - Entrada estándar
- STDOUT (1) - Salida estándar
- STDERR (2) - Error estándar
Cuando vamos a trabajar con trucos de "tubería", "tubería" tomará el STDOUT de un comando y lo pasará al STDIN del siguiente comando.
Veamos algunas de las formas más comunes en las que puede incorporar el comando "pipe" en su uso diario.
Comando de tubería
Uso básico
Es mejor desarrollar el método de trabajo de "tubería" con un ejemplo en vivo, ¿verdad?? Empecemos. El siguiente comando le dirá a "pacman", el administrador de paquetes predeterminado para Arch y todas las distribuciones basadas en Arch, que imprima todos los paquetes instalados en el sistema.
pacman -Qqe
Es una lista muy LARGA de paquetes. ¿Qué tal si recoges solo algunos componentes?? Podríamos usar "grep". Pero cómo? Una forma sería volcar la salida a un archivo temporal, "grep" la salida deseada y eliminar el archivo. Esta serie de tareas, por sí sola, se puede convertir en un script. Pero solo escribimos para cosas muy grandes. Para esta tarea, recurramos al poder de la "tubería"!
pacman -Qqe | grep
Impresionante, ¿no?? El "|" signo es la llamada al comando "tubería". Toma el STDOUT de la sección izquierda y lo introduce en el STDIN de la sección derecha.
En el ejemplo mencionado anteriormente, el comando "pipe" en realidad pasó la salida al final de la parte "grep". Así es como se desarrolla.
pacman -Qqe> ~ / Desktop / paquete_pacman.TXTgrep python ~ / Desktop / paquete_pacman.TXT
Tubería múltiple
Básicamente, no hay nada especial con el uso avanzado del comando "pipe". Depende completamente de usted cómo usarlo.
Por ejemplo, comencemos apilando múltiples tuberías.
pacman -Qqe | grep p | grep t | grep py
La salida del comando pacman se filtra cada vez más por "grep" a través de una serie de tuberías.
A veces, cuando trabajamos con el contenido de un archivo, puede ser muy, muy grande. Encontrar el lugar correcto de nuestra entrada deseada puede ser difícil. Busquemos todas las entradas que incluyan los dígitos 1 y 2.
demostración de gato.txt | grep -n 1 | grep -n 2
Manipular lista de archivos y directorios
Qué hacer cuando se trata de un directorio con TONELADAS de archivos en él? Es bastante molesto desplazarse por toda la lista. Claro, ¿por qué no hacerlo más llevadero con tubería?? En este ejemplo, veamos la lista de todos los archivos en la carpeta "/ usr / bin".
ls -l
Aquí, "ls" imprime todos los archivos y su información. Luego, "tubería" lo pasa a "más" para trabajar con eso. Si no lo sabía, "más" es una herramienta que convierte los textos en una vista de pantalla a la vez. Sin embargo, es una herramienta antigua y según la documentación oficial, "menos" es más recomendable.
ls -l / usr / bin | menos
Clasificación de salida
Hay una herramienta incorporada "ordenar" que tomará la entrada de texto y los clasificará. Esta herramienta es una verdadera joya si estás trabajando con algo realmente complicado. Por ejemplo, tengo este archivo lleno de cadenas aleatorias.
demostración de gato.TXT
Solo tienes que canalizarlo para "ordenar".
demostración de gato.txt | clasificar
Eso es mejor!
Imprimir coincidencias de un patrón en particular
ls -l | encontrar ./ -type f -name "*.txt "-exec grep 00110011 \;
Este es un comando bastante retorcido, ¿verdad?? Al principio, "ls" genera la lista de todos los archivos en el directorio. La herramienta "buscar" toma el resultado, busca ".txt "y convoca a" grep "para buscar" 00110011 ". Este comando verificará cada archivo de texto en el directorio con la extensión TXT y buscará las coincidencias.
Imprimir el contenido del archivo de un rango particular
Cuando trabaja con un archivo grande, es común tener la necesidad de verificar el contenido de un cierto rango. Podemos hacer eso con una combinación inteligente de "gato", "cabeza", "cola" y, por supuesto, "tubería". La herramienta "cabeza" genera la primera parte de un contenido y "cola" genera la última parte.
gatogato
Valores únicos
Cuando se trabaja con salidas duplicadas, puede resultar bastante molesto. A veces, la entrada duplicada puede causar problemas graves. En este ejemplo, vamos a lanzar "uniq" en una secuencia de texto y guardarlo en un archivo separado.
Por ejemplo, aquí hay un archivo de texto que contiene una gran lista de números de 2 dígitos. Definitivamente hay contenido duplicado aquí, ¿verdad??
gato duplicado.txt | clasificar
Ahora, realicemos el proceso de filtrado.
gato duplicado.txt | ordenar | uniq> único.TXT
Mira la salida.
murciélago único.TXT
Se ve mejor!
Tubos de error
Este es un método de tubería interesante. Este método se utiliza para redirigir STDERR a STDOUT y continuar con la tubería. Esto se indica con el símbolo "| &" (sin las comillas). Por ejemplo, creemos un error y enviemos la salida a alguna otra herramienta. En este ejemplo, escribí un comando aleatorio y pasé el error a "grep".
adsfds | & grep n
Pensamientos finales
Si bien la "tubería" en sí es bastante simplista por naturaleza, la forma en que funciona ofrece una forma muy versátil de utilizar el método de infinitas formas. Si te gustan las secuencias de comandos Bash, entonces es mucho más útil. A veces, puedes hacer cosas locas directamente! Obtenga más información sobre las secuencias de comandos de Bash.