2016-06-03 15 views
8

:bash "yankı" ">" - açıklayınız yazıyorum

Benim bash terminalde
echo 2*3>5 is a valid inequality 

, 5 adlı yeni bir dosya içeren benim dizinde oluşturulur:

2*3 is a valid inequality 

Burada tam olarak neler olduğunu öğrenmek istiyorum ve neden bu çıktıyı alıyorum? Linux için yeni olduğumun açık olduğuna inanıyorum! Teşekkürler

+5

Kullanım tırnak: '$' Aksi Kullanıcılar, [yönlendirme] vardır ("2 * 3> 5 Geçerli bir eşitsizlik olduğunu" echo http://www.tldp.org/LDP/abs/html/io-redirection.html) – dawg

+2

çıktısı çok açık değil. 15 yıldır linux kullanıyorum, şimdiye kadar herhangi bir yere yönlendirme yapabileceğiniz hakkında hiçbir fikrim yoktu. – njzk2

+0

@ njzk2, POSIX, başlangıcının veya sondan başka bir yerde desteklenmesini gerektirmez, ancak * böyle bir davranışı reddetmez *; Böylece, bu bir bash uzantısı, ama tamamen yasal bir. –

cevap

7

bash çıkış yönlendirme ilk yani >5 ilk yapılır ve 5 adlı bir dosya oluşturulur (veya zaten varsa kesilmiş) yapar. Sonuç dosya tanıtıcısı, echo komutunun çalışma zamanı için açık kalır. Daha sonra kalan kısım, 2*3 is a valid inequality, echo argümanı olarak çalışır ve standart çıktı, (zaten açık) 5 dosyaya kaydedilir.

, çıktı olarak tüm dizeyi almak tek veya çift tırnak kullanmak için:

echo '2*3>5 is a valid inequality' 
12

Başhkta, yönlendirmeler satırın herhangi bir yerinde olabilir (ancak bunu yapmamalısınız! --- bkz. the bash-hackers tutorial). Bash, >5'u yeniden yönlendirme olarak alır, çıktı dosyasını 5 oluşturur ve sonra da argümanların geri kalanını işler. Bu nedenle, 5 çıktı dosyasında gördüğünüz çıktıyı veren echo 2*3 is a valid inequality gerçekleşir. muhtemelen istiyorum ne

size komut satırında bir çıktı olarak belirtmek mesajı verecek bunlardan herhangi biri

echo "2*3>5 is a valid inequality" 

veya (tek tırnak)

echo '2*3>5 is a valid inequality' 

vardır. Fark, "" içinde değişkenlerin ( $foo gibi) doldurulacak, ancak '' içinde değil.

Düzenleme: bash man page

yönlendirme operatörleri önce veya basit komutla herhangi bir yerinde görünen veya bir komut takip edebilir olabileceğini söylüyor. Yönlendirmeler, görüntülendikleri sırayla, soldan sağa doğru işlenir.

+2

Eğer doğru bir şekilde anlarsam, '' filename'' kelimesini nereye koyduğum önemli değil! Aşağıdaki demek ki : 'doğru, bir dosya adı verilen dosya adını,' bazı metin burada bazı text' olan komutun çıktısını koyacağız bazı text' kütükadı> Bazı metni komuta ?? – secluded

+1

Suldum, bildiğim kadarıyla. Daha fazla detay için man sayfasına bir referans ekledim. – cxw

3

Bu, output redirection örneğidir. Echo deyimini standart çıktıya yazmak yerine dosya adına yazmayı öğretiyorsunuz. Bu dosya adı "5" olur.

Sen alıntı yaparak bu davranıştan kaçınmak edebilirsiniz:

echo "2*3>5 is a valid inequality"