un metacaracter este un caracter care poate fi folosit ca un substitut pentru oricare dintre o clasă de caractere într-o căutare, crescând astfel foarte mult flexibilitatea și eficiența căutărilor.
metacaracterele sunt utilizate în mod obișnuit în comenzile shell din Linux și alte sisteme de operare asemănătoare Unix. Un shell este un program care oferă o interfață de utilizator numai text și a cărei funcție principală este de a executa comenzi tastate de utilizatori și de a afișa rezultatele acestora.
metacaracterele sunt, de asemenea, utilizate în expresii regulate și limbaje de programare. Expresiile regulate sunt un sistem de potrivire a modelelor care utilizează șiruri (adică secvențe de caractere) construite conform regulilor de sintaxă predefinite pentru a găsi șirurile dorite în text.
termenul wildcard sau wild card a fost folosit inițial în jocurile de cărți pentru a descrie o carte căreia i se poate atribui orice valoare dorită de titularul său. Cu toate acestea, utilizarea sa s-a răspândit astfel încât acum este folosită pentru a descrie un factor necunoscut sau imprevizibil într-o varietate de domenii.
Star Wildcard
trei tipuri de wildcard sunt utilizate cu comenzi Linux. Cel mai frecvent utilizat și, de obicei, cel mai util este wildcard stele, care este la fel ca un asterisc (*). Wildcard-ul star are cea mai largă semnificație dintre oricare dintre wildcard-uri, deoarece poate reprezenta zero caractere, toate caracterele unice sau orice șir.
ca exemplu, comanda Fișier oferă informații despre orice obiect al sistemului de fișiere (adică fișier, director sau link) care îi este furnizat ca argument (adică intrare). Deoarece wildcard-ul stea reprezintă fiecare șir, acesta poate fi folosit ca argument pentru fișier pentru a returna informații despre fiecare obiect din directorul specificat. Astfel, următoarele ar afișa informații despre fiecare obiect din directorul curent (adică directorul în care utilizatorul lucrează în prezent):
file *
dacă nu există potriviri, un mesaj de eroare este returnat, cum ar fi *: can ` t stat ‘ * ‘ (nu există un astfel de fișier sau director).. În cazul acestui exemplu, singurul mod în care nu ar exista potriviri este dacă directorul ar fi gol.
metacaracterele pot fi combinate cu alte caractere pentru a reprezenta părți ale șirurilor. De exemplu, pentru a reprezenta orice obiect sistem de fișiere care are un .jpg extensie nume de fișier,*.jpg ar fi folosit. De asemenea, a* ar reprezenta toate obiectele care încep cu litere mici (adică mici) litera a.
ca un alt exemplu, următorul ar spune comenzii LS (care este utilizată pentru a lista fișierele) să furnizeze numele tuturor fișierelor din directorul curent care au un .html sau a .extensie txt:
ls *.html *.txt
de asemenea, următoarele ar spune comanda rm (care este utilizată pentru a elimina fișierele și directoarele) pentru a șterge toate fișierele din directorul curent care au șirul xxx în numele lor:
rm *xxx*
semnul de întrebare Wildcard
semnul de întrebare (?) este folosit ca un caracter wildcard în comenzi shell pentru a reprezenta exact un caracter, care poate fi orice caracter unic. Astfel, două semne de întrebare succesive ar reprezenta oricare două caractere succesive, iar trei semne de întrebare succesive ar reprezenta orice șir format din trei caractere.
astfel, de exemplu, următoarele ar returna date despre toate obiectele din directorul curent ale căror nume, inclusiv orice extensii, au exact trei caractere în lungime:
file ???
și următoarele ar furniza date cu privire la toate obiectele ale căror nume sunt una, două sau trei caractere în lungime:
file ? ?? ???
ca și în cazul wildcard-ului stea, wildcard-ul semnului de întrebare poate fi utilizat în combinație cu alte caractere. De exemplu, următoarele ar furniza informații despre toate obiectele din directorul curent care încep cu litera a și au o lungime de cinci caractere:
file a????
semnul de întrebare wildcard poate fi, de asemenea, utilizat în combinație cu alte metacaractere atunci când sunt separate de un alt caracter. De exemplu, următoarele ar returna o listă a tuturor fișierelor din directorul curent care au o extensie de nume de fișier cu trei caractere:
ls *.???
paranteze pătrate Wildcard
al treilea tip de wildcard în comenzile shell este o pereche de paranteze pătrate, care pot reprezenta oricare dintre caracterele incluse în paranteze. Astfel, de exemplu, următoarele ar furniza informații despre toate obiectele din directorul curent care au un x, y și / sau z în ele:
file **
și următoarele ar lista toate fișierele care au avut o extensie care începe cu x, y sau z:
ls *.*
aceleași rezultate pot fi obținute prin simpla utilizare a metacaracterelor star și question mark. Cu toate acestea, este clar mai eficient să folosiți wildcard-ul bracket.
când se folosește o cratimă între două caractere din metacaracterele paranteze pătrate, aceasta indică un interval care include aceste două caractere. De exemplu, următoarele ar furniza informații despre toate obiectele din directorul curent care încep cu orice literă de la a la f:
file *
și următoarele ar oferi informații despre fiecare obiect din directorul curent al cărui nume include cel puțin un număr:
file **
utilizarea parantezelor pătrate pentru a indica un interval poate fi combinată cu utilizarea acestuia pentru a indica o listă. Astfel, de exemplu, următoarele ar furniza informații despre toate obiectele sistemului de fișiere ale căror nume încep cu orice literă de la a la c sau încep cu S sau t:
file *
de asemenea, pot fi specificate mai multe seturi de intervale. Astfel, de exemplu, următoarele ar returna informații despre toate obiectele ale căror nume încep cu primele trei sau ultimele trei litere mici ale alfabetului:
file *
uneori poate fi util să aveți o succesiune de metacaractere cu suport pătrat. De exemplu, următoarele ar afișa toate numele de fișiere din directorul curent care constau din jones urmat de un număr din trei cifre:
ls jones