Bash Globbing Eğitimi

Bash Globbing Tutorial



Bash, diğer bazı standart programlama dilleri gibi yerel düzenli ifadeleri desteklemez. Belirli kalıp türlerini eşleştirmek veya genişletmek için kullanılan Bash kabuğu özelliğine globbing denir. Globbing, çoğunlukla dosya adlarını eşleştirmek veya bir dosyadaki içeriği aramak için kullanılır. Globbing, deseni oluşturmak için joker karakterler kullanır. Küreleme desenleri oluşturmak için kullanılan en yaygın joker karakterler aşağıda açıklanmıştır.

'?' herhangi bir tek karakterle eşleştirmek için kullanılır. Kullanabilirsiniz '?' birden çok karakteri eşleştirmek için birden çok kez.







Örnek 1:



Diyelim ki, adları 4 karakter uzunluğunda olan ve uzantısı .txt . ' kullanarak globbing deseni uygulayabilirsiniz. ? ' bu görevi yapmak için dört kez.



Geçerli dizinin tüm dosya ve klasörlerinin listesini bulun.





$ls-NS

Aşağıdaki komutu çalıştırın, adları dört karakter uzunluğunda ve bilinmeyen dosyaları arayın.

$ ls -l ????.txt



Örnek-2:

Diyelim ki adları 8 karakter uzunluğundaki belge dosyalarını aramak istiyorsunuz, ilk 4 karakter f, o, o ve T ve uzatma doktor . Dosyaları aramak için aşağıdaki komutu globbing deseniyle çalıştırın.

$ls -NSayak????.doc

Örnek-3:

Diyelim ki dosya adını biliyorsunuz 'en iyisi' ve uzantı 3 karakter uzunluğunda, ancak uzantıyı bilmiyor. kullanarak aşağıdaki komutu çalıştırın '? ' üç karakter uzunluğunda herhangi bir uzantıya sahip 'test' adlı tüm dosyaları aramak için.

$ls -NSen iyisi.???

Yıldız – (*)

'*' sıfır veya daha fazla karakteri eşleştirmek için kullanılır. Herhangi bir dosya veya bilgiyi aramak için daha az bilgiye sahipseniz, o zaman kullanabilirsiniz. '*' küre şeklinde.

Örnek 1:

Tüm dosyaları aramak istediğinizi varsayalım. 'Pl' uzantı. kullanarak aşağıdaki komutu çalıştırın '*' bu görevi yapmak için.

$ls -NS *.pl

Örnek-2:

Diyelim ki, yalnızca dosya adının başlangıç ​​karakterini biliyorsunuz. 'ile' . Adları ile başlayan geçerli dizinin tüm dosyalarını aramak için '*' kullanarak aşağıdaki komutu çalıştırın. 'ile' .

$ls -NSile*.*

Örnek-3:

Dosyaları aramadan çeşitli amaçlar için bash betiğinde '*' uygulayabilirsiniz. adlı bir bash dosyası oluşturun 'check.sh' aşağıdaki komut dosyası ile. Burada, kullanıcının ne zaman yazacağı ' y' veya 'Y' veya 'evet' veya 'Evet' sonra 'onaylanmış' yazdıracak ve tür ne zaman yazacak 'n' veya 'H' veya 'hayır' veya 'Hayır' sonra 'Onaylanmadı' yazdıracak.

#!/bin/bash
dışarı attı 'Onaylamak istiyor musunuz?'
okumanCevap
durum $cevap içinde
[yy]* ) dışarı attı 'onaylanmış.';;
[Hayır]* ) dışarı attı 'Onaylanmadı.';;
*) dışarı attı 'Tekrar deneyin.';;
esac

Komut dosyasını çalıştırın.

$bashçek.sh

Köşeli ayraç - ([])

'[]' aralıktaki karakteri eşleştirmek için kullanılır. En çok kullanılan aralık bildirimlerinden bazıları aşağıda belirtilmiştir.

Tüm büyük harfli alfabeler, [:upper:] veya [A-Z] aralığına göre tanımlanır.

Tüm küçük harfli alfabeler, [:lower:] veya [a-z] aralığına göre tanımlanır.

Tüm sayısal basamaklar, [:digit:] veya [0-9] aralığı ile tanımlanır.

Tüm büyük ve küçük alfabeler, [:alpha:] veya [a-zA-z] aralığına göre tanımlanır.

Tüm büyük harfler, küçük harfler ve rakamlar, [:alnum:] veya [a-zA-Z0-9] aralığı ile tanımlanır.

Örnek 1:

Adını içeren tüm dosya ve klasörleri aramak için aşağıdaki komutu çalıştırın. P veya ne veya r veya s .

$ls -NS [p-s]*

Örnek-2:

Adı 1'den 5'e kadar herhangi bir rakamla başlayan tüm dosya ve klasörleri aramak için aşağıdaki komutu çalıştırın.

$ls -NS [1-5]*

O eksik – (^)

Kullanabilirsiniz '^' globbing modelini daha özel olarak tanımlamak için köşeli parantez ile. '^' köşeli parantez içinde veya dışında kullanılabilir. '^', belirli bir karakter aralığıyla başlayan dosyanın içeriğini aramak için köşeli parantezin dışında kullanılır. Belirli bir karakter aralığıyla başlayan satırları vurgulayarak dosyanın tüm içeriğini göstermek için köşeli parantez içinde '^' kullanılır. Bir dosyadan belirli bir içeriği aramak için farklı türde küreselleştirme desenleri kullanabilirsiniz. 'kavramak' komutu, bash'de içerik aramak için kullanılır. Diyelim ki, adında bir metin dosyanız var. 'liste.txt' aşağıdaki içerikle. Bu dosya için aşağıdaki örnekleri test edin.

elma
4000
Muz
700
turuncu
850
Armut
9000
usta

Örnek 1:

Bu satırları aramak için aşağıdaki komutu çalıştırın liste.txt ile başlayan dosya P veya Q veya R .

$ grep '^[P-R]' list.txt

Örnek – 2:

Bu satırları vurgulamak için aşağıdaki komutu çalıştırın. liste.txt ile başlayan dosya A veya B veya C .

$ grep '[^A-C]' list.txt

Ünlem İşareti – (!)

Kullanabilirsiniz '!' aralığı desen içinde. Aralık deseni dışında '^' sembolünün kullanılmasıyla aynı şekilde çalışır. Bazı kullanım örnekleri '!' işareti aşağıda verilmiştir.

Örnek 1:

Bu satırları göstermek için aşağıdaki komutu çalıştırın liste.txt ile başlayan dosya 'P' veya Q veya R .

$ grep [!P-R] list.txt

Örnek – 2:

Bu satırları göstermek için aşağıdaki komutu çalıştırın liste.txt herhangi bir rakamla başlayan dosya 4 ila 8 .

$ grep [!4-8] list.txt

Dolar İşareti – ($)

'$' bitiş karakterini tanımlamak için kullanılır. Son karaktere göre bilgi aramak istediğinizi biliyorsanız, kullanabilirsiniz. '$' küre şeklinde.

Örnek 1:

Bu satırları aramak için aşağıdaki komutu çalıştırın liste.txt ile biten dosya 'ile' .

$ grep a$ list.txt

Örnek – 2:

Bu satırları aramak için aşağıdaki komutu çalıştırın liste.txt sayı ile biten dosya elli .

$ grep 50$ liste.txt

Kıvrımlı ayraç – ({})

'{}' dosya adlarını birden fazla globbing modeliyle eşleştirmek için kullanılabilir. Her desen, boşluk bırakmadan küme parantezinde ',' ile ayrılır. Bazı örnekler aşağıda verilmiştir.

Örnek 1:

Adları 5 karakter uzunluğunda ve uzantıları olan dosyaları aramak için aşağıdaki komutu çalıştırın. 'NS' veya dosyaların son iki karakteri 'NS' ve uzantısı 'txt' .

$ ls -l {?????.sh,*st.txt}

Örnek – 2:

Uzantıları olan tüm dosyaları silmek için aşağıdaki komutu çalıştırın. 'doc' veya 'docx' .

$rm {*.doc,*.docx}

Boru– ( | )

'|' işareti, globbing örüntüsünde birden fazla koşul uygulamak için de kullanılır. Her desen, komutta '|' sembolü ile ayrılır.

Örnek 1:

'a' karakteriyle başlayan ve 'bash' veya 'sh' uzantısına sahip dosya adlarını aramak için aşağıdaki komutu çalıştırın.

$lsile*+(.bash|.NS)

Örnek – 2:

adlı bir bash dosyası oluşturun 'menü.bash' ve aşağıdaki betiği ekleyin. kullanıcı türü ise 1 veya S sonra yazdıracak Metin arama . kullanıcı türü ise 2 veya R sonra yazdıracak metin değiştirme . kullanıcı türü ise 3 veya D sonra yazdıracak Metin silme . yazdıracak Tekrar deneyin başka herhangi bir giriş için.

#!/bin/bash
dışarı attı 'Menüden herhangi bir seçeneği seçin:'
okumanCevap
durum $cevap içinde
1 |S) dışarı attı 'Metin aranıyor';;
2 |r) dışarı attı 'Metin değiştiriliyor';;
3 |NS) dışarı attı 'Metni silme';;
*) dışarı attı 'Tekrar deneyin.';;
esac

Komut dosyasını çalıştırın.

$bashmenü.bash

ÇÖZÜM

En sık kullanılan globbing kalıplarından bazıları bu öğreticide çok basit örnekler kullanılarak açıklanmıştır. Umarım yukarıdaki örnekleri uyguladıktan sonra, globbing kavramı sizin için netleşir ve bunu bash komutlarında ve betiklerinde başarılı bir şekilde uygulayabilirsiniz.

Daha fazla bilgi için bu videoyu kontrol edin: