Я попробовал 'man echo' в Bash, и он сказал мне, что 'echo --help' покажет справку, затем выйдет, и, аналогично, 'echo --version' выведет версию и выйдет. Но почему это не работает? 'echo --help' просто печатает буквально '--help'.
20
echo --help
является ошибкой . Представьте, что произойдет, если вы это сделаете:printf "The option you entered is: " ; echo "$opt"
и переменная оболочкиopt
, как оказалось, содержит текст--help
. Согласно стандарту POSIX,echo
такое поведение не разрешено, но эхо GNU неприятно несоответствующее.echo -e
иecho -n
это тоже ошибка, по вашей логике?Ответы:
man echo
относится кecho
программе . GNUecho
поддерживает в--help
опции, как и некоторые другие. Когда вы работаетеecho
в Bash, вы получаете его встроенную функцию,echo
которая не работает.Чтобы получить доступ к
echo
программе, а не к встроенной, вы можете указать путь к ней:или используйте
enable
команду Bash, чтобы отключить встроенную версию:Bash имеет встроенные версии многих основных команд, потому что это немного быстрее, но вы всегда можете обойти их, когда вам это нужно.
источник
zsh
.enable
работает, хотя.echo
В частности, GNU имеет множество расширений выше POSIX, а Bash -echo
только несколько. На самом деле я не могу придумать общего названия для команд, которые могут быть скрыты встроенными командами. Есть не так много , что вам нужно один:echo
,test
,[
, иpwd
те , с которыми вы , вероятно, столкнуться.command
явно всегда вызывает buildins. Я не знаю, о чем я думал, кроме того, чтоzsh
это работает иначе.В дополнение к другим ответам, вы можете использовать
Также см. краткую справку по встроенной
echo
команде.источник
Вы используете
echo
встроенную команду bash, которая не понимает--help
опцию. Использование:Чтобы увидеть помощь для встроенного
echo
, используйтеman bash
и ищитеecho
.источник