Diferència entre revisions de la pàgina «Linux bàsic»

De Cacauet Wiki
Salta a la navegació Salta a la cerca
(Es crea la pàgina amb «Mostrarem en aquest capítol quatre directrius per iniciar-se a explorar Linux. Tots els exercicis i comandes s'han realitzat amb la distribució [http://www.ubuntu.com …».)
 
 
(Hi ha 5 revisions intermèdies del mateix usuari que no es mostren)
Línia 1: Línia 1:
Mostrarem en aquest capítol quatre directrius per iniciar-se a explorar Linux.
+
[[Imatge:sistema-operatiu.png|thumb|dreta|El sistema operatiu fa d'intermediari entre les aplicacions i els recursos hardware (wikipedia)]]
 +
Mostrarem en aquest capítol quatre directrius per iniciar-se a explorar el [[GNU/Linux]].
  
 
Tots els exercicis i comandes s'han realitzat amb la distribució [http://www.ubuntu.com Ubuntu] Linux versió 10.04 (Lucid Lynx).
 
Tots els exercicis i comandes s'han realitzat amb la distribució [http://www.ubuntu.com Ubuntu] Linux versió 10.04 (Lucid Lynx).
  
Aclarirem alguns conceptes i entrarem de ple a utilitzar les comandes del sistema operatiu.
+
Abans de llegir aquest article potser et convé llegir sobre el què és un [[sistema operatiu]].
 +
 
 +
 
 +
== Estructura d'arxius del Linux ==
 +
[[Imatge:consola.png|360px|thumb|dreta|Consola del gestor d'escriptori Gnome mostrant els arxius de l'arrel (root) "/" del sistema.]]
 +
 
 +
El Linux ha copiat el model del Unix, pel que ha heretat d'aquest el nom dels directoris que el conformen. Si mirem l'arrel del sistema:
 +
$ ls /
 +
 
 +
Trobarem aquests directoris (entre d'altres):
 +
*'''/home''': directoris d'usuari amb preferències, descàrregues, dades, documents, imatges, etc. Equival al "Documents and settings" del Windows.
 +
*'''/var''': directoris per emmagatzemar dades d'aplicacions (bases de dades MySQL, Apache, etc.)
 +
*'''/tmp''': arxius temporals, per exemple els vídeos del YouTube que estem veient en aquest moment.
 +
*'''/boot''': sistema gestor d'arrencada (LILO/GRUB).
 +
*'''/etc''': arxius de configuració del sistema (IP de la xarxa, carpetes compartides, usuaris amb accés permès, coontrassenyes, etc.)
 +
*'''/bin''': aplicacions (programes, comandes, etc.)
 +
*'''/sbin''': aplicacions d'administrador (<u>s</u>uperuser)
 +
 
 +
Aquests dos casos son especials i NO son arxius normals al disc:
 +
*'''/dev''': accés directe als DEVices (dispositius). NO conté arxius, sinó enllaços als dispositius hardware. Podem així dirigir-nos a un dispositiu mitjançant la línia de comandes.
 +
*:Per exemple, els discs durs estan a /dev/sda, /dev/sdb, etc. (i les seves particions serien /dev/sda1, /dev/sda2, etc.).
 +
*'''/proc''': ens permet accedir a algunes funcions del KERNEL i la configuració del sistema.
 +
*:Per exemple, una instrucció '''cat /proc/cpuinfo''' ens mostraria la informació que el ''kernel'' té sobre les CPUs que ha trobat.
 +
enric@pepino:/proc$ '''cat /proc/cpuinfo'''
 +
processor : 0
 +
vendor_id : GenuineIntel
 +
cpu family : 6
 +
model : 15
 +
model name : Intel(R) Core(TM)2 Quad CPU    Q6600  @ 2.40GHz
 +
stepping : 11
 +
cpu MHz : 1600.000
 +
cache size : 4096 KB
 +
[...etc...]
 +
 
 +
<br>
 +
 
 +
=== Directori d'usuari ===
 +
El nostre directori d'usuari està a /home. Per exemple, si el meu usuari és "enric", el meu ''home directory'' seria /home/enric. Per abreujar es sol posar com la "tilde" de la "ñ", és a dir això: '''~'''
 +
 
 +
El símbol "~" es pot fer amb el ALTGR+ñ, i si no us funciona el podeu fer mantenint apretada la tecla ALT i posant el número 126 al teclat numèric (el símbol ~ és el número 126 del joc de caràcters ASCII).
 +
 
 +
Si vull anar al meu directori d'usuari només cal que faci "cd" a seques:
 +
enric@pepino:/var$ cd
 +
enric@pepino:~$
 +
 
 +
Però si estic "lluny" del meu directori d'usuari i vull anar a dins d'un directori (per exemple, l'Escriptori), ho puc fer així:
 +
enric@pepino:/var/www$ cd ~/Escriptori
 +
enric@pepino:~/Escriptori$
 +
 
 +
Com podeu veure, al '''''prompt''''' (el què hi ha abans del signe del dòlar de la consola) hi figura sempre la informació més bàsica: el nom d'usuari, el nom de la màquina i el directori on estic, per poder saber on soc en tot moment.
 +
 
 +
<br>
 +
 
 +
== Comandes bàsiques del Shell ==
 +
La '''''shell''''' és una aplicació que ens permet interactuar amb el kernel i executar comandes. Hi ha molts tipus de shell (''Korn shell'', ''C shell'', etc.) però la més extesa amb el sistema Linux és la '''''Bourne-Again Shell''''' ('''''bash''''').
 +
 
 +
IMPORTANT: per saber més sobre una comanda podem utilitzar en tot moment la comanda '''man''' (manual). Per avançar premem ENTER (1 línia), espai (1 pàgina) i per sortir premem la tecla "q". Per exemple:
 +
enric@pepino:~$ '''man ls'''
 +
LS(1)                                      User Commands                                      LS(1)
 +
 +
NAME
 +
        ls - list directory contents
 +
 +
SYNOPSIS
 +
        ls [OPTION]... [FILE]...
 +
 +
DESCRIPTION
 +
        List  information about the FILEs (the current directory by default).  Sort entries alphabeti‐
 +
        cally if none of -cftuvSUX nor --sort.
 +
[...etc...]
 +
 
 +
Com hem pogut veure, el primer que ens surt és el '''''prompt''''' amb el nom d'usuari, màquina i directori. Les primeres comandes que cal que sapiguem son:
 +
 
 +
* '''pwd''' : ens diu en quin directori som (tot i que ja apareix en el prompt).
 +
enric@pepino:~$ '''pwd'''
 +
/home/enric
 +
* '''ls''' : ens mostra els continguts d'un directori (equival al DIR del MS-DOS o Windows).
 +
enric@pepino:~$ '''ls /'''
 +
bin    dev  initrd.img      lib32      media  proc  scripts  sys  var
 +
boot  etc  initrd.img.old  lib64      mnt    root  selinux  tmp  vmlinuz
 +
cdrom  home  lib            lost+found  opt    sbin  srv      usr  vmlinuz.old
 +
* '''ll''' : igual que el ''ls'' però afegeix més informació dels permisos (rwx: lectura, escriptura, execució), propietari de l'arxiu, data de creació, etc.
 +
enric@pepino:~$ '''ll /'''
 +
total 136
 +
drwxr-xr-x  24 root root  4096 2011-02-03 18:33 ./
 +
drwxr-xr-x  24 root root  4096 2011-02-03 18:33 ../
 +
drwxr-xr-x  2 root root  4096 2010-12-29 11:00 bin/
 +
drwxr-xr-x  3 root root  4096 2010-12-29 11:06 boot/
 +
drwxr-xr-x  2 root root  4096 2010-06-28 19:18 cdrom/
 +
drwxr-xr-x  18 root root  4220 2011-02-03 21:44 dev/
 +
drwxr-xr-x 163 root root 12288 2011-02-03 21:44 etc/
 +
[...etc...]
 +
Fixeu-vos en els dos primers directoris: el punt (.) significa el mateix directori on estic, i els doble punt (..) al directori pare. Per "pujar" un directori, faria:
 +
enric@pepino:/var/www$ '''cd ..'''
 +
enric@pepino:/var$
 +
 
 +
* '''cat''' ens mostraria el contingut d'un arxiu de text. Per exemple, per mostrar els contingut de l'arxiu ''resolv.conf'' dins la carpeta /etc fariem:
 +
enric@pepino:~$ '''cat /etc/resolv.conf'''
 +
# Generated by NetworkManager
 +
nameserver 192.168.1.1
 +
enric@pepino:~$
 +
* '''more''' ens mostra un arxiu de text molt llarg a poc a poc. Per avançar podem fer-ho amb el ENTER (1 línia), amb l'espai (1 pàgina) i podem sortir prement la "q". Per exemple:
 +
enric@pepino:~$ '''more /etc/samba/smb.conf'''
 +
#
 +
# Sample configuration file for the Samba suite for Debian GNU/Linux.
 +
#
 +
#
 +
# This is the main Samba configuration file. You should read the
 +
# smb.conf(5) manual page in order to understand the options listed
 +
# here. Samba has a huge number of configurable options most of which
 +
# are not shown in this example
 +
--Més--(7%)
 +
 
 +
* '''head''' ens mostra les primeres línies d'un arxiu de text. Per exemple, per mostrar les 5 primeres línies d'un arxiu:
 +
enric@pepino:~$ '''head -n 5 /etc/samba/smb.conf'''
 +
#
 +
# Sample configuration file for the Samba suite for Debian GNU/Linux.
 +
#
 +
#
 +
# This is the main Samba configuration file. You should read the
 +
 
 +
* '''tail''' ens mostra les darreres línies d'un arxiu de text. Per mostrar les darreres 4 línies faríem:
 +
enric@pepino:~$ '''tail -n 5 /etc/samba/smb.conf'''
 +
[musica]
 +
path = /media/newmedia/musica
 +
read only = yes
 +
guest ok = yes
 +
 
 +
* '''top''' : ens mostra els processos més actius del sistema i la ocupació de les CPUs i memòria. Molt important per administrar un sistema com un servidor. Es refresca cada 3 segons per defecte. <u>OJU, per sortir premeu "q"</u>.
 +
[[Imatge:top-consola.png]]
 +
 
 +
* '''grep''': permet filtrar les línies d'un arxiu de text que continguin la paraula que vulguem. En el següent exemple volquem una sola execució del ''top'' a l'arxiu top.txt. Després filtrem les línies en què apareix "enric" (usuari):
 +
enric@pepino:~$ '''top -n 1 > top.txt'''
 +
enric@pepino:~$ '''grep enric top.txt'''
 +
  4460 enric    20  0  212m  16m  10m S    2  0.4  0:06.38 gnome-terminal         
 +
El què estem veient, doncs, son el(s) procés(sos) de l'usuari enric que està(n) entre els més actius del sistema (top).
 +
 
 +
== Algunes funcions de la shell ==
 +
La ''bash'' shell disposa d'alguns mètodes molt útils per manipular les comandes:
 +
 
 +
* Redirecció de la sortida estàndard (text de pantalla)
 +
* Pipe: encadenament de comandes.
  
 +
<br>
  
== Sistema operatiu ==
+
=== Redirecció de la sortida estàndard ===
[[Imatge:sistema-operatiu.png|thumb|dreta|El sistema operatiu fa d'intermediari entre les aplicacions i els recursos hardware (wikipedia)]]
+
Hi ha 2 tipus de redirecció:
Segons la wikipedia: un sistema operatiu és un conjunt de programes que corre sobre un ordinador, administrant els recursos de hardware i proveint serveis per l'execució eficient de les aplicacions.
+
* ">": crea un fitxer de text. Si ja existia l'esborra i el crea de nou.
 +
* ">>": afegeix el text al fitxer indicat.
 +
 
 +
Podem redirigir el text de pantalla a un arxiu mitjançant el símbol ">". Per exemple, si faig:
 +
enric@pepino:~$ '''ls > directori.txt'''
 +
enric@pepino:~$
 +
 
 +
No ha sortir res per la línia de comandes. En canvi, s'ha generat un arxiu ''directori.txt'' (hi conté el que hauria hagut de sortir per la línia de comandes). Amb la comanda següent veurem tots els arxius que comencen per "dir" (utilitzant l'asterisc):
 +
enric@pepino:~$ '''ls dir*'''
 +
directori.txt
 +
 
 +
Apareix el nostre arxiu directori.txt. Si volem veure què hi ha a dins podem utilitzar la comanda que hem vist abans (cat):
 +
enric@pepino:~$ '''cat directori.txt'''
 +
Baixades
 +
blowhorn.jpg
 +
cacahuet.jpg
 +
[...etc...]
  
Dit d'una altra manera: el sistema operatiu és el primer programa que s'executa en un PC. Bé, per ser exactes primer el precedeixen l'arranc de la BIOS (Basic Input Output System) i el ''bootloader'' contingut en el MBR del disc dur (veure [[Arrencada_del_PC]]). Però '''un cop arrencat el PC el sistema operatiu és l'amo de la màquina'''.
+
Això pot resultar molt útil quan apareix una comanda amb un text llarguíssim. Això és el què passa amb ''dmesg'' (informació del hardware del sistema enregistrat pel ''kernel'' a l'arrencar la màquina):
 +
enric@pepino:~$ '''dmesg'''
  
Acaba sent un intermediari entre el hardware i les aplicacions. Si un programa vol executar alguna funció que impliqui el hardware, no ho pot fer directament: ha de demanar-li al sistema operatiu (crida de sistema) i aquest realitza la tasca i retorna el resultat a l'aplicació. El programes no poden, doncs, accedir al hardware directament, només a través del sistema operatiu.
+
Com que surt tanta info no la mostrem. En canvi, podem enviar-la a un arxiu de text i després obrir-la amb un editor de text més còmode com el gedit:
 +
enric@pepino:~$ '''dmesg > dmesg.txt'''
 +
enric@pepino:~$ '''gedit dmesg.txt'''
  
Exemples: el Firefox no controla la targeta de xarxa, sinó que demana al S.O. que envii un determinat paquet a una determinada adreça IP i el sistema ho fa. O per exemple, per enviar l'àudio a la targeta un programa com el VLC pot descomprimir les dades del mp3 però les ha de posar a disposició del S.O. el qual realitza la transferència final cap al buffer de sortida de la targeta d'àudio.
+
També haguéssim pogut obrir el ''gedit'' des de l'escriptori del Gnome a ''Aplicacions -> Accessoris -> Editor de text gedit''. Un cop dins d'aquest podriem "obrir" i triar l'axiu "dmesg.txt". Tot això ho hem fet amb una sola comanda (gedit dmesg.txt).
  
=== Parts del sistema operatiu ===
+
=== Afegint text a un arxiu ===
Un S.O. és un conjunt força ample de programes, no un de sol. Els elements més importants que volem distingir son:
+
Si al nostre arxiu li volem afegir una línia més de text es pot fer amb el símbol ">>":
* '''''Kernel'' o nucli''' del sistema operatiu: és l'element central i s'encarrega d'engegar i controlar l'execució de les aplicacions i d'administrar l'accés a la memòria d'aquestes.
+
enric@pepino:~$ '''ls > directori.txt'''
* '''Device drivers''' (o controladors): son programes que enllacen el ''kernel'' amb els diferents dispositius electrònics. El nucli no pot conèixer tots els dispositius del mercat, pel que es carreguen només aquells mòduls del hardware que disposem. Així, un ''driver'' és específic del hardware utilitzat. És el programa que coneix ''exactament'' com està fet cada dispositiu.
+
enric@pepino:~$ '''echo "DARRERA LINIA" >> directori.txt'''
 +
enric@pepino:~$ '''tail -n 3 directori.txt'''
 +
vlc-log.txt
 +
www
 +
'''DARRERA LINIA'''
 +
enric@pepino:~$
  
El sistema operatiu "mana" sobre els fabricants de hardware, indicant com el sistema operatiu ha d'utilitzar un tipus de hardware determinat. El ''driver'' traduirà aquestes directives en instruccions concretes cap el xip particular que el fabricant ha dissenyat.
+
=== Pipe "|" ===
 +
'''''Pipe''''' significa "tub" en anglès. En la shell és el signe que és com un pal vertical (|) i de vegades està dividit per la meitat. El podem escriure amb ALTGR+1.
  
[[Imatge:kernel1.jpg|thumb|dreta|El ''kernel'' i els diferents mòduls.]]
+
Ens permet encadenar comandes i reenviar el resultat d'una d'elles a la següent comanda.
  
Per suposat, això no és tot: un S.O. ha de disposar de moltíssimes aplicacions per poder tenir un mínim d'operativitat:
+
Per exemple, si volem filtrar (amb la comanda grep) totes les línies del ''dmesg'' que continguin la paraula "cpu" podem fer-ho així:
*'''Shell o consola''': programa que permet interactuar amb el S.O. a través de comandes.
+
enric@pepino:~$ '''dmesg | grep CPU'''
*'''Editor de text''': programa que permet crear axius de text.
+
[    0.000000] SMP: Allowing 4 '''CPU'''s, 0 hotplug '''CPU'''s
**Per consola (vi, nano, emacs, ...)
+
[    0.000000] NR_'''CPU'''S:64 nr_cpumask_bits:64 nr_cpu_ids:4 nr_node_ids:1
**Per entorn gràfic (notepad, gedit, geany, ...)
+
[    0.000000] PER'''CPU''': Embedded 30 pages/cpu @ffff880028200000 s91544 r8192 d23144 u524288
*'''Mòdul d'autenticació''' (en Linux: PAM): és un subsistema que s'encarrega de validar l'entrada d'usuaris i d'autoritzar les operacions que l'usuari demana.
+
[    0.000000] Initializing '''CPU'''#0
*'''Filesystem o sistema d'arxius''': subsistema encarregat de l'emmagatzematge, és a dir, l'organització de dades en sistemes persistents com els discs durs, pendrives o CD/DVDs.
+
[    0.000000] SLUB: Genslabs=14, HWalign=64, Order=0-3, MinObjects=0, '''CPU'''s=4, Nodes=1
*'''Sistema d'entorn gràfic i escriptori''': subsistema que gestiona com es mostren i organitzen les quotidianes finestres. El sistema bàsic d'entorn gràfic de GNU son les X-windows i els sistemes típics d'escriptori son el Gnome i el KDE.
+
[    0.013585] '''CPU''': L1 I cache: 32K, L1 D cache: 32K
*... i un llarg etcètera...
+
[    0.013587] '''CPU''': L2 cache: 4096K
 +
[...etc...]
 +
Com podeu comprovar, la meva màquina "pepino" disposa de 4 CPUs (Intel Quad Core).
  
 +
Si volem que el ''grep'' no distingeixi majúscules de minúscules podem afegir-li el paràmetre "-i":
 +
enric@pepino:~$ '''dmesg | grep -i cpu'''
  
 +
Executeu les dues comandes i veureu que el resultat és diferent.
  
== TODO ==
+
Si no disposéssim del ''pipe'' hauríem de redirigir el text del dmesg a un arxiu i despreś filtrar-ho amb el grep. D'aquesta manera ho fem tot en una sola línia.
*Estructura d'arxius
 
*Shell i comandes bàsiques
 
*
 

Revisió de 16:43, 20 nov 2015

El sistema operatiu fa d'intermediari entre les aplicacions i els recursos hardware (wikipedia)

Mostrarem en aquest capítol quatre directrius per iniciar-se a explorar el GNU/Linux.

Tots els exercicis i comandes s'han realitzat amb la distribució Ubuntu Linux versió 10.04 (Lucid Lynx).

Abans de llegir aquest article potser et convé llegir sobre el què és un sistema operatiu.


Estructura d'arxius del Linux[modifica]

Consola del gestor d'escriptori Gnome mostrant els arxius de l'arrel (root) "/" del sistema.

El Linux ha copiat el model del Unix, pel que ha heretat d'aquest el nom dels directoris que el conformen. Si mirem l'arrel del sistema:

$ ls /

Trobarem aquests directoris (entre d'altres):

  • /home: directoris d'usuari amb preferències, descàrregues, dades, documents, imatges, etc. Equival al "Documents and settings" del Windows.
  • /var: directoris per emmagatzemar dades d'aplicacions (bases de dades MySQL, Apache, etc.)
  • /tmp: arxius temporals, per exemple els vídeos del YouTube que estem veient en aquest moment.
  • /boot: sistema gestor d'arrencada (LILO/GRUB).
  • /etc: arxius de configuració del sistema (IP de la xarxa, carpetes compartides, usuaris amb accés permès, coontrassenyes, etc.)
  • /bin: aplicacions (programes, comandes, etc.)
  • /sbin: aplicacions d'administrador (superuser)

Aquests dos casos son especials i NO son arxius normals al disc:

  • /dev: accés directe als DEVices (dispositius). NO conté arxius, sinó enllaços als dispositius hardware. Podem així dirigir-nos a un dispositiu mitjançant la línia de comandes.
    Per exemple, els discs durs estan a /dev/sda, /dev/sdb, etc. (i les seves particions serien /dev/sda1, /dev/sda2, etc.).
  • /proc: ens permet accedir a algunes funcions del KERNEL i la configuració del sistema.
    Per exemple, una instrucció cat /proc/cpuinfo ens mostraria la informació que el kernel té sobre les CPUs que ha trobat.
enric@pepino:/proc$ cat /proc/cpuinfo
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 15
model name	: Intel(R) Core(TM)2 Quad CPU    Q6600  @ 2.40GHz
stepping	: 11
cpu MHz		: 1600.000
cache size	: 4096 KB
[...etc...]


Directori d'usuari[modifica]

El nostre directori d'usuari està a /home. Per exemple, si el meu usuari és "enric", el meu home directory seria /home/enric. Per abreujar es sol posar com la "tilde" de la "ñ", és a dir això: ~

El símbol "~" es pot fer amb el ALTGR+ñ, i si no us funciona el podeu fer mantenint apretada la tecla ALT i posant el número 126 al teclat numèric (el símbol ~ és el número 126 del joc de caràcters ASCII).

Si vull anar al meu directori d'usuari només cal que faci "cd" a seques:

enric@pepino:/var$ cd
enric@pepino:~$ 

Però si estic "lluny" del meu directori d'usuari i vull anar a dins d'un directori (per exemple, l'Escriptori), ho puc fer així:

enric@pepino:/var/www$ cd ~/Escriptori
enric@pepino:~/Escriptori$

Com podeu veure, al prompt (el què hi ha abans del signe del dòlar de la consola) hi figura sempre la informació més bàsica: el nom d'usuari, el nom de la màquina i el directori on estic, per poder saber on soc en tot moment.


Comandes bàsiques del Shell[modifica]

La shell és una aplicació que ens permet interactuar amb el kernel i executar comandes. Hi ha molts tipus de shell (Korn shell, C shell, etc.) però la més extesa amb el sistema Linux és la Bourne-Again Shell (bash).

IMPORTANT: per saber més sobre una comanda podem utilitzar en tot moment la comanda man (manual). Per avançar premem ENTER (1 línia), espai (1 pàgina) i per sortir premem la tecla "q". Per exemple:

enric@pepino:~$ man ls
LS(1)                                       User Commands                                       LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]... 

DESCRIPTION
       List  information about the FILEs (the current directory by default).  Sort entries alphabeti‐
       cally if none of -cftuvSUX nor --sort.
[...etc...]

Com hem pogut veure, el primer que ens surt és el prompt amb el nom d'usuari, màquina i directori. Les primeres comandes que cal que sapiguem son:

  • pwd : ens diu en quin directori som (tot i que ja apareix en el prompt).
enric@pepino:~$ pwd
/home/enric
  • ls : ens mostra els continguts d'un directori (equival al DIR del MS-DOS o Windows).
enric@pepino:~$ ls /
bin    dev   initrd.img      lib32       media  proc  scripts  sys  var
boot   etc   initrd.img.old  lib64       mnt    root  selinux  tmp  vmlinuz
cdrom  home  lib             lost+found  opt    sbin  srv      usr  vmlinuz.old
  • ll : igual que el ls però afegeix més informació dels permisos (rwx: lectura, escriptura, execució), propietari de l'arxiu, data de creació, etc.
enric@pepino:~$ ll /
total 136
drwxr-xr-x  24 root root  4096 2011-02-03 18:33 ./
drwxr-xr-x  24 root root  4096 2011-02-03 18:33 ../
drwxr-xr-x   2 root root  4096 2010-12-29 11:00 bin/
drwxr-xr-x   3 root root  4096 2010-12-29 11:06 boot/
drwxr-xr-x   2 root root  4096 2010-06-28 19:18 cdrom/
drwxr-xr-x  18 root root  4220 2011-02-03 21:44 dev/
drwxr-xr-x 163 root root 12288 2011-02-03 21:44 etc/
[...etc...]

Fixeu-vos en els dos primers directoris: el punt (.) significa el mateix directori on estic, i els doble punt (..) al directori pare. Per "pujar" un directori, faria:

enric@pepino:/var/www$ cd ..
enric@pepino:/var$
  • cat ens mostraria el contingut d'un arxiu de text. Per exemple, per mostrar els contingut de l'arxiu resolv.conf dins la carpeta /etc fariem:
enric@pepino:~$ cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.1.1
enric@pepino:~$
  • more ens mostra un arxiu de text molt llarg a poc a poc. Per avançar podem fer-ho amb el ENTER (1 línia), amb l'espai (1 pàgina) i podem sortir prement la "q". Per exemple:
enric@pepino:~$ more /etc/samba/smb.conf
#
# Sample configuration file for the Samba suite for Debian GNU/Linux.
#
#
# This is the main Samba configuration file. You should read the
# smb.conf(5) manual page in order to understand the options listed
# here. Samba has a huge number of configurable options most of which 
# are not shown in this example
--Més--(7%)
  • head ens mostra les primeres línies d'un arxiu de text. Per exemple, per mostrar les 5 primeres línies d'un arxiu:
enric@pepino:~$ head -n 5 /etc/samba/smb.conf
#
# Sample configuration file for the Samba suite for Debian GNU/Linux.
#
#
# This is the main Samba configuration file. You should read the
  • tail ens mostra les darreres línies d'un arxiu de text. Per mostrar les darreres 4 línies faríem:
enric@pepino:~$ tail -n 5 /etc/samba/smb.conf
[musica]
path = /media/newmedia/musica
read only = yes
guest ok = yes
  • top : ens mostra els processos més actius del sistema i la ocupació de les CPUs i memòria. Molt important per administrar un sistema com un servidor. Es refresca cada 3 segons per defecte. OJU, per sortir premeu "q".

Top-consola.png

  • grep: permet filtrar les línies d'un arxiu de text que continguin la paraula que vulguem. En el següent exemple volquem una sola execució del top a l'arxiu top.txt. Després filtrem les línies en què apareix "enric" (usuari):
enric@pepino:~$ top -n 1 > top.txt
enric@pepino:~$ grep enric top.txt
 4460 enric     20   0  212m  16m  10m S    2  0.4   0:06.38 gnome-terminal           

El què estem veient, doncs, son el(s) procés(sos) de l'usuari enric que està(n) entre els més actius del sistema (top).

Algunes funcions de la shell[modifica]

La bash shell disposa d'alguns mètodes molt útils per manipular les comandes:

  • Redirecció de la sortida estàndard (text de pantalla)
  • Pipe: encadenament de comandes.


Redirecció de la sortida estàndard[modifica]

Hi ha 2 tipus de redirecció:

  • ">": crea un fitxer de text. Si ja existia l'esborra i el crea de nou.
  • ">>": afegeix el text al fitxer indicat.

Podem redirigir el text de pantalla a un arxiu mitjançant el símbol ">". Per exemple, si faig:

enric@pepino:~$ ls > directori.txt
enric@pepino:~$

No ha sortir res per la línia de comandes. En canvi, s'ha generat un arxiu directori.txt (hi conté el que hauria hagut de sortir per la línia de comandes). Amb la comanda següent veurem tots els arxius que comencen per "dir" (utilitzant l'asterisc):

enric@pepino:~$ ls dir*
directori.txt

Apareix el nostre arxiu directori.txt. Si volem veure què hi ha a dins podem utilitzar la comanda que hem vist abans (cat):

enric@pepino:~$ cat directori.txt
Baixades
blowhorn.jpg
cacahuet.jpg
[...etc...]

Això pot resultar molt útil quan apareix una comanda amb un text llarguíssim. Això és el què passa amb dmesg (informació del hardware del sistema enregistrat pel kernel a l'arrencar la màquina):

enric@pepino:~$ dmesg

Com que surt tanta info no la mostrem. En canvi, podem enviar-la a un arxiu de text i després obrir-la amb un editor de text més còmode com el gedit:

enric@pepino:~$ dmesg > dmesg.txt
enric@pepino:~$ gedit dmesg.txt

També haguéssim pogut obrir el gedit des de l'escriptori del Gnome a Aplicacions -> Accessoris -> Editor de text gedit. Un cop dins d'aquest podriem "obrir" i triar l'axiu "dmesg.txt". Tot això ho hem fet amb una sola comanda (gedit dmesg.txt).

Afegint text a un arxiu[modifica]

Si al nostre arxiu li volem afegir una línia més de text es pot fer amb el símbol ">>":

enric@pepino:~$ ls > directori.txt
enric@pepino:~$ echo "DARRERA LINIA" >> directori.txt
enric@pepino:~$ tail -n 3 directori.txt
vlc-log.txt
www
DARRERA LINIA
enric@pepino:~$

Pipe "|"[modifica]

Pipe significa "tub" en anglès. En la shell és el signe que és com un pal vertical (|) i de vegades està dividit per la meitat. El podem escriure amb ALTGR+1.

Ens permet encadenar comandes i reenviar el resultat d'una d'elles a la següent comanda.

Per exemple, si volem filtrar (amb la comanda grep) totes les línies del dmesg que continguin la paraula "cpu" podem fer-ho així:

enric@pepino:~$ dmesg | grep CPU
[    0.000000] SMP: Allowing 4 CPUs, 0 hotplug CPUs
[    0.000000] NR_CPUS:64 nr_cpumask_bits:64 nr_cpu_ids:4 nr_node_ids:1
[    0.000000] PERCPU: Embedded 30 pages/cpu @ffff880028200000 s91544 r8192 d23144 u524288
[    0.000000] Initializing CPU#0
[    0.000000] SLUB: Genslabs=14, HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.013585] CPU: L1 I cache: 32K, L1 D cache: 32K
[    0.013587] CPU: L2 cache: 4096K
[...etc...]

Com podeu comprovar, la meva màquina "pepino" disposa de 4 CPUs (Intel Quad Core).

Si volem que el grep no distingeixi majúscules de minúscules podem afegir-li el paràmetre "-i":

enric@pepino:~$ dmesg | grep -i cpu

Executeu les dues comandes i veureu que el resultat és diferent.

Si no disposéssim del pipe hauríem de redirigir el text del dmesg a un arxiu i despreś filtrar-ho amb el grep. D'aquesta manera ho fem tot en una sola línia.