Diferència entre revisions de la pàgina «Linux bàsic»
(comandes) |
|||
(Hi ha 3 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). | ||
− | + | Abans de llegir aquest article potser et convé llegir sobre el què és un [[sistema operatiu]]. | |
− | == | + | == Estructura d'arxius del Linux == |
− | [[Imatge: | + | [[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: | 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 / | $ ls / | ||
Línia 69: | Línia 38: | ||
[...etc...] | [...etc...] | ||
+ | <br> | ||
=== Directori d'usuari === | === Directori d'usuari === | ||
Línia 85: | Línia 55: | ||
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. | 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 == | == 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'''''). | 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 exemple: | + | 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''' | enric@pepino:~$ '''man ls''' | ||
LS(1) User Commands LS(1) | LS(1) User Commands LS(1) | ||
Línia 135: | Línia 106: | ||
enric@pepino:~$ | 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: | * '''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 | + | enric@pepino:~$ '''more /etc/samba/smb.conf''' |
# | # | ||
# Sample configuration file for the Samba suite for Debian GNU/Linux. | # Sample configuration file for the Samba suite for Debian GNU/Linux. | ||
Línia 147: | Línia 118: | ||
* '''head''' ens mostra les primeres línies d'un arxiu de text. Per exemple, per mostrar les 5 primeres línies d'un arxiu: | * '''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 | + | enric@pepino:~$ '''head -n 5 /etc/samba/smb.conf''' |
# | # | ||
# Sample configuration file for the Samba suite for Debian GNU/Linux. | # Sample configuration file for the Samba suite for Debian GNU/Linux. | ||
Línia 155: | Línia 126: | ||
* '''tail''' ens mostra les darreres línies d'un arxiu de text. Per mostrar les darreres 4 línies faríem: | * '''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 | + | enric@pepino:~$ '''tail -n 5 /etc/samba/smb.conf''' |
[musica] | [musica] | ||
path = /media/newmedia/musica | path = /media/newmedia/musica | ||
Línia 165: | Línia 136: | ||
* '''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): | * '''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:~$ '''top -n 1 > top.txt''' |
− | enric@pepino:~$ grep enric top.txt | + | enric@pepino:~$ '''grep enric top.txt''' |
4460 enric 20 0 212m 16m 10m S 2 0.4 0:06.38 gnome-terminal | 4460 enric 20 0 212m 16m 10m S 2 0.4 0:06.38 gnome-terminal | ||
− | El què estem veient, doncs, | + | 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 == | == Algunes funcions de la shell == | ||
Línia 177: | Línia 147: | ||
* Pipe: encadenament de comandes. | * Pipe: encadenament de comandes. | ||
+ | <br> | ||
=== Redirecció de la sortida estàndard === | === Redirecció de la sortida estàndard === | ||
Línia 209: | Línia 180: | ||
=== Afegint text a un arxiu === | === Afegint text a un arxiu === | ||
Si al nostre arxiu li volem afegir una línia més de text es pot fer amb el símbol ">>": | 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:~$ '''echo "DARRERA LINIA" >> directori.txt''' | ||
enric@pepino:~$ '''tail -n 3 directori.txt''' | enric@pepino:~$ '''tail -n 3 directori.txt''' | ||
Línia 215: | Línia 187: | ||
'''DARRERA LINIA''' | '''DARRERA LINIA''' | ||
enric@pepino:~$ | enric@pepino:~$ | ||
− | |||
=== Pipe "|" === | === Pipe "|" === |
Revisió de 16:43, 20 nov 2015
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.
Contingut
Estructura d'arxius del Linux[modifica]
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".
- 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.