Unix / Linux - Borular ve Filtreler

Bu bölümde, Unix'teki borular ve filtreler hakkında ayrıntılı olarak tartışacağız. Bir programın çıktısının bir sonraki programın girdisi olması için iki komutu birbirine bağlayabilirsiniz. Bu şekilde bağlanan iki veya daha fazla komut bir boru oluşturur.

Bir boru yapmak için dikey bir çubuk koyun (|) iki komut arasındaki komut satırında.

Bir program girdisini başka bir programdan aldığında, o girdi üzerinde bazı işlemler yapar ve sonucu standart çıktıya yazar. Olarak anılırfilter.

Grep Komutanlığı

Grep komutu, belirli bir desene sahip satırlar için bir dosya veya dosyaları arar. Sözdizimi -

$grep pattern file(s)

İsim "grep" ed (bir Unix satır düzenleyicisi) komutundan gelir g/re/p Bu, "genel olarak bir normal ifadeyi arayın ve onu içeren tüm satırları yazdırın" anlamına gelir.

Normal ifade, bazı düz metin (örneğin bir kelime) ve / veya kalıp eşleştirme için kullanılan özel karakterlerdir.

Grep'in en basit kullanımı, tek bir kelimeden oluşan bir kalıp aramaktır. Bir kanalda kullanılabilir, böylece yalnızca belirli bir dizeyi içeren girdi dosyalarının satırları standart çıktıya gönderilir. Grep'e okunması için bir dosya adı vermezseniz, standart girdisini okur; tüm filtre programlarının çalışma şekli budur -

$ls -l | grep "Aug"
-rw-rw-rw-   1 john  doc     11008 Aug  6 14:10 ch02
-rw-rw-rw-   1 john  doc      8515 Aug  6 15:30 ch07
-rw-rw-r--   1 john  doc      2488 Aug 15 10:51 intro
-rw-rw-r--   1 carol doc      1605 Aug 23 07:35 macros
$

İle birlikte kullanabileceğiniz çeşitli seçenekler vardır. grep komut -

Sr.No. Seçenek ve Açıklama
1

-v

Desenle eşleşmeyen tüm satırları yazdırır.

2

-n

Eşleşen satırı ve satır numarasını yazdırır.

3

-l

Yalnızca eşleşen satırlara sahip dosyaların adlarını yazdırır ("l" harfi)

4

-c

Yalnızca eşleşen satırların sayısını yazdırır.

5

-i

Büyük veya küçük harfle eşleşir.

Şimdi grep'e şu satırları bulmasını söyleyen bir düzenli ifade kullanalım: "carol", ardından sıfır veya normal ifadede ". *" olarak kısaltılan diğer karakterler, ardından "Ağustos" .−

Burada kullanıyoruz -i büyük / küçük harfe duyarlı olmayan arama seçeneği -

$ls -l | grep -i "carol.*aug"
-rw-rw-r--   1 carol doc      1605 Aug 23 07:35 macros
$

Sort Komutu

sortkomutu, metin satırlarını alfabetik veya sayısal olarak düzenler. Aşağıdaki örnek, yemek dosyasındaki satırları sıralar -

$sort food
Afghani Cuisine
Bangkok Wok
Big Apple Deli
Isle of Java

Mandalay
Sushi and Sashimi
Sweet Tooth
Tio Pepe's Peppers
$

sortkomutu, varsayılan olarak metin satırlarını alfabetik olarak düzenler. Sıralamayı kontrol eden birçok seçenek vardır -

Sr.No. Açıklama
1

-n

Sayısal olarak sıralar (örnek: 10, 2'den sonra sıralanır), boşlukları ve sekmeleri yok sayar.

2

-r

Sıralamanın sırasını tersine çevirir.

3

-f

Büyük ve küçük harfleri birlikte sıralar.

4

+x

Önce görmezden gelir x sıralarken alanlar.

Bir boruya ikiden fazla komut bağlanabilir. Kullanarak önceki bir boru örneğini almakgrep, Ağustos ayında değiştirilen dosyaları boyut sırasına göre daha da sıralayabiliriz.

Aşağıdaki boru komutlardan oluşur ls, grep, ve sort -

$ls -l | grep "Aug" | sort +4n
-rw-rw-r--  1 carol doc      1605 Aug 23 07:35 macros
-rw-rw-r--  1 john  doc      2488 Aug 15 10:51 intro
-rw-rw-rw-  1 john  doc      8515 Aug  6 15:30 ch07
-rw-rw-rw-  1 john  doc     11008 Aug  6 14:10 ch02
$

Bu kanal, dizininizdeki ağustos ayında değiştirilen tüm dosyaları boyut sırasına göre sıralar ve bunları terminal ekranına yazdırır. Sıralama seçeneği + 4n, dört alanı atlar (alanlar boşluklarla ayrılır) ve ardından satırları sayısal sıraya göre sıralar.

Pg ve daha fazla Komutlar

Uzun bir çıktı normalde sizin tarafınızdan ekranda sıkıştırılabilir, ancak metni daha fazla çalıştırırsanız veya pgfiltre olarak komut; ekran metinle dolduğunda ekran durur.

Uzun bir dizin listeniz olduğunu varsayalım. Sıralanmış listeyi okumayı kolaylaştırmak için, çıktıyı aktarınmore aşağıdaki gibi -

$ls -l | grep "Aug" | sort +4n | more
-rw-rw-r--  1 carol doc      1605 Aug 23 07:35 macros
-rw-rw-r--  1 john  doc      2488 Aug 15 10:51 intro
-rw-rw-rw-  1 john  doc      8515 Aug  6 15:30 ch07
-rw-rw-r--  1 john  doc     14827 Aug  9 12:40 ch03
	.
	.
	.
-rw-rw-rw-  1 john  doc     16867 Aug  6 15:56 ch05
--More--(74%)

Dosya boyutuna göre sıralanmış satırlardan oluşan metinle ekran dolduğunda ekran dolacaktır. Ekranın altındamore sıralanan metinde hareket etmek için bir komut yazabileceğiniz komut istemi.

Bu ekranla işiniz bittiğinde, daha fazla programın tartışmasında listelenen komutlardan herhangi birini kullanabilirsiniz.