なぜ 'echo --help'でエコーのヘルプページが表示されないのですか?


20

Bashで「man echo」を試してみましたが、「echo --help」はヘルプを表示して終了し、同様に「echo --version」はバージョンを出力して終了することを教えてくれました。しかし、なぜ機能しないのですか?'echo --help'は、単に '--help'を文字通りに出力するだけです。


2
でヘルプメッセージの生産を注意しecho --helpているバグ。するとどうなるか想像してみてください。printf "The option you entered is: " ; echo "$opt"シェル変数optにtextが含まれていることがあります--help。POSIX規格でechoは、このように動作することは許可されていませんが、GNUエコーは不適合な不適合です。
R ..

1
@R ..それでecho -eecho -nあなたの論理ではバグでもありますか?
ティロ14

@Tyilo:POSIXの仕様、またはここで問題の私の報道を参照してください:etalabs.net/sh_tricks.html-R
..

@R ..するとどうなるか想像してみてください:printf "入力したオプションは:"; echo "$ opt"とシェル変数optにたまたまテキスト-eまたは-nが含まれています。
ティロ14

@Tyilo:再説明するよりも、その質問に対する答えをすでに説明したページが好きだった。
R .. 14

回答:


26

man echoechoプログラムに関連します。GNU echo 、他の--helpオプションと同様にオプションをサポートしています。echoBashで実行すると、代わりにビルトインされますが、ビルトインさechoれません。

echoビルトインではなくプログラムにアクセスするには、パスを指定できます:

/bin/echo --help

または、Bashのenableコマンドを使用して組み込みバージョンを無効にします。

$ enable -n echo
$ echo --help

Bashには多くの基本的なコマンドの組み込みバージョンがあります。これは、それを行うのが少し速いためですが、必要なときにいつでもこれらをバイパスできます。


を使用するのに適していzshます。enableただし、動作します。
マイケルホーマー14

@MichaelHomerいくつかの組み込みバージョンは、元のバージョンと異なる場合がありますか?違いがある場合、あなたが言ったように「エコープログラム」を含むすべての元のコマンドの名前は何ですか?または、組み込みバージョンと区別するためにどの用語を使用しますか?
ブック参照14

1
@booksee:はい、それらは異なる場合があります。echo特にGNU にはPOSIXよりも多くの拡張機能がありますが、Bash echoはほんのわずかです。組み込みコマンドによってシャドウイングされる可能性のあるコマンドについて、私が考えることができる一般的な名前は実際にはありません。そこには、いずれかが必要だろうとそう多くはありません:echotest[、とpwdあなたは出会いになりそうだものです。
マイケルホーマー14

@Gnouc:はい、command組み込み関数を常に明示的に呼び出します。私はzshそれが他の方法で動作する以外は、私が何を考えていたのかわかりません。
マイケルホーマー14

2
うん、男は、そのようなものです「無効にするにはバッシュのenableコマンドを使用します」
Braiam


8

オプションをecho理解していないbashの組み込みコマンドを使用してい--helpます。つかいます:

/bin/echo --help

組み込みのヘルプを表示するにはecho、を使用man bashして検索しechoます。


これは私のために働いた
ヘイデンスリング
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.