чому "echo --help" не дає мені довідкової сторінки ехо?


20

Я спробував "man echo" у Bash, і він сказав мені, що "echo --help" відобразить допомогу, а потім вийде, і аналогічно, що "echo --version" виведе версію і вийде. Але чому це не працює? 'echo --help' просто просто друкує '--help' буквально.


2
Зверніть увагу , що виробництво повідомлення довідки по echo --helpце помилка . Уявіть, що станеться, якщо ви це зробите: printf "The option you entered is: " ; echo "$opt"а змінна оболонки optповинна містити текст --help. Відповідно до стандарту POSIX, echoне дозволяється вести себе таким чином, але відлуння GNU відверто не відповідає.
R ..

1
@R .. Так echo -eі echo -n, помилка, також за вашою логікою?
Тиїло

@Tyilo: Дивіться специфікацію в POSIX, або моє висвітлення проблеми тут: etalabs.net/sh_tricks.html
R ..

@R .. Уявіть, що станеться, якщо ви робите: printf "Введений вами варіант:"; echo "$ opt", і змінна оболонки opt повинна містити текст -e або -n.
Тиїло

@Tyilo: Замість того, щоб повторно пояснити це, мені сподобалася сторінка, де я вже пояснив відповідь на це питання.
Р ..

Відповіді:


26

man echoстосується echoпрограми . GNU echo підтримує в --helpопції, як і деякі інші. Під час запуску echoв Bash ви натомість отримуєте його вбудований,echo який не робить.

Для доступу до echoпрограми, а не до вбудованої, ви можете або надати шлях до неї:

/bin/echo --help

або скористайтеся enableкомандою Bash для відключення вбудованої версії:

$ enable -n echo
$ echo --help

Bash має вбудовані версії безлічі основних команд, тому що це зробити трохи швидше, але ви завжди можете їх обійти так, як вам потрібно.


Служить мені правильним для використання zsh. enableале працює, хоча.
Майкл Гомер

@MichaelHomer Отже, деякі вбудовані версії можуть відрізнятися від ... оригінальних? Якщо є відмінності, то як називаються всі оригінальні команди, включаючи "ехо-програму", як ви згадували? Або який термін ми використовуємо, щоб відрізнити їх від вбудованих версій?
booksee

1
@booksee: Так, вони можуть відрізнятися. echoЗокрема, GNU має багато розширень вище POSIX, а Bash - echoлише кілька. Насправді не існує загальної назви, яку я можу придумати для команд, які могли бути затінені вбудованими. Є не так багато , що вам потрібно один: echo, test, [, і pwdті , з якими ви , ймовірно, зіткнутися.
Майкл Гомер

@Gnouc: Так, commandявно завжди викликає вбудовані файли завжди. Я не знаю, що я думав, крім того zsh, що це працює інакше.
Майкл Гомер

2
"використовувати команду включення Баша для відключення" так, хлопці, це так
Брайам

10

Окрім інших відповідей, ви можете використовувати

$ help echo

також див. коротку допомогу для вбудованої echoкоманди.


8

Ви використовуєте echoвбудовану команду bash, яка не розуміє --helpваріант. Використання:

/bin/echo --help

Щоб побачити допомогу для вбудованої echo, використовуйте man bashта шукайте echo.


це працювало для мене
Hayden Thring
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.