Ejercicios Resueltos de Comandos Linux
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 8,18 KB
1) Escribir el comando Linux que permita listar todos los archivos del directorio actual que tengan permiso de ejecución habilitado para el dueño y el grupo.
Respuesta:
Una forma de hacerlo es usando ls
y filtrando con grep
por los permisos:
ls -l | grep '^...x...x'
Otra forma más precisa, usando find
:
find . -maxdepth 1 -type f -perm /u+x,g+x
2) 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 10MB.
Respuesta:
Utilizando find
con la opción -size
y la acción -exec rm {} \;
:
find . -name "*.avi" -size +10M -exec rm {} \;
Nota: +10M
especifica archivos de más de 10 Megabytes. La opción -exec rm {} \;
ejecuta rm
para cada archivo encontrado.
3) 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:
Combinando ls
, grep
y redirección:
ls /root/examen | grep -i '^[hH]..s$' > /root/listado 2>/dev/null
ls /root/examen
: Lista el contenido del directorio.|
: Envía la salida dels
a la entrada degrep
.grep -i '^[hH]..s$'
: Filtra las líneas (nombres de archivo) que cumplen el patrón:-i
: Ignora mayúsculas/minúsculas para la 'h'.^
: Inicio de la línea.[hH]
: La letra 'h' o 'H'...
: Exactamente dos caracteres cualesquiera.s
: La letra 's'.$
: Fin de la línea.- Este patrón asegura 5 caracteres en total (h/H + 2 cualesquiera + s).
> /root/listado
: Redirecciona la salida estándar (los nombres encontrados) al archivo/root/listado
.2>/dev/null
: Redirecciona la salida de error estándar (stderr) a/dev/null
, descartando los mensajes de error.
4) 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 listar solo los archivos que terminan en '1'.
Respuesta:
Definición del alias:
alias listar='clear; date +%H:%M; ls a*; ls *1'
alias listar='...'
: Define un alias llamadolistar
. Las comillas simples son necesarias porque la definición contiene espacios y puntos y coma.clear
: Limpia la pantalla.;
: Separa comandos para ejecutarlos secuencialmente.date +%H:%M
: Muestra la hora actual en formato HH:MM.ls a*
: Lista archivos en el directorio actual cuyos nombres empiezan con 'a'.ls *1
: Lista archivos en el directorio actual cuyos nombres terminan en '1'.
5) Explicar brevemente cómo podría interpretarse el siguiente comando Linux: foo < archivo > archivo2
Respuesta:
Este comando ejecuta el programa o script llamado foo
. La entrada estándar (stdin) de foo
es redirigida para leer desde el archivo llamado archivo
. La salida estándar (stdout) de foo
es redirigida para escribir en el archivo llamado archivo2
. Si archivo2
ya existe, su contenido será sobrescrito; si no existe, será creado.
En resumen, foo
procesa el contenido de archivo
y guarda el resultado en archivo2
.
6) Dado el siguiente contenido de la variable de entorno 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?
Respuesta:
Al ejecutar un comando sin especificar su ruta completa, el shell busca un ejecutable con ese nombre en los directorios listados en la variable de entorno PATH
, en el orden en que aparecen. En este caso, la variable PATH
es /usr/local/bin:..:/bin:/usr/bin
.
El directorio actual (.
) no está incluido en esta variable PATH
. Por lo tanto, el shell no buscará el comando lista
en el directorio actual. Buscará primero en /usr/local/bin
, luego en ..
(el directorio padre), luego en /bin
, y finalmente en /usr/bin
.
El primer ejecutable llamado lista
que encuentre en esta secuencia será el que se ejecute. Dado que hay un lista
en /usr/bin
y /usr/bin
está en el PATH
, y asumiendo que no hay otro lista
en /usr/local/bin
, ..
, o /bin
que aparezca antes, el comando ejecutado será el de /usr/bin
.
Para ejecutar el comando lista
del directorio actual cuando .
no está en el PATH
, se debería especificar la ruta explícitamente, por ejemplo: ./lista
.
7) Describir brevemente lo que permite realizar el siguiente comando Linux: find . -size 0 -type f -name '*[1-2,5]?'
Respuesta:
Este comando utiliza la utilidad find
para buscar archivos y directorios. Desglosando las opciones:
find .
: Inicia la búsqueda en el directorio actual (.
) y sus subdirectorios.-size 0
: Filtra por archivos que tienen un tamaño de 0 bytes (archivos vacíos).-type f
: Filtra para incluir solo archivos regulares (excluye directorios, enlaces, etc.).-name '*[1-2,5]?'
: Filtra por nombres de archivo que coinciden con el patrón'*[1-2,5]?'
. Este patrón significa:*
: Cero o más caracteres cualesquiera al principio.[1-2,5]
: Un solo carácter que sea '1', '2', ',', o '5'.?
: Un solo carácter cualquiera después del anterior.
En resumen, el comando busca archivos regulares vacíos en el directorio actual y sus subdirectorios, cuyos nombres cumplen el patrón especificado.
8) 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 el archivo original (el destino del enlace simbólico), arch1
, es eliminado, el enlace simbólico liga
se convierte en un "enlace roto" o "enlace colgante" (dangling link). El archivo liga
en sí mismo no se elimina automáticamente; sigue existiendo en el sistema de archivos como un archivo de tipo enlace simbólico.
Sin embargo, cualquier intento de acceder al contenido o ejecutar el enlace liga
fallará, ya que el sistema operativo intentará seguir el enlace a su destino original (arch1
) y no lo encontrará. El resultado será un error, típicamente "No such file or directory" (No existe el archivo o directorio).
El enlace liga
seguirá existiendo hasta que sea eliminado explícitamente (por ejemplo, con rm liga
).