Garip olarak "Burada Belgeler" adlı, Linux'ta Bash Scripts içindeki giriş / çıkma yeniden yönlendirmesini kullanmanıza izin verir. Uzak bir bilgisayarda çalışmanız gereken komutları otomatikleştirmek için harika bir yoldurlar.
Burada belgeler
Linux'teki birçok komutun iki veya üç harf adına sahiptir. Bu kısmen Linux'un öğrenmesi zor ve Arcane komutları dolu olduğu fikrine yol açan şeydir. Ancak Linux'teki en garip isimlerden biri, şifreleyen kısa olanlardan biri değildir. "Burada belgeler" belgeler değildir ve "burada" ne ifade ettiğini gerçekten açık değil.
Onlar nispeten belirsiz bir yapıdır, ancak faydalıdırlar. Tabii ki, bu Linux'dur, bu yüzden bir kediyi ciltlemek için birden fazla yol var. Burada verilen işlevlerin bir kısmı belgeler diğer şekillerde çoğaltılabilir. Bu alternatif yöntemler genellikle daha karmaşıktır. Programlama ve komut dosyası yaparken, "daha karmaşık" ayrıca "böceklere daha yatkın" anlamına gelir ve kodunuzun korunması zordur.
Buradaki belgelerin gerçekten Excel'in, bir komut dosyasından oluşturulan bir bağlantıdan uzak bir bilgisayara göndermek istediğiniz komutların otomasyonunda. Bağlantıyı yapmak kolaydır, ancak bağlantı yapıldıktan sonra, komutlarınızı komut dosyanızdan uzak bilgisayardaki kabuğa nasıl "pompalıyorsunuz? Burada belgeler bunu çok basit yapmanıza izin verir.
Buradaki belgelerin temel prensipleri
Buradaki bir belgenin deyimsel gösterimi şöyle görünüyor:
komutu ve lt; limit_string . . Metin veri değişkenler . . Limit_string
-
EMRETMEK
: Bu, yönlendirilen girişi kabul eden herhangi bir Linux komutu olabilir. Not,
Ekoemretmek Yönlendirilmiş girişi kabul etmiyor . Ekrana yazmanız gerekirse, kullanabilirsiniz.kediemretmek, hangisi . - & lt; : Yönlendirme operatörü.
- limit_string : Bu bir etikettir. Komuta yönlendirdiğiniz veri listesinde göründüğü sürece ne istersen olabilir. Metin, veri ve değişken listesinin sonunu işaretlemek için kullanılır.
- Veri listesi : Komuta beslenecek veri listesi. Komutlar, metin ve değişkenler içerebilir. Veri listesinin içeriği, _limit_string ile karşılaşıncaya kadar bir seferde bir satıra bir satıra beslenir.
Muhtemelen, sınır dizisi olarak "EOF" kullanan belgelerin örneklerini göreceksiniz. Bu yaklaşımı desteklemiyoruz. Çalışır, ancak "EOF" "dosyanın sonu" anlamına gelir. Bir ev belgesinin bir komut dosyası dosyasındaki son şey olduğu nadir durumdan ayrıdır, "EOF" hatalı bir şekilde kullanılıyor.
Yaptıklarını ifade eden bir sınır dizesi kullanıyorsanız, komut dosyalarınızı çok daha okunabilir hale getirir. Uzak bir bilgisayara bir dizi komut gönderiyorsanız
Güvenli kabuk
(SSH), "_Remote_commands" gibi bir şey denilen bir limit dize mükemmel bir anlam ifade eder. Onları bir alt çizgi ile başlamanıza gerek yok "
_
"Karakter. Bunu yapıyoruz çünkü onları senaryodaki sıradan bir şey olarak işaret ediyor.
Basit örnekler
Burada komut satırındaki ve komut dosyalarındaki belgeleri kullanabilirsiniz. Bir terminal penceresinde aşağıdakileri yazdığınızda, bir "
& gt;
"HATTI KESMEYİĞİ SATIN ALMASI" ENTER "nin her vurduğunda. "_End_of_text" limit dizesini yazdığınızda ve "Enter" i yazdığınızda, web sitelerinin listesi iletilir.
kedi,
ve terminal penceresinde görüntülenirler.
CAT & LT; _end_of_text Nasıl yapılır geek Gözden geçirmek Lifesavvy Cloudsavvy Mindbounder _end_of_text
Bu, alıştırmaların en değerli değil, ancak veri listesinin tamamı toplanıncaya kadar komuta hiçbir şeyin gönderileceğini ve limit dizesinin karşılaşılması olduğunu gösteriyor. NS
kedi
"_end_of_text" limit dizesini girene kadar komut almaz ve "Enter" tuşuna basın.
Aynı şeyi bir senaryoda yapabiliriz. Bu örneği bir editöre yazın veya kopyalayın, dosyayı "heredoc-1.sh" olarak kaydedin ve editörü kapatın.
#! / Bin / bash CAT & LT; "_end_of_text" Kullanıcı adınız: $ (whoami) Mevcut çalışma dizininiz: $ pwd Bash sürümünüz: $ bash_version _end_of_text
Bu makaleyi takip ederken, her bir komut dosyası oluşturduğunuzda, ihtiyacınız olacak
yürütülebilir kılmak
çalıştırılmadan önce. Herbir durumda,
kullan
chmod
emretmek
. Burada kullanılan komut dosyası adı için her bir örnekte komut dosyasının adını değiştirin.
chmod + x heredoc-1.sh
Bu komut dosyası iki çevre değişkenini içeriyor,
$ Pwd
ve
$ Bash_version
. Çevre değişken adları, veri değerleri ile değiştirilir - geçerli çalışma dizini ve BARH'nin yapıldığında BASH sürümü -.
Komut dosyası da kullanır
komut ikame
üzerinde
NS
ben kimim
emretmek
. Komutun adı kendi çıktısı ile değiştirilir. Tüm komut dosyasından çıktı, CAT komutu tarafından Terminal penceresine yazılır. Seti olarak adlandırarak komut dosyasını çalıştırıyoruz:
./ Heredoc-1.sh
Komut dosyasını değiştirirseniz ve limit dizesini buradaki belgenin ilk satırında tırnak işaretlerinde sararsanız "
"
"Veri listesi burada burada belge komutuna iletilir. Değişken değerler yerine değişken adlar görüntülenir ve komut ikamesi gerçekleşmez.
#! / Bin / bash kedi & lt; - "_end_of_text" Kullanıcı adınız: $ (whoami) Mevcut çalışma dizininiz: $ pwd Bash sürümünüz: $ bash_version _end_of_text
Sekme karakterlerini kullanma
Varsayılan olarak, veri listenizdeki sekme karakterleri korunur ve terminal penceresine yazılır. Bu örneği "Heredoc-2.sh" olarak kopyalayın ve kaydedin. Kullanarak çalıştırılabilir
chmod
emretmek. Bir dizi boşluk yerine satırın başlangıcında bir veya iki sekme karakterine sahip olduklarından emin olmak için girintili satırları düzenleyin.
#! / Bin / bash
CAT & LT; _end_of_text
Kullanıcı adınız: $ (whoami)
Mevcut çalışma dizininiz: $ pwd
Bash sürümünüz: $ bash_version
_end_of_text
./ Heredoc-2.sh
Sekmeler terminal penceresine yazılır.
Bir çizgi ekleyerek "
-
"Yönlendirme operatörüne, burada belge önde gelen sekme karakterlerini görmezden gelecektir. Bu örneği "heredoc-3.sh" olarak kaydedin ve çalıştırılabilir hale getirin.
#! / Bin / bash
kedi & lt; - _end_of_text
Kullanıcı adınız: $ (whoami)
Mevcut çalışma dizininiz: $ pwd
Bash sürümünüz: $ bash_version
_end_of_text
./ heredoc-3.sh
Sekmeler göz ardı edilir. Bu önemsiz görünebilir, ancak scriptlerin girintili bölümleri nedeniyle önde gelen sekmelerle başa çıkmanın temiz bir yoludur.
Döngüler ve diğer mantıksal yapılar genellikle girintilidir. Buradaki belgeniz, bir betiğin girintili bir bölümünde bulunursa, bir çizgi kullanarak "
-
"Yönlendirme operatörü ile önde gelen sekme karakterlerinin neden olduğu biçimleri biçimlendirmeyi kaldırır.
#! / Bin / bash Eğer doğruysa; sonra kedi & lt; - _limit_string Önde gelen sekme ile satır 1. Önde gelen bir sekme ile satır 2. Önde gelen bir sekme ile satır 3. _Limit_String fi
Bir dosyaya yönlendirilmesi
Burada belge ile birlikte kullanılan komuttan çıktı bir dosyaya yönlendirilebilir. Kullan "
& gt;
"(Dosyayı oluştur) veya"
& gt; & gt;
"(Varsa dosyayı oluşturun, eğer varsa dosyaya ekleyin) Yönlendirme operatörleri
sonrasında
Buradaki belgenin ilk satırındaki limit dizesi.
Bu senaryo "Heredoc-4.sh." Çıktısını "Session.txt" adlı bir metin dosyasına yönlendirecektir.
#! / Bin / bash CAT & LT; _end_of_text & gt; seans.txt Kullanıcı adınız: $ (whoami) Mevcut çalışma dizininiz: $ pwd Bash sürümünüz: $ bash_version _end_of_text
./ heredoc-4.sh
Kedi oturumu.Text
Çıkışı başka bir komuta çevirmek
Burada bir belgede kullanılan komuttan çıktı, başka bir komuta giriş olarak borulanabilir. Kullanmak
kamış "
|
" Şebeke
sonrasında
Buradaki belgenin ilk satırındaki limit dizesi. Çıktıyı buradaki belge komutundan borulayacağız,
kedi
, içine
sed
. Biz istiyoruz
Tüm olayların yerine geçme
"A" harfi "E" harfi ile.
Bu komut dosyasını "Heredoc-5.sh" olarak adlandırın.
#! / Bin / bash CAT & LT; _end_of_text | SED 'S / A / E / G' Nasıl NS GAAK _end_of_text
./ heredoc-5.sh
"Gaak", "Geek" için düzeltildi.
Parametreleri bir fonksiyona gönderme
Burada bir belge ile birlikte kullanılan komut komut dosyasında bir işlev olabilir.
Bu komut dosyası bazı araç verilerini bir fonksiyona geçer. İşlev, verileri bir kullanıcı tarafından yazılmış gibi okur. Değişkenlerin değerleri daha sonra yazdırılır. Bu komut dosyasını "heredoc-6.sh" olarak kaydedin.
#! / Bin / bash
# set_car_details () işlevi
set_car_details ()
{
okumak
modeli oku
New_used işletildi
Teslimat okuma_collect
okuma yeri
okuma Fiyatı
}
# Verileri SET_CAR_DETAIL'lara () geçen belge
set_car_details & lt; _mars_rover_data
Nasa
Sebat rover
Kullanılmış
Toplamak
Mars (Long, Lat) 77.451865,18.445161
2.2 milyar
_mars_rover_data
# Araç detaylarını al
echo "yapmak: $ make"
Echo "Model: $ Model"
echo "yeni veya kullanılmış: $ new_ted"
Echo "Teslimat veya Koleksiyon: $ Teslimat_collect"
Echo "Yer: $ Konum"
echo "Fiyat \ $: $ Fiyat"
./ heredoc-6.sh
Araç detayları terminal penceresine yazılır.
Bir e-posta oluşturma ve gönderme
Bir e-posta göndermek ve göndermek için burada bir belge kullanabiliriz. Parametreleri yeniden yönlendirme operatörünün önündeki komuta geçebileceğimizi unutmayın. NS
Linux kullanarak
posta
emretmek
ile
Yerel posta sisteminden bir e-posta gönderin
"Dave" adlı kullanıcı hesabına. NS
-s
(Konu) seçeneği, e-postanın konusunu belirtmemize izin verir.
Bu örnek, "Heredoc-7.sh" komut dosyasını oluşturur.
#! / Bin / bash makale = "burada belgeler" Posta -s 'İş Yükü Durumu' Dave & LT; _proje raporu Kullanıcı adı: $ (whoami) Ödevi tamamladı: Makale: $ makale _Project_Report
./ heredoc-7.sh
Bu komut dosyasından görünür bir çıktı yok. Ancak postalarımızı kontrol ettiğimizde, e-postanın oluştuğunu, gönderildiğini ve teslim edildiğini görüyoruz.
Burada SSH ile belgeleri kullanarak
Burada belgeler, bir SSH bağlantısı kurulduktan sonra uzak bir bilgisayarda bazı komutları yürütmenin güçlü ve kullanışlı bir yoludur. İki bilgisayar arasında SSH tuşlarını ayarlarsanız, giriş işlemi tamamen otomatik olacaktır. Bu hızlı ve kirli örnekte, uzak bilgisayardaki kullanıcı hesabının şifresi istenir.
Bu senaryo "heredoc-8.sh". "Remote-PC" adlı uzak bir bilgisayara bağlanacağız. Kullanıcı hesabı "Dave" denir. Kullanıyoruz
-T
(Pseudo-terminal tahsisi devre dışı bırakma) seçeneğinin, çünkü bize atanacak etkileşimli bir psödo terminaline ihtiyacımız yok.
"Burada bazı işler yap" bölümünde, komut dosyasının bir listesini geçebiliriz ve bunlar uzak bilgisayarda yürütülebiliriz. Tabii ki, uzak bilgisayarda olan bir komut dosyasını arayabilirsiniz. Uzak komut dosyası, yürütülmek istediğiniz tüm komutları ve rutinleri tutabilir.
Script-HEREDOC-8.SH-YAPABİLİRSİNİZ, uzak bilgisayardaki bir bağlantı günlüğünü güncellemektir. Kullanıcı hesabı ve bir zaman ve tarih damgası bir metin dosyasına kaydedilir.
#! / Bin / bash ssh -t [email protected] & lt; _Remote_commands # Bazı işler burada yapın # Bağlantı Günlüğünü Güncelle echo $ kullanıcı "-" $ (tarih) & gt; & gt; /home/dave/conn_log/script.log _Remote_commands
Komutu çalıştırdığımızda, hesabın şifresini sorarız. uzak bilgisayar.
./ heredoc-8.sh
Uzak bilgisayarla ilgili bazı bilgiler görüntülenir ve komut istemine iade ediyoruz.
Üzerinde
uzak
bilgisayar, kullanabiliriz
kedi
Bağlantı günlüğünü kontrol etmek için:
CAT CONN_LOG / SCRIPT.LOG
Her bağlantı bizim için listelenmiştir.
İLGİLİ: Linux kabuğundan SSH tuşlarını nasıl oluşturulur ve kurulur
Garip Adı, Düzgün Özellikler
Burada belgeler ilginç ama güçlü, özellikle de uzak bir bilgisayara komut göndermek için kullanılır. Bir yedekleme rutini kullanarak komut dosyası yazmak için basit bir konu olurdu.
rsync
. Script daha sonra uzak bilgisayara bağlanabilir, kalan depolama alanını kontrol edebilir ve boşluk düşükse, bir uyarı e-postası gönderin.
İLGİLİ: Rsync ile Linux sisteminizi nasıl yedeklenir