Exercicis resolts del shell de Linux
Arxius
Visualitzar els arxius i permisos del directori actiu:
$ ls -l
Visualitzar els arxius del directori pare del que estem actualment:
$ ls ../
Si execute ls sense arguments, de quin directori fa el llistat?:
Del directori actiu de la terminal, el que estem en aquest moment.
Mostrar el directori actual:
$ pwd
$ echo $PWD
Crear dos directoris, un dins de l'altre:
$ mkdir -p dir1/dir2
Llistar els executables del sistema:
$ ls /bin/ /sbin/ /usr/bin/ /usr/sbin/
$ ls ${PATH//:/ }
En el segon cas, utilitzem la variable PATH, que conté les rutes dels programes i una sustitució de caracters en la variable.
Llistar totes les particions de discs SATA:
$ ls /dev/sd*
$ sudo fdisk -l
Fer que un arxiu tinga com a propietari i grup l'usuari i el grup root:
$ chown root:root arxiu.txt
Crear un enllaç de l'arxiu /var/log/syslog al meu home:
$ ln -s /var/log/syslog ~/
Hem creat un enllaç simbòlic amb -s.
Averiguar la quantitat de disc utilitzada:
$ df -h
Averiguar la quantitat de disc utilitzada en total pel directori home:
$ sudo du -sh /home
Donar permís d'execució per a l'usuari a un script:
$ chmod u+x script.sh
$ chmod 744 script.sh
Moure tots els fitxers que tinguen extensió txt del directori /home/ubuntu a directori personal:
$ mv /home/ubuntu/*.txt ~/
Trobar tots els arixus en el teu directori personal majors que 500MB:
$ find -size +500M
Trobar tots els arixus modificats en els últims dos dies en /etc:
$ sudo find /etc -mtime -1 -ls
Mostrar un llistat de tots els directoris (no arxius) que té el directori /tmp:
$ ls -ad **/
El ** és una utilitat de bash per a recorrer recursivament els subdirectoris.
Mostrar un llistat de tots els arixus del sistema amb extensió .jpg:
$ sudo find / -name '.*\.jpg'
Ho fem en sudo per poder entrar en quasi tots els directoris.
Mostrar un llistat de tots els arxius que, efectivament, siguen imatges jpg:
$ find / -type f -exec file --mime-type {} \; | grep 'image/jpeg'
A tots els arxius del sistema els executa un file --mime-type per veure el seu tipus i filtra els que són jpeg
Usuaris
Iniciar sessió en un altre usuari en la meua terminal:
$ su usuari
Saber quin usuari estem utilitzant:
$ whoami
Detectar usuaris connectats al sistema:
$ who
Mostrar el grups al que pertany l'usuari lliurex:
$ id lliurex
Crear l'usuari platon que pertany al grup idealistes, amb directori personal i bash en un comandament:
$ useradd -m -G idealistes -s /bin/bash platon
Mostrar tots els grups del sistema en orden alfabètic:
$ cat /etc/group | cut -d":" -f1 | sort
Processos i programes
Llistar els processos en execució:
$ ps -e
$ ps aux
Mostrar l'ús de memòria:
$ free
Hi ha moltes ferramentes que donen informació de l'ús de la memòria. Free és la més coneguda i concreta, però en top, htop i altres també trobem aquesta informació.
Reiniciar el sistema:
$ sudo reboot
Hi ha moltes ferramentes que donen informació de l'ús de la memòria. Free és la més coneguda i concreta, però en top, htop i altres també trobem aquesta informació.
Matar un procés:
$ ps -e # Per averiguar el PID
$ kill <PID>
$ kill -9 <PID> # Forçar la mort
Executar en segón planol un procés:
$ htop &
Tornar del segón planol a la terminal un procés:
$ fg
Buscar la ubicació d'un programa:
$ whereis nano
Mostrar la data en format DD/MM/AAAA HH:MM:
$ date +"%d/%m/%Y %H:%M"
Consultar l'historial de comandaments:
$ history
Mostrar el PATH dels executables de Libreoffice:
$ whereis libreoffice
Crear un fitxer amb permisos de lectura i escriptura per al usuari, de lectura per al grup i res per als altres que continga tots els alies del sistema:
$ (umask 026; alias > alias.txt)
Anem a analitzar aquest comandament. Primer configurem el umask per a que mai tinga altres permisos el fitxer. Després s'executa el comandament alias que redirecciona l'eixida estàndar a alias.txt. Però tot això es fa dins de () per a fer-lo en un bash diferent i no conservar els umask.
Xarxa
Assignar una IP a una targeta de xarxa anomenada eth0:
$ sudo ifconfig eth0 192.168.0.2/24
$ sudo ip addr add 192.168.0.2/24 dev eth0
El comandament recomanable és el de ip, ja que forma part d'un paquet nou de ferramentes per substituir el ifconfig, considerat obsolet.
Reiniciar una targeta de xarxa eth0:
$ sudo ifdown eth0
$ sudo ifup eth0
$ /etc/init.d/networking restart # En debian no funciona correctament