Örneklerle Linux'ta 10 Faydalı Zincirleme Operatörü


Linux komutlarının zincirlenmesi, birkaç komutun birleştirilip aralarında kullanılan operatörün davranışına göre çalıştırılması anlamına gelir.

Linux'ta komutların zincirlenmesi, kabuğun kendisine kısa kabuk komut dosyaları yazmanız ve bunları doğrudan terminalden çalıştırmanız gibi bir şeydir. Zincirleme işlemin otomatikleştirilmesini mümkün kılar.

Üstelik gözetimsiz bir makine, zincirleme operatörlerinin yardımıyla sistematik olarak çalışabilir.

Bu makale sık kullanılan komut zinciri operatörlerine ışık tutmayı amaçlamaktadır. Üretkenliğinizi artırabilecek ve zaman zaman sistem yükünü azaltırken kısa ve anlamlı kod yazmanıza olanak tanıyan kısa açıklamalar ve ilgili örnekler sağlar.

1. Ve İşareti Operatörü (&) – Linux Komutunu Arka Planda Çalıştırın

'&' işlevi, komutun arka planda çalışmasını sağlamaktır. Komutu yazmanız ve ardından bir boşluk bırakıp '&' yazmanız yeterlidir. Arka planda birden fazla komutu tek seferde çalıştırabilirsiniz.

Arka planda 'ping' adı verilen tek bir Linux komutunu çalıştırın:

ping -­c5 linux-console.net &

Arka planda aynı anda iki veya daha fazla apt komutunu çalıştırın:

apt update & apt upgrade &

2. Noktalı Virgül Operatörü (;) – Çoklu Komutları Çalıştır

Noktalı virgül (;) operatörü, birden fazla komutun tek seferde çalıştırılmasını ve komutun yürütülmesinin sıralı olarak gerçekleşmesini mümkün kılar.

apt update ; apt upgrade ; mkdir test

Yukarıdaki komut kombinasyonu önce update talimatını, ardından upgrade talimatını yürütecek ve son olarak mevcut çalışma dizini altında bir 'test' dizini oluşturacaktır.

3. AND Operatörü (&&) – Başarılı Olduğunda İkinci Komutu Çalıştır

AND Operatörü (&&), yalnızca ilk komutun yürütülmesi BAŞARILI ise (yani, çıkış durumu) ikinci komutu yürütür. ilk komut 0'dur. Bu komut, son komutun yürütme durumunu kontrol etmede çok kullanışlıdır.

Örneğin, terminaldeki links komutunu kullanarak linux-console.net web sitesini ziyaret etmek istiyorum ancak bundan önce ana bilgisayarın canlı mı yoksa olup olmadığını kontrol etmem gerekiyor. >değil.

ping -c3 linux-console.net && links linux-console.net

4. VEYA Operatörü (||) – Koşullu Komutun Yürütülmesi

OR Operatörü (||), programlamadaki "else" ifadesine çok benzer. || operatörü, yalnızca ilk komutun yürütülmesi başarısız olduğunda, yani ilk komutun çıkış durumu '1' olduğunda ikinci komutu yürütmenize izin verir.

Örneğin, root olmayan bir hesaptan 'apt update' komutunu çalıştırmak istiyorum ve ilk komut başarısız olursa ikinci 'links linux-console.net' komutu idam edecek.

apt update || links linux-console.net

Yukarıdaki komutta, kullanıcının sistemi güncelleme yapmasına izin verilmediğinden, bu, ilk komutun çıkış durumunun '1' olduğu anlamına gelir ve dolayısıyla son komut 'links linux-console.net' yürütülür.

İlk komut '0' çıkış durumuyla başarıyla yürütülürse ne olur? Açıkça! İkinci komut yürütülmeyecek.

mkdir test || links linux-console.net

Burada kullanıcı, ana dizininde kullanıcıya izin verilen bir 'test' klasörü oluşturur. Komut, '0' çıkış durumunu vererek başarıyla yürütüldü ve bu nedenle komutun son kısmı yürütülmedi.

5. NOT Operatör (!) – Komutların Seçici Olarak Yürütülmesi

NOT Operatörü (!), bir "hariç" ifadesine çok benzer. Bu komut, sağlanan koşul dışındaki tüm komutları çalıştıracaktır. Bunu anlamak için ana dizininizde bir 'tecmint' dizini ve ona 'cd' dizini oluşturun.

mkdir tecmint 
cd tecmint

Daha sonra, 'tecmint' klasöründe çeşitli dosya türleri oluşturun.

touch a.doc b.doc a.pdf b.pdf a.xml b.xml a.html b.html

Tüm yeni dosyaları 'tecmint' klasöründe oluşturduğumuzu görün.

ls 

a.doc  a.html  a.pdf  a.xml  b.doc  b.html  b.pdf  b.xml

Şimdi rm komutunu kullanarak 'html' dosyası dışındaki tüm dosyaları akıllı bir şekilde tek seferde silin.

rm -r !(*.html)

Sadece doğrulamak için, son yürütme. ls komutunu kullanarak mevcut tüm dosyaları listeleyin.

ls 

a.html  b.html

6. AND – OR operatörü (&& – ||) – Komutların Koşullu Yürütülmesi

Yukarıdaki operatör, 'AND' ve 'OR' Operatörünün birleşimidir. Bu daha çok "if-else" ifadesine benzer.

Örneğin, başarı "Doğrulandı" ifadesini yansıtıyorsa veya "Ana Bilgisayar Kapatıldı" ifadesini yansıtıyorsa linux-console.net'a ping atalım.

ping -c3 linux-console.net && echo "Verified" || echo "Host Down"

Örnek Çıktı:

PING linux-console.net (212.71.234.61) 56(84) bytes of data. 
64 bytes from linux-console.net (212.71.234.61): icmp_req=1 ttl=55 time=216 ms 
64 bytes from linux-console.net (212.71.234.61): icmp_req=2 ttl=55 time=224 ms 
64 bytes from linux-console.net (212.71.234.61): icmp_req=3 ttl=55 time=226 ms 

--- linux-console.net ping statistics --- 
3 packets transmitted, 3 received, 0% packet loss, time 2001ms 
rtt min/avg/max/mdev = 216.960/222.789/226.423/4.199 ms 
Verified

Şimdi internet bağlantınızı kesin ve aynı komutu tekrar deneyin.

ping -c3 linux-console.net && echo "verified" || echo "Host Down"

Örnek Çıktı:

ping: unknown host linux-console.net 
Host Down

7. BORU Operatörü (|) – Kolaylaştırılmış Çıktı İşleme

Bu BORU operatörü, ilk komutun çıktısının ikinci komuta girdi görevi gördüğü durumlarda çok kullanışlıdır. Örneğin, 'ls -l' çıktısını 'less' olarak düzenleyin ve komutun çıktısını görün.

ls -l | less

drwx------  tecmint tecmint  4.0 KB Thu Nov 16 12:03:02 2023 AnyDesk
drwxrwxr-x  tecmint tecmint  4.0 KB Tue Oct 10 10:44:35 2023 bin
drwxr-xr-x  root    root     4.0 KB Wed Nov 24 22:05:09 2021 DEBIAN
drwxrwxr-x  tecmint tecmint  4.0 KB Sat Nov 18 12:32:49 2023 Desktop
drwx--x---+ tecmint tecmint  100 KB Fri Dec  8 12:00:49 2023 Downloads
drwxrwxr-x  tecmint tecmint  4.0 KB Wed Sep 13 10:25:07 2023 llpp
drwxrwxr-x  tecmint tecmint  4.0 KB Thu Nov 16 14:26:46 2023 MyImages
drwxrwxr-x  tecmint tecmint  4.0 KB Wed Sep 13 14:55:42 2023 Obsidian Vault
drwxrwxr-x  tecmint tecmint  4.0 KB Tue Oct 10 10:44:32 2023 opt
drwxrwxr-x  tecmint tecmint  4.0 KB Thu Nov 16 14:46:54 2023 php
drwxrwxr-x  tecmint tecmint  4.0 KB Thu Nov 16 15:54:33 2023 tar_examples
.rw-rw-r--  tecmint tecmint   73 KB Mon Sep 18 11:46:02 2023 Apache-Web-Server-Security.png
.rw-rw-r--  tecmint tecmint  2.2 KB Sun Oct 29 00:17:15 2023 ChatGPT-SEO-Prompts
.rw-rw-r--  tecmint tecmint   41 KB Thu Nov 23 11:34:33 2023 Create-Users-in-Linux.png
...

8. Komut Kombinasyon Operatörü {}

İki veya daha fazla komutu birleştirin; ikinci komut, birinci komutun yürütülmesine bağlıdır.

Örneğin, bir 'bin' dizininin mevcut olup olmadığını kontrol edin ve ilgili çıktının çıktısını alın.

[ -d bin ] || { echo Directory does not exist, creating directory now.; mkdir bin; } && echo Directory exists.

9. Öncelik Operatörü() – Komut Yürütme Sırasını Yönetme

() operatörü, komutların öncelik sırasına göre yürütülmesini mümkün kılar.

Command_x1 &&Command_x2 || Command_x3 && Command_x4.

Yukarıdaki sözde komutta, Command_x1 başarısız olursa ne olur? Command_x2, Command_x3, Command_x4'den hiçbiri yürütülmez; bunun için Öncelik Operatörü'nü şu şekilde kullanırız:

(Command_x1 &&Command_x2) || (Command_x3 && Command_x4)

Yukarıdaki sözde komutta, Command_x1 başarısız olursa Command_x2 de başarısız olur ancak yine de Command_x3 ve Command_x4, aşağıdaki duruma bağlı olarak yürütülür: Command_x3'ün çıkış durumu.

10. Birleştirme Operatörü (\) – Çok Satırlı Komut Birleştirme

Birleştirme Operatörü (\), adından da anlaşılacağı gibi, büyük komutları kabuktaki birkaç satırda birleştirmek için kullanılır. Örneğin, Aşağıdaki komut test(1).txt metin dosyasını açacaktır.

nano test\(1\).txt

Şimdilik bu kadar. Çok yakında ilginç bir makaleyle daha karşınızdayım. O zamana kadar bizi izlemeye devam edin, sağlıklı olun ve Tecmint'e bağlı kalın. Değerli görüşlerinizi yorum bölümümüzde belirtmeyi unutmayın.