Linux metacharacters nima va ularni qanday qilib ishlatishingiz mumkin

Vikipediya ma'lumotlariga ko'ra, meta-karakteri - karat (^), dollar belgisi ($) yoki yulduzcha (*) kabi maxsus ma'noga ega har qanday belgi.

Linux jihatidan, bu metakaracterlarning adolatli soni bor va ularning ma'nolari siz qaysi komitet yoki dasturga qarab farqlanadi.

Metacharacter (.) Sifatida To'liq Tugatish

Kambag'al to'liq stop cd , find yoki sh kabi buyruqlarni ishlatishda hozirgi manzilni ehson qilish uchun ishlatiladi, lekin awk , grep va sedD kabi ilovalar ichida har qanday belgini ko'rsatish uchun ishlatiladi.

Masalan, quyidagi buyruqlar mavjud papkada va quyidagi barcha mp3 fayllarni topadi.

topish. Nomi * .mp3

Agar ushbu buyruq sizda mavjud bo'lgan ishchi katalogni (pwd) ishlatsa, u holda siz o'zingizning mp3 papkalarni o'zingizning asosiy papkangizdagi musiqa papkasida saqlaysiz deb hisoblaysiz.

Endi bu buyruqni ko'rib chiqing:

ps -f | grep f..efox

PS buyrug'i kompyuteringizda ishlaydigan barcha jarayonlarni ro'yxatini ko'rsatadi. Grep buyrug'i matn kiritish usulini oladi va naqshni izlaydi.

Shuning uchun ps-efir boshqaruvchisi ishlaydigan jarayonlarning ro'yxatini oladi va ro'yxatga kiritiladigan har qanday qatorni qidiradigan grepga beradi. har qanday belgi bo'lishi mumkin.

Agar sizda ishlaydigan Firefox bo'lsa, siz o'yinni qo'lga kiritasiz. Xuddi shunday, Agar fonefox yoki freefox deb ataladigan dastur mavjud bo'lsa, ular qaytariladi.

Yulduzcha metacharacter (*)

Yulduzlar yanada keng tarqalgan metakarakterdir va u naqshni izlashda 0 yoki undan ko'proq narsani anglatadi.

Masalan:

topish. Nomi * .mp3

* .mp3, .mp3 bilan tugaydigan har qanday fayl uchun o'yinni qaytaradi. Xuddi shunday, men yulduz belgisini grep buyrug'i bilan quyidagi tarzda ko'rsatgan bo'lar edim:

ps -f | grep F * efox

Shuni ta'kidlash joizki, bu yulduzcha bir xil, chunki yulduzcha nol yoki undan ko'p degani, shuningdek, olov, yuzma-yuz va fonefoxlarni topish kabi flutefox, ferretfox va hatto fefoxni topishi mumkin.

Metacharacter sifatida karat (^)

Karat (^) chiziq yoki mag'lubiyatning boshlanishini ko'rsatish uchun ishlatiladi. Xo'sh, qanday qilib ishlatiladi?

Ls buyrug'i papkadagi barcha fayllarni quyidagi kabi ro'yxatlash uchun ishlatiladi:

ls

Agar siz "gnome" kabi ma'lum bir magistral bilan boshlangan papkada joylashgan barcha fayllarni bilishni istasangiz, karat bu qatorni ko'rsatish uchun ishlatilishi mumkin.

Masalan:

ls | grep ^ gnome

Bu faqat gnome bilan boshlangan fayllarni ro'yxatlashini unutmang. Fayl nomidagi faylga ega bo'lgan fayllarni istasangiz, siz yana yulduzga qaytasiz.

Yuqoridagi misolda ls fayl nomlari ro'yxatini qaytaradi va ushbu ro'yxatni naqsh bilan moslashtirish uchun ishlatiladigan grepga o'tkazadi. grep karat belgisi keyin kelgan belgilar bilan boshlangan har qanday narsani topishini anglatadi va bu holda, bu gnome.

Dollar belgisi - Metacharacter ($)

Dollar ramzi Linuxda metacharacter sifatida ko'p ma'noga ega bo'lishi mumkin.

Naqshlarni moslashtirish uchun foydalanilganda karatning qarama-qarshisidir va ma'lum bir magistral bilan tugaydigan biron bir naqshni bildiradi.

Masalan:

ls | grep png $

Bu png bilan yakunlangan barcha fayllar ro'yxatini ko'rsatadi.

Dollar ramzi, shuningdek, bosh qobig'idagi muhit o'zgaruvchilariga kirish uchun ham ishlatiladi.

Masalan:

eksport it = molly
echo $ it

Chiziq eksporti it = molly it deb ataladigan atrof-muhit o'zgaruvchisini hosil qiladi va uning qiymatini molly-ga qo'yadi. Atrof-o'zgaruvchiga kirish uchun $ belgisi ishlatiladi. $ Ramzi bilan echo $ dog so'zi mo'ylovni aks ettiradi, ammo unda echo it so'zi faqat itning so'zini aks ettiradi.

Metacharactersdan qochish

Ba'zan metafarakterning o'ziga xos ma'nosiga ega bo'lishini xohlamaysiz. F.refox deb nomlangan fayl va Firefox deb nomlangan faylingiz bo'lsa nima bo'ladi.

Endi quyidagi komandaga qarang:

ls | grep f.refox

Nima deb o'ylaysiz, qaytib kelganmi? Ham f.refox, ham firefox qaytariladi, chunki ular ikkala modelga mos keladi.

F.refox-ni faqatgina to'liq to'xtatish uchun siz to'liq to'xtashni quyidagicha ifodalash uchun qochishingiz kerak bo'ladi:

ls | grep f \ ref

Umumiy metakarakteriyalar va ularning ma'nolari

Linux metacharacters ro'yxati
Belgilar Ma'nosi
. Har qanday belgi
* Nolinchi yoki undan ko'p belgilar
^ Bir naqsh bilan boshlangan har qanday chiziq yoki mag'lubiyatga mos kelish (masalan, ^ gnome)
$ Bir naqsh bilan yakunlangan har qanday chiziq yoki mag'lubiyatga mos kelish (masalan, gnome $)
\ Uning maxsus ma'nosini olib tashlash uchun keyingi belgidan qochadi
[] Ro'yxat yoki intervalli (masalan, "abc", "def") yoki [1..9]
+ Bir yoki undan oldingi (masalan, grep a +)
? Nol yoki oldingi qatorga o'tish