Mitkä ovat Linuxin metakarakterit ja miten käytät niitä

Wikipedian mukaan metakarakteri on mikä tahansa merkki, jolla on erityinen merkitys, kuten karaatti (^), dollarin merkki ($) tai tähti (*).

Linuxissa on melko paljon näistä metakaraktereista ja niiden merkitykset vaihtelevat riippuen siitä, mihin komentojärjestelmään tai ohjelmaan sinulla on käynnissä.

Täysi stop kuin metakarakteri (.)

Alhainen täyteen pisteeseen käytetään nykyisen sijainnin lahjoittaessasi komentoja, kuten cd , find tai sh, mutta sovelluksissa, kuten awk , grep ja sed, joita käytetään merkitsemään mikä tahansa merkki.

Esimerkiksi seuraava komento löytää kaikki mp3-tiedostot nykyiseen kansioon ja alla.

löytö . -name * .mp3

Jos suoritat komennon nykyisessä työhakemistossa (pwd), luultavasti tuloksia palautetaan olettaen, että pidät mp3-tiedostot kotikansion kansioon.

Katsokaa nyt tätä komentoa:

ps -ef | grep f..efox

Ps-komennossa luetellaan kaikki tietokoneen käynnissä olevat prosessit. Grep-komento ottaa sisääntuloviivat ja etsii kuvion.

Siksi ps -ef-komento saa luettelon käynnissä olevista prosesseista ja antaa sen grepille, joka etsii luettelossa olevia rivejä, joissa on f..efox, missä. voi tarkoittaa mitä tahansa merkkiä.

Jos sinulla on firefox käynnissä, saat ottelun. Samoin, jos sinulla on fonefox tai freefox-ohjelma, ne palautetaan myös.

Tähtimerkki metakarakterin (*)

Tähti on yleisempää tunnettua metakarakteria ja sitä käytetään merkitsemään 0 tai enemmän etsittäessä kuvioita.

Esimerkiksi:

löytö . -name * .mp3

* .mp3 palauttaa ottelun mihin tahansa tiedostonimiin, joka päättyy .mp3-tiedostoon. Samoin olisin voinut käyttää asteriskia grep-komennolla seuraavasti:

ps -ef | grep F * efox

On syytä huomata, että tämä eroaa hieman, koska tähti tarkoittaa nollaa tai enemmän, samoin kuin löytää firefox, facefox ja fonefox se voi myös löytää flutefox, ferretfox ja jopa vain fefox.

Karat metakarakterina (^)

Karaattia (^) käytetään merkitsemään viivan tai merkkijonon alkua. Joten miten sitä käytetään?

Ls-komennolla luetellaan kaikki kansion tiedostot seuraavasti:

ls

Jos haluat tietää kaikki tiedostot, jotka alkavat tietyllä merkkijonolla, kuten "gnome", niin karaatin avulla voidaan määrittää merkkijono.

Esimerkiksi:

ls | grep ^ gnome

Huomaa, että tässä luetellaan vain tiedostot, jotka alkavat gnomilla. Jos haluat, että tiedostot, joilla on gnome tiedostonimessä missä tahansa, palaisit taas takaisin tähtiin.

Yllä olevassa esimerkissä ls palauttaa luettelon tiedostonimistä ja siirtää luettelon grepiksi, jota käytetään kuvion sovittamiseen. grep tietää, että karaattisymboli tarkoittaa mitä tahansa, joka alkaa sen jälkeisistä merkkeistä ja tässä tapauksessa se on gnome.

Dollarimerkki metakarakterina ($)

Dollarin symboli voi olla useita merkityksiä metakarakterina Linuxissa.

Kun käytetään vastaamaan kuvioita, se merkitsee päinvastaista karaattia ja merkitsee mitä tahansa mallia, joka päättyy tiettyyn merkkijonoon.

Esimerkiksi:

ls | grep png $

Tässä luetellaan kaikki tiedostot, jotka päättyvät png: llä.

Dollarin symbolia käytetään myös ympäristömuuttujien käyttämiseen bash-kuoressa.

Esimerkiksi:

vienti koira = molly
echo $ dog

Rivi viennin koira = molly luo ympäristömuuttujan nimeltä koira ja asettaa arvon mollyksi. Ympäristömuuttujan käyttämiseksi käytetään $-symbolia. Kun $ -symboli echo $ koiran lausunto ilmestyy molly mutta ilman sitä, echo-koiran lausunto näyttää vain koiran sanan.

Pakenevat metakarakterit

Joskus et halua, että metakarakterilla on erityinen merkitys. Mitä jos sinulla on tiedosto nimeltä f.refox ja tiedosto nimeltä firefox.

Katso nyt seuraava komento:

ls | grep f.refox

Mitä mieltä olette palautettu? Sekä f.refox että firefox palautetaan, koska ne molemmat vastaavat mallia.

Jos haluat palata vain f.refox: iin, sinun on poistuttava täydestä pysähdyksestä, jotta se merkitsisi täydellistä pysähtymistä seuraavasti:

ls | grep f \\. refox

Yhteiset metakarakterit ja niiden merkitykset

Luettelo Linuxin metakaraktereista
Merkki merkitys
. Mikä tahansa merkki
* Nolla tai enemmän merkkejä
^ Match jokainen rivi tai merkkijono, joka alkaa kuvio (eli ^ gnome)
$ Vastaa mitä tahansa riviä tai merkkijonoa, joka päättyy kuvioon (eli gnome $)
\ Poistaa seuraavan merkin poistaa sen erityisen merkityksen
[] Match yksi luettelosta tai alueesta (eli ["abc", "def"] tai [1..9]
+ Match yksi tai useampi edellinen (eli grep a +)
? Ottelun nolla tai edellinen