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 que puede incorporar el comando "tubería" en su uso diario.
Uso básico
Es mejor explicar el método de trabajo de "tubería" con un ejemplo en vivo, correcto? Empecemos. El siguiente comando le dirá a "Pacman", el administrador de paquetes predeterminado para Arch y todas las distribuciones basadas en Arch, para imprimir todos los paquetes instalados en el sistema.
pacman -qqe
Es una lista muy larga de paquetes. Cómo, de recoger solo unos pocos componentes? Podríamos usar "Grep". Pero cómo? Una forma sería arrojar 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 por cosas muy grandes. Para esta tarea, llamemos a la potencia de la "tubería"!
Pacman -qqe | grep
Impresionante, ¿no?? El "|" El signo es la llamada al comando "tubería". Agarra el stdout de la sección izquierda y la alimenta en el stdin de la sección derecha.
En el ejemplo mencionado anteriormente, el comando "tubería" realmente pasó la salida al final de la parte "grep". Así es como se desarrolla.
Pacman -qqe> ~/Desktop/Pacman_Package.TXT
Grep Python ~/Desktop/Pacman_Package.TXT
Tuberías múltiples
Básicamente, no hay nada especial con el uso avanzado del comando "tubería". Depende completamente de usted sobre cómo usarlo.
Por ejemplo, comencemos por apilar múltiples tuberías.
Pacman -qqe | Grep P | Grep | grep pyLa salida del comando de Pacman se filtra cada vez más por "Grep" a través de una serie de tuberías.
A veces, cuando estamos trabajando con el contenido de un archivo, puede ser muy, muy grande. Descubrir el lugar correcto de nuestra entrada deseada puede ser difícil. Busquemos todas las entradas que incluyan dígitos 1 y 2.
demostración de gato.txt | Grep -n 1 | Grep -n 2
Manipulación de la 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 soportable con tubería?? En este ejemplo, verifiquemos la lista de todos los archivos en la carpeta "/usr/bin".
LS -L| más
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 "Sort" que tomará la entrada de texto y las ordenará. Esta herramienta es una verdadera joya si estás trabajando con algo realmente desordenado. Por ejemplo, obtuve este archivo lleno de cadenas aleatorias.
demostración de gato.TXT
Simplemente entra en "ordenar".
demostración de gato.txt | clasificar
Eso es mejor!
Impresión de coincidencias de un patrón particular
ls -l | encontrar ./ -Type f -name "*.txt "-exec grep 00110011 \;
Este es un comando bastante retorcido, correcto? Al principio, "LS" genera la lista de todos los archivos en el directorio. La herramienta "Buscar" toma la salida, busca ".TXT "archivos y convocaciones" GREP "para buscar" 00110011 ". Este comando verificará cada archivo de texto en el directorio con la extensión TXT y buscará las coincidencias.
Imprimir contenido de archivo de una gama particular
Cuando trabaja con un archivo grande, es común tener la necesidad de verificar el contenido de un cierto rango. Podemos hacer exactamente eso con un combo inteligente de "gato", "cabeza", "cola" y, por supuesto, "pipa". La herramienta "Cabeza" genera la primera parte de un contenido y "cola" emite la última parte.
gato| Cabeza -6
gato| cola -6
Valores únicos
Cuando se trabaja con salidas duplicadas, puede ser bastante molesto. A veces, la entrada duplicada puede causar problemas graves. En este ejemplo, echemos "UNIQ" en un flujo de texto y guárdelo en un archivo separado.
Por ejemplo, aquí hay un archivo de texto que contiene una gran lista de números que tienen 2 dígitos de largo. Definitivamente hay contenidos duplicados aquí, correcto?
gato duplicado.txt | clasificar
Ahora, realicemos el proceso de filtrado.
gato duplicado.txt | ordenar | uniq> único.TXT
Consulte la salida.
bate único.TXT
Se ve mejor!
Tuberías de error
Este es un método de tubería interesante. Este método se utiliza para redirigir el stderr a stdout y continuar con la tubería. Esto se denota por el símbolo "| &" (sin las citas). Por ejemplo, creemos un error y enviemos la salida a alguna otra herramienta. En este ejemplo, acabo de escribir un comando aleatorio y pasé el error a "GREP".
adsfds | & Grep n
Pensamientos finales
Si bien la "tubería" en sí misma es bastante simplista, la forma en que funciona ofrece una forma muy versátil de utilizar el método de manera infinita. Si te gustan las secuencias de comandos bash, entonces es mucho más útil. A veces, puedes hacer locuras directamente! Obtenga más información sobre Bash Scripting.