Ano ang Mga Metacharacters ng Linux At Paano Mo Ginagamit ang mga ito

Ayon sa Wikipedia, ang isang metacharacter ay anumang karakter na may isang espesyal na kahulugan, tulad ng isang carat (^), dollar sign ($) o isang asterisk (*).

Sa mga tuntunin ng Linux, mayroong isang makatarungang bilang ng mga metacharacters na ito at ang kanilang mga kahulugan ay naiiba depende sa kung anong command o program na iyong pinapatakbo.

Ang Full Stop Bilang Isang Metacharacter (.)

Ang abang full stop ay ginagamit upang ihandog ang kasalukuyang posisyon kapag tumatakbo ang mga utos tulad ng cd , hanapin o sh ngunit sa loob ng mga application tulad ng awk , grep at sed na ito ay ginagamit upang magpakilala sa anumang karakter.

Bilang halimbawa, makikita ng sumusunod na command ang lahat ng mga mp3 file sa kasalukuyang folder at sa ibaba.

hanapin. -name * .mp3

Kung patakbuhin mo ang utos sa kasalukuyan mong direktoryo (pwd) pagkatapos ay marahil ay makakakuha ka ng mga resultang ibinalik, sa pag-aakala mong panatilihin ang iyong mga mp3 file sa isang folder ng musika sa loob ng iyong home folder.

Ngayon tingnan ang utos na ito:

ps -ef | grep f..efox

Inililista ng ps command ang lahat ng mga proseso ng pagpapatakbo sa iyong computer. Ang grep command ay tumatagal ng mga linya ng input at paghahanap para sa isang pattern.

Samakatuwid ang ps -ef command ay nakakakuha ng isang listahan ng mga proseso ng pagpapatakbo at nagbibigay ito sa grep na paghahanap para sa anumang linya sa listahan na may f..efox kung saan ang. maaaring mangahulugang anumang karakter.

Kung mayroon kang firefox running makakakuha ka ng isang tugma. Katulad nito, kung mayroon kang isang programa na tinatawag na fonefox o freefox na tumatakbo sila ay ibabalik din.

Ang asterisk bilang isang metacharacter (*)

Ang asterisk ay isang mas sikat na kilalang metacharacter at ginagamit sa ibig sabihin ng 0 o higit pa kapag naghahanap ng isang pattern.

Halimbawa:

hanapin. -name * .mp3

Ang * .mp3 ay nagbabalik ng tugma para sa anumang filename na natatapos sa .mp3. Katulad nito, maaari kong magamit ang asterisk sa grep command tulad ng mga sumusunod na nagpapakita:

ps -ef | grep F * efox

Ito ay nagkakahalaga ng noting na ito ay naiiba bahagyang dahil ang asterisk ay nangangahulugan ng zero o higit pa pati na rin ang paghahanap ng firefox, facefox at fonefox maaari rin itong makahanap ng flutefox, ferretfox at kahit na lang fefox.

Ang Carat Bilang Isang Metacharacter (^)

Ang karat (^) ay ginagamit upang magpakilala sa simula ng isang linya o isang string. Kaya paano ito ginagamit?

Ang command ng ls ay ginagamit upang ilista ang lahat ng mga file sa isang folder tulad ng sumusunod:

ls

Kung nais mong malaman ang lahat ng mga file sa isang folder na nagsisimula sa isang tiyak na string tulad ng "gnome" pagkatapos ang karat ay maaaring magamit upang tukuyin ang string na iyon.

Halimbawa:

ls | grep ^ gnome

Tandaan na ito ay naglilista lamang ng mga file na nagsisimula sa gnome. Kung nais mo ang mga file na may isang gnome sa filename kahit saan pagkatapos ay muli kang bumalik sa asterisk.

Sa halimbawa sa itaas, ang ls ay nagbabalik ng isang listahan ng mga filename at ipinapasa ang listahan na iyon sa grep na ginagamit para sa pagtutugma ng pattern. alam ng grep na ang ibig sabihin ng karatikong simbolo ay makahanap ng anumang bagay na nagsisimula sa mga character na dumating pagkatapos nito at sa kasong ito, ito ay isang gnome.

Ang Simbolo ng Simbolo Bilang Isang Metacharacter ($)

Ang simbolo ng dolyar ay maaaring magkaroon ng maraming kahulugan bilang isang metacharacter sa loob ng Linux.

Kapag ginamit upang tumugma sa mga pattern na ito ay nangangahulugan na ang kabaligtaran sa karat at nagpapahiwatig ng anumang pattern na nagtatapos sa isang partikular na string.

Halimbawa:

ls | grep png $

Inililista nito ang lahat ng mga file na nagtatapos sa png.

Ang simbolo ng dolyar ay ginagamit din upang ma-access ang mga variable ng kapaligiran sa loob ng bash shell.

Halimbawa:

export dog = molly
echo $ dog

Ang line export dog = molly ay lumilikha ng variable na kapaligiran na tinatawag na aso at itinakda ang halaga nito sa molly. Upang ma-access ang variable ng kapaligiran, ang $ simbolo ay ginagamit. Sa $ simbolo ang echo $ dog statement ay nagpapakita ng molly ngunit wala ito, ang echo dog statement ay nagpapakita lamang ng salitang aso.

Escaping Metacharacters

Minsan hindi mo nais ang metacharacter na magkaroon ng isang espesyal na kahulugan. Paano kung mayroon kang isang file na tinatawag na f.refox at isang file na tinatawag na firefox.

Ngayon tingnan ang sumusunod na command:

ls | grep f.refox

Ano sa palagay mo ang ibinalik? Parehong f.refox at firefox ang ibinalik dahil pareho silang tumutugma sa pattern.

Upang bumalik lamang f.refox kakailanganin mong makatakas sa ganap na paghinto upang aktwal na mangahulugang isang ganap na paghinto tulad ng sumusunod:

ls | grep f \\. refox

Karaniwang Metacharacters At Ang kanilang mga Kahulugan

Listahan ng mga Metacharacters ng Linux
Character Kahulugan
. Anumang karakter
* Zero o higit pang mga character
^ Itugma ang anumang linya o string na nagsisimula sa isang pattern (ie ^ gnome)
$ Itugma ang anumang linya o string na nagtatapos sa isang pattern (ie gnome $)
\ Inilipat ang susunod na karakter upang alisin ang espesyal na kahulugan nito
[] Itugma ang isa sa isang listahan o saklaw (ie ["abc", "def"] o [1..9]
+ Itugma ang isa o higit pang nauna (ie grep a +)
? Itugma ang zero o isang nauna