neden 'echo --help' bana echo'nun yardım sayfasını vermiyor?


20

Ben Bash 'man echo' denedim ve bana 'echo --help' yardım görüntüleyecek, sonra çıkacak ve benzer şekilde, 'echo --version' sürümü çıktı ve çıkacaktır. Ama neden çalışmıyor? 'echo --help' sadece '--help' kelimesini tam anlamıyla yazdırır.


2
Bir yardım mesajının üretilmesinin echo --helpbir hata olduğunu unutmayın . Yaparsanız ne olacağını düşünün: printf "The option you entered is: " ; echo "$opt"ve shell değişkeni optmetni içeriyor --help. POSIX standardına göre, echobu şekilde davranmasına izin verilmez, ancak GNU yankısı iğrenç bir şekilde uygun değildir.
R ..

1
@R .. Peki echo -eve echo -naynı zamanda bir hata, mantığınız tarafından mı?
Tyilo

@Tyilo: POSIX'teki spesifikasyona veya bu konuyu ele aldığım bölüme bakın
R ..

@R .. Yaparsanız ne olacağını düşünün: printf "Girdiğiniz seçenek:"; echo "$ opt" ve shell değişkeni opt, -e veya -n metnini içerir.
Tyilo

@Tyilo: Yeniden açıklamak yerine, bu sorunun cevabını zaten açıkladığım bir sayfayı sevdim.
R ..

Yanıtlar:


26

man echoechoprogram ile ilgilidir . GNU echo ,--help bazılarında olduğu gibi bir seçeneği de destekler . echoBash koştuğunuzda onunecho yerine hangi yerleşik olsun .

echoYerleşik yerine programa erişmek için, programa bir yol verebilirsiniz:

/bin/echo --help

veya yerleşik sürümü devre dışı bırakmak için Bash enablekomutunu kullanın:

$ enable -n echo
$ echo --help

Bash, birçok temel komutun yerleşik sürümlerine sahiptir, çünkü bunu yapmak biraz daha hızlıdır, ancak ihtiyacınız olduğunda bunları her zaman bu şekilde atlayabilirsiniz.


Bana doğru hizmet veriyor zsh. enableolsa işe yarıyor.
Michael Homer

@MichaelHomer Yani bazı yerleşik sürümler ... orijinal sürümlerden farklı olabilir mi? Farklılıklar varsa, bahsettiğiniz gibi 'echo programı' da dahil olmak üzere tüm orijinal komutların adı nedir? Veya bunları yerleşik sürümlerden ayırmak için hangi terimi kullanıyoruz?
2014'te booksee

1
@booksee: Evet, farklı olabilirler. echoÖzellikle GNU , POSIX'in üzerinde birçok uzantıya sahiptir ve Bash echosadece birkaç tanesidir . Yerleşikler tarafından gölgelenebilecek komutlar için gerçekten düşünebileceğim genel bir isim yok. Orada bir ihtiyacım olacağını o kadar çok değildir: echo, test, [, ve pwdsen karşılaşma olasılığı yüksektir olanlardır.
Michael Homer

@Gnouc: Evet, commandaçıkça buildins'i her zaman çağırır. Ne düşündüğümü bilmiyorum, bunun dışında zshişler başka türlü.
Michael Homer

2
"devre dışı bırakmak için
Bash'ın

10

Diğer cevaplara ek olarak,

$ help echo

yerleşik echokomut için de kısa bir yardıma bakın .


8

Seçeneği echoanlamayan yerleşik bash komutunu kullanıyorsunuz --help. kullanın:

/bin/echo --help

Yerleşik yardımları görmek için echokullanın man bashve arayın echo.


Bu benim için çalıştı
Hayden Thring
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.