Кои се Линукс Меташарки и како ги користите

Според Википедија, metacharacter е секој карактер кој има посебно значење, како што е карат (^), знак за долари ($) или ѕвездичка (*).

Во однос на Linux, постојат фер број на овие метасипови и нивното значење се разликува во зависност од тоа која команда или програма ја извршувате.

Целосната стоп како Меташарактер (.)

Скршената цел е да се донира моменталната позиција кога се извршуваат команди како што се cd , find или sh, но во рамките на апликации како што се awk , grep и sed се користи за означување на кој било знак.

Како пример, следнава команда ќе ги пронајде сите mp3-датотеки во тековната папка и подолу.

најдете. -име * .mp3

Ако ја извршите командата за да ви презентирате работен директориум (pwd), најверојатно ќе ги вратите резултатите, претпоставувајќи да ги задржите вашите mp3-датотеки во музичка папка во вашата домашна папка.

Сега погледнете ја оваа команда:

ps -ef | grep f..efox

Командата ps ги наведува сите извршени процеси на вашиот компјутер. Командата grep зема влезни линии и бара модел.

Затоа, командата ps-ef добива листа на извршени процеси и ја дава на grep која ја пребарува секоја линија во списокот што го има f.efox каде што. може да значи кој било карактер.

Ако имате инсталирано Firefox, ќе добиете натпревар. Слично на тоа, ако имате програма наречена fonefox или freefox, тие исто така ќе бидат вратени.

Ѕвездичката како метахарактер (*)

Ѕвездичката е повеќе универзално добро познат метахарактер и се користи за да значи 0 или повеќе кога барате шема.

На пример:

најдете. -име * .mp3

* .mp3 враќа натпревар за било кое име на датотека што завршува во .mp3. Слично на тоа, би можел да ја искористим ѕвездичката со командата grep како што следува:

ps -ef | grep F * efox

Вреди да се напомене дека ова се разликува малку, бидејќи ѕвездичката значи нула или повеќе, како и наоѓање Firefox, facefox и fonefox, исто така, може да се најдат flutefox, ferretfox, па дури и само fefox.

Карат како метафирактер (^)

Карата (^) се користи за означување на почетокот на линијата или низата. Па, како се користи?

Ls командата се користи за прикажување на сите датотеки во папка како што следува:

ls

Ако сакате да ги знаете сите датотеки во папка која започнува со одреден стринг, како што е "gnome" тогаш каратот може да се користи за да го наведете тој стринг.

На пример:

ls | grep ^ gnome

Забележете дека ова само ги наведува датотеките кои почнуваат со gnome. Ако сакате датотеки кои имаат gnome во името на датотеката било каде, тогаш повторно ќе се вратите назад во ѕвездичка.

Во горенаведениот пример, ls враќа листа на имиња на датотеки и ја пренесува истата листа на grep што се користи за совпаѓање на моделот. grep знае дека симболот на карати значи да пронајде нешто што започнува со ликовите што доаѓаат по него, а во овој случај, тоа е gnome.

Симболот на доларот како Метахарактер ($)

Симболот за долар може да има повеќе значења како metacharacter во рамките на Linux.

Кога се користи за да одговара на шаблоните, тоа значи спротивност на карата и означува кој било модел кој завршува со одреден стринг.

На пример:

ls | grep png $

Ова ги наведува сите датотеки што завршуваат со png.

Симболот за долар исто така се користи за пристап до променливите на околината во рамките на bash школка.

На пример:

извоз куче = мол
ехо $ куче

На линија извоз куче = molly создава променлива на околина наречена куче и ја поставува својата вредност на молчи. За пристап до променливата на околината се користи симболот $. Со симболот $, изјавата echo $ dog се прикажува молчи, но без него, изјавата за ехо куче само го прикажува зборот куче.

Избегнувајќи Меташари

Понекогаш не сакате метахарактерот да има посебно значење. Што ако имате датотека наречена f.refox и датотека наречена firefox.

Сега погледнете ја следнава команда:

ls | grep f.refox

Што мислите дека се враќа? Двете f.refox и Firefox се враќаат бидејќи и двата се совпаѓаат со моделот.

За да се вратат само f.refox, ќе треба да избегате од целосната точка за да се означи целосна запре како што следува:

ls | grep f \\. refox

Заеднички метафактори и нивното значење

Листа на Меташарници на Линукс
Карактер Значење
. Секој карактер
* Нула или повеќе карактери
^ Појавување на било која линија или низа која започнува со шема (т.е. ^ gnome)
$ Појавување на било која линија или низа завршува со шема (т.е. gnome $)
\ Избегнува следниот карактер да го отстрани своето посебно значење
[] Одговара на еден од листата или опсег (т.е. ["abc", "def"] или [1..9]
+ Појавување на еден или повеќе претходни (т.е. grep a +)
? Натпревар на нула или еден претходен