Apakah Barisan Metalik dan Bagaimana Anda Menggunakannya

Menurut Wikipedia, metacharacter adalah watak yang mempunyai makna khas, seperti karat (^), tanda dolar ($) atau asterisk (*).

Dari segi Linux, terdapat bilangan yang saksama dari metakarakter ini dan maksudnya berbeza bergantung pada arahan atau program yang anda jalankan.

The Stop Full As A Metacharacter (.)

Henti penuh merendah diri digunakan untuk mendermakan kedudukan semasa ketika menjalankan perintah seperti cd , find atau sh tapi dalam aplikasi seperti awk , grep dan sed ia digunakan untuk menunjukkan karakter apa pun.

Sebagai contoh, arahan berikut akan menemui semua fail mp3 dalam folder semasa dan di bawah.

cari . -name * .mp3

Sekiranya anda menjalankan arahan itu dalam direktori kerja semasa anda (pwd) maka anda mungkin akan mendapat hasil yang dikembalikan, dengan andaian menyimpan fail mp3 anda dalam folder muzik dalam folder rumah anda.

Sekarang perhatikan arahan ini:

ps -ef | grep f..efox

Perintah ps menyenaraikan semua proses yang berjalan pada komputer anda. Perintah grep mengambil baris input dan mencari corak.

Oleh itu, arahan ps -ef mendapat senarai proses yang berjalan dan memberikannya kepada grep yang mencari mana-mana baris dalam senarai yang mempunyai f..efox di mana. boleh bermakna mana-mana watak.

Sekiranya anda menjalankan firefox anda akan mendapat perlawanan. Begitu juga, jika anda mempunyai program yang dipanggil fonefox atau freefox berjalan mereka juga akan dikembalikan.

Asterisk sebagai metacharacter (*)

Asterisk adalah metacharacter yang lebih terkenal di dunia dan digunakan untuk bermaksud 0 atau lebih ketika mencari corak.

Sebagai contoh:

cari . -name * .mp3

* * Kembali mengembalikan padanan untuk nama fail yang berakhir di .mp3. Begitu juga, saya boleh menggunakan asterisk dengan perintah grep seperti yang ditunjukkan sebagai berikut:

ps -ef | grep F * efox

Perlu diperhatikan bahawa ini berbeza sedikit kerana asterisk bermakna sifar atau lebih dan mencari firefox, facefox dan fonefox juga dapat mencari flutefox, ferretfox dan bahkan hanya fefox.

The Carat As A Metacharacter (^)

Karat (^) digunakan untuk menandakan permulaan garis atau rentetan. Jadi bagaimana ia digunakan?

Perintah ls digunakan untuk menyenaraikan semua fail dalam folder seperti berikut:

ls

Jika anda ingin mengetahui semua fail dalam folder yang bermula dengan rentetan tertentu seperti "gnome" maka karat boleh digunakan untuk menentukan rentetan itu.

Sebagai contoh:

ls | grep ^ gnome

Ambil perhatian bahawa ini hanya menyenaraikan fail yang bermula dengan gnome. Sekiranya anda mahukan fail yang mempunyai gnome dalam nama fail di mana-mana sahaja anda akan kembali semula ke asterisk.

Dalam contoh di atas, ls mengembalikan senarai nama fail dan pas senarai ke grep yang digunakan untuk padanan corak. grep tahu bahawa simbol karat bermaksud mencari apa-apa yang bermula dengan watak-watak yang datang selepas itu dan dalam kes ini, ia adalah gnome.

Simbol Dolar Sebagai Metacharacter ($)

Simbol dolar boleh mempunyai banyak makna sebagai metacharacter dalam Linux.

Apabila digunakan untuk memadankan corak ia bererti bertentangan dengan karat dan menandakan corak apa yang berakhir dengan rentetan tertentu.

Sebagai contoh:

ls | grep png $

Ini menyenaraikan semua fail yang berakhir dengan png.

Simbol dolar juga digunakan untuk mengakses pembolehubah persekitaran dalam shell bash.

Sebagai contoh:

anjing eksport = molly
echo $ dog

Talian eksport anjing = molly mencipta pembolehubah persekitaran yang dipanggil anjing dan menetapkan nilainya kepada molly. Untuk mengakses pembolehubah persekitaran simbol $ digunakan. Dengan simbol $ pernyataan anjing echo $ memaparkan molly tetapi tanpa itu, pernyataan anjing echo hanya memaparkan kata anjing.

Melarikan diri

Kadang-kadang anda tidak mahu metacharacter mempunyai makna yang istimewa. Bagaimana jika anda mempunyai fail bernama f.refox dan fail bernama firefox.

Sekarang perhatikan arahan berikut:

ls | grep f.refox

Apa yang anda fikir dikembalikan? Kedua-dua f.refox dan firefox dikembalikan kerana kedua-duanya sepadan dengan corak.

Untuk hanya kembali f.refox, anda perlu melepaskan diri sepenuhnya untuk benar-benar bermaksud berhenti penuh seperti berikut:

ls | grep f \\. refox

Metakarakter Biasa Dan Maksud-maksudnya

Senarai Linux Metacharacters
Watak Makna
. Mana-mana watak
* Nila atau lebih banyak aksara
^ Padan mana-mana garisan atau tali yang bermula dengan corak (iaitu ^ gnome)
$ Padan mana-mana garisan atau rentetan yang berakhir dengan pola (iaitu gnome $)
\ Melepaskan watak seterusnya untuk menghapus makna istimewa
[] Padan salah satu senarai atau julat (iaitu ["abc", "def"] atau [1..9]
+ Padankan satu atau lebih dahulu (iaitu grep a +)
? Padankan sifar atau satu sebelum ini