Linux'daki bash sözlükleri nedir ve bunları nasıl kullanırsınız?

Jun 16, 2025
, Linux
Fetmawati Achmad Zaenuri / Shutterstock.com

Bash sözlükleri, Linux Shell Scripts'te size hash haritaları ve ilişkisel dizileri verir. Bu güçlü ve kullanışlı veri yapılarını kendi Linux Shell komut dosyalarınızda nasıl kullanacağınızı göstereceğiz.

Başka bir isimden bir gül

Sözlüklerin resmi adı ilişkisel dizilerdir. Ayrıca karma masaları ve karma haritaları olarak adlandırılırlar. Düzenli bir diziye benzer şekilde işlev gören bir veri yapısıdır, ancak önemli bir farkla.

Bir dizi, bir veri yapısında düzenlenen bir veri değerleri koleksiyonudur. Dizi öğeleri olarak bilinen veri değerlerinden herhangi birine erişmek için, dizideki konumlarını bilmeniz gerekir. Dizideki bir dizi öğesinin konumu endeksi olarak bilinir, bu nedenle bu tür diziler dizinlenmiş diziler olarak bilinir. Onlar en yaygın kullanılan diziler.

Ancak, bir dezavantajı var. Liste içindeki konumunu bilmiyorsanız, bir dizi öğesine nasıl erişirsiniz? Bu konumdaki değerin aradığınız yerdeki değerin olup olmadığını görmek için test, dizideki tüm öğelerden geçmeniz gerekir.

İlişkisel diziler bu sayının üstesinden gelir. Dizi öğelerini benzersiz bir şekilde tanımlamak için tamsayılar kullanmazlar. Anahtar kelimeler olarak bilinen benzersiz kelimeler kullanırlar. Dizi içinde bulunduğu yerden bağımsız olarak, anahtar kelimesini kullanarak bir dizi öğesinin değerini alabilirsiniz. Endekslenmiş bir dizi ile, dizinin içindeki pozisyonları temsil eden tamsayı numaraları artan sırada. Birleştirici bir dizideki anahtar kelimeler herhangi bir sırayla olabilir.

Anahtar kelimesini arayarak ilişkisel bir dizide bir değer bakabilirsiniz. Bir kelimeyi ararken ve ilgili değeri taklit ederek bir sözlükte bir sözcüğü ararken ve anlamını bulmak. Bu yüzden ilişkisel diziler sözlük olarak bilinir.

Bash 4.0 veya daha yüksek

İlişkisel dizilerde desteklenir bash kabuğu sürüm 4.0 veya daha yüksek. Mevcut bir Linux dağıtımı kullanıyorsanız, iyi olmalısınız. Bash sürümünüzü kontrol etmek için bu komutu kullanın:

 Bash --Version 

Bu makaleyi araştırırken kullanılan makine, bash 5.1.4 yüklü, bu yüzden gidilemeyiz.

Temel prensipler

Terminal komut satırında veya bir komut dosyasında ilişkisel bir dizi oluşturmak için, BASH DECLEE komutunu kullanırız. NS -A (İlişkimiş) seçeneği, bash'in bunun bir ilişkisel dizi olup olmadığını, endeksli bir dizi olmadığını söyler.

 -A bir kısaltmalar beyan eder 

Bu, "kısaltmalar" adlı bir ilişkisel dizi oluşturur.

Bazı verileri dizimize koymak için anahtar kelimeler ve değerler sağlamamız gerekir. Bunu bu formatı kullanarak yapabiliriz:

 Dizi adı [anahtar] = değer 

Bir dizi öğeleri ekleyelim:

 kısaltmalar [ACK] = Onay 
 Kısaltmalar [BGP] = "Sınır Ağ Geçidi Protokolü" 
 kısaltmalar [CIDR] = "Sınıfsız etki alanı yönlendirme" 
 Kısaltmalar [DHCP] = "Dinamik Ana Bilgisayar Yapılandırma Protokolü" 
 kısaltmalar [EOF] = "Çerçevenin sonu" 

Bu komutlar beş dizi öğesini tanımlar. Değerlerin, değerde boşluklar varsa, değerlerin tırnak işaretlerine sarıldığını unutmayın. Anahtar kelimelerimiz alfabetik sıraya göre girildi, ancak istediğiniz herhangi bir sıraya girilebilirler. Anahtar kelimeler benzersiz olmalıdır. Aynı anahtar kelimeyle iki giriş oluşturmaya çalışırsanız, girdiğiniz ikinci değer ilk önce yazacaktır. Hala sadece bu anahtar kelime ile bir girişe sahip olacaksınız ve eklediğiniz ikinci değeri ile ilişkilendirilecektir.

Diziden değer almak için, bu formattaki komutları kullanırız:

 $ {dizi adını [Key]} 

Çıkışı terminal penceresine göndermek için ECHO kullanabiliriz:

 echo $ {kısaltmalar [ACK]} 
 echo $ {kısaltmalar [DHCP]} 

Döngüleri kullanma

Diziler, çok iyi döngülerde kullanılmak için kendilerini ödünç verir. İlişkisel diziler istisna değildir. Döngüler, kodun tekrarlayan bölümleri olmadan bir eylem dizisini çağırmak için etkili yollar sağlar. Döngülere bakmadan önce, dizileri ilan etmek için verimli bir yol var.

Dizileri kullanan bildirmek emir (aynı -A Önceki gibi seçenek), ancak anahtar kelimeleri ve değerleri komut satırında bir liste olarak sağlıyoruz.

 -a ülkeleri = ([[ALB] = Arnavutluk [BHR] = Bahreyn [cmr] = Kamerun [DNK] = DANIMARKA [EGY] = MISIR) 

Dizi adı "ülkeler" dir ve değerin listesine eşit bir işaretle bağlanır " = . " Değer listesi parantez içine sarılmış " () "Ve her bir anahtar kelime parantez içine sarılır" [] ". Değerleri ayıran virgül olmadığını unutmayın. Boşluk içeren bir değer dizisine sahipseniz, tırnak işaretlerine sarmanız gerekir.

İlişkisel bir diziyi yapmak için değer yerine bir anahtar kelime döndürün, ünlem işareti ekleyin " ! "Dizi adının önünde. Sembolü " @ "Tüm dizi unsurları anlamına gelen joker karakter olarak kullanılabilir.

Bu için Döngü tüm anahtar kelimelerin listesini listeleyecek:

 "$ {! Ülkeler []}" 'de anahtar için; echo $ tuşunu yapın; yapıldı 

Anahtar kelimelerin oluşturuldukları sırada mutlaka listelenmediğini, ancak bu önemli olmadığını unutmayın. İlişkilendirici diziler, sipariş edilen bir dizine dayanmaz.

Tüm anahtar kelimeleri listelemek için parametre genişletmesini de kullanabiliriz. Bir satırda, bir satır başına bir satırda listelenecekler.

 echo "$ {! Ülkeler []}" 
 echo "$ {! Kısaltmalar [@]}" 

Bizimizi artırabiliriz için Anahtar kelimeleri ve değerleri aynı anda yazdırmak için döngü.

 "$ {! Kısaltmalar []}" 'de anahtar için; Echo "$ Key - $ {kısaltmalar [$ tuş]}"; yapıldı 

Dizilerde kaç öğenin olduğunu bilmek istiyorsak, ünlem işareti yerine dizinin önünde bir karma "#" kullanabiliriz.

 echo "$ {! Ülkeler []}" 
 echo "$ {! Kısaltmalar [@]}" 

Bir dizi öğesinin olduğunu kontrol etmek

Bir anahtar kelime ararsanız, ancak böyle bir dizi öğesi yoktur, dönüş değeri boş bir dize olacaktır. Bazen bir dizi öğesinin varlığı veya yokluğu için farklı bir göstergeye sahip olmak faydalıdır.

"Kullanarak bir dizi öğesinin varlığını kontrol edebiliriz" + _ " Şebeke. Bunun, gördüğümüz önceki operatörler gibi dizi adının önünde değil anahtar kelimeden sonra geldiğini unutmayın.

 [$ {kısaltmalar [EOF] + _}] ise; sonra yankı "bulundu"; başka yankı "bulunamadı"; fi 
 [$ {kısaltmalar [ftp] + _}] ise; sonra yankı "bulundu"; başka yankı "bulunamadı"; fi 

Dizi öğesi "EOF" anahtar kelimesiyle dizide bulunur, ancak "FTP" anahtar kelimesiyle dizge öğesi değildir.

Dizi öğeleri ekleme

Bir ilişkisel diziye yeni elemanlar eklemek kolaydır. Bazı programlama dillerinin aksine, ilan ettiğinizde dizinizin boyutunu tanımlamanıza gerek yoktur. Önceden tanımlanmış bir üst sınıra çarpmadan yeni öğeler eklemeye devam edebilirsiniz.

Diziye yeni bir öğe eklemek için, kullanıyoruz " + = " Şebeke.

 Ülkeler + = ([fji] = fiji) 
 echo "$ (# Ülkeler [@]}" 
 echo $ {ülkeler [fji]} 

Dizideki öğelerin sayısı şimdi altı ve yeni anahtar kelimeyi aramak diziyi bulur ve değerini döndürür.

Dizi Öğelerini ve Dizilerini Çıkarma

NS açılmak Komut, dizi öğelerini kaldırmak için kullanılır. Anahtar kelimenin içine boşluk varsa, tırnak işaretlerine sarın.

 Kısaltılmış kısaltmalar [EOF] 
 [$ {kısaltmalar [EOF] + _}] ise; sonra yankı "bulundu"; başka yankı "bulunamadı"; fi 

Tüm diziyi kaldırmak için kullanın açılmak dizinin adı ile.

 Dismet Ülkeleri 

Dizilerle değişkenleri kullanma

İlişkilendirici dizilerle değişkenleri kullanmak basittir. Bu örnekte, "EOF" dizgisine değişken anahtarı ayarlayacağız. Diziye yeni bir dizi öğesi eklediğimizde değişkeni kullanacağız. Aslında, daha önce sildiğimiz dizi öğesini değiştiriyoruz.

Yeni anahtar kelimesini yeni anahtar kelimeyle arayarak ve ayrıca değişkeni kullanarak alacağız. Anahtar kelime boşluk içeriyorsa, değişken adını tırnak işaretlerine sarmanız gerekir.

 tuşu = EOF 
 kısaltmalar [$ tuş] = "Çerçevenin sonu" 
 echo $ {kısaltmalar [EOF]} 
 echo $ {kısaltmalar [$ tuş]} 

Yaratıcı ol

Örneklerimiz, her dizi öğesinin, bir sözlük gibi diğerlerinden bağımsız olduğu bilgi koleksiyonları olmuştur. Her biri benzersiz bir tanımdır. Ancak, ilişkisel diziler, farklı bilgisayar donanımlarının farklı parçalarının özellikleri gibi bir şeyle ilgili çeşitli bilgileri kolayca tutabilir:

 -A bir spesifikasyon beyannamesi 
 Özellikler [CPU] = "Çift Çekirdekli AMD RYZEN 5 3600" 
 Özellikler [Hız] = "3600 MHz" 
 spesifikasyon [çekirdek] = "5.11.0-17-jenerik X86_64" 
 Özellikler [MEM] = "1978.5 MIB" 
 Özellikler [Depolama] = "32 GIB" 
 Özellikler [Shell] = "Bash" 
 echo $ {spesifikasyon [CPU]} 

Bir dilde verimli bir şekilde yazmak, sunduğu mekanizmaların ve yapıları bilmek ve çözmeye çalıştığınız sorun için en uygun olanı seçmek anlamına gelir. İlişkisel diziler size bir sözlük gibi, ada göre arama yapabileceğiniz verileri saklamak için kullanımı kolay bir yol sunar.


, Linux - En Popüler Makaleler

Systemd'siz en iyi Linux dağıtımları

, Linux Feb 24, 2025

BMJ / Shutterstock.com Dominant Linux dağıtımını kabul ettiğinde systemd , muhalifler çatalı dağılımlar ve yeni projelere başladı. Peki..


Linux'ta Bash'te "Burada Belgeler" Nasıl Kullanılır

, Linux Mar 31, 2025

Fetmawati Achmad Zaenuri / Shutterstock Garip olarak "Burada Belgeler" adlı, Linux'ta Bash Scripts içindeki giriş / çıkma yeniden yönlendirmesini kullanm..


Ubuntu, Kubuntu, Xubuntu ve Lubuntu arasında nasıl seçilir

, Linux Mar 19, 2025

TOMEQS / Shutterstock.com Birden fazla Ubuntu var. Ubuntu, Kubuntu, Xubuntu veya Lubuntu indirebilirsiniz: Fakat fark nedir ve hangisini seçmelisiniz? Cevap, ..


Arch Linux'u nasıl güncellenir

, Linux Jul 30, 2025

Ubuntu Projesi Arch Linux sisteminizi güncellemek için zaman geldi mi? Saf kemerte ya da bir kemer tabanlı bir distroda olsun Manjaro Ve Garuda..


Linux açar 30: Nasıl Bir Hobi Projesi fethetti Dünya

, Linux Sep 17, 2025

Larry Ewing ve Gimp Açık 17 Eylül 1991 , Linus Torvalds Linux çekirdeğini (sürüm 0.01) ilk kez serbest bıraktı. İşte, küçük bir hobi p..


Linux'u elma silikonlu bir M1 Mac'te nasıl kurulur

, Linux Nov 11, 2024

Apple için Yerli Linux desteği yeni ARM tabanlı mimari henüz hazır değil, ama bir de Linux koşan M1 M1 Pro veya M1 Max kullanarak sanal makine . Bu x86 Linux u..


UNIX EPOCH nedir ve UNIX zaman nasıl çalışır?

, Linux Nov 10, 2024

Mikhail Leonov / Shutterstock 1 Ocak 1970. beri saniye sayısı ve Linux da yaptığı araç olarak Unix depolar saati. kıyamet 2038 için planlanan neden biz..


Pidof veya PGREP ile bir Linux işleminin PID'sini nasıl bulur

, Linux Nov 15, 2024

Bir Linux işlemi ile çalışmak genellikle işlem kimliğini veya PID'sini bilmek anlamına gelir. Her çalışan yazılım parçasına verilen benzersiz bir sayıdır. İşte ne olduğunu bu..


Kategoriler