Bash Kabuğundaki Tekli ve Çiftli Tırnaklar Arasındaki Fark Nedir?
Metni tırnak işaretleri içine almak, özellikle adlarda boşluk bulunan dosyalarla uğraşırken komut satırında oldukça standart bir uygulamadır, ancak tek veya çift tırnak kullanıp kullanmayacağınızı nasıl biliyorsunuz? Aradaki farka bakalım ve birini diğerine karşı ne zaman kullanmalısınız?.
Genel kural, çift tırnakların tırnak işaretleri içindeki değişkenlerin genişlemesine hala izin vermesidir ve tek tırnak işaretleri değildir. Okumaya devam et.
Basit Metinli Tırnaklar
Sadece birkaç kelimeyi içine alıyorsanız, hangisini kullandığınız önemli değildir, çünkü ikisi de aynı şekilde çalışacaktır. Örneğin, bu iki komut her ikisi de Test Dizini adında bir dizin oluşturur:
mkdir "Test Dizini"
mkdir 'Test Dizini'
Daha deneyimli türler, muhtemelen isterseniz mkdir Test \ Directory kullanabileceğinizi de not edecektir.
Kabuk Değişken Genişlemesi
Tekli ve çiftli tırnaklar arasındaki fark, komut satırındaki varsayılan ayardaki değişkenlerle çalışırken, bash, $ test gibi bir değişkeni tam dizgeye genişletir. İlk önce, değişkeni atayacağız:
test = "Bu bir testtir"
Artık bu değişkeni komut satırında kullanabilirsiniz, bunun gibi basitçe çıkması gerekir. Bu bir test konsola:
echo $ testi
İkili ve tekli tırnaklar arasındaki farkın daha da belirginleştiği yerde - tekli tırnak kullandığınızda değişkenler genişlemeyecektir. Örneğin, bu komutu çalıştırırsanız:
echo '$ test'
Tek tırnak kullandığınızda komut satırında '$ test' dışında hiçbir şey göremezsiniz, ancak çift tırnak kullandığınızda doğru bir şekilde çıkacaktır:
Komut satırında bir komutu genişletmek için 'karakterini kullandığınızda da aynı şey çalışır. Örneğin, kullanmak istediğinizi söyleyin. pwd başka bir komuttan komut isteyin - kabuğa genişlemesini söylemek için backticks'i kullanın:
echo 'pwd' / test
Ana klasörünüzdeyseniz, şöyle görünen bir çıktı göreceksiniz:
/ Home / inek / test
Örneğin, yolunda boşluğu olan bir klasörün içindesiniz ve geçerli dizindeki bir dosyaya sembolik bir bağlantı oluşturmak için ln komutunu kullanmak istiyorsunuz. Genellikle ln komutunu kullanırken tam yolu belirtmeniz gerekir, bu nedenle yazma işlemini kaydetmek için 'pwd' kullanmak çok kolaydır..
Komutu tırnak işaretleri içine almadan kullanmaya çalıştığınızda ne olduğuna bakın:
ln -s 'pwd' / test / ana sayfa / geek / linkedname
Bunun yerine, tırnak işaretleri içine almanız gerekir:
ln -s "'pwd' / dosyaadı" / some / other / path
Daha somut bir örnek için, tüm dosya adlarının içinde boşluk bulunduğu, bu örnekte olduğu gibi bir klasör yapısına sahip olduğumuzu varsayalım:
Unzip komutu tüm dosyalara karşı * çalıştırmak için desteklemediğinden, bunun yerine for komutunu kullanmanız gerekir. İşlerin ilginçleştiği yer:
f için * .zip; unzip $ f; done
Hata! İşe yaramadı gibi görünüyor.
Bunun yerine yapmamız gereken, $ f değişkeni etrafında çift tırnak kullanmak, bunun gibi:
f için * .zip; "$ f";
Şimdi for komutu döngüden geçtiğinde, aslında bunun gibi bir komut çalıştıracak:
unzip "test 1.zip"
Tabii ki döngüde dolaşır ve dizindeki her dosya için benzer bir komut çalıştırır..
Hadi gözden geçirelim
Şimdi örneklerden geçtikten sonra, kaçırdığınız takdirde hızlıca gözden geçireceğiz:
İkili alıntı
- Değişkenleri dahil etmek istediğinizde kullanın veya bir dize içine kabuk genişletme kullanın.
- İçindeki tüm karakterler, kabuğunda genişletilecek olan $ veya 'hariç normal karakterler olarak yorumlanır..
Tek Tırnaklar
- Tek tırnak içindeki tüm karakterler bir dize karakteri olarak yorumlanır..
Ve böylece alıntıların dersini sonlandırır. Onları akıllıca kullanın.