What is a heredoc? Here Documents Explained | Linux Terminal 201 - HakTip 179
İçindekiler:
Kabuk komut dosyaları yazarken
tee
,
cat
veya
sftp
gibi etkileşimli bir komuta çok satırlı bir metin veya kod bloğu geçirmeniz gereken bir durumda olabilirsiniz.
Bash ve Zsh gibi diğer kabuklarda, Burada belgesi (Heredoc), bir komuta birden çok girdi satırı geçirmenizi sağlayan bir yönlendirme türüdür.
HereDoc yazma sözdizimi aşağıdaki formu alır:
<< 'DELIMITER' HERE-DOCUMENT DELIMITER
- İlk satır isteğe bağlı bir komut ve ardından özel yönlendirme operatörü
<<ve sınırlayıcı tanımlayıcı ile başlar.- Herhangi bir dizeyi sınırlayıcı tanımlayıcı olarak kullanabilirsiniz, en yaygın olarak kullanılan EOF veya END'tir. Sınırlayıcı tanımlayıcı belirtilmemişse, kabuk, burada belge satırlarını komuta iletmeden önce tüm değişkenleri, komutları ve özel karakterleri değiştirir. yönlendirme operatörüne eksi işareti
<<-, tüm önde gelen sekme karakterlerinin yok sayılmasına neden olur. Bu, burada belgeleri kabuk komut dosyalarına yazarken girinti kullanmanıza izin verir. Baştaki boşluk karakterlerine izin verilmez, yalnızca sekme.
Buradaki belge bloğu dizeleri, değişkenleri, komutları ve diğer herhangi bir girdi türünü içerebilir.Son satır sınırlayıcı tanımlayıcı ile biter. Sınırlayıcının önünde beyaz boşluk bırakılmaz. - Herhangi bir dizeyi sınırlayıcı tanımlayıcı olarak kullanabilirsiniz, en yaygın olarak kullanılan EOF veya END'tir. Sınırlayıcı tanımlayıcı belirtilmemişse, kabuk, burada belge satırlarını komuta iletmeden önce tüm değişkenleri, komutları ve özel karakterleri değiştirir. yönlendirme operatörüne eksi işareti
Temel Yorumlu Örnekler
Bu bölümde, heredoc'un nasıl kullanılacağına dair bazı temel örneklere bakacağız.
Yorumlu metin çoğunlukla kedi komutu ile birlikte kullanılır.
Aşağıdaki örnekte, burada bir belge kullanarak bir ortam değişkeni ve bir komut içeren iki metin satırı geçiyoruz.
cat << EOF The current working directory is: $PWD You are logged in as: $(whoami) EOF
Aşağıdaki çıktıdan da görebileceğiniz gibi, hem değişken hem de komut çıkışı ikame edilir:
The current working directory is: /home/linuxize You are logged in as: linuxize
Sınırlayıcıyı tek veya çift tırnak içine alırsak ne olacağını görelim.
cat <<- "EOF" The current working directory is: $PWD You are logged in as: $(whoami) EOF
Sınırlayıcı belirtildiğinde, kabuk tarafından parametre genişletme ve komut ikamesi yapılmadığını fark edebilirsiniz.
The current working directory is: $PWD You are logged in as: $(whoami)
if true; then cat <<- EOF Line with a leading tab. EOF fi
Line with a leading tab.
Çıktıyı ekranda görüntülemek yerine,
>
,
>>
işleçlerini kullanarak bir dosyaya yeniden yönlendirebilirsiniz.
cat << EOF > file.txt The current working directory is: $PWD You are logged in as: $(whoami) EOF
File.txt mevcut değilse oluşturulur.
>
Kullanılırken dosyanın üzerine yazılırken,
>>
çıktıyı dosyaya ekler.
Yorumlu metin girişi de borulanabilir. Aşağıdaki örnekte
sed
komutu,
l
karakterinin tüm örneklerini
e
:
cat <<'EOF' | sed 's/l/e/g' Hello World EOF
Heeeo Wored
Borulu verileri bir dosyaya yazmak için:
cat <<'EOF' | sed 's/l/e/g' > file.txt Hello World EOF
Heredoc'u SSH ile kullanma
Heredoc kullanmak, SSH üzerinden uzak bir sistemde birden fazla komut yürütmenin en uygun ve en kolay yollarından biridir.
Sıralanmamış sınırlayıcı kullanırken, tüm değişkenlerden, komutlardan ve özel karakterlerden kaçtığınızdan emin olun, aksi takdirde bunlar yerel olarak enterpole edilir:
ssh -T [email protected] << EOF echo "The current local working directory is: $PWD" echo "The current remote working directory is: \$PWD" EOF
The current local working directory is: /home/linuxize The current remote working directory is: /home/user
Ayrıca, bir SSH anahtar tabanlı kimlik doğrulaması ayarlamak ve bir şifre girmeden Linux sunucularınıza bağlanmak isteyebilirsiniz.
Sonuç
Bu kılavuzda,
heredoc
ne olduğunu ve kabuk komut dosyalarınızda nasıl kullanılacağını öğrendiniz.
Microsoft Research Asia, Gates on 10 Year Bash'de
Microsoft Research Asia, 1998 yılında bir düzine insandan on yıl sonra 350'den fazla kişiye ulaştı.
Bash dizileri
Diziler en çok kullanılan ve temel veri yapılarından biridir. Bu makalede, Bash dizilerini ele alacağız ve bunları Bash betiklerinizde nasıl kullanacağınızı açıklayacağız.
Bash: dosyaya ekle
Linux'ta, bir dosyaya metin eklemenin birden çok yolu vardır. Bu makalede bazıları açıklanmaktadır.







