Zsh ve Bash Komut Dosyaları. Fark ne?

Zsh ve Bash Komut Dosyaları. Fark ne?
Sizin gibi okuyucular MUO'yu desteklemeye yardımcı oluyor. Sitemizdeki bağlantıları kullanarak bir satın alma işlemi yaptığınızda ortaklık komisyonu kazanabiliriz. Devamını oku.

Unix benzeri işletim sistemlerinde kabuk komut dosyası oluşturma söz konusu olduğunda iki kabuk hakimdir: Bash (Bourne Again Shell) ve Zsh (Z Shell). Programcı veya sistem yöneticisiyseniz bu ikisi arasındaki seçim verimliliğinizi ve üretkenliğinizi önemli ölçüde etkiler.





MUO Günün videosu İÇERİĞE DEVAM ETMEK İÇİN KAYDIRIN

Bu iki kabuk arasındaki farkları ve benzerlikleri anlamak, komut satırı iş akışınızı optimize etmenize yardımcı olacaktır. Her kabuğun nüanslarını bilmek, bilinçli kararlar vermenize yardımcı olacaktır.





Bash ve Zsh Nedir?

Bash hem Linux hem de macOS sistemlerinde popülerdir. İşletim sistemiyle etkileşimde bulunmak ve komutları çalıştırmak için kullanabileceğiniz güçlü bir araçtır. Ayrıca kabuk komut dosyası oluşturmak için Bash'i kullanın Birden fazla komut içeren komut dosyaları yazarak görevleri otomatikleştiren.





Zsh (Z kabuğu), Bash'in daha birçok özelliğe sahip genişletilmiş bir sürümüdür. MacOS'taki varsayılan kabuktur. Ayrıca Linux sistemlerinde giderek daha popüler hale geliyor.

Bash'ten Zsh'ye Nasıl Geçilir

Linux sistemi kullanıyorsanız ve Zsh'ye geçmek istiyorsanız şu adresten başlayın: yüklemek için paket yöneticinizi kullanarak . Örneğin Debian veya Ubuntu'da aşağıdaki komutu kullanın:



 sudo apt install zsh

Sisteminize yükledikten sonra aşağıdaki komutu çalıştırarak geçiş yapın:

 chsh -s $(which zsh)

MacOS kullanıyorsanız Zsh zaten yüklüdür. Buna geçmek için aşağıdaki komutu çalıştırın:





 chsh -s /bin/zsh

Bash'e geri dönmek için yukarıdaki komutlarda Zsh'yi Bash ile değiştirin.

neye bakacağımı bilmiyorum

Hangi kabuğu kullandığınızı kontrol etmek için aşağıdaki komutu çalıştırın:





 echo $SHELL

Bu, amaçladığınız kabuğu kullandığınızı doğrulamanıza yardımcı olacaktır.

Zsh ve Bash Arasındaki Farklar

Zsh ve Bash arasında birkaç fark vardır. Bu farklılıkları dikkate almak, hangi kabuğun size en uygun olduğuna karar vermenize yardımcı olacaktır.

1. İstemi Özelleştirme

Zsh, komut istemlerinizi özelleştirmek için daha kolay bir yol sunar. % tabanlı kaçış dizileri. Bu, renk ve bilgi içeren dinamik istemlere olanak tanır. Kabuk isteminizi özelleştirmek için PS1 (Birincil İstem).

 PS1="%F{green}%n@%m %F{blue}%~ %f$ " 

Yukarıdaki özel bilgi istemi, kullanıcı adını, ana bilgisayar adını ve geçerli dizini farklı renklerde görüntüler:

  Terminalde Zsh istemi özelleştirmesi

Çok var Zsh istemini özelleştirmenin diğer yolları , bir yönetici göstergesi ayarlamanıza, tarih ve saati eklemenize ve yeni istemi kaydetmenize olanak tanır.

Bash, hızlı özelleştirme söz konusu olduğunda biraz farklı bir yaklaşım kullanıyor. İstemdeki renk ve biçimlendirme değişikliklerini belirtmek için çıkış kodlarını kullanır. Yukarıdaki Zsh ile aynı özelleştirmeyi elde etmek için aşağıdaki özel istemi kullanabilirsiniz.

 PS1="\[3[32m\]\u@\h \[3[34m\]\w \[3[0m\]$ " 

Kullanma \[3[0m\] renk değişikliklerinin istemi takip eden metni etkilememesini sağladığı için çok önemlidir.

2. İlişkisel Diziler Desteği

Zsh, ilişkisel dizileri yerel olarak destekler. Bu diziler, bilgilerin düzenlenmesini ve alınmasını kolaylaştıran verileri ilişkilendirmek için uygun bir yol sağlar. Kullanmak ilan etmek -A Açıkça bir ilişkisel dizi bildirme komutu:

 # Declare an associative array in Zsh  
declare -A my_assoc_array

Daha sonra ilişkisel diziye değerler atayabilirsiniz:

 my_assoc_array=(key1 value1 key2 value2) 

Ve son olarak, anahtarlarını kullanarak değerlere erişin:

 echo $my_assoc_array[key1] # Outputs: value1

Bash, ilişkisel diziler için yerel destek içerir 4.0 sürümünden beri. Değerleri Zsh'de yaptığınız gibi bildirir ve atarsınız. Ancak dizi değerlerine erişim söz konusu olduğunda anahtarı süslü parantezlerin içine sarmanız gerekir:

 echo "${my_assoc_array[key1]}" 

Temel fark, Zsh'nin ilişkisel dizilere yönelik desteğinin Bash'ten daha zengin özelliklere sahip ve gelişmiş olmasıdır. Zsh, ilişkisel dizilerin yalnızca dizelere değil, çeşitli veri türlerine sahip anahtarlara sahip olmasına olanak tanır. Bash yalnızca dize tuşlarını destekler.

Bash'in önceki sürümlerinde, geçici çözümlerin bir yolunu bulmanız veya ilişkisel dizileri kullanmak için harici araçlara sahip olmanız gerekir.

3. Genişletilmiş Küreselleşme Modelleri

Genişletilmiş küreselleştirme kalıpları, çeşitli kriterlere göre dosya ve dizinleri seçmek ve değiştirmek için güçlü ve esnek bir yol sağlar. Karmaşık dosya yapılarıyla çalışırken veya dosya seçimleri üzerinde hassas kontrole ihtiyaç duyduğunuzda kullanışlıdırlar.

Bir Zsh betiğinde, bu kalıpları kullanarak etkinleştirebilirsiniz. seçmek emretmek. Örneğin, hepsini eşleştirmek için .txt geçerli dizindeki dosyalar:

 setopt extended_glob 
txt_files=(*.txt)

.log uzantılı dosyalar dışındaki tüm dosyaları eşleştirmek için:

 setopt extended_glob 
non_log_files=^(*.log)

Bash'te bunları kullanarak etkinleştirmeniz gerekir. mağazalar ile komut dış dünya seçenek. Örneğin, hepsini eşleştirmek için .txt geçerli dizindeki dosyalar:

 shopt -s extglob 
txt_files=(*.txt)

olanlar dışındaki tüm dosyaları eşleştirmek için .kayıt eklenti:

 shopt -s extglob 
non_log_files=!(*.log)

Küresel kalıplar söz konusu olduğunda Zsh ve Bash arasındaki temel fark, bunları etkinleştirmek için kullanılan komuttur. Ancak bazı operatörlerin iki kabuk arasında farklı olduğuna dikkat edin.

4. Gelişmiş Parametre Genişletme

Zsh, parametrelerin dolaylı olarak genişletilmesini destekler. Bu, adı başka bir değişkende saklanan bir değişkenin değerini genişletmenize olanak tanır. Bunu başarmak için değişken adının önüne bir ünlem işareti koymanız gerekir. ! .

 name="foo" 
result="${!name}"
echo "$result"

Öte yandan Bash, yerel olarak dolaylı genişlemeye izin vermiyor. Bunun geçici çözümü, değerlendirmek yerleşik komut veya ${!oldu} Dolaylı değişken referansları için sözdizimi.

 name="world" 
var="name"
echo ${!var} # This will output: world

Bash ve Zsh Arasındaki Benzerlikler

Bash ve Zsh arasında farklılıklar olsa da bazı benzerlikler de var.

1. Komut Satırı Söz Dizimi

Bash ve Zsh benzer bir komut satırı sözdizimini paylaşır. Bu harika çünkü yazdığınız çoğu komut ve betiğin her iki kabukta da değişiklik yapılmadan çalışacağı anlamına geliyor. Zsh, Bash'in üzerine inşa edilmiştir, dolayısıyla aynı temel komutların ve özelliklerin tümünü içerir.

Bununla birlikte, sözdiziminde tanımlamanız ve ayarlamanız gereken çok küçük farklılıklar vardır.

2. Komut Değiştirme Tutarlılığı

Komut ikamesi, bir komutun çıktısını diğerine yerleştirme işlemidir. Her iki kabuk arasında tutarlıdır.

 result=$(ls) 

Hem Bash hem de Zsh'de şunları kullanabilirsiniz: $(komut) Bir komutun çıktısını bir değişkenle değiştirmek için kullanılan sözdizimi. Bu, komut dosyalarının iki kabuk arasında kolayca taşınmasına olanak tanır.

3. Komut Dosyasında Hata Ayıklama Seçeneği

Hem Bash hem de Zsh kullanıyor -X Komut dosyası hata ayıklaması için bayrak. Bu bayrakla bir komut dosyası çalıştırdığınızda, her komut çalıştırılmadan önce görüntülenir. Bu, komut dosyalarınızdaki sorunları tanımlamanıza yardımcı olur.

instagram online dm nasıl kontrol edilir
 # Debugging a script in both Bash and Zsh 
#!/bin/bash -x

echo "Debugging Bash script"

Bu Bash betiğinde, -X flag hata ayıklamayı etkinleştirir. Benzer bir yaklaşımı Zsh'de de kullanabilirsiniz; sadece değiştir darbe ile zsh .

Zsh ve Bash Arasında Seçim Yaparken Dikkat Edilmesi Gerekenler

  • Uyumluluk ve Taşınabilirlik : Bash, birçok Unix tabanlı sistemde varsayılan kabuktur. Bu, platformlar arası komut dosyası oluşturma için onu daha güvenli bir seçim haline getirir. Betiklerinizin çok çeşitli sistemlerde değişiklik yapılmadan çalıştırılmasına ihtiyacınız varsa Bash daha iyi bir seçenektir.
  • Komut Dosyası Karmaşıklığı ve Gelişmiş Özellikler : Zsh, ilişkisel diziler, genişletilmiş küreselleştirme modelleri ve gelişmiş parametre genişletme gibi gelişmiş özellikler sağlar. Bu, karmaşık komut dosyası oluşturma görevlerini basitleştirir. Betikleriniz gelişmiş dize manipülasyonu veya veri yapıları gerektiriyorsa Zsh daha iyi bir seçimdir.
  • Topluluk ve Eklenti Ekosistemi : Hem Bash hem de Zsh'nin aktif toplulukları var, ancak Zsh'nin daha güçlü bir topluluğu ve kapsamlı bir eklenti ve tema ekosistemi var. Kişiselleştirmeye değer veriyorsanız Zsh'nin canlı topluluğu ve eklenti desteği önemli bir avantaj olabilir.
  • Öğrenme Kolaylığı : Kabuk komut dosyası oluşturma konusunda yeniyseniz Bash daha erişilebilir bir başlangıç ​​noktasıdır. Yeni başlayanlar için kapsamlı belgeler ve kaynaklar mevcuttur. Bu, kabuk komut dosyası oluşturmanın temellerini öğrenmeyi kolaylaştırır.

Kabuk Komut Dosyalarını Kullanarak Görevleri Otomatikleştirme

Kabuk komut dosyalarını kullanarak görevlerin nasıl otomatikleştirileceğini bilmek büyük önem taşıyor. Tekrarlanan görevleri otomatikleştirebilir ve çok zaman kazanabilirsiniz.

Bu komut dosyalarını kullanıcı hesaplarını yönetmek, sistem kaynaklarını izlemek, verileri yedeklemek ve rutin bakım gerçekleştirmek için de kullanabilirsiniz. Dikkatli bir şekilde yazıldığında insan hatası olasılığını da azaltabilirler.