Provided by: manpages-ro_4.27.0-1_all bug

NUME

       glob - globalizarea numelor de rută

DESCRIERE

       Cu  mult  timp  în urmă, în UNIX V6, exista un program /etc/glob care putea expanda modelele cu caractere
       joker. La scurt timp după aceea, acesta a devenit un program încorporat în shell.

       În prezent, există, de asemenea, o rutină de bibliotecă glob(3) care va îndeplini această funcție  pentru
       un program de utilizator.

       Regulile sunt următoarele (POSIX.2, 3.13).

   Potrivirea cu caractere joker
       Un  șir  de  caractere  este un model de tip joker dacă conține unul dintre caracterele „?”, „*” sau „[”.
       Globalizarea este operația care expandează un model de caractere joker într-o listă de nume de rute  care
       corespund modelului.  Potrivirea este definită de:

       Un „?” (nu între paranteze) se potrivește cu orice caracter unic.

       Un „*” (nu între paranteze) se potrivește cu orice șir, inclusiv cu șirul gol.

       Clase de caractere

       O  expresie „[...]” în care primul caracter după „[” de început nu este un „!” se potrivește cu un singur
       caracter, și anume oricare dintre caracterele cuprinse între paranteze. Șirul cuprins între paranteze  nu
       poate  fi  gol;  prin  urmare,  „]”  poate fi permis între paranteze, cu condiția ca acesta să fie primul
       caracter; (astfel, „[][!]” se potrivește cu cele trei caractere „[”, „]” și „!”).

       Intervale

       Există o  convenție  specială:  două  caractere  separate  prin  „-”  reprezintă  un  interval;  (astfel,
       „[A-Fa-f0-9]” este echivalent cu „[ABCDEFabcdef0123456789]”). Se poate include „-” în sensul său literal,
       făcându-l  primul  sau ultimul caracter dintre paranteze; (astfel, „[]-]” se potrivește doar cu cele două
       caractere „]” și „-”, iar „[--0]” se potrivește cu cele trei caractere „-”, „.” și „0”, deoarece  „/”  nu
       poate fi potrivit).

       Complementare

       O  expresie  „[![...]” se potrivește cu un singur caracter, și anume orice caracter care nu se potrivește
       cu expresia obținută prin eliminarea primului „!” din  ea;  (astfel,  „[!]a-]”  se  potrivește  cu  orice
       caracter, cu excepția lui „]”, „a” și „-”).

       Se  poate  elimina semnificația specială a „?”, „*” și „[” precedându-le de o bară oblică inversă sau, în
       cazul în care acestea fac parte dintr-o linie de comandă de shell, încadrându-le între  ghilimele.  Între
       paranteze,  aceste  caractere  sunt  de  sine  stătătoare.  Astfel,  „[[?*\”  se potrivește cu cele patru
       caractere „[”, „?”, „*” și „\”.

   Nume de rută
       Globalizarea se aplică separat pentru fiecare dintre componentele unui nume de rută. Un „/” într-un  nume
       de  rută  nu  poate  fi asociat cu un joker „?” sau „*”, sau cu un interval de tipul „[.-0]”. Un interval
       care conține un caracter explicit „/” este incorect  din  punct  de  vedere  sintactic;  (POSIX  cere  ca
       modelele incorecte din punct de vedere sintactic să fie lăsate neschimbate).

       În  cazul  în  care  un  nume de fișier începe cu un „.”, acest caracter trebuie să se potrivească în mod
       explicit; (astfel, comanda «rm *» nu va elimina .profile,  iar  comanda  «tar c *»  nu  va  arhiva  toate
       fișierele; execuția comenzii anterioare, cu „modelul” schimbat «tar c .» este mai indicată).

   Liste goale
       Regula  frumoasă și simplă dată mai sus: „expandează un model cu caractere joker în lista de nume de rută
       corespondente” a fost definiția originală UNIX. Aceasta permitea să existe modele care se  extind  într-o
       listă goală, ca în cazul

           xv -wait 0 *.gif *.jpg

       unde poate că nu există niciun fișier *.gif (și aceasta nu este o eroare). Cu toate acestea, POSIX impune
       ca  un  model  cu  caracter  joker  să fie lăsat neschimbat atunci când este incorect din punct de vedere
       sintactic sau când lista de nume de rută corespondente este goală. Cu bash se poate forța  comportamentul
       clasic folosind această comandă:

           shopt -s nullglob

       (Probleme similare apar și în alte cazuri. De exemplu, în cazul în care scripturile vechi au

           rm `find . -name "*~"`

       scripturile noi necesită

           rm -f nosuchfile `find . -name "*~"`

       ca să evite mesajele de eroare de la rm apelat cu o listă de argumente goală).

NOTE

   Expresii regulate
       Rețineți  că  modelele  cu  caractere  joker  nu sunt expresii regulate, deși sunt puțin asemănătoare. În
       primul rând, acestea se potrivesc mai degrabă cu nume de fișiere decât cu text și,  în  al  doilea  rând,
       convențiile  nu sunt aceleași: de exemplu, într-o expresie regulată „*” înseamnă zero sau mai multe copii
       ale lucrului precedent.

       Acum că expresiile regulate au expresii cu paranteze în care negația este indicată de  un  „^”,  POSIX  a
       declarat că efectul unui model cu caracter joker „[^...]” este nedefinit.

   Clase de caractere și internaționalizare
       Desigur,  intervalele  au  fost  inițial  concepute  ca  intervale ASCII, astfel încât „[ -%]” reprezintă
       „[ !"#$%]” și „[a-z]” reprezintă „orice literă minusculă”. Unele implementări UNIX au  generalizat  acest
       lucru, astfel încât un interval X-Y reprezintă setul de caractere cu coduri între codurile pentru X și Y.
       Cu  toate acestea, acest lucru necesită ca utilizatorul să cunoască codificarea caracterelor utilizată pe
       sistemul local și, în plus, nu este convenabil dacă secvența de colaționare pentru alfabetul local diferă
       de ordinea codurilor de caractere. Prin urmare, POSIX a extins foarte  mult  notația  parantezelor,  atât
       pentru  modelele  cu caractere joker, cât și pentru expresiile regulate. În cele de mai sus am văzut trei
       tipuri de elemente care pot apărea într-o expresie cu paranteze: și anume  (i)  negația,  (ii)  caractere
       unice  explicite  și  (iii)  intervale.  POSIX  specifică  intervalele  într-un  mod  mai  util  la nivel
       internațional și adaugă încă trei tipuri:

       (iii) Intervalele X-Y cuprind toate caracterele care se încadrează între X și Y (inclusiv) în secvența de
       colaționare curentă, așa cum este definită de categoria LC_COLLATE din configurația regională curentă.

       (iv) Clase de caractere numite, cum ar fi

       [:alnum:]  [:alpha:]  [:blank:]  [:cntrl:]
       [:digit:]  [:graph:]  [:lower:]  [:print:]
       [:punct:]  [:space:]  [:upper:]  [:xdigit:]

       astfel încât să se poată spune „[[:lower:]]” în loc de  „[a-z]”,  iar  lucrurile  să  funcționeze  și  în
       Danemarca,  unde  există  trei  litere  după  „z”  în alfabet. Aceste clase de caractere sunt definite de
       categoria LC_CTYPE din configurația regională curentă.

       (v) Simboluri de colaționare, cum ar fi „[.ch.]” sau „[.a-acute.]”, în cazul în care șirul dintre „[.” și
       „.]” este un element de colaționare definit pentru configurația regională  curentă.  Rețineți  că  acesta
       poate fi un element cu mai multe caractere.

       (vi)  Expresii  din  clasa  de  echivalență, cum ar fi „[=a=]”, unde șirul dintre „[=” și „=]” este orice
       element de colaționare din clasa de echivalență, așa  cum  este  definit  pentru  configurația  regională
       curentă.     De     exemplu,     „[[=a=]]”     poate     fi     echivalent     cu     „[aáàäâ]”,    adică
       „[a[.a-acute.][.a-grave.][.a-umlaut.][.a-circumflex.]]”.

CONSULTAȚI ȘI

       sh(1), fnmatch(3), glob(3), locale(7), regex(7)

TRADUCERE

       Traducerea   în   limba   română   a   acestui   manual   a   fost   făcută   de   Remus-Gabriel    Chelu
       <remusgabriel.chelu@disroot.org>

       Această  traducere  este  documentație  gratuită;  citiți  Licența publică generală GNU Versiunea 3 sau o
       versiune  ulterioară  cu  privire  la  condiții  privind  drepturile  de  autor.   NU  se   asumă   NICIO
       RESPONSABILITATE.

       Dacă  găsiți  erori  în  traducerea  acestui manual, vă rugăm să trimiteți un e-mail la translation-team-
       ro@lists.sourceforge.net.

Pagini de manual de Linux 6.9.1                   15 iunie 2024                                          glob(7)