Linux'ta Echo Komutu Nasıl Kullanılır

echoKomut terminal penceresinde biçimlendirilmiş metni yazma için idealdir. Ve statik metin olması gerekmez. Kabuk değişkenlerini, dosya adlarını ve dizinleri içerebilir. Metin dosyaları ve günlük dosyaları oluşturmak için yankıyı da yeniden yönlendirebilirsiniz. Nasıl olduğunu öğrenmek için bu basit kılavuzu izleyin.

Echo, Tekrar Etmesini Söylediklerinizi Tekrar Eder

Zeus, Olimpos Dağı'ndan güzel perilerle birlikte olmak için ayrılmayı çok severdi. Bir seyahatte, Echo adlı bir dağ perisine, eğer onu takip ederse karısı Hera'ya yol vermesini söyledi. Hera, Zeus'u aramaya geldi ve Echo, Hera'yı konuşmaya devam ettirmek için elinden geleni yaptı. Sonunda Hera öfkesini kaybetti ve zavallı Echo'yu lanetledi, böylece yalnızca başka birinin söylediği son sözleri tekrarladı. Hera'nın onu yakaladığında Zeus'a ne yaptığını kimse tahmin edemez.

Ve bu, hemen hemen, echohayatta çok şey var. Tekrarlaması söyleneni tekrarlar. Bu basit bir işlev, ancak hayati bir işlev. Olmazsa echo, örneğin, kabuk komut dosyalarından görünür çıktı alamayız.

Çok sayıda çan ve ıslık ile dolu echoolmasa da, bilmediğiniz veya unuttuğunuz bazı yeteneklere sahip olma ihtimali yüksektir .

Eko? Eko!

Çoğu Linux sistemi echo,. Bash kabuğunun kendi içinde echoyerleşik olduğu gibi, çalıştırılabilir bir ikili sürümü echode vardır.

Aşağıdaki komutları kullanarak iki farklı versiyonu görebiliriz:

yankı yazın
yankı nerede

typeBiz onun argüman olarak kendisine iletmek komutu bir kabuk yerleşik bir ikili yürütülebilir, bir takma ya da bir fonksiyon olup olmadığını komut söyler. Bize bunun echobir kabuk yerleşik olduğunu bildiriyor .

Bir cevap typebulur bulmaz, başka eşleşme aramayı bırakır. Bu nedenle, sistemde aynı ada sahip başka komutlar olup olmadığını bize söylemez. Ama bize hangisini önce bulduğunu söyler. Ve bu, bu komutu verdiğimizde varsayılan olarak kullanılacak olanıdır.

whereisKomut görünüyor komutu için ikili yürütülebilir, kaynak kodu ve adam sayfası için biz onun komut satırı parametresi olarak kendisine iletmek. Kabuk yerleşiklerini aramıyor çünkü ayrı bir çalıştırılabilir ikiliye sahip değiller. Bash yürütülebilir dosyasının ayrılmaz bir parçasıdır.

whereisKomut raporları echobulunan ikili yürütülebilir olan /bindizinde.

Bu sürümü kullanmak echoiçin komut satırında çalıştırılabilir dosyanın yolunu sağlayarak onu açıkça çağırmanız gerekir:

/ bin / echo --version

Kabuk yerleşiği --versionkomut satırı argümanının ne olduğunu bilmez , sadece terminal penceresinde tekrar eder:

echo --version

Burada gösterilen örneklerin tümü echo, Bash kabuğundaki varsayılan sürümünü kullanır .

Terminale Metin Yazma

Terminal penceresine basit bir metin dizisi yazmak echoiçin, göstermesini istediğiniz dizeyi yazın :

echo Benim adım Dave.

Metin bizim için tekrarlanıyor. Ancak deneyler yaptıkça, işlerin biraz daha karmaşık hale gelebileceğini yakında keşfedeceksiniz. Şu örneğe bakın:

echo Benim adım Dave ve ben bir inekim.

Terminal penceresi bir > işaret gösterir   ve orada durur, bekler. Ctrl + C sizi komut istemine döndürür. Orada ne oldu?

"Ben" kelimesindeki tek alıntı veya kesme işareti karıştı echo. Bu tek alıntı, metnin alıntılanmış bir bölümünün başlangıcı olarak yorumladı. Kapanan tek bir alıntı tespit edemediği  echoiçin daha fazla girdi bekliyordu. Daha fazla girdinin, beklediği eksik tek alıntıyı içermesi bekleniyordu.

Bir dizeye tek bir alıntı eklemek için en basit çözüm, tüm dizeyi çift tırnak işaretleri arasına almaktır:

echo "Benim adım Dave ve ben bir inekim."

Metninizi çift tırnak işaretleri arasına almanız iyi bir genel tavsiye olacaktır. Komut dosyalarında, geçtiğiniz parametreleri net bir şekilde sınırlar echo. Bu, komut dosyalarını okumayı ve hata ayıklamayı çok daha kolay hale getirir.

Metin dizinize çift tırnak karakteri eklemek isterseniz ne olur? Bu kolaydır, \çift ​​tırnak işaretinin önüne bir ters eğik çizgi koyun (aralarında boşluk bırakmadan).

echo "Adım Dave ve ben bir \" inek. \ ""

Bu bizim için "geek" kelimesini çift tırnak işaretleri arasına alıyor. Bu ters eğik çizgiden kaçan karakterlerden daha fazlasını kısa süre içinde göreceğiz .

Değişkenleri yankı ile kullanma

Şimdiye kadar, terminal penceresine önceden tanımlanmış metin yazıyoruz. echoDaha dinamik ve bizim için kabuk tarafından eklenen değerlere sahip çıktı üretmek için değişkenleri kullanabiliriz . Bu komutla basit bir değişken tanımlayabiliriz:

my_name = "Dave"

Adlı bir değişken my_nameoluşturuldu. "Dave" metninin değeri atanmıştır. Değişken adını geçtiğimiz dizelerde kullanabiliriz ve değişkenin echo değeri terminal penceresine yazılır. $Değişken olduğunu echobilmek için değişken adının önüne bir dolar işareti koymalısınız .

Bir uyarı var. Dizenizi tek tırnak işaretleriyle sardıysanız echo , her şeyi tam anlamıyla ele alacaksınız . Değişken adının değil değişken değerinin görüntülenmesini sağlamak için çift tırnak işareti kullanın.

echo 'Benim adım $ my_name'
echo "Benim adım $ my_name"

Biraz uygun bir şekilde, tekrar etmeye değer:

  • Kullanılması tek metinde tırnak işaretleri sonuçlarını bir terminal penceresine yazılıyor literal moda.
  • Kullanılması  çift değişken varlıkta alıntı işaretleri sonuçları-de yorumlanır değişken genişletme ve denilen değer terminal penceresinde yazılır.

İLGİLİ: Bash'te Değişkenlerle Nasıl Çalışılır

Yankılı Komutları Kullanma

Bir komutu kullanabilir echove çıkışını terminal penceresine yazılan dizeye dahil edebiliriz . Dolar işaretini $komut bir değişkenmiş gibi kullanmalı ve tüm komutu parantez içine almalıyız.

Tarih komutunu kullanacağız. Bir ipucu, onu kullanmaya başlamadan önce komutu kendi başına kullanmaktır echo. Bu şekilde, komutunuzun sözdiziminde bir sorun varsa, komuta eklemeden önce onu tanımlar ve düzeltirsiniz echo. Ardından, echokomut beklediğinizi yapmazsa, sorunun echosözdiziminde olması gerektiğini bilirsiniz çünkü komutun sözdizimini zaten kanıtlamışsınızdır.

Yani, terminal penceresinde şunu deneyin:

tarih +% D

Ve tarih komutundan beklediğimizi elde ettiğimiz için onu bir echokomuta entegre edeceğiz :

echo "Bugünün tarihi: $ (tarih +% D)"

Komutun parantez içinde olduğuna ve dolar işaretinin $ ilk parantezden hemen önce olduğuna dikkat edin.

Yankı ile Metni Biçimlendirme

-e(Ters eğik çizgi kaçar etkinleştirmek) seçeneği bize metnin düzenini değiştirmek için bazı ters eğik çizgi bulunan karakterleri kullanmanızı sağlar. Bunlar, kullanabileceğimiz ters eğik çizgiden çıkmış karakterlerdir:

  • \ a : Uyarı (tarihsel olarak BEL olarak bilinir). Bu, varsayılan uyarı sesini oluşturur.
  • \ b : Bir geri alma karakteri yazar.
  • \ c : Diğer çıktıları bırakır.
  • \ e : Bir çıkış karakteri yazar.
  • \ f : Bir form besleme karakteri yazar.
  • \ n : Yeni bir satır yazar.
  • \ r : Bir satır başı yazar.
  • \ t : Yatay bir sekme yazar.
  • \ v : Dikey bir sekme yazar.
  • \\ : Bir ters eğik çizgi karakteri yazar.

Bazılarını kullanalım ve ne yaptıklarını görelim.

echo -e "Bu uzun bir metin satırıdır \ nüç satıra bölünmüş \ n \ ttabs \ ton \ tüçüncü \ tline"

Metin, \nkarakterleri kullandığımız yeni bir satıra bölünür ve karakterleri kullandığımız yere bir sekme eklenir \t.

echo -e "Burada \ vare \ vvertical \ vtabs"

Gibi \nyeni hat karakterleri, dikey sekme \valtında hattına metni taşır. Ancak, \n yeni satır karakterlerinden farklı olarak  , \vdikey sekme yeni satırı sıfır sütundan başlatmaz. Mevcut sütunu kullanır.

Geri \bboşluk karakterleri, imleci bir karakter geriye taşır. Terminale yazılacak daha fazla metin varsa, bu metin önceki karakterin üzerine yazılacaktır.

echo -e "123 \ b4"

"3" üzerine "4" yazılmıştır.

\rSatırbaşı karakteri neden  echobulunduğunuz satırın başına dönmeleri ve sütunda sıfır başka herhangi bir metin yazmak için.

echo -e "123 \ r456"

"123" karakterlerinin üzerine "456" karakterleri yazılır.

\aUyarı karakteri şiddetli bir “bip”. Üretecek Mevcut temanız için varsayılan uyarı sesini kullanır.

echo -e "Bip sesi çıkar \ a"

-n(Hayır satır) seçeneği bir ters eğik çizgi bulunan dizi değil, ama metin düzeni kozmetik etkiler, bu yüzden burada ele alacağız. echoMetnin sonuna yeni satır eklemeyi engeller . Komut istemi, terminal penceresine yazılan metnin hemen ardından görünür.

echo -n "son satır yok"

Echo'yu Dosyalar ve Dizinler ile Kullanma

Sen kullanabilirsiniz echozayıf adamın sürümü bir tür ls. echoBöyle kullandığınızda seçenekleriniz az ve çok uzaktır . Herhangi bir sadakat veya ince kontrole ihtiyacınız varsa ls, seçeneklerini ve seçeneklerini kullanmakta daha iyi olursunuz .

Bu komut, geçerli dizindeki tüm dosyaları ve dizinleri listeler:

Eko *

Bu komut, adı "D" ile başlayan geçerli dizindeki tüm dosyaları ve dizinleri listeler:

yankı D *

Bu komut, geçerli dizindeki tüm ".desktop" dosyalarını listeler:

echo * .desktop

Evet. Bu, echogüçlü yönleriyle oynamak değil . Kullanın ls.

Yankı ile Dosyalara Yazma

Çıktıyı yeniden yönlendirebilir echove metin dosyaları oluşturabilir veya mevcut metin dosyalarına yazabiliriz.

Yeniden >yönlendirme operatörünü kullanırsak, dosya yoksa oluşturulur. Dosya mevcutsa, dosyadan alınan çıktı echoönceki içeriğin üzerine yazılarak dosyanın başlangıcına eklenir.

Yeniden >>yönlendirme operatörünü kullanırsak, dosya yoksa oluşturulur. Kaynağından alınan çıktı echodosyanın sonuna eklenir ve dosyanın mevcut içeriğinin üzerine yazılmaz.

echo "Yeni bir dosya oluşturuluyor." > sample.txt
echo "Dosyaya ekleniyor." >> sample.txt
cat sample.txt

İlk komutla yeni bir dosya oluşturulur ve içine metin eklenir. İkinci komut dosyanın altına bir metin satırı ekler. catKomut terminal penceresinde dosyanın içeriğini görüntüler.

Ve elbette, dosyamıza bazı yararlı bilgiler eklemek için değişkenler ekleyebiliriz. Dosya bir günlük dosyasıysa, ona bir zaman damgası eklemek isteyebiliriz. Bunu bir sonraki komutla yapabiliriz.

dateKomut için parametrelerin etrafındaki tek tırnak işaretlerine dikkat edin . Parametreler arasındaki boşluğun parametre listesinin sonu olarak yorumlanmasını önlerler. Parametrelerin date doğru şekilde geçmesini  sağlarlar.

echo "Günlük dosyası başladı: $ (tarih + '% D% T')"> logfile.txt
kedi logfile.txt

catLog dosyamız bizim için oluşturuldu ve bize hem tarih damgasının hem de zaman damgasının eklendiğini gösteriyor.

İLGİLİ: Linux'ta stdin, stdout ve stderr nedir?

Bu echo'nun Repertuarı

Basit bir komut ama vazgeçilmez. Eğer olmasaydı, icat etmemiz gerekirdi.

Sonuçta Zeus'un saçmalıkları biraz iyilik yaptı.