trabjo de algo
Actividad práctica 3.1
GNU Avanzada
TRABAJANDO CON TUBERÍAS. REDIRECCIÓN DE LA ENTRADA, SALIDA Y ERRORES
Hasta ahora hemos visto en las prácticas anteriores cómo ejecutar comandos en Linux de forma secuencial (ejecutar un comando, esperar a que el mismo produzca su salida, ejecutar otro a continuación y asísucesivamente). En la práctica de hoy repasaremos la idea de redireccionamiento de la salida o de la entrada de un comando. Muchos de los comandos en Unix tienen un canal o flujo de entrada (stdin), a partir del cual leen la información que debe ser procesada.
Algunos comandos no requieren de una entrada explícita de información (por ejemplo, ls se ejecuta sin entrada adicional). Sin embargo, otroscomo por ejemplo “grep” (comando usado para búsqueda de expresiones regulares) requieren de una entrada estándar en donde buscar las expresiones regulares.
Puedes leer más en:
http://es.tldp.org/COMO-INSFLUG/COMOs/Bash-Prog-Intro-COMO/Bash-Prog-Intro-COMO-3.html
1-7
Por tanto, como has podido comprobar, el flujo de salida por defecto de este comando (y en general de loscomandos en Linux) es la propia shell.
En la misma terminal, ejecuta el comando “ls”. ¿Dónde aparece la salida producida por ese comando? Más adelante en la práctica veremos cómo modificar ese comportamiento (lo cierto es que ya lo hemos usado con anterioridad, como cuando hemos hecho
“history >> comandos” o “yes hola > /dev/null”).
2-7
6. Veamos ahora también una nueva forma de generar unfichero de texto siguiendo las mismas ideas. El comando “cat” se utiliza para concatenar uno o más ficheros (concatenar un único fichero es equivalente a crear un fichero igual a ese). Su sintaxis es “cat fichero1 fichero2 fichero3”. Por defecto, el resultado de concatenar los ficheros, se muestra en el mismo intérprete. Ejecuta el comando:
3-7
4-7
$grep “estudiante” usuarios_y_grupos
Por medio delo que se conoce como interconexiones o tuberías (del inglés pipe) podemos hacer que la salida de un comando se convierta directamente en la entrada de otro. El carácter que se utiliza para crear una tubería que redirija la salida de un comando a la entrada de otro es “|”.
18. Prueba la salida del siguiente comando:
$cat /etc/passwd /etc/group | grep “estudiante”
¿Qué resultado has obtenido?¿Cuál ha sido en este caso el flujo de entrada para el comando “grep”?
19. Por supuesto, varias tuberías pueden ser enlazadas de forma sucesiva.
Crea un comando que cumpla la siguiente función:
Concatenar los ficheros /etc/passwd y /etc/group (cat), filtrar todas las líneas que contengan la palabra estudiante (grep) y contarlas (wc).
20. Crea un nuevo comando que de nuevo concatene losficheros /etc/passwd y /etc/group, filtre todas las líneas que contengan la cadena “root” y las muestre ordenadas en orden inverso (sort).
21. Repite el comando del ejercicio anterior, pero redireccionando la salida además a un fichero de nombre “informacion_root”.
22. Crea un comando que, a partir del listado largo de los contenidos del directorio /usr/bin, muestre todas aquellas entradas quecontienen “mk”.
23. Crea un comando que, a partir del listado largo de los contenidos del directorio /sbin, muestre todas aquellas entradas que contienen “mk”.
24. Trata de crear un comando que, a partir del contenido de los directorios /sbin y /usr/bin (ls), recupere todas las líneas que contienen la cadena “mk”. ¿Has sido capaz?
Aparte de las tuberías, el intérprete de comandos nos ofrece otrosoperadores de control que nos permiten realizar ciertas operaciones adicionales de mayor complejidad. Los operadores de control más usados son:
“comando1; comando2”: permite ejecutar comandos de forma secuencial, primero comando1 y después comando2. Observa que esto no tiene nada que ver con las tuberías, que redireccionan la salida del primer comando para que sirvan como entrada del segundo....
Regístrate para leer el documento completo.