dimarts, 7 de febrer del 2012

Linux: comandaments relacionats amb fitxers

Remenant CD's hi trobat una còpia de seguretat dels apunts que vaig prepara per una assignatura de sistemes operatius, ja fa temps, però els comandaments de Linux encara són els mateixos. Per aixo, faré alguns posts on recuperaré aquest material i el poso a disposició de la xarxa.


mkdir
 
  • Crear directoris. Sintaxi: mkdir directori
  • Exemples:

  • $mkdir dades
    - Crea el directori dades en el directori actual
    $mkdir dades/textes
    - Crea el directori textes dintre del directori dades
rm
 
  • Esborrar fitxers.
  • Exemples:

  • $rm dades/textes/agenda
    - Esborra el fitxer agenda que està en el directori textes, que a la seva vegada està dintre de dades.
    $rm dades/textes -r
    - Esborra el directori dades/textes i tots els fitxers que contingui. Ull! no demana confirmació!
    $rm dades -f
    - Esborra el fitxer dades i demana confirmació abans de fer-ho (opció -f)
rmdir
 
  • Esborrar directoris
  • El directori que anem a esborrar ha de estar buit
  • Exemples:

  • $rmdir dades/textes
    - Esborra el directori dades/textes si està buit, altrament dóna error
    $rmdir dades -p
    - Esborra el directori dades i tots els directoris que contingui, sempre i quan no continguin fitxer
cp
  • Copiar fitxers. Sintaxi: cp [opcions] origen destí
  • Exemples:

  • $cp fitxer1 fitxer2
    - Còpia exacta del fitxer1 al fitxer2. Si fitxer2 no existeix, el crea.
    $cp fitxer1 fitxer2 dir1
    - Còpia fitxer1 i fitxer2 dins el directori dir1. El directori ha d'existir.
    $cp dir1/* .
    - Copia tots els fitxers de dir1 en el directori actual. No es pot posar el nom
       del directori sense posar els fitxers, en aquest cas tots (/*)
       
mv
  • Moure fitxers. Sintaxi: mv [opcions] origen destí
  • Exemples:

  • $mv fitxer1 fitxer2
    - Equival a canviar de nom fitxer1. Si fitxer2 ja existía, quedarà sobreescrit.
    $mv fitxer3 dir1
    - Mou fitxer3 al directori dir1. Despareix fitxer3 del directori actual.

more
  • Veure fitxers paginats
  • Al final de la pantalla mostra el percentatge de fitxer mostrat. Podem seguir amb

  • ENTER per moure línia a línia i amb ESPAI per moure pantalla a pantalla.
    Podem sortir amb q.
  • Exemples:

  • $more fitxer5
    - Mostrar el contingut de fitxer5 paginat.
    $more -c fitxer5
    - Mostrar fitxer5 esborrant la pantalla cada salt de pàgina
    $more -5 fitxer5
    - Mostrar fitxer5 amb 5 líneas per pàgina
    $more +10 fitxer5
    - Mostrar fitxer5 a partir de la línia 10
    $more -5 +10 fitxer5
    - Mostrar fitxer5 a partir de la línia 10 amb 5 líneas per pàgina

cat
  • Mostrar contingut, crear i concatenar fitxers
  • Exemples:

  • $cat -v fitxer5
    - Mostrar el contingut de fitxer5. Si fitxer5 és un fitxer executable amb l'opció -v no
      s'executarà. En cas contrari, sí.
    $cat fitxer5 fitxer6 >fitxer7
    - Concatena fitxer5 i fitxer6 dins fitxer7. Si fitxer7 existeix, es sobreescriurà.
file
  • Mostrar tipus del fitxer indicat (de text, programa executable, directori, etc.)
  • Exemple:

  • $file nota
    - Indica quin tipus de fitxer és nota

find
  • Localitzar un fitxer en l'estructura de directoris segons les opcions de recerca indicades
  • Exemples:

  • $find nota -print
    - Busca el fitxer nota en el directori actual. Si el trova, mostra el seu nom gràcies a l'acció -print.
      En Linux Red Hat, per defecte sempre es mostra el nom malgrat no indiquem -print.
    $find . -name nota -print
    - Busca el fitxer nota en el directori actual i tots els seus subdirectoris.
    $find .. -name nota -print
    - Busca el fitxer nota en el directori superior a l'actual i en els seus fills
    $find / -name -print
    - Busca el fitxer nota començant per el directori arrel en tot el sistema (li costa molt!). Cal tenir permís
      de lectura del directori arrel. Podem aturar la recerca amb CTRL + C
    $find / -group bin -print
    - Busca els fitxers que pertanyen al grup d'usuaris bin començant per el directori arrel.
    $find . -user alumne -print
    - Busca els fitxers que pertanyen a l'usuari alumne en el directori actual i els seus subdirectoris
    $find . -type d -print
    - Busca els fitxers de tipus "d" (directoris) en el directori actual i els mostra. Podem fer servir:
                            "d" per directoris
                            "b" fitxers de blocs de bytes
                            "c" fitxers de caracters (textes)
    $find . -perm 755 -print
    - Busca els fitxers que tinguin els permisos 7 per el propietari del fitxer, 5 per al grup i 5 per la resta
      d'usuaris. És a dir, aquells que al fer un ls -l tendrían els permisos rwxr_xr_x. La nomenclatura seguida és:
                            4  -> permís de lectura (r)
                            2  -> permís d'escriptura (w)
                            1  -> permís d'execució (x)
    La suma dels anteriors valors dóna els permisos efectius. Per exemple, 7 = 4 + 2 +1 equival a tenir els permisos
    rwx (tots) mentre que 5 = 4 + 1 equival a tenir els permisos r_x (lectura i execució).
    $find . -name nota -print -ok rm {} \;
    - Busca el fitxer nota en el directori actual i tots els seus subdirectoris. Si el troba, el mostra (-print) i demana
    permís per executar el comandament rm (esborrar fitxer). Aquesta sol.licitud (que haurem de respondre amb
    "y" o "n") la produeix el paràmetre -ok. Els espais en blanc s'han de respectar.
    Aquestes sentències s'han d'acabar amb {} \;
    Aixó significa: {} substitueix el nom del fitxer indicat en find, i els signes \; produeixen una "sequència d'escape"
    per tornar a l'indicador del shell ($).
    $find / -name cal -print -ok cal \;
    - Busca des de l'arrel el fitxer anomenat cal i quan el troba demana permís per a executar-lo (-ok) . La senténcia
    acaba amb la sequència d'escape \; però sense el símbol {} doncs el comandament cal no necesita paràmetres.
    Cal tenir permís de lectura en el directori arrel.
    find /treball/home/jcuesta/bin -name cal -print -ok cal \;
    - Igual que abans però busca el fitxer cal en el directori /treball/home/jcuesta/bin.
    find /treball/home/jcuesta/bin -name cal -print -ok {} \;
    - Igual que l'anterior: {} substitueix el nom del fitxer cal.
    find /treball/home/jcuesta/bin -name cal -print -exec cal \;
    - Igual que l'anterior però no demana conformitat. L'executa directament.
grep (introducció)
     
  • Busca patrons (paraula o conjunts de paraules, signes, etc) dins d'un o més d'un fitxer.
  • Encara que no és sempre necesari, és convenient tancar el patrò entre cometes simples ' '
  • Exemples (per fer proves crear un fitxer anomenat fitxer1 amb la frase: hola, estic matriculat en ASI)

  • $grep 'hola' fitxer1
    - Busca la paraula hola en el fitxer fitxer1, si el troba mostra la línia sencera que conté la paraula. Si no la troba
      no diu res.
    $grep -c 'hola' fitxer1
    - Compta les línies de fitxer1 que continguin la cadena hola.
  • Altres opcions:

  • -v    Busca les líneas que no continguin la cadena
    -l    Indica quins fitxers tenen el patró. Només surten els noms del fitxers
    -i    No discrimina entre majúscules-minúscules
  • Podem utilitzar els metacaracters per a formar expressions regulars (descripcions de cadenes de text

  • que permeten comparacions molt potents). Els metacaracters són els següents:
         Representa qualsevol caràcter o caràcters en el lloc on estigui.
            Exemple:
            $grep mat. fitxer1
            - Mostra les línies que continguin paraules que comencin per  mat  dins de fitxer1. Si tenim la paraula
            mat en el fitxer1, no la mostrarà ja que no hi ha cap caràcter després de la cadena mat. En canvi sí
            mostrarà matricula, mata, matorral, etc. *      Representa zero o més ocurrències d'un caràcter o una cadena.
            Exemple:
            $grep mat* fitxer1
            - Mostra les línies que comencin per ma seguit de zero o més "t"
    ^      Coincidència al principi de línia.
            Exemple:
            $grep '^hola' fitxer1
            - busca les línies que comencim per hola
    $      Coincidència al final de la línia.
            Exemple:
            $grep 'hola$' fitxer1
            - Mostra les línies que acabin en hola
    []      Coincidència amb un rang.
            Exemples:
            $grep '^[a-z]12' fitxer1
            - Busca les línies que comencin per una lletra minúscula ( [a-z] ) seguides dels dígits 12
               dins el fitxer fitxer1.
            $grep '^[^a-z]' fitxer1
            - Busca les línies que no comencin per lletra minúscula. Aixó ho fa el símbol ^ dintre dels []
    \       Caràcter d'anul.lació. S'utilitza per anul.lar el significat especial dels metacaràcters. Per exemple
            si volem cercar un punt dins una cadena hem de posar  \.
            Exemple:
            $grep '\.$' fitxer1
            - busca les línies que acabin en un punt
     
     
     
fgrep
  • Variant de grep que només accepta una cadena simple, no admet expressions regulars ni $, ni ^.

  • En canvi permet la recerca de múltiples patrons.
  • Exemple:

  • $fgrep "hola
    >que
    >tal" fitxer
    - Busca els tres patrons hola, que, tal per separat dins de fitxer
egrep
  • Variant de grep encara més potent, permet recerques més complexes.És però més lent que grep.
  • Exemples:

  • $egrep "hola|que|tal" fitxer
    - Busca els tres patrons dins de fitxer
    $egrep "([0-9]+ab)*1234" fitxer2
    - Busca les cadenes que comencin per 1 o més dígits ([0-9]+), seguits d' "ab", seguit d'un altre seqüència d'un o
      més dígits seguits d' "ab", etc. fins que trobi una cadena "1234" en fitxer2.
     
Vincles simbòlics i fitxers vinculats
  • Són fitxers que estan vinculats a altres
  • Permet que diversos usuaris comparteixen un únic fitxer físic
  • Quan s'obre un vincle simbòlic a un fitxer, només llegeix el camí del fitxer i després obra aquest
  • No es poden vincular fitxers de diferents File System (particions)
  • Quan obrim i modifiquem un fitxer vinculat, les modificacions afecten també al fitxer original
  • Si fem ls -l els fitxers que són vincles simbòlics es marquen amb una l en el primer caracter dels permisos

  • (bit de tipus de fitxer) i s'indica també el fitxer al que apunten.
  • Exemples:
$ln -s dades vincle.dades
- Crea un vincle simbòlic (opció -s) anomenat vincle.dades que apunta al fitxer vincle
$ln dades dades2
- Crea una còpia del fitxer dades en dades2 i vincula els dos fitxers 

Exercicis
1. Crea dins del teu directori inicial la següent estructura de directoris. Cal crear també els fitxers docu1, docu2, docu3.
 

 
 
2. Comprova, amb les ordres corresponents, si s'ha creat correctament l'estructura i els fitxers.
3. Situar-se al directori dir11 i esborrar el directori dir111.
4. Situar-se al directori inicial. Comprovar-ho.
5. Situar-se al directori dir22. Esborrar el fitxer docu3.
6. Situar-se al directori dir2. Comprovar.
7. Torna al directori propi. Esborra tota la branca corresponent a dir2.
8. Llista tots els fitxers del directori damunt del teu utilitzant els dos punts (..) amb el comandament ls.
9. Quins dels següents noms de fitxers són vàlids?
    123.***          .prova        '.'.prova        ##.***
 

Cap comentari:

Publica un comentari a l'entrada

Gestió d'usuaris i grups en Linux

Usuaris i grups Linux  Els comptes de Linux són com els comptes de Windows o MacOS; però els detalls no, així que cal explicar alguns detall...