Què són els metadades de Linux i com ho usen?

Segons Wikipedia, un metacarácter és qualsevol caràcter que tingui un significat especial, com ara un quilat (^), un signe de dòlar ($) o un asterisc (*).

Pel que fa a Linux, hi ha una bona quantitat d'aquests metacarats i els seus significats varien depenent de quina comanda o programa s'estigui executant.

El punt final com a metacarácter (.)

El punt final humil s'utilitza per donar la posició actual quan s'executen comandaments com cd , find o sh, però dins d'aplicacions com awk , grep i sed s'utilitza per denotar qualsevol caràcter.

Com a exemple, el següent comandament trobarà tots els fitxers mp3 a la carpeta actual i a continuació.

trobar -name * .mp3

Si executeu aquesta comanda en el vostre directori de treball (pwd), probablement obtindreu els resultats retornats, suposant que conserveu els vostres fitxers mp3 en una carpeta de música de la vostra carpeta d'inici.

Ara mireu aquest comandament:

ps -ef | Grep f .. Firefox

La comanda ps enumera tots els processos en execució de l'ordinador. La comanda grep pren línies d'entrada i cerca un patró.

Per tant, el comandament ps -ef obté una llista de processos en execució i els dóna a grep el que busca qualsevol línia de la llista que tingui f. pot significar qualsevol caràcter.

Si teniu firefox en funcionament, obtindreu una coincidència. De la mateixa manera, si teniu un programa anomenat fonefox o freefox, també es tornaran.

L'asterisc com a metacarácter (*)

L'asterisc és un caracter metacharacter més universal i s'utilitza per significar 0 o més quan es busca un patró.

Per exemple:

trobar -name * .mp3

El * .mp3 torna una coincidència per qualsevol nom de fitxer que finalitzi en .mp3. De la mateixa manera, podria haver utilitzat l'asterisc amb l'ordre grep com es mostra a continuació:

ps -ef | grep F * efox

Val la pena assenyalar que això difereix lleugerament perquè l'asterisc significa zero o més, així com trobar firefox, facefox i fonefox també pot trobar flutefox, ferretfox i fins i tot només fefox.

El Carat com a metacarácter (^)

El carat (^) s'utilitza per denotar l'inici d'una línia o una cadena. Llavors, com s'utilitza?

L'ordre ls s'utilitza per mostrar tots els fitxers d'una carpeta de la manera següent:

ls

Si voleu conèixer tots els fitxers d'una carpeta que comença amb una cadena determinada, com ara "gnome", el quilat es pot utilitzar per especificar aquesta cadena.

Per exemple:

ls | grep ^ gnome

Tingueu en compte que això només inclou fitxers que comencen per gnome. Si voleu que els fitxers que tinguin un gnome en el nom del fitxer en qualsevol lloc, torneu a tornar a l'asterisc.

En l'exemple anterior, el ls retorna una llista de noms de fitxer i passa aquesta llista a grep que s'utilitza per a la concordança de patrons. grep sap que el símbol del quilat significa trobar qualsevol cosa que comenci pels personatges que vénen i, en aquest cas, és un gnome.

El símbol del dòlar com a metacaracter ($)

El símbol del dòlar pot tenir múltiples significats com un metacarácter dins de Linux.

Quan s'utilitza per combinar patrons, significa el contrari al carat i denota qualsevol patró que acabi amb una cadena determinada.

Per exemple:

ls | grep png $

Això llista tots els fitxers que acaben amb png.

El símbol del dòlar també s'utilitza per accedir a variables d'entorn dins del shell bash.

Per exemple:

gos d'exportació = molly
eco $ gos

El gos d'exportació de línia = molly crea una variable d'entorn anomenada gos i estableix el seu valor molly. Per accedir a la variable d'entorn, s'utilitza el símbol $. Amb el símbol $, la instrucció eco $ dog mostra molly però sense ella, l'extracte del gos d'eco acaba de mostrar el gos de la paraula.

Escapant de Metacharacters

De vegades no vol que el metacarácter tingui un significat especial. Què passa si teniu un fitxer anomenat f.refox i un fitxer anomenat firefox.

Ara mira el següent comandament:

ls | grep f.refox

Què us sembla que es retorna? Tant f.refox com firefox es tornen perquè tots dos coincideixen amb el patró.

Per tornar només a f.refox haureu d'escapar de la parada completa per significar una parada completa de la següent manera:

ls | grep f \\. refox

Mitjans comuns i els seus significats

Llista de metacarapes de Linux
Personatge Significat
. Qualsevol caràcter
* Cero o més caràcters
^ Coincideix amb qualsevol línia o cadena que comenci amb un patró (és a dir, ^ gnome)
$ Coincideix amb qualsevol línia o cadena que finalitzi amb un patró (és a dir, gnome $)
\ Escapa el següent caràcter per eliminar el seu significat especial
[] Coincideix amb una llista o interval (p. Ex. ["Abc", "def"] o [1..9]
+ Coincideix amb un o més precedents (és a dir, grep a +)
? Coincideix amb zero o amb un precedent