interpret_comandes

Learning the shell (Breu tutorial de l'intèrpret d'ordres)

© 2000-2007, William Shotts, Jr. Verbatim copying and distribution of this entire article is permitted in any medium, provided this copyright notice is preserved.

Traducció al català (2007) JosepSànchez (papapep). Revisió: RafaelCarreras

Índex

Per què molestar-se?

Fet i debatut, per què cal aprendre res de l'intèrpret d'ordres? Bé, deixeu-me que us expliqui una història. Fa no massa, a la feina vàrem tenir un problema. Teníem una unitat compartida a un dels nostres servidors de fitxers que s'estava emplenant. No faré esment que el sistema operatiu que portava el sistema no permet establir quotes d'usuari; això és una altra història. Però el servidor era cada cop més i més ple i entorpia el treball dels usuaris. Un dels enginyers de programari de la nostra empresa va passar gairebé tot un dia fent un programa en C++ el qual s'encarregaria de buscar als directoris personals dels usuaris quant d'espai consumien i fer-ne un informe.

Com que em van obligar a utilitzar el sistema operatiu que portava el servidor, hi vaig instal·lar un intèrpret d'ordres bash que hi funcionava. Quan vaig saber del problema, em vaig adonar que podia fer tota la feina que l'enginyer havia fet amb aquesta única línia:

du -s * | sort -nr > $HOME/informe_ocupacio.txt

Les interfícies gràfiques (GUI) van bé per a moltes feines, però no són bones per a totes les tasques. Molt cops he pensat que els ordinadors actuals no funcionen amb electricitat, sinó que sembla que funcionin amb l'energia de les pulsacions del ratolí! Els ordinadors van ser pensats per a alliberar-nos de molta feina manual, però quants cops heu fet una tasca que sabíeu perfectament que l'ordinador hauria de poder fer? Vau acabar fent la feina amb la tediosa rutina d'apuntar i clicar, apuntar i clicar. Un cop vaig sentir un comentari d'un autor que deia que quan som nens utilitzem els ordinadors mirant els dibuixets. Quan creixem, aprenem a llegir i escriure.

Benvinguts a Alfabetització informàtica 101 Wink ;) . Ara posem-nos a treballar.

Què és un «intèrpret d'ordres»?

De manera planera, un intèrpret d'ordres és un programa que agafa les teves comandes del teclat i les passa al sistema operatiu per a la seva execució. Molt temps enrere, era l'única interfície d'usuari amb un ordinador Unix. Avui en dia, tenim interfícies gràfiques d'usuari (GUI) a més de les interfícies de línia de comandes (CLI), com l'intèrpret d'ordres.

A la majoria de sistemes Linux, un programa anomenat bash (el qual significa Bourne Again Shell, una versió millorada del programa Bourn shell, sh, escrit per l'Steve Bourne) fa la funció d'intèrpret d'ordres. Hi ha molts altres intèrprets d'ordres disponibles als sistemes Linux. Per exemple: ksh, tcsh i zsh.

Què és un xterm, gnome-terminal, konsole, etc.?

Aquests programes s'anomenen «emuladors de terminal». Són programes que obren una finestra i us permeten interaccionar amb l'intèrpret d'ordres. Hi ha un munt d'emuladors de terminal. La majoria de distribucions Linux en porten uns quants: xterm, rxvt, konsole, kvt, gnome-terminal, nxterm i eterm.

Executant un terminal

El vostre gestor de finestres probablement pot executar programes des d'un menú. Cerqueu al llistat de programes a veure si trobeu alguna cosa que sembli un programa emulador de terminal. Al Gnome, hi trobareu «color xterm», «regular xterm» i «gnome-terminal» al menú «Accessoris». Al KDE, hi trobareu «konsole» i «terminal» al menú d'utilitats. Podeu obrir tants programes d'aquests com vulgueu i jugar amb ells. Tingueu present que encara que aquests emuladors de terminal són programes diferents, tots fan exactament la mateixa funció. Probablement, acabareu tenint el vostre preferit, en funció de les diferents particularitats que cadascun té.

Provant el teclat

D'acord, anem a prémer unes quantes tecles. Podeu veure l'indicador de l'intèrpret d'ordres que mostra el vostre nom i el nom de l'ordinador seguit del signe del dòlar. Una cosa semblant a això:

interpretordres.png

Imatge 1

Perfecte! Ara teclegem alguns caràcters sense sentit i premem la tecla Enter:

comandaerronia.png

Imatge 2

Si tot ha anat com ha d'anar, haurà aparegut un missatge d'error queixant-se que no entén què voleu fer:

errorconsola.png

Imatge 3

Molt bé! Ara premeu la tecla «fletxa amunt». Mireu com torna a aparèixer la vostra última ordre.

Sí, hi ha un històric de comandes. Premeu la tecla «fletxa avall» i tornareu a tenir la línia en blanc.

Si us cal, podeu recuperar la ordre «aijefiajeifxmia» prement la tecla «fletxa amunt». Si premeu les tecles «fletxa esquerra» i «fletxa dreta» podreu posicionar el cursor on volgueu de la línia de comandes. Això permet editar de manera fàcil les errades tipogràfiques o de sintaxi.

Warning /!\ No ets l'usuari root, oi??

No treballeu mai com a superusuari excepte que sigui un cas d'absoluta necessitat. Fer-ho de manera indiscriminada i no necessària és perillós, estúpid i de poca classe

Creeu-vos un compte d'usuari propi ara mateix!!

Fent servir el ratolí

Tot i que l'intèrpret d'ordres és una interfície de línia de comandes, podeu fer-hi servir el ratolí per a moltes coses. Això és així si teniu un ratolí de tres botons; i hauríeu de tenir un ratolí de tres botons si voleu fer servir Linux.

Primer, podeu fer servir el ratolí per a desplaçar-vos amunt i avall per la sortida de la finestra del terminal. Com a demostració, premeu la tecla enter fins que el cursor es desplaci finestra avall. Ara, amb el ratolí, podeu utilitzar la barra de desplaçament de la finestra de terminal per a moure el contingut de la finestra amunt i avall.

Si feu servir l'xterm, podeu trobar-ho difícil, donat que cal el botó del mig per a fer aquesta operació. Si teniu un ratolí de dos botons haurà d'estar configurat per a emular un de tres botons. Això significa que el botó del mig es pot simular prement simultàniament el botó de la dreta i de l'esquerra.

Seguidament, podeu copiar text amb el ratolí. Marqueu amb el ratolí un tros de text (per exemple, “aijefiajeifxmia” d'aquí el navegador de l'internet) mentre aguanteu el botó esquerra del ratolí. El text hauria de quedar ressaltat. Ara moveu el punter del ratolí a l'emulador de terminal i premeu el botó del mig del ratolí. El text que heu ressaltat al navegador s'hauria d'haver copiat a la línia de comandes. Us havia dit que us faria falta un ratolí de tres botons?

Uns quants comentaris sobre el focus...

Quan heu instal·lat el vostre sistema Linux i el seu gestor de finestres (segurament Gnome o KDE), aquest s'ha configurat per a comportar-se en certa manera com un sistema operatiu antic.

Més concretament, és probable que tingui definit el comportament del focus com a “clicar per a obtenir focus”. Això significa que per a que una finestra obtingui el focus (sigui la finestra activa) hi heu de clicar dins. Això és el contrari del comportament tradicional de les finestres X. Si seguiu el meu consell i teniu un ratolí de tres botons, voldreu configurar la política de comportament del focus com a “el focus segueix el ratolí”. Això farà molt més fàcil el fet de copiar text a les finestres X.

Potser trobareu estrany que la finestra no passi a primer pla quan obtingui el focus (haureu de clicar a la barra de títol per a fer-la passar al davant), però us ho passareu bé podent treballar simultàniament amb més d'una finestra sense tenir la finestra activa tapant la resta. Proveu-ho i doneu-li una oportunitat; crec que us agradarà. Trobareu aquest paràmetre a l'eina de configuració del vostre gestor de finestres.

En aquesta lliçó, introduïrem les primeres tres comandes: pwd (imprimeix el directori actual), cd (canvia el directori) i ls (llista els fitxers i directoris). Si no heu treballat mai abans amb una interfície de línia de comandes, haureu d'estar molt atents, ja que us costarà una miqueta acostumar-vos als conceptes.

Organització del sistema de fitxers

Igual que els sistemes operatius antics que hem esmentat abans, en un sistema Linux els fitxers estan organitzats en el que s'anomena estructura jeràrquica de directoris. Això vol dir que estan organitzats en una estructura de directoris (anomenats carpetes en altres sistemes) en forma d'arbre, els quals contenen fitxers i subdirectoris. El primer directori del sistema (el que és dalt de tot de l'arbres) s'anomena arrel (root) [1]. El directori root conté fitxers i subdirectoris, els quals poden tenir dins més fitxers i subdirectoris, i així fins l'infinit [2].

navegadorpetit.png

Imatge 4

Una diferència important entre els sistemes operatius antics i Unix/Linux és que el Linux no utilitza el concepte de lletres d'unitat. Mentre les lletres d'unitat divideixen el sistema de fitxers en diferents arbres (un per a cada unitat), el Linux només en té un. Diferents suports d'emmagatzematge poden contenir diferents branques de l'arbre, però només hi ha un arbre.

pwd

Com que la interfície de línia de comandes no proporciona una imatge gràfica de l'estructura del sistema de fitxers, ha de tenir una manera diferent de mostrar-ho. Penseu en el sistema de fitxers com en un laberint, i vosaltres hi sou a dins. En qualsevol moment, podeu estar en un directori. Dins d'aquest directori, podreu veure quins fitxers hi ha, el camí fins el directori superior i el camí fins els subdirectoris que pengen del que ara sou a dins.

El directori al qual esteu s'anomena directori de treball. Per a saber en quin directori sou, utilitzeu l'ordre pwd.

pwd.png

Imatge 5

Quan entreu per primer cop a un sistema Linux, el directori de treball és el vostre directori personal. Aquí és on desareu el vostres fitxers. A la majoria de sistemes, el vostre directori personal tindrà el nom /home/el_nom_del_teu_usuari, però podria ser qualsevol cosa que li faci gràcia al vostre administrador de sistemes :).

Per a llistar els fitxers que hi ha dins el directori de treball, empreu l'ordre ls.

ls.png

Imatge 6

Tornarem a parlar de l'ordre ls a la següent lliçó. Es poden fer moltes coses divertides amb ella, però hem de parlar una mica de camins i directoris abans.

cd

Per a canviar el directori de treball (on sou actualment dins del laberint), emprem l'ordre cd. Per a fer-ho, teclejareu cd seguit del camí del directori de treball on voleu anar. Un camí és una ruta que agafeu per les branques de l'arbre del sistema de fitxers fins al directori on voleu anar a parar. Els camins es poden indicar de dues maneres: camins absoluts o camins relatius. Primer ens ocuparem dels camins absoluts.

Un camí absolut comença amb el directori arrel (representat per una barra inclinada a la dreta «/» a l'inici del camí) i segueix l'arbre branca per branca fins que es completa el camí fins el directori destí. Per exemple, hi ha un directori al vostre sistema on rauen els programes instal·lats pel servidor de finestres X. El camí del directori és /usr/X11R6/bin.

Això significa que des del directori arrel trobarem un directori anomenat «usr», el qual conté un altre directori anomenat «X11R6» el qual conté un altre directori anomenat «bin».

Anem a provar-ho:

cdpwdls.png

Imatge 7

Ara podem veure que hem canviat el directori de treball a /usr/X11R6/bin i que hi ha un munt de fitxers dins. Us heu adonat que l'indicador de la línia de comandes ha canviat? Per a més comoditat, se sol configurar l'indicador de manera que indiqui el nom del directori de treball actual.

Així com un camí absolut comença a partir del directori arrel i arriba fins al directori destí, un camí relatiu comença al directori de treball. Per a fer això, fem servir un parell de símbols especials amb la finalitat de representar posicions relatives dins de l'arbre del sistema de fitxers. Aquest símbols són «.» (punt) i «..» (punt punt).

El símbol «.» fa referència al directori de treball i el símbol «..» fa referència al directori «pare» (l'immediat superior) del directori de treball. Anem a posar-ho en pràctica. Tornem a canviar al directori /usr/X11R6/bin:

cd.png

Imatge 8

D'acord, ara suposem que volem canviar el directori de treball al pare del /usr/X11R6/bin, que és /usr/X11R6. Podem fer-ho de dues maneres.

Primer amb un camí absolut:

cd.png

Imatge 9

Després amb un camí relatiu:

camirelatiu.png

Imatge 10

Dos mètodes diferents amb idèntic resultat. Aleshores, quin és l'aconsellable? El que porti menys feina!!

De la mateixa manera, podem canviar el directori actiu de /usr/X11R6 a /usr/X11R6/bin de dues maneres.

Primer usarem un camí absolut:

cd2-1.png

Imatge 11

I, seguidament, un camí relatiu:

cd2-2.png

Imatge 12

Hi ha una cosa important a tenir en compte. La majoria de cops, es pot ometre el «./», aquest és implícit.

Teclejeu:

cd2-3.png

Imatge 13

Això farà la mateixa feina, el directori de treball s'assumeix.

Hi ha una excepció important a aquesta norma, però no en parlarem fins d'aquí una estona.

Un parell de dreceres

Si teclejeu cd, sense res al darrera, l'ordre cd us portarà del directori de treball al vostre directori personal.

Una drecera semblant és teclejar cd ~nom_de_usuari. En aquest cas, cd us portarà del directori de treball fins el directori personal de l'usuari que s'ha especificat a l'ordre.

Info (!) Fets importants sobre els noms dels fitxers

1. Els noms dels fitxers que comencen amb un punt (.) són fitxers ocults. Això només implica que no es veuran en llistar els fitxers excepte que ho indiqueu a l'ordre amb un ls -a. Quan es va crear el vostre compte, es van crear molts fitxers ocults al vostre directori personal per a tasques de configuració. Més endavant, farem un cop d'ull més a fons a algun d'aquests fitxers per a aprendre com es parametritza l'entorn d'usuari. A més, alguns programes posaran els seus fitxers de configuració al vostre directori personal com a fitxers ocults.

2. Els noms de fitxers a Linux, com a Unix, distingeixen entre majúscules i minúscules. El nom de fitxer «Fitxer1» i «fitxer1» fan referència a diferents fitxers.

3. El Linux no té el concepte d'«extensió de fitxer», com els sistemes operatius antics. Podeu anomenar els fitxers com us plagui. El contingut i propòsit dels fitxers es determina d'una manera diferent. Mentre que el Linux és compatible amb els noms llargs de fitxer, els quals poden contenir espais i caràcters de puntuació, limita els caràcters de puntuació a punt, guió i guió baix. És molt important no posar espais dins del nom dels fitxers. Si voleu representar espais entre paraules al nom d'un fitxer, empreu guions baixos, us ho agraïreu més endavant.

Fent un cop d'ull

Ara que sabem com mouren's d'un directori de treball a un altre, farem una volta pel nostre sistema Linux i, de passada, aprendrem unes quantes coses de les que fan servei. Però, abans de començar, haureu d'aprendre algunes eines que seran molt útils durant la nostra aventura.

Aquestes són:

  • ls (llista fitxers i directoris)

  • less (visualitza fitxers de text)

  • file (classifica el contingut d'un fitxer)

ls

L'ordre ls s'utilitza per a llistar el contingut d'un directori. Probablement és l'ordre del Linux més utilitzada. Es pot emprar de maneres molt diferents. Alguns exemples de l'ordre ls:

Ordre

Resultat

ls

Llista els fitxers dins els directori de treball.

ls /bin

Llista els fitxers dins el directori /bin (o qualsevol altre directori que especifiqueu a l'ordre)

ls -l

Llista els fitxers del directori de treball en format llarg

ls -l /etc /bin

Llista els fitxers dels directoris /bin i /etc en format llarg

ls -la ..

Llista tots els fitxers (fins i tot els que comencen amb un punt, que són ocults) del directori pare del de treball en format llarg

Aquests exemples també ressalten un concepte important sobre les comandes. La majoria de comandes funcionen de la següent manera:

  • ordre -opcions arguments

on ordre és el nom de l'ordre que executem, -opcions és un o més paràmetres que determinaran el comportament de l'ordre, i arguments és una o més «coses» sobre les que l'ordre operarà.

En el cas de ls, veiem que «ls» és el nom d'una ordre, i que pot tenir una o més opcions, com -a i -l, i que pot operar sobre un o més fitxers o directoris (els arguments).

Un cop d'ull de més aprop al format llarg

Si feu servir l'ordre ls amb l'opció -l, obtindreu un llistat de fitxers que contindrà una munió d'informació sobre els fitxers que s'han llistat.

Per exemple:

-rw-------   1 papapep  papapep       576 Apr 17  1998 weather.txt
drwxr-xr-x   6 papapep  papapep      1024 Oct  9  1999 web_page
-rw-rw-r--   1 papapep  papapep    276480 Feb 11 20:41 web_site.tar
-rw-------   1 papapep  papapep      5743 Dec 16  1998 xmas_file.txt

----------     -------  -------  -------- ------------ -------------
    |             |        |         |         |             |
    |             |        |         |         |         Nom del fitxer
    |             |        |         |         |
    |             |        |         |         +---  Data de modificació
    |             |        |         |
    |             |        |         +-------------   Mida (en bytes)
    |             |        |
    |             |        +-----------------------        Grup
    |             |
    |             +--------------------------------        Propietari
    |
    +----------------------------------------------   Permisos del fitxer

Imatge 14

Nom del fitxer

  • El nom del fitxer o el directori

Data de modificació

  • L'últim cop que el fitxer ha estat modificat. Si l'última modificació va ser fa més de sis mesos, es mostrarà la data i l'any. En cas contrari, es mostrarà la data i l'hora [3].

Mida

  • La mida del fitxer en bytes

Grup

  • El nom del grup que té drets d'accés al fitxer a més del propietari del fitxer.

Propietari

  • El nom de l'usuari propietari del fitxer.

Permisos del fitxer[4]

  • Una representació dels drets d'accés (permisos) del fitxer. El primer caràcter és el tipus de fitxer. Un guió (-) indica un fitxer normal. Una «d» indica un directori. El segon joc de tres caràcters representa els drets de lectura (r- Read), escriptura (w-Write) i execució (x-eXecute) (en aquest ordre) del propietari del fitxer. El tercer joc de tres representa els drets sobre el fitxer del grup (de la mateixa manera que els del propietari), i els tres finals els de la resta d'usuaris.

less

less és un programa que us permet veure fitxers de text. Això és molt pràctic donat que molts dels fitxers emprats per a controlar i configurar el Linux són de text llegible pels humans (en contraposició amb altres sistemes antics).

Què és «text»?

Hi ha moltes maneres de representar informació en un ordinador. Tots els mètodes inclouen definir una relació entre la informació i alguns números que es faran servir per a representar-la. Els ordinadors, recordeu, només entenen números i totes les dades es passen a representació numèrica [5].

Alguns d'aquests sistemes de representació són molt complexes (com els fitxers d'imatges comprimides), mentre d'altres són considerablement simples. Un dels més antics i simples s'anomenen de 'text ASCII'. ASCII (es pronuncia ASKI) significa Codi Estàndard Americà per a Intercanvi d'Informació (American Standard Code for Information Interchange). És un esquema de codificació prou simple que es va emprar inicialment als teletips per a mapar caràcters del teclat a nombres.

El text és un mapat molt simple d'un a un de caràcters a nombres. És molt compacte. Cinquanta caràcters de text es converteixen en 50 bytes de dades. En un sistema Linux, molts fitxers es desen en format de text i hi ha moltes eines Linux que treballen amb fitxers de text.

Fins i tot els sistemes operatius antics reconeixen la importància d'aquest format. El ben famós NOTEPAD.EXE és un editor de fitxers de text pla en format ASCII.

El programa less és crida teclejant:

less fitxer_de_text

Aquesta ordre mostrarà el fitxer per pantalla.

Controlant less

Un cop invocat, less mostrarà el fitxer de text, paginant-lo. Podeu emprar les tecles Pàgina amunt i Pàgina avall per moure-us pel text del fitxer. Per sortir de less, premeu «q».

Algunes comandes que less accepta:

Comandes de teclat per al less

Ordre

Acció

Pàgina amunt o b

Anar una pàgina enrera

Pàgina amunt o espai

Anar una pàgina endavant

G

Anar al final del fitxer de text

1G

Anar al principi del fitxer de text

/caràcters

Cerca cap endavant del text si troba alguna ocurrència dels caràcters especificats

n

Repeteix la cerca anterior

q

Sortir (quit)

file

Quan feu una volta pel vostre sistema Linux, és útil poder determinar què conté un fitxer abans d'intentar visualitzar-lo. Aquí és on l'ordre file entra en acció. file examinarà el fitxer i us dirà de quina mena és.

Per a executar el programa file, teclegeu:

file nom_del_fitxer

El programa file pot reconèixer la majoria de tipus de fitxers, com:

Diversos tipus de fitxers

Tipus de fitxer

Descripció

Visualitzable com a text?

Text ASCII

El nom ho diu tot

Fitxer script del Bourne-Again shell (Bash)

Un script de Bash

Fitxer ELF 32-bit LSB

Un volcat de memòria (un programa l'ha creat quan ha petat)

no

Executable ELF 32-bit LSB

Un programa binari executable

no

Objecte compartit ELF 32-bit LSB

Una biblioteca compartida

no

Arxiu GNU tar

Un fitxer d'arxiu de cinta. Una manera habitual de desar grups de fitxers.

no, feu servir tar tvf per a veure'n el llistat

dades comprimides amb gzip

Un arxiu comprimit amb gzip

no

Un document HTML

Una pàgina web

Dades d'imatges JPEG

Una imatges comprimida JPEG

no

Un document Postscript

Un fitxer postscript

DEB

Un arxiu del gestor de paquets de Debian

no, feu servir apt-cache show nom_del_paquet per a saber què hi ha dins

Arxiu de dades Zip

Un arxiu comprimit amb zip

no

Tot i que sembla que la majoria de fitxers no es poden visualitzar com a text, us quedareu sorpresos de quants sí que podeu. Això és especialment cert en referència als fitxers de configuració.

També us adonareu durant la vostra aventura que moltes prestacions del vostre sistema operatiu es controlen amb scripts de l'intèrpret d'ordres. Al Linux no hi ha secrets! Wink ;)

Una visita guiada

És hora de fer una volteta. La següent taula mostra alguns llocs interessants de visitar. No és una llista completa, però serveix per a provar que és una aventura ben interessant. Per a cadascun dels directoris llistats, feu el següent:

  • cd dins de cada directori

  • Empreu ls per a llistar el contingut del directori

  • Si veieu algun fitxer interessant, empreu l'ordre file per a determinar el seu contingut.

  • Per a fitxers de text, empreu less per a visualitzar-los.)

Directoris interessants i el seu contingut

Directori

Descripció

/

El directori arrel [1] on comença el sistema de fitxers. En la majoria de casos, el directori arrel només conté subdirectoris.

/boot

Aquí és on hi ha el nucli Linux. És un fitxer anomenat vmlinuz.

/etc

El directori /etc conté els fitxers de configuració del sistema. La majoria de fitxers dins /etc són fitxers de text. Fixem-nos en:
/etc/passwd El fitxer passwd conté informació essencial per a cada usuari. És on es defineixen els usuaris.
/etc/rc.d Aquest directori conté els scripts que inicien el sistema.

/bin, /usr/bin

Aquests dos directoris contenen la majoria de programes del sistema. El directori /bin té els programes essencials que el sistema necessita per a funcionar, mentre que /usr/bin conté aplicacions per als usuaris del sistema.

/sbin, /usr/sbin

Els directoris sbin contenen programes per a l'administració del sistema, la majoria per al superusuari.

/usr

El directori /usr conté una varietat de coses que serveixen per a les aplicacions d'usuari. Punts ressaltables:
/usr/X11 El sistema X Windows (el servidor gràfic)
/usr/dict Diccionaris per als correctors ortogràfics. M'hi jugo un pèsol a que no sabieu que el Linux té corrector ortogràfic. Veieu look i ispell.
/usr/doc Diversos fitxers de documentació en formats variats.
/usr/man Les pàgines man (de manual) es desen aquí.
/usr/src Els fitxers de codi font. Si vàreu instal·lar el paquet de codi font del nucli, en trobareu aquí tot el codi font.

/usr/local

/usr/local i els seus subdirectoris serveixen per a la instal·lació de programari i altres fitxers per a ser emprats a la màquina local. El que vol dir realment és que el progrmari que no forma part «oficialment» de la vostra distribució (el qual normalment va a /usr/bin) anirà aquí.
Quan trobeu programari interessant per a instal·lar al vostre sistema, s'hauria d'instal·lar als directoris sota /usr/local. Habitualment, se solen instal·lar a /usr/local/bin

/var

El directori /var conté fitxers que canvien a mida que el sistema s'executa. Això inclou:
/var/log Aquest directori conté els fitxers de registre del sistema. Aquests es van actualitzant a mida que el sistema s'executa. Podeu veure els fitxers d'aquest directori de tant en tant, per a comprovar l'estat del vostre sistema.
/var/spool Aquest directori serveix per a tenir-hi els fitxers que són en cua per a algun procés, com els missatges de correu eelectrònic i els treballs d'impressió. Quan el correu d'un usuari arriba al sistema (suposant que teniu correu), els missatges es desen primer a /var/spool/mail

/lib

Les biblioteques compartides (semblant a les DLL's d'altres sistemes operatius [6]) es desen aquí.

/home

/home és on els usuaris desen els vostres fitxers personals. Generalment, és l'únic lloc on els usuaris tenen permisos d'escriptura. Això serveix per a mantenir el sistema net i estable. :-)

/root

Aquest és el directori personal del superusuari

/tmp

/tmp és un directori on els programes hi desen els seus fitxers temporals

/dev

El directori /dev és un directori especial, donat que no conté fitxers en el sentit habitual de la paraula. En canvi, conté dispositius que són disponibles pel sistema. Al Linux (com al Unix), els dispositius es tracten com a fitxers. Podeu llegir i escriure a dispositius com si fossin fitxers. Per exemple, /dev/fd0 és la primera unitat de disquet, /dev/hda és el primer disc dur IDE. Tots els dispositius que el nucli entén, es representen aquí.

/proc

El directori /proc també és especial. Aquest directori no conté fitxers. De fet, aquest directori realment ni existeix :-D És completament virtual. El directori /proc conté petites "finestres" al propi nucli. Dins d'aquest directori, hi ha un grup d'entrades numerades que corresponen als processos que s'estan executant al sistema. A més, hi ha un nombre d'entrades numerades que permeten l'accés a la configuració actual del sistema. Moltes d'aquestes entrades es poden visualitzar. Proveu a visualitzar /proc/cpuinfo. Aquesta entrada us mostrarà el que opina el nicli del processador del vostre ordinador

/mnt

Finalment, trobem /mnt, un directori normal que es fa servir d'una manera especial. El directori /mnt es fa servir pels punts de muntatge. Com hem aprés abans, els diferents dispositius físics d'emmagatzematge (com els discs durs) són vinculats a l'arbre del sistema de fitxers a diferents llocs. Aquest procés de vincular un dispositiu a l'arbre es diu muntatge. Per a poder fer disponible un dispositiu, primer s'ha de muntar.
Quan el vostre sistema s'engega, llegeix una llista d'instruccions de muntatge del fitxer /etc/fstab, el qual descriu quin dispositiu es munta a quin punt de muntatge de l'arbre de directoris. Això s'encarrega dels discs durs, però també podeu tenir dispositius dels anomenats temporals, com CD-ROM i disqueteres. Donat que aquests són extraïbles, no es tenen muntats tota l'estona. El directori /mnt proporciona un lloc adient per a muntar aquests dispositius temporals. En una instal·lació normal, podreu veure els directoris /mnt/floppy i /mnt/cdrom. Per a veure quins dispositius i punts de muntatge es fan servir, teclegeu mount

Manipulant fitxers

Aquesta lliçó parlarà de les següents ordres:

  • cp - copiar fitxers i directoris

  • mv - moure i canviar de noms fitxers i directoris

  • rm - esborrar fitxers i directoris

  • mkdir - crear directoris

Aquestes quatre ordres són de les més emprades al Linux. Són les ordres bàsiques per a manipular tant fitxers com directoris.

Actualment, per a ser honest, algunes de les tasques que fan es poden fer de manera més fàcil amb un gestor gràfic de fitxers. Amb un gestor de fitxers, podeu arrossegar i deixar anar un fitxer d'un directori a un altre, tallar i enganxar fitxers, esborrar fitxers, etc. Així, per què hem d'utilitzar aquesta arcaica línia d'ordres?

La resposta és poder i flexibilitat. Tot i que és simple fer coses amb un gestor gràfic de fitxers les tasques complicades són més fàcils de fer amb un programa de línia d'ordres. Per exemple, com copiaries tots els fitxers HTML d'un directori a un altre, però només copiant els que no existeixen al directori destí o els que són més nous que les versions que hi ha al directori destí? Considerablement complicat amb un gestor de fitxers. Molt fàcil amb la línia d'ordres:

[papapep@awacs /home]$ cp -u *.html destí

Comodins

Abans de començar a parlar d'ordres, parlarem d'una funció de la línia d'ordres que les fa tant poderoses. Donat que la línia d'ordres fa servir molt els noms de fitxers, proporciona uns caràcters especials per ajudar-nos a especificar grups de noms. Aquests caràcters especials s'anomenen comodins. Els comodins us permeten seleccionar els noms de fitxers en funció de pautes de caràcters.

La següent taula llista els comodins i el que seleccionen:

Resum de comodins i els seus significats

Comodí

Significat

*

Coincideix amb qualsevol caràcter

?

Coincideix amb qualsevol caràcter (però només un caràcter)

[characters]

Coincideix amb qualsevol joc de caràcters. El joc de caràcters es pot expressar com un interval de caràcters. (Per exemple, [A-Z] representa totes les lletres majúscules)

[!characters]

Coincideix amb qualsevol caràcter que no formi part del joc de caràcters

Utilitzant comodins, es poden construir criteris de selecció de noms de fitxers molt sofisticats. Alguns exemples de pautes i amb què coincideixen:

Exemples de coincidències de pautes de comodins

Pauta

Coincidència

*

Tots els noms de fitxer

g*

Tots els noms de fitxer que comencin amb el caràcter «g»

b*.txt

Tots els fitxers que comencin amb el caràcter «b» i que acabin amb els caràcters ".txt"

Data???

Qualsevol fitxer que comenci amb els caràcters «Data» seguits per exactament 3 caràcters més

[abc]*

Qualsevol fitxer que comenci per «a» o per «b» o per «c» i que tinguin qualsevol cosa darrera

[A-Z]*

Qualsevol fitxer que comenci amb una lletra majúscula. Aquest és un exemple d'interval

BACKUP.[0-9][0-9][0-9]

Un altre exemple d'intervals. Aquesta pauta coincideix amb qualsevol nom de fitxer que comenci amb els caràcters «BACKUP.» i segueixi amb exactament 2 nombres

[!a-z]*

Qualsevol fitxer que no comenci amb una lletra minúscula

Podeu utilitzar els comodins amb qualsevol ordre que accepti com a argument noms de fitxers.

cp

El programa cp copia fitxers i directoris. En la seva forma més simple, copia un únic fitxer en un altre únic fitxer:

[papapep@awacs /home]$ cp fitxer1 fitxer2

També es pot emprar per a copiar múltiples fitxers a un altre directori:

[papapep@awacs /home]$ cp fitxer1 fitxer2 fitxer3 directori

Altres exemples útils de cp i les seves opcions:

Exemples de l'ordre cp

Ordre

Resultat

cp fitxer1 fitxer2

Copia el contingut de fitxer1 dins fitxer2. Si fitxer2 no existeix, es crea; en cas contrari, fitxer2 es sobreescriu amb el contingut de fitxer1

cp -i fitxer1 fitxer2

Com a l'exemple anterior, però donat que s'ha especificat l'opció «-i» (interactiu), si el fitxer2 existeix es preguntarà a l'usuari abans de sobreescriure'l amb el contingut de fitxer1

cp fitxer1 dir1

Copia el contingut de fitxer1 (en un fitxer anomenat fitxer1) dins del directori dir1

cp -R dir1 dir2

Copia el contingut del directori dir1. Si el directori dir2 no existeix, es crearà. En cas contrari, es crea un directori anomenat dir1 dins del directori dir2

mv

L'ordre mv pot fer dues funcions diferents depenent de com s'empri. Pot moure un fitxer a un directori diferent, o pot canviar el nom a un fitxer o directori. Per a canviar el nom d'un fitxer, s'ha d'invocar així:

[papapep@awacs /home]$ mv nomdelfitxer1 nomdelfitxer2

Per a moure fitxers a un altre directori:

[papapep@awacs /home]$ mv fitxer1 fitxer2 fitxer3 directori

Exemples de mv i les seves opcions:

Exemples de l'ordre mv

Ordre

Resultats

mv fitxer1 fitxer2

Si el fitxer2 no existeix, aleshores es canvia el nom a fitxer1 passant-se a dir fitxer2. Si fitxer2 existeix, el seu contingut es reemplaça amb el de fitxer1

mv -i fitxer1 fitxer2

Com l'anterior, però al haver especificat l'opció «-i» (interactiu), si el fitxer2 existeix, es pregunta a l'usuari abans de sobreescriure'l amb el contingut de fitxer1

mv fitxer1 fitxer2 fitxer3 dir1

Els fitxers fitxer1, fitxer2, fitxer3 es mouran al directori dir1. dir1 ha d'existir, o l'ordre s'acabarà amb un error

mv dir1 dir2

Si dir2 no existeix, dir1 passa a dir-se dir2. Si dir2 existeix, es crea un directori de nom dir1 dins el directori dir2

rm

L'ordre rm esborra (elimina) fitxers i directories.

[papapep@awacs /home]$ rm fitxer

També es pot emprar per a esborrar directoris:

[papapep@awacs /home]$ rm -r directori

Exemples de rm i les seves opcions:

Exemples de l'ordre rm

Ordre

Resultats

rm fitxer1 fitxer2

Esborra els fitxers fitxer1 i fitxer2

rm -i fitxer1 fitxer2

Com l'anterior, però al haver especificat l'opció «-i» (interactiu), es pregunta a l'usuari abans d'esborrar cada fitxer

rm -r dir1 dir2

S'esborren els directoris dir1 i dir2 i tot el seu contingut

Warning /!\ Aneu amb molt de compte amb rm

El Linux no té una ordre per a desfer l'esborrat. Un cop heu esborrat un fitxer amb rm, aquest s'ha fos!! Podeu causar molt de mal al vostre sistema amb rm si no preneu precaucions, especialment amb els comodins.
Abans de fer servir rm amb comodins, feu servir aquest truc: construiu la vostra ordre fent servir ls en comptes de rm. Fent això, podreu veure l'efecte de la ordre abans d'esborrar els fitxers. Un cop heu verificat què fa, torneu a cridar l'ordre amb la fletxa amunt (recordeu que hi ha un històric d'ordres?) i substituïu ls amb rm dins l'ordre.

mkdir

L'ordre mkdir es fa servir per a crear directoris. Per utilitzar-la, simplement teclegeu:

[papapep@awacs /home]$ mkdir directori

Redirecció d'I/O (Entrada/Sortida)

En aquest capítol, explorarem una prestació molt potent que fan servir molts programes de línia d'ordres, anomenada "redirecció d'entrada/sortida". Com hem vist abans, moltes ordres, com ls, mostren el seu resultat pel monitor. Però no té per què ser així. Amb una sintaxi expecial, podem redirigir la sortida de moltes ordres a fitxers, dispositius i, fins i tot, a l'entrada d'una altra ordre.

Sortida estàndard

La majoria dels programes de línia d'ordres que mostren el seu resultat, ho fan enviant-lo a una utilitat anomenada «sortida estàndard». Per omissió, la sortida estàndard dirigeix el seu contingut al monitor. Per a redirigir la sortida estàndard a un fitxer, es fa servir el caràcter «>» de la següent manera:

[papapep@awacs /home]$ ls > llista_de_fitxers.txt

En aquest exemple, la ordre ls s'executa i els resultats es desen en un fitxer anomenat llista_de_fitxers.txt. Com que la sortida de ls es redirigeix al fitxer, no apareix cap resultat pel monitor. Cada cop que repetiu l'ordre, es sobreescriu el fitxer llista_de_fitxers.txt (des del principi) amb la sortida de l'ordre ls. Si, en canvi, voleu afegir els nous resultats al fitxer, empreu «>>» així:

[papapep@awacs /home]$ ls >> llista_de_fitxers.txt

Quan s'afegeixen els resultats, les noves dades s'afegiran al final del fitxer, fent-lo més gran cada cop que es repeteixi l'ordre. Si el fitxer no existeix quan intenteu afegir-hi la sortida estàndard, es crearà.

Entrada estàndard

Moltes ordres accepten dades d'una utilitat anomenada "entrada estàndard". Per omissió, l'entrada estàndard agafa el seu contingut del teclat però, com la sortida estàndard, pot ser redireccionada.

Per a redirigir l'entrada estàndard d'un fitxer en comptes del teclat, es fa servir el caràcter «<» de la següent manera:

[papapep@awacs /home]$ sort < llista_de_fitxers.txt

A l'exemple anterior, hem emprat l'ordre sort per a processar el contingut del fitxer llista_de_fitxers.txt. El resultat es mostra pel monitor donat que la sortida estàndard no està redirigida en aquest exemple. Podriem haver redirigit la sortida estàndard a un altre fitxer així:

[papapep@awacs /home]$ sort < llista_de_fitxers.txt > llista_de_fitxers_ordenada.txt

Com veieu, una ordre pot tenir tant l'entrada com la sortida redirigides. Tingueu en compte que l'ordre de les redireccions no importa. L'únic requisit és que els operadors de redirecció (els «<» i «>») han d'aparèixer després de les altres opcions i arguments de l'ordre.

Conductes

De llarg, la cosa més útil i potent que podeu fer amb les redireccions d'entrada/sortida, és connectar diverses ordres amb el que s'anomena conductes. Amb els conductes, la sortida estàndard d'una ordre va a parar a l'entrada estàndard d'una altra.

Aquest és el meu favorit:

[papapep@awacs /home]$ ls -l | less

En aquest exemple, la sortida de l'ordre ls s'envia a less. Emprant aquest truc "|less", podeu paginar la sortida de qualsevol ordre. Faig servir aquesta tècnica constantment.

Connectant diverses ordres, podeu assolir resultats sorprenents. Aquí hi ha alguns exemples que voldreu provar:

Exemples d'ordres que s'utilitzen juntes amb conductes

Ordre

Què fa

ls -lt | head

Mostra els 10 fitxers més nous dins el directori actual

du | sort -nr

Mostra un llistat de directoris i quant espai ocupen, ordenats de major a menor

find . -type f -print | wc -l

Mostra la quantitat total de fitxers a l'actual directori de treball i tots els seus directoris

Filtres

Una mena de programes que es poden fer servir amb els conductes s'anomenen filtres. Els filtres agafen l'entrada estàndard, hi treballen i envien el resultat a la sortida estàndard. D'aquesta manera, es poden fer servir per a processar informació de maneres molt potents.

Alguns programes habituals que poden fer de filtres:

Ordres de filtre habituals

Programa

Què fa

sort

Ordena l'entrada estàndard i envia el resultat ordenat a la sortida estàndard

uniq

Donat un flux de dades ordenat de l'entrada estàndard, esborra les línies duplicades (p.ex., s'assegura que dada línia és única)

grep

Examina cada línia de dades que rep de l'entrada estàndard i mostra cada línia que coincideix amb una pauta de caràcters

fmt

Llegeix text de l'entrada estàndard i la mostra formatada a la sortida estàndard

pr

Agafa text de l'entrada estàndard i el pagina amb trencaments de pàgina, capçaleres i peus de pàgina, deixant-lo preparat per a imprimir

head

Mostra les primeres línies de la seva entrada. És útil per a veure l'inici d'un fitxer

tail

Mostra les últimes línies de la seva entrada. És útil per a, per exemple, veure les últimes entrades d'un fitxer de registre

tr

Tradueix caràcters. Es pot fer servir per a fer tasques com conversions majúscules/minúscules o canviar caràcters de final de línia d'un tipus a un altre (per exemple, convertir fitxers de text DOS a fitxers de text estil Unix)

sed

Editor de flux. Pot fer traduccions més complexes que tr

awk

Un llenguatge de programació complet dissenyat per a construir filtres. Extremadament poderós

Info (!) Treballant amb els conductes

1. Imprimir des de la línia d'ordres.

El Linux proporciona un programa anomenat lpr que accepta entrada estàndard i l'envia a l'impressora. Sovint es fa servir amb conductes i filtres.
Aquí teniu un parell d'exemples:

cat informe_poc_formatat.txt | fmt | pr | lpr

cat llista_desordenada_amb_duplicats.txt | sort | uniq | pr | lpr

Al primer exemple, fem servir cat per a llegir el fitxer i enviar-lo a la sortida estàndard, la qual és dirigida a l'entrada estàndard de fmt. fmt formata el text a paràgrafs i l'envia a la sortida estàndard, la qual és redirigida a l'entrada estàndard de pr. pr separa el text en pàgines i l'envia a la sortida estàndard, la qual es redirigida novament, aquest cop a l'entrada estàndard de lpr. lpr agafa la seva entrada estàndard i l'envia a l'impressora.

El segon exemple comença amb una llista desordenada amb registres duplicats. Primer, cat envia la llista a sort la qual l'ordena i la envia a uniq la qual esborra els duplicats. Seguidament fem servir pr i lpr per a paginar-la i imprimir-la.

2. Visualitzant el contingut de fitxers tar.

Sovint veureu programari distribuït en format d'un fitxer tar comprimit amb gzip. Aquest és l'estil tradicional de fitxer de cinta Unix (creat amb tar) que s'ha comprimit amb gzip. Els podeu reconèixer per les seves extensions habituals, ".tar.gz" o ".tgz". Podeu fer servir la següent ordre per a visualitzar d'un fitxer d'aquest tipus en un sistema Linux:[[BR]]
tar tzvf nom_del_fitxer.tar.gz | less

Permisos

El sistema operatiu Unix (i també el Linux) es diferencia d'altres entorns de computació en que no només és un sistema multitasca sinó que també és un sistema multiusuari.

Què significa això exactament? Significa que més d'un usuari pot treballar amb l'ordinador simultàniament. Tot i que el vostre ordinador només té un teclat i un monitor, el pot utilitzar més d'un usuari. Per exemple, si el vostre ordinador és dins d'una xarxa, o a l'internet, els usuaris remots es poden connectar per telnet o ssh (secure shell) i treballar a l'ordinador.

De fet, els usuaris remots poden executar aplicacions gràfiques i tenir la seva sortida a l'ordinador remot. El sistema X Windows ho contempla. La capacitat multiusuari de Unix no és una «innovació», sinó una característica que és profundament arrelada al disseny del sistema operatiu. Si recordeu l'entorn en què es va crear Unix, això s'entén perfectament. Anys enrere, abans que els ordinadors fossin «personals», aquests eren grans, cars i centralitzats. Un sistema típic d'una universitat consistia en grans ordinadors centrals ubicats a algun edifici del campus i amb terminals per tot arreu del mateix, tots connectats amb l'ordinador central. L'ordinador permetia molts usuaris simultanis.

Per a poder-ho portar a la pràctica, s'havia d'idear un mètode per a protegir els usuaris l'un de l'altre. Evidentment, no es podia permetre que l'acció d'un usuari bloquegés l'ordinador, ni es podia permetre que un usuari interferís amb els fitxers d'altres usuaris.

Aquest capítol parlarà de les següents ordres:

  • chmod - modificar els drets d'accés a fitxers
  • su - esdevenir temporalment el superusuari
  • chown - canviar el propietari d'un fitxer
  • chgrp - canviar el grup propietari d'un fitxer

Permisos de fitxers

El Linux fa servir el mateix esquema de permisos que el Unix. Cada fitxer i directori al vostre sistema té assignats uns drets d'accés per al propietari del fitxer, els usuaris membres d'un grup donat i la resta del món. Els drets es poden assignar per a llegir un fitxer, escriure'l i executar-lo (p. ex. executar el fitxer com un programa).

Per a veure els permisos que té un fitxer, podem emprar l'ordre ls de la següent manera:

[papapep@awacs /home]$ ls -l nom_del_fitxer

-rw-rw-r-- 1 papapep   papapep   1097374 Sep 26 18:48 nom_del_fitxer

Podem determinar moltes coses examinant el resultat d'aquesta ordre:

  • El fitxer «nom_del_fitxer» té com a propietari l'usuari «papapep»
  • L'usuari «papapep» té drets de lectura i escriptura en aquest fitxer
  • El fitxer és del grup «papapep»
  • Els membres del grup «papapep» també poden llegir i escriure aquest fitxer
  • La resta d'usuaris poden llegir aquest fitxer

Provem un altre exemple. Mirarem el programa bash el qual és al directori /bin:

[papapep@awacs /home]$ ls -l /bin/bash

-rwxr-xr-x 1 root root  316848 Feb 27  2000 /bin/bash

Podem veure:

  • El propietari del fitxer «/bin/bash» és l'usuari «root»
  • El superusuari hi té drets de lectura, escriptura i execució
  • El grup propietari del fitxer és «root»
  • Els membres del grup «root» també poden llegir-lo i executar-lo
  • La resta d'usuaris poden llegir i executar aquest fitxer

Al següent diagrama, veurem com s'interpreta la primera part del llistat. Consisteix en un caràcter que indica el tipus de fitxer, seguit de tres jocs de caràcters que indiquen els drets de lectura, escriptura i execució per al propietari, grup i la resta del món.

diagrama_permisos1.png

chmod

L'ordre chmod es fa servir per a canviar els permisos d'un fitxer o directori. Per a emprar-la, s'especifiquen els permisos que se li volen assignar, i el fitxer o fitxers que es volen modificar. Hi ha dues maneres d'especificar els permisos, però només en veurem una.

És fàcil pensar en els permisos com en una sèrie de bits (que és com l'ordinador els veu).

Així funcionen:

rwx rwx rwx = 111 111 111
rw- rw- rw- = 110 110 110
rwx --- --- = 111 000 000

rwx     = 111 en binari = 7
rw-     = 110 en binari = 6
r-x     = 101 en binari = 5
r--     = 100 en binari = 4

Ara, si representeu cadascun d'aquests tres jocs de permisos (propietari, grup i altres) com un únic dígit, tenim una manera interessant d'expressar-los. Per exemple, si volem que un fitxer pugui ser llegit i escrit pel propietari, però no volem que cap altre usuari hi tingui accés, farem:

[papapep@awacs /home]$ chmod 600 nom_del_fitxer

Seguidament, mostrem una taula de nombres que contempla les configuracions habituals. Les que comencen per «7» es fan servir amb altres programes (donat que permeten l'execució) i la resta són per altre tipus de fitxers.

Valor

Significat

777

(rwxrwxrwx) No hi ha cap mena de restricció. Qualsevol pot fer qualsevol cosa. Normalment no és el que haurem de tenir.

755

(rwxr-xr-x) El propietari del fitxer pot llegir-lo, escriure'l i executar-lo. Els altres poden llegir-lo i executar-lo. Aquesta configuració és habitual pels programes dels usuaris.

700

(rwx------) El propietari del fitxer podrà llegir-lo, escriure'l i executar-lo. Ningú més podrà fer res amb aquest fitxer. Aquesta configuració és útil pels programes que només ha de fer servir el seu propietari i s'han de mantenir privats pels altres

666

(rw-rw-rw-) Tots els usuaris poden llegir i escriure el fitxer.

644

(rw-r--r--) El propietari pot llegir i escriure el fitxer i els altres només poden llegir-lo. Una configuració comuna per a fitxers de dades que tothom pot llegir però només el propietari pot modificar.

600

(rw-------) el propietari pot llegir i escriure el fitxer. Tots els altres usuaris no hi tenen cap accés. Una configuració comuna per a fitxers de dades que el propietari vol mantenir privats.

Permisos de directoris

L'ordre chmod també es pot fer servir per a controlar els permisos d'accés als directoris. Els esquemes de permisos dels directoris funcionen, bàsicament, com els dels fitxers. Tot i això, els permisos d'execució es fan servir de manera diferent. Proporcionen control als accesos de llistat de fitxers i altres coses.

Algunes configuracions útils pels directoris:

Valor

Significat

777

(rwxrwxrwx) Cap mena de restricció. Qualsevol pot llistar els fitxers, crear-ne de nous al directori i esborrar fitxers del directori. Normalment, és una bona configuració.

755

(rwxr-xr-x) El propietari del directori té ple accés. Tot els altres poden llistar el directori, però no poden crear-hi ni esborrar-hi fitxers. Aquesta configuració és comuna per a directoris que es volen compartir amb altres usuaris.

700

(rwx------) El propietari del directori té ple accés. Ningú més té cap dret. Aquesta configuració és útil per als directoris que només pot fer servir el propietari i s'han de mantenir privats per la resta d'usuaris.

Esdevenint el superusuari durant una estona

Sovint és útil esdevenir el superusuari per a fer tasques importants d'administració del sistema, però tal i com us he advertit abans (i no només ho dic jo!!), no haurieu de mantenir-vos gaire estona connectats com a superusuari. Afortunadament, hi ha un programa que dóna accés temporal amb privilegis de superusuari. Aquest programa es diu su (abreviació de «superusuari») i es pot fer servir en aquells casos que necessiteu ser el superusuari per a unes fer unes quantes tasques. Per a esdevenir el superusuari, simplement teclejeu la ordre su.

Se us demanarà la contrassenya del superusuari:

[papapep@awacs /home]$ su
Password:
[root@awacs /home]#

Després d'executar l'ordre «su», teniu una nova sessió de terminal com a superusuari. Per a sortir de la sessió de superusuari, teclegeu exit i tornareu a la sessió anterior.

Canviant el propietari d'un fitxer

Podeu canviar el propietari d'un fitxer amb l'ordre chown. Un exemple: Suposem que volem canviar l'usuari d'el fitxer un_fitxer de «papapep» a «unaltre». Podríem fer:

[papapep@awacs papapep]$ su
Password:
[root@awacs root]# chown unaltre un_fitxer
[root@awacs root]# exit
[papapep@awacs home]$

Fixeu-vos en que per a poder canviar el propietari d'un fitxer, heu de ser el superusuari. Per a fer això, en el nostre exemple hem fet servir la ordre su i, aleshores, hem executat chown. Finalment hem teclejat exit per a tornar a la nostra sessió anterior.

chown funciona de la mateixa manera amb els directoris i amb els fixers.

Canviant el grup propietari

El grup propietari d'un fitxer o directori es pot canviar amb chgrp. Aquesta ordre es fa servir així:

[papapep@awacs home]$ chgrp nou_grup algun_fitxer

A l'exemple anterior, hem canviat el grup propietari del fitxer algun_fitxer del seu grup anterior a «nou_grup». Heu de ser el propietari del fitxer o directori per a poder fer un chgrp .

Control de tasques

Al capítol anterior, hem vist algunes de les implicacions del Linux en un sistema operatiu multiusuari. En aquest, examinarem la natura multitasca del Linux i com es gestiona això amb l'interfície de l'intérpret d'ordres.

Com en qualsevol sistema operatiu multitasca, el Linux executa simultàniament diversos processos. Bé, realment semblen simultanis. A la pràctica, un ordinador amb un sol processador només pot executar una tasca cada cop, però el nicli Linux ho gestiona donant un torn a cada procés i sembla que s'executin simultàniament.

Hi ha diverses ordres que es poden fer servir per a controlar els processos. Són:

  • ps - llista els processos que s'estan executant al sistema

  • kill - envia un senyal a un o més d'un procés (normalment per a «kill» (matar-lo))

  • jobs - un sistema alternatiu per a llistar els vostres propis processos

  • bg - per a pasar un procés a segon pla

  • fg - per a passar un procés a primer pla

Un exemple pràctic

Tot i que sembli que aquest apartat és considerablement obscur, pot ser molt pràctic per a l'usuari mig que bàsicament treballa amb l'entorn gràfic. Podríeu no saber-ho, però la majoria (no tots) dels programes gràfics es poden executar des de la línia d'ordres. Aquí teniu un exemple: hi ha un petit programa anomenat xload que ve amb el sistema X Windows el qual mostra un gràfic que representa la càrrega del sistema.

Podeu executar aquest programa teclejant el següent:

[papapep@awacs home]$ xload

Adoneu-vos que apareix una petita finestra de l'xload i comença a mostrar una gràfica de la càrrega del sistema. Fixeu-vos també que l'indicador de la línia d'ordres no torna a aparèixer després d'executar el programa. Si tanqueu la finestra de l'xload, el programa es tanca i l'indicador torna a veure's.

Passant un programa a segon pla

Ara, de cara a fer-nos la vida una mica més fàcil, executarem un altre cop el programa xload, però aquest cop ho farem en un segon pla així tornarà l'indicador. Per a fer això, l'executarem així:

[papapep@awacs home]$ xload &
[1] 1223
[papapep@awacs home]$

En aquest cas, l'indicador tornarà perquè el procés s'ha enviat al segon pla.

Ara imagineu que oblideu emprar el símbol «&» per a posar el programa en segon pla. Encara podem solucionar-ho. Teclegeu «control+Z» i el procés posarà en suspensió. El procés encara existeix, però resta aturat. Per a tornar a fer funcionar el procés en segon pla, teclejeu l'ordre bg (abreviació de «background» (segon pla)).

Aquí en teniu un exemple:

[papapep@awacs home]$ xload
[2]+ Stopped xload
[papapep@awacs home]$ bg
[2]+ xload &

Llistant els vostres processos

Ara que tenim un procés en segon pla, seria útil mostrar una llista dels processos que hem llençat. Per a fer-ho, podem emprar tant l'ordre jobs com la més potent ps.

[papapep@awacs home]$$ jobs
[1]+ Running xload &

[papapep@awacs home]$$ ps
PID TTY TIME CMD
1211 pts/4 00:00:00 bash
1246 pts/4 00:00:00 xload
1247 pts/4 00:00:00 ps

[papapep@awacs home]$

Matant un procés

Suposeu que teniu un programa que no respon, com us el treieu de sobre? Feu servir l'ordre kill, per suposat. Anem a provar això amb l' xload. Primer, necessiteu identificar el procés que voleu matar. Podeu emprar tant jobs com ps. Si feu servir jobs, obtindreu un número de tasca. Amb ps, tindreu un identificador de procés (PID). Ho farem de les dues maneres:

[papapep@awacs home]$ xload &
[1] 1292

[papapep@awacs home]$ jobs
[1]+ Running xload &

[papapep@awacs home]$ kill %1

[papapep@awacs home]$ xload &
[2] 1293
[1] Terminated xload

[papapep@awacs home]$ ps
PID TTY TIME CMD
1280 pts/5 00:00:00 bash
1293 pts/5 00:00:00 xload
1294 pts/5 00:00:00 ps

[papapep@awacs home]$ kill 1293
[2]+ Terminated xload

[papapep@awacs home]$

Una mica més sobre kill

Tot i que kill es fa servir per a matar (kill en anglès) processos, el seu propòsit real és el d'enviar senyals als processos. La majoria de cops el senyal es fa servir per a dir al procés que plegui, però es pot fer més que això. Els programes (sempre que estiguin ben fets) escolten els senyals del sistema operatiu per a contestar-los, sovint per a permetre una manera elegant d'aturar-los. Per exemple, un editor de text podria escoltar per algun senyal que indiqui que l'usuari s'està desconnectant, o que l'ordinador s'està apagant. Quan rep el senyal, desa el treball en curs abans de tancar-se. L'ordre kill pot enviar diversos senyals als processos. Teclejant:

kill -l

us mostrarà un llistat dels senyals que admet. La majoria són considerablement obscurs, però n'hi ha molts d'útils de saber:

Senyal #

Nom

Descripció

1

SIGHUP

Senyal de retenció. Els programes poden escoltar aquest senyal i actuar (o no) en conseqüència.

2

SIGINT

Senyal d'interrupció. Aquest senyal s'envia als processos per a aturar-los. Els programes poden processar-lo i actuar en conseqüència. També podeu provocar directament aquest senyal teclejant directament a la finestra de terminal «control+c» mentre s'executa el programa.

15

SIGTERM

Senyal d'acabament. Aquest senyal s'envia als processos per a acabar-los. Els programes també el poden processar i actuar en funció d'ell. Podeu provocar aquest senyal directament teclejant «control+c» a la finestra del terminal on el programa s'està executant. Aquest és el senyal per omissió que envia l'ordre kill si no s'especifica cap senyal.

9

SIGKILL

Senyal de defunció. Aquest senyal causa que el nucli Linux acabi immediatament el procés. Els programes no escolten aquest senyal.

Ara suposem que teniu un programa que s'ha penjat sense possibilitats de recuperar-lo i us en voleu desfer. Heu de fer això:

  1. Empreu l'ordre ps per a obtenir l'identificador del procés (PID) que voleu acabar.

  2. Executeu una ordre kill pel PID que heu obtingut.

  3. Si el procés refusa acabar (p. ex. ignora el senyal), envieu senyals més forts fins que pari.

[papapep@awacs home]$ ps x
PID TTY STAT TIME COMMAND
2931 pts/5 SN 0:00 netscape

[papapep@awacs home]$ kill -SIGTERM 2931

[papapep@awacs home]$ kill -SIGKILL 2931

A l'exemple anterior he emprat l'ordre kill en la forma oficial. A la pràctica, és més habitual fer-ho de la següent manera donat que el senyal per defecte enviat per kill és SIGTERM i kill també pot emprar el número de senyal per comptes del nom de senyal:

[papapep@awacs home]$ kill 2931

Si el procés no s'acaba, forceu-lo amb un senyal SIGKILL:

[papapep@awacs home]$ kill -9 2931

I ja hem acabat!!!

Això conclou la sèrie de lliçons «Aprenent l'intèrpret d'ordres». A la següent sèrie, «Escrivint scripts de l'intèrpret d'ordres», veurem com es poden automatitzar tasques des del terminal.

Notes del traductor


  • [1] Cal no confondre el directori arrel (root) amb el superusuari del sistema root. Es diuen exactament igual, però no són el mateix. [2] Sempre que quedi espai al suport d'emmagatzematge, clar. [3] Al meu ordinador això no passa. Sempre mostra la data completa amb l'any i l'hora,

    però no recordo si això ho vaig modificar jo o si ja venia «de sèrie» Smile :-) [4] Trobareu molt sovint documents on els drets d'accés als fitxers es defineixen de manera numèrica amb un grup de 3 xifres:

    • La primera xifra indica el propietari, la segona el grup i la tercera la resta del món mundial Tongue out :-? Aquest nombres es generen a partir de la següent pauta: 4 = dret de lectura 2 = dret d'escriptura 1 = dret d'execució La combinació d'aquestes tres xifres donarà els drets d'accés al fitxer. Uns exemples: a) 777 (4+2+1 per l'usuari, 4+2+1 pel grup i 4+2+1 per la resta)

      Equivaldria a rwxrwxrwx en el format que explica el tutorial. Aquests permisos donarien accés global a tothom que tingui compte a l'ordinador a aquest fitxer (molt poc recomanable). b) 755 (4+2+1 per l'usuari, 4+1 pel grup, 4+1 per la resta)

      Equivaldria a rwxr-xr-x en el format que explica el tutorial. Permetrien accés total al propietari, lectura i execució al grup i a la resta del món. c) 700 (4+2+1 per l'usuari, res per al grup i res per a la resta)

      Equivaldria a rwx------ en el format que explica el tutorial. Només permetrien l'accés al propietari del fitxer, restringint-lo a la resta d'usuaris. Més exemples: A la imatge 14 vèiem:

      -rw-------   1 papapep  papapep       576 Apr 17  1998 weather.txt  Això en numèric seria 600 (4+2 per al propietari i res ni per al grup ni per a la resta.

      drwxr-xr-x   6 papapep  papapep      1024 Oct  9  1999 web_page Apart que és un directori (veieu la «d» just abans de la primera «r»?) En numèric és 755.

      -rw-rw-r--   1 papapep  papapep    276480 Feb 11 20:41 web_site.tar En numèric, 664.

    [5] Recordeu que, en última instància, els ordinadors tracten les dades, per complexes que siguin, en format binari: inacabables combinacions d'uns (1) i zeros (0). [6] això ho diu l'autor. Ja els agradaria als de Redmond tenir un sistema de gestió de paquets i, de rebot, de biblioteques mínimament semblant als del Linux.

JosepSànchez/documentació/interpret_comandes (last edited 2008-08-06 17:00:33 by localhost)