តើអ្វីទៅជា Linux Metacharacters ហើយតើអ្នកប្រើវាយ៉ាងដូចម្តេច?

យោងតាមវិគីភីឌាថា metacharacter គឺជាតួអង្គដែលមានអត្ថន័យពិសេសដូចជាការ៉ាត់ (^) សញ្ញាដុល្លារ ($) ឬសញ្ញាផ្កាយ (*) ។

នៅក្នុងលក្ខខណ្ឌនៃលីនុចមានចំនួនត្រឹមត្រូវនៃ metacharacters ទាំងនេះនិងអត្ថន័យរបស់ពួកគេខុសគ្នាអាស្រ័យលើពាក្យបញ្ជាឬកម្មវិធីដែលអ្នកកំពុងរត់។

ពេញបញ្ឈប់ជាតួអក្សរមេតាចារ (។ )

ការឈប់ពេញលេញដ៏រាបទាបត្រូវបានប្រើដើម្បីបរិច្ចាគទីតាំងបច្ចុប្បន្ននៅពេលរត់ពាក្យបញ្ជាដូចជា ស៊ីឌី រក ឬ sh ប៉ុន្តែក្នុងកម្មវិធីដូចជា awk , grep and sed វាត្រូវបានគេប្រើដើម្បីសម្គាល់តួអក្សរណាមួយ។

ជាឧទាហរណ៍ពាក្យបញ្ជាខាងក្រោមនឹងរកឯកសារ mp3 ទាំងអស់នៅក្នុងថតបច្ចុប្បន្ននិងខាងក្រោម។

ស្វែងរក។ - នាម * .mp3

បើអ្នករត់ពាក្យបញ្ជានោះអ្នកនឹងរកឃើញថតការងារ (pwd) បន្ទាប់មកអ្នកប្រហែលជានឹងទទួលបានលទ្ធផលដោយសន្មតថាអ្នករក្សាទុកឯកសារ mp3 របស់អ្នកនៅក្នុងថតតន្ត្រីនៅក្នុងថតផ្ទះរបស់អ្នក។

ឥឡូវនេះសូមមើលពាក្យបញ្ជានេះ:

ps -ef | grep f..efox

ពាក្យបញ្ជា ps រាយរាល់ដំណើរការដែលកំពុងរត់នៅលើកុំព្យូទ័ររបស់អ្នក។ ពាក្យបញ្ជា grep ត្រូវការបន្ទាត់នៃការបញ្ចូលនិងស្វែងរកលំនាំ។

ដូច្នេះពាក្យបញ្ជា ps -ef ទទួលបានបញ្ជីនៃដំណើរការដែលកំពុងរត់និងផ្តល់វាទៅ grep ដែលស្វែងរកបន្ទាត់ណាមួយនៅក្នុងបញ្ជីដែលមាន f.efox ជាកន្លែងដែល។ អាចមានន័យថាតួអក្សរណាមួយ។

ប្រសិនបើអ្នកមាន Firefox ដែលកំពុងរត់អ្នកនឹងទទួលបានការប្រកួត។ ស្រដៀងគ្នានេះដែរប្រសិនបើអ្នកមានកម្មវិធីដែលហៅថា fonefox ឬ freefox running ពួកគេនឹងត្រូវបានត្រឡប់មកវិញផងដែរ។

សញ្ញាផ្កាយជា metacharacter (*)

សញ្ញាផ្កាយគឺជា metacharacter ដែលត្រូវបានគេស្គាល់ជាទូទៅហើយត្រូវបានប្រើដើម្បីមានន័យថា 0 ឬច្រើនជាងនេះនៅពេលស្វែងរកលំនាំ។

ឧទាហរណ៍:

ស្វែងរក។ - នាម * .mp3

* .mp3 ត្រឡប់ការផ្គូផ្គងសម្រាប់ឈ្មោះឯកសារដែលបញ្ចប់ដោយ .mp3 ។ ដូចគ្នានេះដែរខ្ញុំអាចប្រើសញ្ញាផ្កាយជាមួយពាក្យបញ្ជា grep ដូចខាងក្រោម:

ps -ef | grep F * efox

វាគួរឱ្យកត់សម្គាល់ថាវាមានភាពខុសប្លែកបន្តិចដោយសារតែសញ្ញាផ្កាយមានន័យថាសូន្យឬច្រើនជាងនេះក៏ដូចជាការស្វែងរក Firefox, Facefox និង Fonefox វាក៏អាចរកឃើញ flutefox, ferretfox និងសូម្បីតែ fefox ។

កាបូតជាអាតូម (^)

ការ៉ាត់ (^) ត្រូវបានប្រើដើម្បីចង្អុលបង្ហាញការចាប់ផ្តើមបន្ទាត់ឬខ្សែអក្សរ។ ដូច្នេះតើវាត្រូវបានប្រើប្រាស់យ៉ាងដូចម្តេច?

ពាក្យបញ្ជា ls ត្រូវបានប្រើដើម្បីរាយឯកសារទាំងអស់ក្នុងថតដូចខាងក្រោម:

ls

ប្រសិនបើអ្នកចង់ដឹងឯកសារទាំងអស់នៅក្នុងថតដែលចាប់ផ្តើមដោយខ្សែអក្សរជាក់លាក់ដូចជា "gnome" នោះ carat អាចត្រូវបានប្រើដើម្បីបញ្ជាក់ខ្សែអក្សរនោះ។

ឧទាហរណ៍:

ls | grep ^ gnome

។ ចំណាំថាវារាយតែឯកសារដែលចាប់ផ្ដើមដោយ gnome & # 160; ។ ប្រសិនបើអ្នកចង់ឱ្យឯកសារដែលមាន gnome នៅក្នុងឈ្មោះឯកសារនៅគ្រប់ទីកន្លែងនោះអ្នកនឹងត្រឡប់ទៅសញ្ញាផ្កាយម្តងទៀត។

ក្នុងឧទាហរណ៍ខាងលើ ls ត្រឡប់បញ្ជីនៃឈ្មោះឯកសារនិងបញ្ជូនបញ្ជីនោះទៅ grep ដែលត្រូវបានប្រើសម្រាប់ការផ្គូផ្គងលំនាំ។ grep ដឹងថានិមិត្តសញ្ញាការ៉ាតមានន័យថារកឃើញអ្វីដែលចាប់ផ្តើមជាមួយតួអក្សរដែលមកបន្ទាប់ពីវាហើយក្នុងករណីនេះវាជា gnome ។

និមិត្តសញ្ញាដុល្លារជាតួអក្សរមេតាចារ ($)

និមិត្តសញ្ញាដុល្លារអាចមានអត្ថន័យច្រើនជា metacharacter ក្នុងលីនុច។

នៅពេលត្រូវបានប្រើដើម្បីផ្គូផ្គងលំនាំវាមានន័យថាផ្ទុយទៅនឹងការ៉ាតនិងបង្ហាញនូវគំរូណាមួយដែលបញ្ចប់ដោយខ្សែអក្សរជាក់លាក់មួយ។

ឧទាហរណ៍:

ls | grep png $

នេះរាយឯកសារទាំងអស់ដែលបញ្ចប់ដោយ png ។

និមិត្តសញ្ញាដុល្លារក៏ត្រូវបានប្រើដើម្បីចូលអថេរបរិស្ថាននៅក្នុងសែល bash ។

ឧទាហរណ៍:

នាំចេញសត្វឆ្កែ = molly
echo $ dog

ឆ្កែនាំចេញឆ្កែ = molly បង្កើតអថេរបរិស្ថានដែលហៅថាឆ្កែហើយកំណត់តម្លៃរបស់វាទៅ molly ។ ដើម្បីចូលប្រើអថេរបរិស្ថាននិមិត្តសញ្ញា $ ត្រូវបានប្រើ។ ជាមួយនឹងនិមិត្តសញ្ញា $ echo $ dog statement statement បង្ហាញ molly ប៉ុន្តែដោយគ្មានវា, សេចក្តីថ្លែងការណ៍ឆ្កែអេកូគ្រាន់តែបង្ហាញឆ្កែពាក្យ។

គេចពីមេកាចារិក

ជួនកាលអ្នកមិនចង់អោយមីតាចារមានអត្ថន័យពិសេស។ តើមានអ្វីប្រសិនបើអ្នកមានឯកសារដែលហៅថា f.refox និងឯកសារមួយដែលគេហៅថា firefox ។

ឥឡូវនេះសូមមើលពាក្យបញ្ជាដូចខាងក្រោម:

ls | grep f.refox

តើអ្នកគិតថាត្រូវបានត្រលប់មកវិញដោយរបៀបណា? ទាំងពីរ f.refox និង Firefox ត្រូវបានត្រឡប់ដោយសារតែពួកគេទាំងពីរផ្គូផ្គងលំនាំ។

ដើម្បីត្រឡប់តែ f.refox អ្នកនឹងត្រូវការគេចផុតពីចំណតពេញលេញដើម្បីមានន័យថាជាការឈប់ពេញលេញដូចខាងក្រោម:

ls | grep f \\ refox

Metacharacters ទូទៅនិងអត្ថន័យរបស់ពួកគេ

បញ្ជីលីនុច Metacharacters
តួអក្សរ អត្ថន័យ
តួអក្សរណាមួយ
* អក្សរសូន្យឬច្រើន
^ ផ្គូផ្គងបន្ទាត់ឬខ្សែអក្សរណាដែលចាប់ផ្ដើមដោយលំនាំ (ឧ។ ^ gnome)
$ ផ្គូផ្គងបន្ទាត់ឬខ្សែអក្សរបញ្ចប់ដោយលំនាំ (ឧទាហរណ៍ gnome $)
\ គេចពីតួអក្សរបន្ទាប់ដើម្បីលុបអត្ថន័យពិសេសរបស់វា
[] ផ្គូផ្គងបញ្ជីមួយឬជួរ (ឧ។ ["abc" "def"] ឬ [1..9]
+ ផ្គូផ្គងទៅមុខមួយឬច្រើន (ឧ។ grep a +)
? ផ្គូផ្គងសូន្យឬមួយនៅពីមុខ