Comandos esenciales de Linux: Ejercicios resueltos y explicaciones
1. Listar archivos con permisos de ejecución
Escribir el comando Linux que permita listar todos los archivos del directorio actual que tengan permiso de ejecución habilitados para el dueño y el grupo.
Respuesta:
ls -l | grep "^-.{2}x.{2}x"
2. Encontrar y borrar archivos
Escribir el comando Linux que permita encontrar y borrar uno a uno todos los archivos .avi en el directorio actual y que pesen más de 10M.
Respuesta:
find . -size +10000k -name "*.avi" -exec rm {} \;
3. Listar archivos con nombres específicos y redireccionar la salida
Utilizando piping, escribir el comando Linux que permita listar del directorio /root/examen todos los archivos cuyos nombres tengan 5 caracteres, comiencen con la letra h (minúscula o mayúscula), y que terminen con la letra s (minúscula). Guardar el resultado en un archivo llamado listado en la raíz de la cuenta y desestimar los mensajes de errores que pudieran producirse.
Respuesta:
ls /root/examen | grep "^[hH]...s$" > /listado 2> /dev/null
Otra opción válida sería:
ls /root/examen/[hH]???s > /listado 2> /dev/null
4. Ordenar un archivo de forma inversa
Suponga que se tiene un archivo llamado empleados.dat que tiene registros (o líneas) de 27 caracteres de largo, y se encuentra ubicado en el directorio /root. Escribir el comando Linux que permita ordenar el archivo empleados.dat en forma inversa y almacenar este resultado en el archivo emp.dat del directorio actual.
Respuesta:
sort -r /root/empleados.dat > emp.dat
Otra opción válida sería:
sort -r /root/empleados.dat > ./emp.dat
5. Crear un alias
Especificar el comando Linux que permita crear el alias listar que permita limpiar la pantalla, poner la hora del día en formato HH:MM, y listar solo los archivos del directorio actual cuyos nombres empiezan con a y terminan en 1.
Respuesta:
alias listar='clear; date +%H:%M; ls a*1'
6. Redirección de entrada y salida
Explicar brevemente cómo podría interpretarse el siguiente comando Linux:
foo < archivo1 > archivo2
Respuesta:
El comando foo procesa el archivo archivo1 (lee los datos que hay en él y los procesa) y el resultado del procesamiento lo envía al archivo archivo2.
7. Mostrar líneas no vacías
Suponga que se tiene el archivo arch1.txt en el directorio /root. Escribir el comando Linux que permita mostrar todas las líneas del archivo arch1.txt que NO están vacías.
Respuesta:
grep -v "^$" /root/arch1.txt
8. Variable de entorno PATH
Dado el siguiente contenido de la variable de ambiente PATH:
/usr/local/bin:.:/bin:/usr/bin
Si tengo un comando llamado lista en el directorio actual y otro llamado de la misma forma en el directorio /usr/bin, ¿cuál sería el seleccionado al ejecutar lista simplemente en el prompt?. Justifique su respuesta.
Respuesta:
Se ejecutaría el comando lista del directorio actual (denotado por .), pues el directorio actual aparece antes que /usr/bin en la variable PATH.
9. Búsqueda de archivos con find
Describir brevemente lo que permite realizar el siguiente comando Linux:
find . -size 0 -type f -name "*[1-2,5]?"
Respuesta:
Busca (find) en el directorio actual (.) todos los archivos regulares (-type f), vacíos (-size 0) y cuyo nombre termine en 1, 2 o 5, seguido de cualquier carácter (-name "*[1-2,5]?").
10. Enlaces simbólicos
Suponga se ha creado el enlace simbólico llamado liga, el cual apunta al archivo arch1. Si se elimina el archivo arch1, explique breve y justificadamente lo que sucede.
Respuesta:
Si se elimina el archivo original arch1, el enlace simbólico liga se rompe. Esto significa que el enlace simbólico seguirá existiendo, pero ya no apuntará a ningún archivo. Al intentar acceder al contenido a través de liga, se obtendrá un error indicando que el archivo no existe.