Sección 1: Uso de `grep`, `egrep` y `fgrep`
Ejercicio 1: Escriba a qué ficheros corresponderían las líneas que seleccionaría la última orden. Separe los nombres de los ficheros por comas (escriba «NADA» si la salida fuera vacía):
1) `$ ls -l`
- `-rw-r–r– 1 tiopepe users 0 dic 14 07:00 f1`
- `-rw-r–r-x 1 tiopepe users 0 dic 14 07:00 f2`
- `-r–r–r– 1 tiopepe users 0 dic 14 07:00 f3`
`$ ls -l | grep «r*w»`
Respuesta: f1, f2.
2) `$ ls -l`
- `-r–r–r– 1 tiopepe users 0 dic 14 07:00 f`
- `-rwxr–r– 1 tiopepe users 0 dic 14 07:00 f1`
- `-rw-r–r-x 1 tiopepe users 0 dic 14 07:00 f2`
`$ ls -l | egrep -w «pe(pe)+»`
Respuesta: NADA.
3) `$ ls -l`
- `-rw-r–r– 1 tiopepe users 0 dic 14 07:00 f1`
- `-rw-r–r-x 1 tiopepe users 0 dic 14 07:00 f2`
- `-r–r–r– 1 tiopepe users 0 dic 14 07:00 f3`
`$ ls -l | grep «rw+»`
Respuesta: NADA.
4) `$ ls -l`
- `-rwxr–r– 1 tiopepe users 0 dic 14 07:00 f1`
- `-rw-r–r-x 1 tiopepe users 0 dic 14 07:00 f2`
- `-r–r–r– 1 tiopepe users 0 dic 14 07:00 f3`
`$ ls -l | grep «rwx*»`
Respuesta: f1, f2.
5) `$ ls -l`
- `-rw-r–r– 1 tiopepe users 0 dic 14 07:00 f1`
- `-rw-r–r-x 1 tiopepe users 0 dic 14 07:00 f2`
- `-r–r–r– 1 tiopepe users 0 dic 14 07:00 f3`
`$ ls -l | grep «rw*»`
Respuesta: f1, f2, f3.
6) `$ ls -l`
- `-r–r–r– 1 tiopepe users 0 dic 14 07:00 f`
- `-rwxr–r– 1 tiopepe users 0 dic 14 07:00 f1`
- `-rw-r–r-x 1 tiopepe users 0 dic 14 07:00 f2`
`$ ls -l | grep -i «u*sEr»`
Respuesta: f, f1, f2.
Ejercicio 2: Escriba las líneas que seleccionaría `grep` separadas por comas (escriba «NADA» si la salida fuera vacía):
`$ cat ficherito`
`//casa//casamentera//casa tarradellas//cosa//`
`$ grep ‘c*sa’ ficherito`
Respuesta: casa, casamentera, casa tarradellas, cosa.
Ejercicio 3: Escriba las líneas que seleccionaría `egrep` separadas por comas (escriba «NADA» si la salida fuera vacía):
`$ cat ficherito`
`//casa//casamentera//casa tarradellas//cosa//`
`$ egrep «c|sasa» ficherito`
Respuesta: casa, casamentera, casa tarradellas, cosa.
Ejercicio 4: Escriba las líneas que seleccionaría `fgrep` separadas por comas (escriba «NADA» si la salida fuera vacía):
`$ cat ficherito`
`//casa//casamentera//casa tarradellas//cosa//`
`$ fgrep «c*sa» ficherito`
Respuesta: NADA.
Ejercicio 5: Escriba las líneas que seleccionaría `fgrep` separadas por comas (escriba «NADA» si la salida fuera vacía):
`$ cat ficherito`
`//casa//casamentera//casa tarradellas//cosa//`
`$ fgrep casa ficherito`
Respuesta: casa, casamentera, casa tarradellas.
Ejercicio 6: ¿Cuáles de los siguientes caracteres son caracteres especiales para las expresiones regulares extendidas?
1) `*`, `?`, `$`, `[`, `)`, `+`.
Respuesta: `*`, `?`, `$`, `[`, `)`, `+`.
2) `+`, `?`, `$`, `[`, `!`
Respuesta: `+`, `?`, `$`, `[`
Ejercicio 7: ¿Cuáles de los siguientes caracteres son caracteres especiales para las expresiones regulares básicas?
1) `*`, `.`, `$`, `!`
Respuesta: `*`, `.`, `$`
2) `*`, `?`, `$`, `[`
Respuesta: `*`, `$`, `[`
Sección 2: Redirecciones y tuberías
Ejercicio 8: ¿Cuántas líneas contendrá el fichero `result` tras la siguiente secuencia?:
`$ ls`
`$ echo «INICIO» > result`
`$ ls -l /etc/passwd 2>> result`
Respuesta: 1.
Ejercicio 9: ¿Cuántas líneas tendrá el fichero `f1` tras la secuencia de órdenes?:
`$ ls -l / | tee f1 | wc -l`
`//20//`
`$ cat f2`
`//CC-by//CC-by-sa//`
`$ cat f2 >> f1`
Respuesta: 22.
Ejercicio 10: ¿Cuál es el resultado de la última orden?:
`$ cat f1`
`//Richard//`
`$ cat f2`
`//Stallman//`
`$ { cat f2; cat f1; } | wc -l`
Respuesta: 3.
Ejercicio 11: ¿Cuál es el resultado de la última orden de la secuencia?:
`$ cat f`
`//CASA//KAS//ACASA//CSA//`
`$ cat f | tr -d A | uniq | wc -l`
Respuesta: 3.
Ejercicio 12: ¿Cuál es la salida de la siguiente orden?:
`$ ls -ld /tmp | colrm 11 | colrm 1 9`
Respuesta: t.
Ejercicio 13: ¿Cuál es la salida de la siguiente orden?:
`$ ls`
`$ echo «A ver» > f`
`$ chmod 753 f`
`$ ls -l f | colrm 11`
Respuesta: -rwxr-x-wx
Ejercicio 14: Suponga la secuencia de órdenes:
`$ cat f1`
`//Hola//`
`$ cat f2`
`//Adiós//`
`$ ordendesconocida`
`$ cat f1`
`//Hola//Adiós`
Respuesta: `cat f2 >> f1`
Ejercicio 15: ¿Cuál es la orden desconocida en esta secuencia de órdenes?:
`$ cat f1`
`//10//9//1//3//`
`$ ordendesconocida`
`$ cat f1`
`//1//3//9//10`
Respuesta: `sort -n f1 -o f1`.
Ejercicio 16: ¿Cuál es la orden desconocida de la siguiente secuencia?:
`$ echo «GPL» > fich`
`$ echo «CC» > fich`
`$ ordendesconocida`
`$ ls > fich`
`//bash: f: cannot overwrite existing file`
Respuesta: `set -o noclobber`.
Ejercicio 17: Suponga la siguiente secuencia de órdenes:
`$ cat fichero`
`//f1//`
`$ ls d1`
`//f2//`
`$ ordendesconocida`
`$ cat fichero`
`//f1//f2`
Respuesta: `ls d1 >> fichero`.
Ejercicio 18: ¿Daría error alguna de las órdenes de la siguiente secuencia?:
`$ ls`
`$ set +o noclobber`
`$ ls > fich`
`$ set -o noclobber`
`$ ls > fich`
Respuesta: SI.
Ejercicio 19: Obtenga un listado en el que únicamente aparezcan los nombres reales de los usuarios del sistema junto con su shell por defecto:
Respuesta: `cut -d: -f5,7 /etc/passwd`.
Ejercicio 20: Escriba la orden que muestre del directorio actual los ficheros (no directorios) en los que el dueño posee al menos los permisos de lectura y ejecución.
Respuesta: `ls -l | grep «^-r.x»`
Ejercicio 21: ¿Qué orden hay que dar para redirigir solo la salida de la orden `ls` a un fichero denominado `listado`?:
Respuesta: `ls > listado`
Sección 3: Comparación de ficheros
Ejercicio 22: Rellena la siguiente frase:
`$ cat f1`
`//MAN//INFO//MAN//HELP//APROPOS//`
`$ cat f1 | uniq > f2`
Respuesta: El número de líneas de `f1` es IGUAL que el de `f2`.
Ejercicio 23: Tras la siguiente serie de órdenes (…):
`$ cat /etc/passwd | sort > f1`
`$ cat /etc/passwd | sort -u > f2`
Respuesta: El número de líneas de `f1` es IGUAL que el de `f2`.
Ejercicio 24: Tras las siguientes órdenes:
`$ ls d1 2> f1`
`$ ls d2 2> f2`
`$ ls d3 2> f2`
Respuesta: El número de líneas de `f1` es DEPENDE que el de `f2`.