Unix sistemlerindeki ilginç ikili dosya
- Unix sistemlerinde adı tek bir sembolden oluşan ikili dosyalar bulunur.
/bin/[komutu çalıştırıldığında, adı[olan bir program olduğu görülebilir.[vetestaynı ikili dosyayı işaret eder ve iki komut da gerçekte aynı işlevi yerine getirir.
test programı ve [ kullanımı
testprogramı, shell içinde ifadeleri değerlendirmek için kullanılır.- String karşılaştırmaları, sayı karşılaştırmaları ve dosya koşullarını kontrol etmek için kullanılır.
test, argümanları alıp ifadeyi değerlendirir; doğruysa 0, yanlışsa 1 döndürür.
İki komutun var olma nedeni
testve[komutlarının ikisinin de neden var olduğu net değildir, ancak okunabilirliği artırmak için böyle olduğu tahmin edilir.[komutu kullanıldığında koşul ifadeleriteste göre daha temiz yazılabilir.[kullanılırken komutun son argümanının]ile bitmesi gerekir.
Yerleşik komutlar ile harici ikili dosyalar arasındaki fark
testve[shell scriptlerinde sık kullanıldığı için çoğu shell'de yerleşik komut olarak uygulanır.- Yerleşik komutlar ile harici ikili dosyalar kullanıldığında farklı davranışlar görülebilir; shell'e göre de farklar oluşabilir.
[[ kullanımı ve farkları
[[, Bash uzantısı olarak[kullanımının yerini alır.[[, yerleşik komut olarak ifade içinde dilin temel kurallarını değiştirebilir.[[, string karşılaştırmalarında glob pattern'leri literal olarak ele alarak farklı sonuçlar üretebilir.
Shell script yazarken seçim
- Taşınabilir shell scriptleri yazarken
[kullanmak daha iyidir. - Bash'e özel scriptler yazıyorsanız,
[[daha fazla özellik sunduğu için tercih edilebilir.
Shell ifadeleri ile test ifadelerinin birleşimi
- Shell,
!,&&,||operatörleri üzerinden kendi ifade yapısına sahiptir. testifadeleri ile shell ifadeleri tek bir komut içinde birleştirilebilir.
GN⁺ görüşü
Bu yazıdaki en önemli nokta, Unix sistemlerinde [ ve testin aynı işlevi yerine getiren iki farklı komut olarak bulunmasıdır; bunun shell scriptlerinin okunabilirliğini ve verimliliğini artırmak için olduğu tahmin edilir. Bu bilgi, shell script yazan veya anlamaya çalışan başlangıç seviyesindeki yazılım mühendisleri için faydalı olabilir ve shell scriptlerin çalışma mantığını ve farklı shell'ler arasındaki ayrımları anlamaya yardımcı olur. Yazının ilgi çekici yanı, shell scriptlerin temel araçlarının nasıl farklı biçimlerde kullanılabildiğini göstermesi ve shell programlamanın karmaşıklığını ve esnekliğini iyi yansıtmasıdır.
1 yorum
Hacker News görüşleri
Asıl yazarın teşekkür mesajı ve başlık düzeltme önerisi
Bourne shell'deki
testkomutunun geçmişi ve kişisel tercihifbloğu kullanmadan koşul ifadelerine örnekifbloğu ile normal komutların birlikte kullanımıtestkomutunda mantıksal işleç kullanımı üzerine düşüncetestkomutunu kullanmanın avantajları veman testkolaylığı[vetestiçin tek argüman davranışına dair uyarıLinux ve NetBSD'de
/bin/[ile/bin/testarasındaki farktest/[/[[hakkında daha derin inceleme ve shell'in tuhaf yanlarına dair blog bağlantısı paylaşımı[[yapısının bash'e özgü olduğuna dikkat çekip, bash kullanılacağı kesinse[[önerisi[yapısının bash betik dilinin bir parçası olmadığı algısına dair kafa karışıklığıShell hakkında güçlü görüşler ve
[kullanımına karşı çıkış