Una canalización es una forma de redirección (transferencia de salida estándar a algún otro destino) que se utiliza en Linux y otros sistemas operativos similares a Unix para enviar la salida de un comando/programa/proceso a otro comando/programa/proceso para su posterior procesamiento. . Los sistemas Unix/Linux permiten que la salida estándar de un comando se conecte a la entrada estándar de otro comando. Puede hacer que lo haga usando el carácter de canalización ‘|’ .
Pipe se usa para combinar dos o más comandos, y en esto, la salida de un comando actúa como entrada para otro comando, y la salida de este comando puede actuar como entrada para el siguiente comando y así sucesivamente. También se puede visualizar como una conexión temporal entre dos o más comandos/programas/procesos. Los programas de línea de comandos que realizan el procesamiento posterior se denominan filtros.
Esta conexión directa entre comandos/programas/procesos les permite operar simultáneamente y permite que los datos se transfieran entre ellos continuamente en lugar de tener que pasarlos a través de archivos de texto temporales oa través de la pantalla de visualización.
Los conductos son unidireccionales , es decir, los datos fluyen de izquierda a derecha a través del conducto.
Sintaxis:
command_1 | command_2 | command_3 | .... | command_N
Ejemplo:
1. Enumerar todos los archivos y directorios y darlos como entrada para más comandos.
$ls -l | more
Producción :
El comando more toma la salida de $ls -l como su entrada. El efecto neto de este comando es que la salida de ls -l se muestra una pantalla a la vez. La tubería actúa como un contenedor que toma la salida de ls -l y se la da a more como entrada. Este comando no usa un disco para conectar la salida estándar de ls -l a la entrada estándar de more porque la tubería está implementada en la memoria principal.
En términos de operadores de redirección de E/S, el comando anterior es equivalente a la siguiente secuencia de comandos.
$ls -l -> temp more -> temp (or more temp) [contents of temp] rm temp
Producción :
La salida de los dos comandos anteriores es la misma.
2. Use el comando sort y uniq para ordenar un archivo e imprimir valores únicos.
$sort record.txt | uniq
Esto ordenará el archivo dado e imprimirá solo los valores únicos.
Producción :
3. Use cabeza y cola para imprimir líneas en un rango particular en un archivo.
$cat sample2.txt | head -7 | tail -5
Este comando selecciona las primeras 7 líneas a través del comando (head -7) y eso se ingresará en el comando (tail -5) que finalmente imprimirá las últimas 5 líneas de esas 7 líneas.
Producción :
4. Use ls y find para enumerar e imprimir todas las líneas que coincidan con un patrón particular en los archivos coincidentes.
$ls -l | find ./ -type f -name "*.txt" -exec grep "program" {} \;
Este comando selecciona archivos con extensión .txt en el directorio dado y busca un patrón como «programa» en el ejemplo anterior e imprime aquellos que tienen un programa en ellos.
Producción :
5. Use los comandos cat, grep, tee y wc para leer la entrada particular del usuario y almacenarla en un archivo e imprimir el recuento de líneas.
$cat result.txt | grep "Rajat Dua" | tee file2.txt | wc -l
Este comando selecciona Rajat Dua y los almacena en file2.txt e imprime el número total de líneas que coinciden con Rajat Dua
Output:
?list=PLqM7alHXFySFc4KtwEZTANgmyJm3NqS_L
Publicación traducida automáticamente
Artículo escrito por rishabh1322 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA