Bloc 0: Introducció al terminal: instal.lació programes, historial i ajuda.

Abans que res, hem d'obrir el terminal de Linux. La seva icona està representada per una pantalla negra en diverses distribucions (les basades en Debian o Ubuntu). També pots obrir-lo amb la combinació de tecles Ctrl + Alt + T

El programari de Linux es pot gestionar amb programes gràfics (pex. Centre Software Ubuntu), però el més habitual és gestionar-lo des del terminal.

Exemple, si volem instal·lar l'editor de text nano:

sudo apt update
sudo apt install nano

Descomposem les parts de la comanda, per entendre-la:

  • sudo → Comanda que permet executar com a usuari admin. Alternativa: sudo su
  • apt → gestor de paquets que usen distros de Linux basades en Debian: Ubuntu, Mint...
  • install → Li diem al apt que volem instal.lar (altres opcions: update, upgrade, autoremove, purge...)
  • nano → El nom del programa, és un editor de text del terminal.

En aquest cas, s'instal·len molts programes alhora.

Exercici: Instal.la 2 programes més amb la comanda apt install i executa'ls per veure que fan.

Programes útils que recomanem:

  • nano
  • inxi
  • tree
  • htop
  • git

Programes no tant útils però curiosos:

  • sl
  • oneko
  • cowsay

Per executar el programa instal.lat posa el seu nom:

inxi -F

Fixa't com n'és d'útil el programa inxi, que mostra les característiques del teu maquinari.

history --> Historial de comandes :

Hi ha un historial que guarda totes les comandes.

Amb les fletxes amunt i avall et posa les comandes que has posat anteriorment (així no et cal escriure-les de nou)

Amb la instrucció history veus totes les comandes que has usat fins ara:

$ history

Fins i tot, pots guardar en un fitxer .txt totes les comandes que has fet:

$ history > historial.txt

man --> Comanda Ajuda: man

La comanda man (de manual) és la que ens permet consultar com funciona cada comanda.

Prova de consultar info sobre ls:

man ls

Per sortir, pitja q.


Teoria Bloc 1: «Comandes de rutes (pwd, cd, ls) i ajuda»

Abans de començar a moure'ns pel terminal, cal entendre com funciona la estructura de directoris que hi ha en una partició d'un disc amb Linux.

Estructura de directoris a Linux.

Fixeu-vos que els usuaris es troben dins del directori /home/

Per exemple, si tenim un usuari anomenat miquel tindriem el seu espai a:

/home/miquel

També, que no hi ha lletres d'unitats com C: D: E: A: sinó que el contingut de les unitats està repartit, a les carpetes /dev/ de devices.

Els dispositius extraibles (pendrives, ISO's ...) es creen a la carpeta /media/ en general.

Sempre parlarem de directoris a Linux (però el concepte és el mateix que el de la carpeta).

Comandaments de rutes (per moure'ns): cd, ls, pwd

Repassem la gestió de rutes de Linux i com funcionen les comanda cd, pwd i ls.

Les rutes serveix per moure'ns pels diferents directoris del sistema.

Carpetes especials: El directori arrel del sistema és root i es representa amb una barra:

/

A diferència de Windows, que la carpeta arrel és: C:\

O el nom de la unitat assignada.

El directori de l'usari és la home, per defecte se situa a:

usuari1@mint:~$ /home/<nom_usuari>
miquel@mint:~$ /home/miquel/Documents/dawbio-m01.txt

Tant a Linux com a Windows, per defecte la carpeta de cada usuari conté altres carpetes: Desktop, Music, Documents, Downloads, etc...

Comanda cd (change directory)

Ens serveix per moure'ns pels diferents directoris del sistema; li podem passar rutes absolutes (la ruta sencera)

o bé una ruta relativa (una ruta que depèn del directori on ens trobem).

Llavors, veiem les moltes formes de moure'ns:

cd Documents		accedeix al directori Documents si existeix
cd ..			ves a la carpeta anterior (carpeta pare)
cd .			La carpeta actual.
cd ../../..		ves a 3 carpetes anteriors
cd /home/alumne/dir1 	(*) Pots posar rutes absolutes (rutes que comencen des del root; si existeix, anirà directament a la carpeta)
cd ~			Ens dirigeix automàticament a la carpeta home de l'usuari actiu.

(*) En aquest cas es pressuposa que tens un usuari anomenat alumne i un directori dir1

Exemple ruta absoluta.

usuari1@mint:~$ cd /home/alumne/Documents/dadescovid-10122021.csv

Exemple ruta relativa.

usuari1@mint:~$cd Documents/

Per a què funcioni, dins la nostra carpeta ha d'existir una carpeta anomenada Documents.

Comanda pwd.

serveix per veure per pantalla a quina carpeta estem; és important per assegurar-nos que fem bé la ruta relativa.

usuari1@mint:~$ pwd
/home/usuari1/Desktop

Comanda ls

Serveix per llistar fitxers i directoris, i tota la seva info.

ls	# Llista fitxers i directoris		
ls -l	# Llista fitxers i directoris, format llarg (permisos, tamany...)
ls -R	# Llista fitxers i directoris, de forma recursiva (els subdirectoris)
ls -a 	# Llista fitxers i directoris ocults.

Ls admet molts paràmetres alhora; per exemple:

ls -la 

Llista fitxers i carpetes, format llarg (permisos, tamany...), incloent els ocults.

I la comanda més potent i completa:

ls -lisah

Que aplica 5 filtres a ls: Explicació comanda ls -lisah

Tecla TAB --> Escriu el nom dels directoris més ràpid

Si el nom del directori on vols anar existeix (per exemple: Desktop, Documents...) només cal que posis les primeres lletres i la tecla TAB.

Se t'escriurà sol 😀

També pot ser que et surtin tots els directoris que comencin per una lletra (la D)


Teoria Bloc 2: «Comandes gestió directoris»

mkdir --> Creació directoris

Et permet crear un o més directoris.

És molt potent, permet crear moltes carpetes alhora:

Exemple 1: Crea un directori m01 i dins un directori anomenat Linux.

mkdir m01
mkdir m01/linux

Exemple 2: Crea el directori m01, entra-hi i dins crea 3 directoris: fedora, mint, ubuntu.

mkdir m01
cd m01
mkdir fedora mint ubuntu

La comanda mkdir és molt potent i ens permet crear directoris i subdirectoris en la mateixa línia, o fins i tot directoris seguint patrons definits.

Exemple 3. Creem un arbre de carpetes amb els mòduls de dawbio1

miquel@mint:~$ mkdir -p dawbio1/{m01/{pts,pes},m02,m03,m04,m05,m14}

Exemple 4. Creem carpetes per a 10 usuaris, començant per user1 i acabant per user10.

miquel@mint:~$ mkdir -p user{1..10}

Recorda:

  • mkdir crear directoris
  • ls llista directoris i arxius
  • cd salta a un altre directori
  • pwd mostra en quin directori estàs

És molt bàsic, però els professionals tendeixen a oblidar-ho.

Més exemples d'ús de mkdir a Linux

Fitxers i carpetes ocultes.

Per a crear un fitxer o carpeta oculta és tan senzill com que el seu nom comenci per punt.

mkdir .secretofmonkey
touch .secretofmonkey.txt

Exercici 11. Crea el directori Debian, dintre d'aquest els directoris Kali, MX i Ubuntu i dins d'ubuntu els directoris Mint, PopOS i Lubuntu. Mostra que s'han creat tots.

Exercici 12. Crea el directori futfem i dintre els directoris oshoala,aitana,mapi,patri i els directoris ocults .tactiques i .sous (si vols crea’n unes altres semblants). Mostra els directoris creats, inclos els ocults.

Solucions Exercicis mkdir

Ex11.

miquel@mint:~$ mkdir Debian
miquel@mint:~$ cd Debian
miquel@mint:~$ mkdir Kali,MX,Ubuntu
miquel@mint:~$ cd Ubuntu
miquel@mint:~$ mkdir Mint,PopOS,Lubuntu
miquel@mint:~$ cd ../..
miquel@mint:~$ ls

Ex12.

miquel@mint:~$ mkdir -p futfem/{oshoala,aitana,mapi,patri,.tactiques,.sous}
miquel@mint:~$ ls -la

tree --> arbre directoris i fitxers

Apart de ls, si només ens interessa els noms dels directoris (i dels fitxers) podem usar la comanda tree.

En algunes distros cal instal·lar-la:

$ sudo apt install tree
$ tree

cp --> Còpia de directoris (i fitxers)

Per a fer còpies de seguretat, usem la comanda cp

La sintaxis és:

cp [opcions] origen desti

  • [opcions]: L'argument més habitual de cp és el -r; que ens fa una còpia recursiva del directori i tot els subdirectoris (i fitxers dins).
  • origen: El fitxer o directori que tenim. Ha d'existir, òbviament.
  • desti: El nom del fitxer o directori que volem. Pot existir o no; si no existeix el pot crear.

Exemple: Fes una còpia de tot el contingut del directori futfem (si no el tens crea'l) cap a una nova carpeta futfem2023.

$ cp -r futfem futfem2023
$ ls

mv --> Moure i renombrar directoris (i fitxers)

La comanda mv a Linux serveix per dues coses: la més òbvia és la de moure un directori o fitxer cap a un altre lloc.

Però també serveix per renombrar el nom d'un fitxer o directori.

Exemple: Crea el directori Apu. Canvia el seu nom, es dirà Apunts. Mostra si s'han canviat el nom.

$ mkdir Apu
$ mv Apu Apunts
$ ls

rm --> Esborrar directoris (i fitxers)

Si volem esborrar un directori el més habitual és usar la comanda rm.

La sintaxis és :

rm [opcions] origen desti

  • [opcions]: L'argument més habitual de rm és el -r; que ens elimina recursivament directori i tot els subdirectoris (i fitxers dins). També s'usa el f (forçar l'esborrat sense demanar permís).
  • origen: El fitxer o directori volem eliminar. Ha d'existir, clar.

Exemple: Crea el directori lindows. Esborra el directori i tot el seu contingut.

$ mkdir lindows
$ rm -r lindows
$ ls

rm - rf és perillós. Eliminar és una operació irreversible ⚠

La terminal de Linux (i de Unix) no té una paperera de reciclaje per a restaurar arxius eliminats. Això només ho podem fer si usem una distribució gràfica moderna basada en Debian (Ubuntu). Quan eliminem arxius i directoris, es desvinculen del sistema per a què la memòria es pugui tornar a usar. Hi ha mètodes per recuperar algunes dades però no hi poden confiar d'entrada.

La comanda rmdir només ens serveix per esborrar directoris buits.


Teoria Bloc 3: «Comandes gestió fitxers»

cp, rm i mv --> Copiar i moure i eliminar fitxers

Les comandes funcionen igual que en els directoris, que ja les hem analitzat i provat.

touch --> Crear fitxers buits

Crea un fitxer buit (o més, seguits per comes).

També serveix per fer que canvii els permisos de modificació al dia i hora actuals (d'aquí el nom de tocar) si aquest existeix.

Prova-ho tu mateix/a:

$ touch demo.txt
$ touch demo2.txt
$ touch demo.txt

nano --> Editor de text del terminal.

Editor de text que funciona sense sortir del terminal.

Si voleu publicar les vostres aplicacions us haureu d'acostumar a usar-lo, ja que els servidors d'aplicacions web més potents no tenen entorn gràfic (consumeix recursos innecessaris) i cal usar comandes del terminal per arrencar-los, organitzar el seu contingut ...

Aquí en teniu una mostra: editor nano gif

Si no veieu el gif el teniu a: https://media.geeksforgeeks.org/wp-content/uploads/20200304140712/cutpaste.gif

Escriu:

nano fitxer.txt

Aquí podràs escriure el seu contingut.

Per a guardar el fitxer, cal fer la combinació

: w

Per a sortir

: q

Els : inicials el que fan és canviar del mode d'escriptura del fitxer al mode del menú de programa.

Exemple. Crea un fitxer anomenat debian.txt des del terminal, usant l’editor nano. Ha de contenir el text:

Debian és un sistema operatiu FOSS (lliure), creat l’any 1993 per Ian Murdock.

Recorda, els passos a seguir són:

  1. nano debian.txt
  2. Escriu el text
  3. Ctrl + X
  4. INTRO
  5. nano debian.txt (veure contingut fitxer)

cat --> Visualitza el contingut d'un fitxer.

Visualitza el contingut d'un fitxer que només tingui text (no val per Writer/Word) sense necessitat d'obrir-lo.

Tot és per millorar el rendiment.

Exemple: Crear un fitxer amb el nano i visualitzar el seu contingut amb el cat.

nano debian.txt
cat debian.txt

head, tail --> Primeres / últimes línies fitxers.

Si vols veure només les n primeres línies o les n últimes linies:

head -n 3 <nom_fitxer>

tail -n 3 <nom_fitxer>

Exercici: Per si no ho sabies, per consultar els usuaris que hi ha al SO ho pots fer des del fitxer /etc/passwd. Mostra els 5 primers i 5 últims usuaris.

Per mostrar-los tots ho fas amb:

cat /etc/passwd

Solució Exercici /etc/passwd:

head -n 5 /etc/passwd
tail -n 5 /etc/passwd

Curiositats del terminal

El cd també funciona a MS-DOS (terminal de Windows).

Tanmateix, moltes comandes a Windows són diferents (per exemple. L’ls de Linux és dir amb Windows), i moltes d’altres ni existeixen. Per a tenir una shell tant avançada com la de Unix i GNU/Linux cal usar la terminal com PowerShell; i ni tan sols així s'aconsegueixen tantes prestancions com amb Linux.

Una altra opció per gaudir de Linux a Windows, disponible a partir de Windows, és instal.lar l'WSL (Windows Subsystem for Linux) si som administradors/es.


Exercicis Repàs 2 - «Directoris, rutes, i creació de fitxers»

Escriu la o les comandes necessàries per cada cas:

Comandaments 1-6: cd, ls, pwd, mkdir, cat, touch, nano.

1. Situa't al teu directori home.

2. Mostra la ruta del directori actual.

3. Llista els fitxers del directori actual.

4. Llista els fitxers del directori actual, inclosos els ocults.

5. Llista els fitxers del directori arrel, sense canviar de directori.

6. Situa't al directori arrel, llista els fitxers i torna al teu directori home.

Comandaments 7-13: mkdir, cd, cat, touch, nano.

7. Crea un directori al teu directori home que es digui "practica".

8. Sense canviar de directori, crea un arxiu al directori "practica" que es digui "test1.txt".

9. Edita "test1.txt" afegint "Línia 1" sense canviar de directori, utilitzant una ruta relativa.

10. Edita "test1.txt" afegint "Línia 2" sense canviar de directori, utilitzant una ruta absoluta.

11. Mostra els continguts de test1.txt sense canviar de directori i utilitzant una ruta relativa.

12. Mostra els continguts de test1.txt sense canviar de directori i utilitzant una ruta absoluta.

13. Situa't dintre del directori "practica" i mostra els continguts de test1.txt... ◦ Utilitzant una ruta relativa, amb només el nom de l'arxiu. ◦ Utilitzant una ruta relativa, amb el directori actual. ◦ Utilitzant una ruta absoluta.

Solucions Exercicis Repàs 2.1-6

1 cd ~ o cd /home/

2 pwd

3 ls

4 ls -a, ls --al, ls -lisah

5 ls /

6 cd /, ls, cd

Solucions Exercicis Repàs 2.7-13

7 mkdir practica

8 touch practica/test1.txt

9 nano practica/test1.txt

10 nano /home/alumne/practica/test1.txt

11 cat practica/test1.txt

12 cat /home/alumne/practica/test1.txt

13 cat test1.txt, cat ./test1.txt, cat /home/alumne/practica/test1.txt

Comandaments: cat, cp, ls, mkdir, mv, nano, rm

Exercicis Repàs 3 - «Gestió i edició de fitxers i directoris»

Escriu la o les comandes necessàries per cada cas, sense moure't del teu directori home:

1. Fes una còpia de "test1.txt" i deixa-la al directori "practica".

2. Mou "test2.txt" al teu directori home.

3. Renombra "test2.txt" a "diari.txt".

4. Converteix "diari.txt" en un arxiu ocult.

5. Edita el diari, esborrant tot el text i escrivint "Això és el meu diari personal.".

6. Mostra els continguts del diari.

7. Crea un directori ocult dins de "practica" que es digui "secrets".

8. Llista els fitxers del directori "practica", inclosos els ocults.

9. Copia el diari al directori "secrets".

10. Llista els continguts del diari dins del directori secrets.

11. Esborra el diari que està al directori home.

12. Fes una còpia oculta del directori "secrets" que es digui "copia-seguretat" dins de "practica".

13. Llista els fitxers del directori "copia-seguretat", inclosos els ocults.

Solucions Exercicis Repàs 3

1 cp practica/test1.txt practica/test2.txt

2 mv practica/test2.txt ~

3 mv test2.txt diari.txt

4 mv diari.txt .diari.txt

5 nano .diari.txt

6 cat .diari.txt

7 mkdir practica/.secrets

8 ls -a practica

9 cp .diari.txt practica/.secrets

10 cat practica/.secrets/.diari.txt

11 rm .diari.txt

12 cp -r practica/.secrets/ practica/.copia-seguritat

13 ls -a practica/.copia-seguritat/


Teoria Bloc 4: ¡Comandes de redirecció ( >, >>, |, echo, /dev/null)

Aquest document és la continuació d'aquest tutorial del terminal Linux:

Redirecció text sortida del terminal amb > i >>.

Per defecte el resultat de les comandes surten per la consola (sortida estàndard)

	ls -l

Si fiquem > després de la comanda i el nom d’un fitxer, posem la sortida en un fitxer en comptes del terminal. Si el fitxer ja existeix el sobreescriu.

  ls -l > fitxersCarpeta.txt

Fixa’t que per veure si s’ha creat bé podem usar cat:

  cat fitxersCarpeta.txt

Si posem >> després de la comanda i el nom d’un fitxer fa el mateix que >; excepte en el cas que el fitxer existeixi, que en comptes de sobreescriure posa les linies a continuació.

  ls -l >> fitxersCarpeta2.txt

Personalment, em va sorprendre molt descobrir aquesta comanda com a programador 😲, ja que abans vaig aprendre com fer el mateix amb Java i és més llarg.

echo --> Mostrar text i variables.

Comanda bàsica, com el print dels llenguatges de programació.

$ echo ”Hello Linux”

Per a escriure un text dins d’un fitxer sense obrir-lo ho fem així:

$ echo ”Hello” > /home/miquel/practica/test1.txt
$ cat test1.txt
$ Hello

Variables d'entorn

echo no només et permet mostrar text literal, també interpreta variables del sistema (variables d'entorn).

Per exemple, prova les comandes:

echo $USER
echo $PATH
echo $LANG

Alguns valors de configuració es poden obtenir amb altres comandes, no cal l'echo.

whoami
printenv
lsb_release -a

Concaternació fitxers amb cat.

Ex1: Creeu un nou fitxer de nom total.txt que guardi el contingut dels fitxers mint.txt i debian.txt; sense tornar a copiar el text.

Escriu els fitxers sense cap editor.

debian.txt té el text: Debian és un sistema operatiu lliure, creat l’any 1993 per Ian Murdock.

mint.txt té el text: Mint també és un sistema operatiu lliure, basat en Ubuntu i Debian. Mint també és un sistema operatiu multiusuari.

Ex2: Guarda l'arbre de directoris (de forma recursiva) en un fitxer anomenat tree.txt des de la teva carpeta personal.

$ echo ”Debian és un sistema operatiu lliure, creat l’any 1993 per Ian Murdock.” > ~/practica11/debian.txt
$ echo ”Mint també és un sistema operatiu lliure, basat en Ubuntu i Debian.” > ~/practica11/mint.txt
$ echo ”Mint també és un sistema operatiu multiusuari.” >> ~/practica11/mint.txt
$ cat debian.txt mint.txt > total.txt
tree > tree.txt

Redirecció d'errors (/dev/null)

Per defecte, quan una comanda ha funcionat Linux no ens dona cap feedback, però si hi ha hagut algún error ens informa de perquè no ha funcionat.

Exemples típics d'operacions que donen error :

  • Crear un directori que ja existeix
  • Esborrar un directori que no existeix.
  • Llegir un fitxer que no existeix.
  • Demanar una llista d'un directori inexistent
miquel@mint:~$ cat pruebas.txt
cat: pruebas: No existe el fichero o el directorio

Si, pel que sigui (per exemple, fem un script), no volem que ens surti aquest error per pantalla el que hem de fer és redirigir-lo a /dev/null.

I què és això de /dev/null ?

/dev/null és com un forat negre, tot el que posis en aquest directori s'esborrarà automàticament.

Per tant, si redirigeixes el missatge de la sortida d'error (que per cert, es redirigeix amb 2>) a /dev/null ja no sortirà.

Prova-ho; i tingues en compte que entre > i / no hi ha cap espai!

miquel@mint:~$ cat pruebas.txt 2>/dev/null

També és útil usar la redirecció d'errors per guardar un registre dels errors en un fitxer.

cat pruebas.txt 2 >err.log
  • [https://itsfoss.com/es/redireccion-linux/](Bloc Itsfoss, redireccions a Linux)

Comandes pipe (|) per filtrar la sortida.

La comanda de canonada | s'utilitza molt per agafar la sortida d'una comanda i aplicar la següent comanda al resultat de la sortida.

Per exemple, això és molt útil si volem comptar les línies i tamany d'un fitxer sense obrir-lo amb la comanda wc.

cat mint.txt | wc 

Exemple absurd de pipe: cowsay.

Instal·la el programa cowsay. Aquest programa dibuixa una vaca (o qualsevol altre animal si canvies la opció corresponent, -f dragon)

$ sudo apt install cowsay
$ cowsay Hey!
 __________________
< Hey!              >
 ------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

Usa l'operador per | redirigir la comanda que llegeix contingut d'un fitxer cap a cowsay.

$ cat mint.txt | cowsay
 ________________________________________
/ Mint també és un sistema operatiu lliure \
\ , basat en Ubuntu i Debian.              /
 -----------------------------------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

Ja has vist com cowsay ha agafat el text de la sortida i l'ha reconvertit gràcies al |.

Si et sembla divertit pots aprofundir en cowsay:

  • [https://opensource.com/article/18/12/linux-toy-cowsay](Tutorial Linux cowsay)

Pots descarregar-te una cheatsheet bàsica a:

Cheatsheet (extensió ODS) Introducció al terminal de Linux


Per on continuar ??

Ja hem cobert les comandes més bàsiques de Linux, classificades en:

  • Comandes instal·lar programes a Ubuntu (apt), ajuda, historial
  • Comandes gestió directoris (mkdir, cp, rm, mv)
  • Comandes gestió fitxers (cp, rm, mv, touch, cat, head, tail)
  • Editor terminal nano
  • Comandes de redirecció i pipes (echo, >, >>, |, /dev/null)

Ara tocaria seguir amb:

  • Comandes de gestió de processos

  • Execució d'scripts bash (chmod u+x script.sh)

  • Gestió d'usuaris

  • Gestió de permisos i propietat a Linux

  • Comandes de cerca (ls, find, grep)

  • Comandes de filtre (grep, sort, cut, sed, awk ...)

  • Gestió espai del disc (du, dh, free)

  • Comandes instal·lació i actualització en qualsevol distro de Linux

  • Comandes gestió de serveis

  • Comandes connexió a xarxes

    A bioinformàtica són especialment útils les de redirecció, cerca i filtre. I scripts De les altres, cal saber-ne uns mínims.

    Pots descarregar-te una cheatsheet bàsica al fitxer resum_comandes_linux_imprimir.ods