You are on page 1of 14

100 EJERCICIOS COMANDOS

# 1. Listar todos los archivos del directorio bin.


ls /bin
# 2. Listar todos los archivos del directorio tmp.
ls /tmp
# 3. Listar todos los archivos del directorio etc que empiecen por t en orden inverso.
ls /etc/t* -r
b) ls r /etc | grep ^t
# 4. Listar todos los archivos del directorio dev que empiecen por tty y tengan 5 caracteres.
ls /dev/tty??
# 5. Listar todos los archivos del directorio dev que empiecen por tty y acaben en 1,2,3 4.
ls /dev/tty[1,2,3,4]
ls /dev/tty[1-4]
ls /dev/tty*[1-4]
# 6. Listar todos los archivos del directorio dev que empiecen por t y acaben en C1.
ls /dev/t*[C1]
ls /dev/t*C1
# 7. Listar todos los archivos, incluidos los ocultos, del directorio raz.
ls -la /
# 8. Listar todos los archivos del directorio etc que no empiecen por t.
ls -I t* /etc
b) ls --ignore=t* /etc
c) find /etc/ -maxdepth 1 -name '[!t]*'
# 9. Listar todos los archivos del directorio usr y sus subdirectorios.
ls -R /usr
# 10. Cambiarse al directorio tmp.

cd /tmp
# 11. Verificar que el directorio actual ha cambiado.
pwd
# 12. Mostrar el da y la hora actual.
date
# 13. Con un solo comando posicionarse en el directorio $HOME.
Si home -> cd /home Si Carpeta personal usuario -> cd
# 14. Verificar que se est en l.
pwd
# 15. Listar todos los ficheros del directorio HOME mostrando su nmero de inodo.
ls -i /home
b) ls -lai ~/
# 16. Borrar todos los archivos y directorios visibles de vuestro directorio PRUEBA.
rm -R PRUEBA
rm -rf PRUEBA
buena: rm r ./PRUEBA/[!.]*
# 17. Crear los directorios dir1, dir2 y dir3 en el directorio PRUEBA. Dentro de dir1 crear el
directorio dir11.
# Dentro del directorio dir3 crear el directorio dir31. Dentro del directorio dir31, crear los
directorios
# dir311 y dir312.
cd
mkdir dir1 & mkdir dir2 & mkdir dir3
mkdir dir1/dir11 & mkdir dir3/dir31
mkdir dir31/dir311 & mkdir dir31/dir312
b) ~/PRUEBA$ mkdir -p
{dir1,dir1/dir11,dir2,dir3,dir3/dir31,dir3/dir31/dir311,dir3/dir31/dir312}

# 18. Copiar el archivo /etc/motd a un archivo llamado mensaje de vuestro directorio


PRUEBA.
cp /etc/motd /home/usuario/PRUEBA/mensaje
b) cat /etc/motd > ~/PRUEBA/mensaje
# 19. Copiar mensaje en dir1, dir2 y dir3.
cp mensaje /home/usuario/PRUEBA/dir1 & cp mensaje /home/usuario/PRUEBA/dir2 & cp
mensaje /home/usuario/PRUEBA/dir3
b) ~/PRUEBA$ echo dir1 dir2 dir3 | xargs -n 1 cp ~/PRUEBA/mensaje

# 20. Comprobar el ejercicio anterior mediante un solo comando.


ls -R /PRUEBA
# 21. Copiar los archivos del directorio rc.d que se encuentra en /etc al directorio dir31.
cp /etc/rc[1-6].d /home/usuario/PRUEBA/dir31
b) cp -r /etc/rc0.d/* ~/PRUEBA/dir3/dir31 (mas exacta)

# 22. Copiar en el directorio dir311 los archivos de /bin que tengan una a como segunda
letra y su nombre tenga cuatro letras.
cp /bin/?[a]?? /home/usuario/PRUEBA/dir3/dir311
# 23. Copiar el directorio de otro usuario y sus subdirectorios debajo de dir11 (incluido el
propio directorio).
sudo cp /home/otro_usuario /home/usuario/PRUEBA/dir1/dir11
b) cp -R /home/otrouser /home/tutorialvirtual/PRUEBA/dir1/dir11
# 24. Mover el directorio dir31 y sus subdirectorios debajo de dir2.
mv /home/usuario/PRUEBA/dir3/dir31 /home/usuario/PRUEBA/dir2
b) mv r ~/PRUEBA/dir3/dir31 ~/PRUEBA/dir2/
# 25. Mostrar por pantalla los archivos ordinarios del directorio HOME y sus subdirectorios.
ls -R /home
# 26. Ocultar el archivo mensaje del directorio dir3.
mv /home/usuario/PRUEBA/dir3/mensaje /home/usuario/PRUEBA/dir3/.mensaje
# 27. Borrar los archivos y directorios de dir1, incluido el propio directorio.

rm -rf /home/usuario/PRUEBA/dir1
rm -R dir1
# 28. Copiar al directorio dir312 los ficheros del directorio /dev que empiecen por t, acaben
en una letra que vaya de la a a la b y tengan cinco letras en su nombre.
cp /dev/t???[a-b] /home/usuario/PRUEBA/dir3/dir312

# 29. Borrar los archivos de dir312 que no acaben en b y tengan una q como cuarta letra.
ls --ignore=???qb /home/usuario/PRUEBA/dir3/dir31/dir312 < rm -rf
/home/usuario/PRUEBA/dir3/dir31/dir312
rm dir2/dir31/dir312/???q*[a,c-z] or rm ./???q*[a,c-z] #(Si estuvieramos en el dir312)
b) rm ~/PRUEBA/dir3/dir31/dir312/???q*[ac-z0-9] (mas exacto) ?not b
#30. Mover el directorio dir312 debajo de dir
mv /home/usuario/PRUEBA/dir3/dir31/dir312 /home/usuario/PRUEBA/dir3/dir312
# 31. Crear un enlace simblico al directorio dir1 dentro del directorio dir3 llamado
enlacedir1.
ln -s /home/usuario/PRUEBA/dir1 /home/usuario/PRUEBA/dir3/enlacedir1
# 32. Posicionarse en dir3 y, empleando el enlace creado en el ejercicio anterior, crear el
directorio nuevo1 dentro de dir1.
cd dir3; mkdir enlacedir1/nuevo1 #(como habiamos borrado en el #27 el dir1), he tenido que
crearlo de nuevo, para que funcionara correctamente.

# 33. Utilizando el enlace creado copiar los archivos que empiecen por u del directorio /bin
en directorio nuevo1.
cp /bin/u* enlacedir1/nuevo1/
ls /bin/u* > cp /home/usuario/PRUEBA/dir3/enlacedir1
# 34. Crear dos enlaces duros del fichero fich1, llamarlo enlace, en los directorios dir1 y dir2.
touch /home/usuario/fich1
ln -d /home/usuario/fich1 /home/usuario/PRUEBA/dir1/enlace & ln -d /home/usuario/fich1
/home/usuario/PRUEBA/dir2/enlace
b) touch fich1; ln fich1 dir1/enlace; ln fich1 dir2/enlace
#35. Borrar el archivo fich1 y copiar enlace en dir3.
rm fich1; cp dir1/enlace dir3/

# 36. Crear un enlace simblico (llamado enlafich1) al fichero enlace de dir2 en dir1.
ln -s /home/usuario/PRUEBA/dir2/enlace /home/usuario/PRUEBA/dir1/enlacefich1
# 37. Posicionarse en dir1 y, mediante el enlace creado, copiar el archivo fichl dentro de
dir311.
cd /home/usuario/PRUEBA/dir1
cp enlacefich1 /home/usuario/PRUEBA/dir3/dir31/dir311
b) cp ../fich1 enlafich1/dir31/dir311
#38. Seguir en dir1 y, mediante el enlace creado, sacar por pantalla las lneas que tiene el
archivo fich1.
cd /home/usuario/PRUEBA/dir1
cat enlacefich1
# 39. Borrar el fichero fich1 de dir2
rm enlafich1/dir31/dir311/fich1

#40. Borrar todos los archivos y directorios creados durante los ejercicios.
rm -rf /home/usuario/PRUEBA/
b) rm -R PRUEBA
#41. Crear el directorio dir2 y dir3 en el directorio PRUEBA Cules son los actuales
permisos del directorio dir2?
mkdir /home/usuario/PRUEBA/dir2 & mkdir /home/usuario/PRUEBA/dir3
Permisos: drwxrwxr-x 2 inigo inigo 4096 abr 6 18:18 dir2
# 42. Utilizando la notacin simblica, eliminar todos los permisos de escritura (propietario,
grupo, otros) del directorio dir2.
chmod u-w,g-w,a-w /home/usuario/PRUEBA/dir2
b) chmod ugo-w dir2
c) chmod a-w
# 43. Utilizando la notacin octal, eliminar el permiso de lectura del directorio dir2, al resto
de los usuarios.
chmod 111 /home/usuario/PRUEBA/dir2

b) chmod +005 dir2


c) chmod 554 dir2
# 44. Cules son ahora los permisos asociados a dir2?
d--x--x--x 2 inigo inigo 4096 abr 6 18:18 dir2
# 45. Crear bajo dir2, un directorio llamado dir2l.
mkdir /home/usuario/PRUEBA/dir2/dir2l
no se puede hacer!
# 46. Concederse a s mismo permiso de escritura en el directorio dir2 e intentar de nuevo el
paso anterior.
chmod 771 /home/usuario/PRUEBA/dir2
mkdir /home/usuario/PRUEBA/dir2/dir2l
b) chmod u+w dir2; mkdir dir2/dir2l d-w----r-x

# 47. Cules son los valores por omisin asignados a los archivos?
umask
para dir 777 - umask
para archivos 666 -umask
sticky bit y primer bit de umask

0022?

drwxrwxr-x 2 inigo inigo 4096 abr 6 19:32 dir2l


# 48. Cambiar el directorio actual al directorio dir3. Imprimir su trayectoria completa para
verificar el cambio.
cd ../dir3
pwd
# 49. Cules son los permisos asignados en su momento a este directorio?
drwxrwxr-x 2 inigo inigo 4096 abr 6 18:18 dir3
# 50. Establecer mediante el comando umask (buscar este comando) los siguientes valores
por omisin: rwxr--r-- para los directorios y rw-r--r-- para los archivos ordinarios.
umask 033 --> para directorios y para archivos

# 51. Crear cuatro nuevos directorios llamados dira, dirb, dirc, y dird bajo el directorio actual.
pwd --> nos encontramos /home/usuario/PRUEBA/dir3
mkdir dira & mkdir dirb & mkdir dirc
b) mkdir {dira,dirb,dirc,dird}
# 52. Comprobar los permisos de acceso de los directorios recin creados para comprobar
el funcionamiento del comando umask.
ls -la
drwxr--r-- 2 inigo inigo 4096 abr 6 19:54 dira
drwxr--r-- 2 inigo inigo 4096 abr 6 19:54 dirb
drwxr--r-- 2 inigo inigo 4096 abr 6 19:54 dirc
# 53. Crear el fichero uno. Quitarle todos los permisos de lectura. Comprobarlo. Intentar
borrar dicho fichero.
touch uno
chmod u-r,g-r,a-r uno
ls -l uno
rm uno --> no se puede
b)touch uno; chmod -rwx uno; ls -l; rm uno; S SE PUEDE
# 54. Quitarle todos los permisos de paso al directorio dir2 y otorgarle todos los dems.
chmod 666 /home/usuario/PRUEBA/dir2
drw-rw-rw# 55. Crear en el directorio propio: El directorio carpeta1 con los tres permisos para el
propietario, dentro de l fich1 con lectura y escritura para todos y fich2 con lectura y
escritura para el propietario y solo lectura para el resto. El directorio carpeta2 con todos los
permisos para el propietario y lectura y ejecucin para los del mismo grupo. Dentro file1 con
lectura y escritura para el propietario y los del grupo y file2 con los mismos para el
propietario y solo lectura para el grupo.
cd --> localizarse en el directorio propio
mkdir carpeta1; chmod 777 carpeta1
cd carpeta1
touch fich1; chmod 666 fich1
touch fich2; chmod 644 fich2

cd .. --> localizarse en el directorio propio


mkdir carpeta2; chmod 750 carpeta2
touch file1; chmod 660 file2
touch file2; chmod 640 file2
b) mkdir carpeta1; chmod u+rwx; mkdir carpeta2; chmod u+rwx g+rx; touch
carpeta1/fich1; chmod +rw carpeta1/fich1; touch carpeta1/fich2; chmod u+rw o+wx;
touch carpeta2/file2; chmod u+rwx g+r;
# 56. Desde otro usuario probar todas las operaciones que se pueden hacer en los ficheros
y directorios creados.
t@t-VirtualBox:~/PRUEBA/propio/carpeta2$ su kk
Contrasea:
kk@t-VirtualBox:/home/t/PRUEBA/propio/carpeta2$ ls
ls: no se puede abrir el directorio .: Permiso denegado
kk@t-VirtualBox:/home/t/PRUEBA/propio/carpeta2$ cd ..
bash: cd: ..: Permiso denegado
kk@t-VirtualBox:/home/t/PRUEBA/propio/carpeta2$ cd /home/t/PRUEBA/
kk@t-VirtualBox:/home/t/PRUEBA$ ls
dir2 dir3 jj propio
kk@t-VirtualBox:/home/t/PRUEBA$ cd propio
bash: cd: propio: Permiso denegado
kk@t-VirtualBox:/home/t/PRUEBA$ cd dir2
bash: cd: dir2: Permiso denegado
kk@t-VirtualBox:/home/t/PRUEBA$ cd dir3
kk@t-VirtualBox:/home/t/PRUEBA/dir3$ ls
dira dirb dirc dird kk
kk@t-VirtualBox:/home/t/PRUEBA/dir3$ cd dira
bash: cd: dira: Permiso denegado
kk@t-VirtualBox:/home/t/PRUEBA/dir3$

# 57. Visualizar la trayectoria completa del directorio actual. Crear dos directorios llamados
correo y fuentes debajo del directorio actual.
pwd
b) ls -R;
mkdir correo; mkdir fuentes
# 58. Posicionarse en el directorio fuentes y crear los directorios dir1, dir2, dir3.
cd fuentes
mkdir dir1; mkdir dir2; mkdir dir3
# 59. Crear el directorio menus bajo correo sin moverse del directorio actual.

mkdir ../correo/menus
# 60. Posicionarse en el directorio HOME. Borrar los directorios que cuelgan de fuentes que
acaben en un nmero que no sea el 1.

cd home/
find PRUEBA/fuentes/ -name "*1" > rm -rf;
b) rm -d PRUEBA/fuentes/*[2-9,0]
C) rm -r ./PRUEBA/propio/carpeta2/fuentes/*[!1]
# 61. Ver si existe el archivo tty2 en el directorio dev. En caso de que exista, ver su fecha de
creacin o actualizacin.
find /dev -name "tty2" > ls -l
b) ls /dev/tty2 | ls --full-time /dev/tty2
C) ~$ ls -l /dev/tty2 | cut -c262 abr 25 22:56 /dev/tty2

# 62. Ver los permisos que tienen los archivos que empiecen por tt del directorio /dev.
find /dev -name "tty*" > ls -l
b) ls -l /dev/tt*
C) $ ls -l /dev/tt* | cut -c-11
# 63. Visualizar la lista de los archivos ordinarios que estn en el directorio /usr/bin.
ls /usr/bin
B) sudo find /usr/bin/ -maxdepth 1 -type f
# 64. Visualizar la lista de todos los directorios que cuelgan del raz.
ls /
b) ls -D / #(tambien muestra los links)
C) ls -RD / (no va bien)
vale find / -type d

# 65. Visualizar la lista de todos los ficheros que pertenezcan a root.


find / -user root
# 66. Visualizar la lista de todos los ficheros .h del directorio /usr/include.

find /usr/include -name "*.h"


B) ls /usr/include/*.h

# 67. Ejecutar todos los comandos que empiecen por ls del directorio /bin.
find /bin -user pp -exec {} \;
# 68. Visualizar de qu tipo son todos y cada uno de ficheros de todo el rbol del sistema
propiedad de un usuario conocido.
sudo find / -user juan -exec file {} \; 2>/dev/null
b) sudo find / -user juan | xargs file 2>/dev/null

# 69. Crear el directorio uno en el directorio HOME con permiso de escritura y paso para el
propietario, de lectura y paso para los usuarios de su mismo grupo y ningn permiso para el
resto de usuarios.
mkdir /home/uno
chmod 350 uno
b) chmod u+wx,g+rx,o+w
# 70. Crear el directorio uno1 dentro del directorio creado en el ejercicio anterior con todos
lo permisos para el usuario, ninguno para los usuarios del grupo y permiso de escritura para
el resto de usuarios.
mkdir uno/uno1
chmod 702 uno/uno1
b) chmod u+rwx,o+w
# 71. Copiar todos los ficheros propiedad de un usuario conocido que acaben en un nmero
en el directorio menus.
C) find / -user 't' -exec ls -l {} ./ \;

# 72. Visualiza con la orden who la relacin de usuarios conectados y sus terminales.
Mediante la orden cat, crea un pequeo mensaje desde tu consola y redirgelo a uno de los
terminales conectados..
touch mensaje
who > mensaje ; cat mensaje
B) ~$ who
t tty7 2014-04-25 22:56
t pts/1 2014-04-25 22:56 (:0)
$ cat kk > tty7

# 73. Crea un archivo de tamao 0


touch arch_tam0
# 74. Visualiza el archivo /etc/motd, que contiene el "mensaje del da".
cat /etc/motd
# 75. Utilizando de entrada la informacin de los usuarios conectados al sistema, guardar,
ordenadas por el campo hora, las lneas correspondientes al usuario que se desee en el
archivo persona.
who | grep $USER | sort -k 4
# 76. Crear el directorio carpeta debajo del directorio PRUEBA. Quitarle todos los permisos
de lectura. A continuacin, buscar todos los directorios que cuelguen del directorio propio y
guardarlos en el archivo direc.
mkdir PRUEBA/carpeta
chmod ugo-r PRUEBA/carpeta
find $HOME -type d > direc
est carpeta?
s
ahora podemos entrar en carpeta
s
podemos hacer un ls o find de carpeta? NO
si le ponemos los permisos de lectura y le quitamos los de ejecucion al dir carpeta
chmod a+r,a-x PRUEBA/carpeta
podemos entrar en carpeta? NO
podemos hacer un ls o find dentro de carpeta? NO find S ls

# 77. Volver a realizar la segunda parte del ejercicio anterior, pero redireccionando los
errores al fichero malos. Comprobar la informacin del fichero malos.
find /home/usuario_actual/-name "*" >direc 2>malos
# 78. Aadir al fichero direc la lista de todos los ficheros ordinarios que cuelguen de /etc.
ls etc/ >> direc
B) sudo find /etc -maxdepth 1 -type f >> direc
# 79. Aadir al archivo nuevalista el/los nombre/s de el/los fichero/s del directorio PRUEBA
que contengan en su nombre la cadena "ai", aadiendo el posible error al fichero malos.
find /home/usuario_actual/PRUEBA -iname "*ai*" 1 > nuevalista 2 > malos
b) ls *ai* > nuevalista 2> malos

C) find ./ -name *ai* 2>/dev/null 1>nuevalista


# 80. Sacar por pantalla nicamente el tiempo (buscar comando time) que tarda en
ejecutarse el comando who.
time who -p
# 81. Sacar por pantalla un listado completo (buscar comando ps) de los procesos que est
realizando el usuario root.
ps -u root
# 82. Crear el archivo proceso con los procesos que no tienen ningn terminal asignado.
ps "t?" > proceso
b) ps -A | grep ? > proceso
ps -aux | awk {print $1, $7, $11} | grep ?
busca los procesos sin terminal, eligiendo solo tres acmpos awk, el cut solo permite un
caracter como delimitador
el awk es configurable, por defecto pone el tabulador, sino ofcione -F o FS=caracteres

# 83. Aadir al fichero anterior la fecha actual y la trayectoria completa del directorio actual.
date >> proceso; pwd >> proceso
# 84. Sacar por pantalla el listado de todos los usuarios conectados ordenados por nmero
de proceso asignado.
ps axu
b) who -all or who -u

# 85. Averiguar cul es la actividad actual del sistema. Para ello visualice un listado
completo del estado de todos los procesos que se estn ejecutando en el sistema.
ps -aux
b) ps -A # Si aadimos F nos muestra que archivo ejecuta ese proceso
# 86. Obtener un listado con los siguientes datos de los procesos de su shell actual.
ps -A | grep tty1
b) ps -t o ps -A | grep tty1 #(O el numero de terminal que estes usando)
# 87. Mostrar cuantos usuarios tiene registrados el sistema (el registro de usuarios est en
el archivo /etc/passwd)

cat etc/passwd | wc -l
# 88. Mostrar cuntos usuarios tiene registrados el sistema y que utilizan el intrprete bash
(debe aparecer al final de la lnea /bin/bash o similar)
cat /etc/passwd | grep "bin/bash" | wc -l
# 89. Mostrar cuantos usuarios hay conectados
who -q
B) who | wc -l
# 90. Mostrar las lneas, de un archivo de texto, empiecen por L (mayscula o minscula)
man ls > arch_texto
cat arch_texto | grep ^[Ll]
b) grep -i '^l' texto (Siendo texto un archivo editado que contenga lineas que empiecen por l
o L)
C)
# 91. Contar las lneas, del ejemplo anterior
cat arch_texto | grep ^[Ll] | wc -l
# 92. Extraer los nombres de usuario (primer campo) del sistema
cat etc/passwd | cut -d ':' -f 1
B) who | cut -d ' ' -f1
# 93. Extraer los nombres de usuario y el shell que utilizan (ltimo campo)
$ cat /etc/passwd | cut -d':' -f1,7
C) gawk -F: '{print $1, $7}' /etc/passwd
b) cat /etc/passwd | awk '{print $1, $7}' FS=":"

# 94. Cambiar la fecha de creacin de un archivo ya previamente creado


touch -t 451212221050.45 malo
#formato mmddhhmm (tambien acepta yyyymmddhhmm) Pero si solo quieres modificar la
fecha no te deja debes darle tambien una hora, si es en el mismo ao en el que
#estas, usamos el 1 formato.
touch -t 01121200 texto (ene 12 12:00 texto) #o si queremos darle otro ao, solo aadimos
el ao antes del mes. (Es interesante percatarse que apesar de
#que esto funciona, si hacemos un ls -lh en el campo de la hora nos aparecera el ao, pero
podemos comprobar que lo hace correctamente con un ls -lh -full-time,

#tambien nos ha aadido el tiempo.


# 95. Calcular la firma md5 de un archivo
md5sum archivo
# 96. Modificar la firma md5 y detectar que se ha cambiado (revisin de firma)
md5sum proceso > proceso.MD5
echo "hola mundo" >> proceso
md5sum -c proceso.MD5
md5sum proceso
# 97. Monitorear la ocupacin de las particiones en los discos
df -lh
# 98. Cual es el proceso que ms carga el procesador?
top
# 99. Est corriendo el proceso bash?
ps -aux | grep "bash"
# 100. Cuntos procesos que empiecen por k estn corriendo?
ps -aux | grep "k*"
b) ps -A | grep -c ' k' #(Con -c para contarlos, sin la -c para mostrarlos)
C) ps aux | awk '{ print $11 }' | grep ^k | wc -l