Linux Metacharacters Nedir ve Bunları Nasıl Kullanıyorsunuz?

Wikipedia'ya göre, bir meta karakter, karat (^), dolar işareti ($) veya yıldız işareti (*) gibi özel bir anlamı olan herhangi bir karakterdir.

Linux açısından, bu metakarakterlerin adil bir sayısı vardır ve anlamları, hangi komut veya programa çalıştığınıza bağlı olarak farklılık gösterir.

Bir Metacharacter Olarak Tam Duruş (.)

Humble full stop, cd , find veya sh gibi komutları çalıştırırken mevcut pozisyonu bağışlamak için kullanılır, ancak awk , grep ve sed gibi uygulamalarda herhangi bir karakteri göstermek için kullanılır.

Örnek olarak, aşağıdaki komut geçerli klasördeki ve altındaki tüm mp3 dosyalarını bulacaktır.

bul. -name * .mp3

Eğer bu komutu size çalışma dizininde (pwd) çalıştırırsanız, mp3 dosyalarınızı ana klasörünüzdeki bir müzik klasöründe tuttuğunuzu varsayarak sonuçların büyük olasılıkla geri döndüğünü görürsünüz.

Şimdi şu komuta bakın:

ps -ef | grep f..efox

Ps komutu, bilgisayarınızdaki tüm çalışan işlemleri listeler. Grep komutu giriş satırlarını alır ve bir desen arar.

Bu nedenle, ps -ef komutu çalışan işlemlerin bir listesini alır ve listeden herhangi bir satırı arar. herhangi bir karakter anlamına gelebilir.

İtfaiyeci çalıştırıyorsanız, bir eşleşme elde edeceksiniz. Benzer şekilde, fonefox veya freefox çalıştıran bir programınız varsa, bunlar da iade edilir.

Bir metakarakter olarak yıldız işareti (*)

Yıldız, daha evrensel olarak iyi bilinen bir metakarakterdir ve bir desen ararken 0 veya daha fazla anlamına gelir.

Örneğin:

bul. -name * .mp3

* .mp3, .mp3 ile biten herhangi bir dosya adı için bir eşleşme döndürür. Benzer şekilde, grep komutunu kullanarak yıldız işaretini aşağıdaki gibi gösterebilirdim:

ps -ef | grep F * efox

Bu fark hafifçe farklıdır çünkü yıldız işareti sıfır ya da daha fazla anlamına gelir, aynı zamanda firefox, facefox ve fonefox da bulabilir, aynı zamanda flutefox, ferretfox ve hatta fefox da bulabilir.

Bir Metacharacter Olarak Karat (^)

Karat (^), bir satırın veya bir dizenin başlangıcını belirtmek için kullanılır. Peki nasıl kullanılıyor?

Ls komutu, bir klasördeki tüm dosyaları aşağıdaki gibi listelemek için kullanılır:

ls

Eğer "gnome" gibi belirli bir dizeyle başlayan bir klasördeki tüm dosyaları bilmek istiyorsanız, bu dizgiyi belirtmek için karat kullanılabilir.

Örneğin:

ls | grep ^ gnome

Bunun yalnızca gnome ile başlayan dosyaları listelediğini unutmayın. Eğer herhangi bir yerde dosya isminde bir gnome olan dosyalar istiyorsanız, tekrar yıldız işaretine geri dönersiniz.

Yukarıdaki örnekte, ls bir dosya isimleri listesi döndürür ve bu listeyi desen eşleştirmesi için kullanılan grep'e geçirir. grep, karat sembolünün, kendisinden sonra gelen karakterlerle başlayan bir şey bulması anlamına geldiğini ve bu durumda bir gnome olduğunu bilir.

Bir Metacharacter Olarak Dolar Sembolü ($)

Dolar sembol, Linux içinde bir metakarakter olarak çoklu anlamlara sahip olabilir.

Kalıpları eşleştirmek için kullanıldığında, karatın tersi anlamına gelir ve belirli bir dizeyle biten herhangi bir deseni gösterir.

Örneğin:

ls | grep png $

Bu, png ile biten tüm dosyaları listeler.

Dolar sembolü ayrıca bash kabuğundaki ortam değişkenlerine erişmek için kullanılır.

Örneğin:

ihracat köpeği = molly
echo $ köpek

Satır dışa aktarma köpeği = molly köpek adı verilen bir ortam değişkeni oluşturur ve değerini mol olarak ayarlar. Ortam değişkenine erişmek için $ sembolü kullanılır. $ Sembolü ile echo $ köpeği ifadesi molly görüntüler ancak bu olmadan, yankı köpek ifadesi sadece kelime köpek görüntüler.

Kaçan Metacharacters

Bazen meta karakterin özel bir anlamı olmasını istemezsiniz. F.refox adında bir dosya ve firefox adında bir dosya varsa ne olur?

Şimdi aşağıdaki komuta bakın:

ls | grep f.refox

Sence ne döndü? Hem f.refox hem de firefox, her ikisi de desenle eşleştikleri için döndürülür.

Sadece f.refox'u döndürmek için tam stoptan kaçınmak için aşağıdaki gibi tam bir duraktan kaçınmanız gerekir:

ls | grep f \.

Ortak Metacharacters ve Anlamları

Linux Metacharacters Listesi
Karakter anlam
. Herhangi bir karakter
* Sıfır veya daha fazla karakter
^ Bir modelle başlayan herhangi bir satırı veya dizeyi eşleştirin (ör. ^ Gnome)
$ Bir modelle biten herhangi bir satırı veya dizeyi eşleştirin (örn. Gnome $)
\ Özel anlamını kaldırmak için bir sonraki karakteri kaçar
[] Bir listeden veya aralığından birini eşleştirin (örn. ["Abc", "def"] veya [1..9]
+ Bir veya daha fazla önceki eşleşmeyi eşleştirin (örn. Grep a +)
? Sıfır veya bir önceki maç