Какви са Linux метамаркерите и как ги използвате

Съгласно Уикипедия, метахарактер е всеки знак със специално значение, като карат (^), знак за долар ($) или звездичка (*).

От гледна точка на Линукс има сравнителен брой от тези метамаркари и техните значения се различават в зависимост от това коя команда или програма изпълнявате.

Пълното спиране като метахикартер (.)

Скромният пълен ограничител се използва за даване на текущата позиция при изпълняване на команди като cd , find или sh, но в приложения като awk , grep и sed се използва за обозначаване на който и да е символ.

Като пример, следната команда ще намери всички mp3 файлове в текущата папка и по-долу.

намирам . -name * .mp3

Ако пуснете командата в работната ви директория (pwd), вероятно ще получите върнати резултати, ако запазите файловете си в музикална папка в домашната си папка.

Сега погледнете тази команда:

ps-ее | grep f..efox

Командата ps показва всички текущи процеси на вашия компютър. Командата grep взема линии за въвеждане и търси шаблон.

Поради това командата ps -ef получава списък с текущи процеси и я дава на grep, който търси някоя линия в списъка, който има f..efox, където. може да означава всеки знак.

Ако имате Firefox, ще получите мач. По същия начин, ако имате програма, наречена fonefox или freefox, те също ще бъдат върнати.

Звездичката като мета-символ (*)

Звездичката е по-универсално добре познат метасъцар и се използва за означаване на 0 или повече при търсене на модел.

Например:

намирам . -name * .mp3

* .mp3 връща съвпадение за всяко име на файл, което завършва с .mp3. По същия начин бих могъл да използвам звездичката с командата grep, както следва:

ps-ее | grep F * efox

Струва си да се отбележи, че това се различава леко, защото звездичката означава нула или повече, така че, както и откриването на firefox, facefox и fonefox може да намери флуотфокс, ferretfox и дори само fefox.

Карата като метахарактер (^)

Карата (^) се използва за означаване на началото на линия или низ. Как се използва?

Командата ls се използва за списък на всички файлове в папка, както следва:

LS

Ако искате да знаете всички файлове в папка, която започва с определен низ като "gnome", тогава карата може да се използва за определяне на този низ.

Например:

ls | grep ^ gnome

Имайте предвид, че това само изброява файловете, които започват с gnome. Ако искате файлове, които имат GNOME в името на файла навсякъде, тогава пак ще се върнете обратно към звездичката.

В горния пример ls връща списък с имена на файлове и предава този списък на grep, който се използва за съвпадение на шаблони. grep знае, че каратовият символ означава да открие нещо, което започва с героите, които идват след него и в този случай това е гном.

Символът за долара като метахикартер ($)

Символът на долара може да има множество значения като метламаркер в рамките на Linux.

Когато се използва за подреждане на шаблони, това означава обратното на карата и обозначава всеки шаблон, който завършва с конкретен низ.

Например:

ls | grep png $

Това изброява всички файлове, завършващи с png.

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

Например:

експортно куче = molly
echo $ dog

Линията за експорт на линия = molly създава променлива на обкръжението, наречена куче, и определя стойността му на molly. За достъп до променливата на средата се използва символът $. С помощта на символа $, изразът "dog echo" показва molly, но без него, изявлението за куче ехо показва само думата куче.

Избягване на метахирактери

Понякога не искате метахарактерът да има специално значение. Какво ще стане, ако имате файл, наречен f.refox и файл, наречен firefox.

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

ls | grep f.refox

Какво мислите, че се връща? Както f.refox, така и firefox се връщат, защото и двете отговарят на модела.

За да върнете само f.refox, ще трябва да избягате от пълната спирка, за да означите пълна спирка, както следва:

ls | grep f \\ refox

Общите метахирактери и техните значения

Списък на мехатронниците на Linux
характер значение
, Всеки знак
* Нула или повече знаци
^ Сравнете всеки ред или низ, които започват с модел (т.е. ^ gnome)
$ Сравнете всеки ред или низ, завършващи с шаблон (т.е. gnome $)
\ Избягва следващия знак, за да отстрани своето специално значение
[] Съвпадение на списък или диапазон (например ["abc", "def"] или [1..9]
+ Съвпадение на един или повече предходни (т.е. grep a +)
? Сравнете нула или предходен