Što su Linux metakarakteri i kako ih upotrebljavate

Prema Wikipediji, metakarakter je bilo koji znak koji ima posebno značenje, kao što su karat (^), znak dolara ($) ili zvjezdica (*).

Što se Linuxa tiče, postoji mnoštvo tih metakaraktera i njihova se značenja razlikuju ovisno o naredbi ili programu koji se izvodite.

Cijeli stop kao metakarakter (.)

Skromna puna stopa služi za donaciju trenutnog položaja pri pokretanju naredbi kao što su cd , find ili sh, ali unutar aplikacija kao što su awk , grep i sed koji se koriste za označavanje bilo kojeg znaka.

Kao primjer, sljedeća naredba će pronaći sve mp3 datoteke u trenutnoj mapi i niže.

pronaći . -name * .mp3

Ako pokrenete tu naredbu u sadašnjem radnom imeniku (pwd), vjerojatno će vam se vratiti rezultati, pod pretpostavkom da zadržite svoje mp3 datoteke u glazbenoj mapi unutar kućne mape.

Sada pogledajte ovu naredbu:

ps -ef | grep f..efox

Naredba ps navodi sve pokrenute procese na računalu. Grep naredba vodi linije unosa i traži uzorak.

Stoga naredba ps -ef dobiva popis pokrenutih procesa i daje ga grep koji traži bilo koju liniju na popisu koja ima f..efox gdje. može značiti bilo koji znak.

Ako imate pokretanje vatre, dobit ćete utakmicu. Isto tako, ako imate program koji se zove fonefox ili freefox, oni će također biti vraćeni.

Zvjezdica kao metakarakter (*)

Zvjezdica je uobičajenije poznati metakarakter i koristi se za 0 ili više kada se traži uzorak.

Na primjer:

pronaći . -name * .mp3

* .mp3 vraća utakmicu za bilo koji naziv datoteke koji završava .mp3. Slično tome, mogao sam upotrijebiti zvjezdicu s grep naredbom kao što slijedi:

ps -ef | grep F * efox

Važno je napomenuti da se to malo razlikuje jer zvjezdica označava nulu ili više, kao i pronalaženje vatre, facefoxa i fonefoxa, također može pronaći flutefox, ferretfox, pa čak i samo fefox.

Karat kao metakarakter (^)

Karat (^) se koristi za označavanje početka linije ili niza. Pa kako se koristi?

Ls naredba koristi se za popis svih datoteka u mapi kako slijedi:

ls

Ako želite znati sve datoteke u mapi koja započinje određenim nizom kao što je "gnome", onda se karat može koristiti za određivanje tog niza.

Na primjer:

ls | grep ^ gnome

Imajte na umu da to samo navodi datoteke koje počinju s gnomeom. Ako želite da datoteke koje imaju gnome u naziv datoteke bilo gdje, onda biste se ponovo vratili natrag zvjezdicom.

U gore navedenom primjeru, ls vraća popis imena datoteka i prolazi taj popis u grep koji se koristi za podudaranje uzoraka. grep zna da simbol karatnog znači pronaći sve što započinje likovima koji dolaze iza njega i u ovom slučaju to je gnome.

Simbol dolara kao metakarakter ($)

Simbol dolara može imati više značenja kao metakarakter u Linuxu.

Kada se koristi za podudaranje uzoraka to znači suprotnost od karat i označava svaki uzorak koji završava određenim nizom.

Na primjer:

ls | grep png $

Ovo navodi sve datoteke koje završavaju s png-om.

Simbol dolara također se koristi za pristupanje varijablama okruženja unutar oklopa bash.

Na primjer:

izvozni pas = molly
echo $ pas

Izvoz izvoza linije = molly stvara varijablu okruženja zvanu psa i postavlja vrijednost na molly. Za pristup varijabli okoline koristi se simbol $. Uz simbol $ koji prikazuje echo $ pas prikazuje molly, ali bez njega, izjava o odjekuju samo prikazuje riječ psa.

Izbjegavajući metakaraktere

Ponekad ne želite da metakarakter ima posebno značenje. Što ako imate datoteku koja se zove f.refox i datoteka zvana firefox.

Sada pogledajte sljedeću naredbu:

ls | grep f.refox

Što mislite da je vraćen? I f.refox i firefox se vraćaju jer oboje odgovaraju uzorku.

Da biste se vratili samo f.refox, trebali biste izbjeći punu stanicu da zapravo znači punu granicu kako slijedi:

ls | grep f \\. refok

Uobičajeni metakarakteri i njihova značenja

Popis Linux metakarakterista
Lik Značenje
, Bilo koji znak
* Nula ili više znakova
^ Uskladite bilo koju liniju ili niz koji započinje s uzorkom (npr. ^ Gnome)
$ Uskladite bilo koju liniju ili niz koji završava uzorak (tj. Gnome $)
\ Izbacuje sljedeći znak da ukloni njeno posebno značenje
[] Podudaranje jednog od popisa ili raspona (tj. ["Abc", "def"] ili [1..9]
+ Podudaranje jednog ili više prethodnih (tj. Grep a +)
? Podudaranje nula ili prethodno