Próbowałem „man echo” w Bash i powiedział mi, że „echo --help” wyświetli pomoc, a następnie zakończy działanie, i podobnie, że „echo - wersja” wyświetli wersję i zakończy działanie. Ale dlaczego to nie działa? „echo --help” po prostu drukuje „--help” dosłownie.
20
echo --help
jest błędem . Wyobraź sobie, co się stanie, jeśli to zrobisz:printf "The option you entered is: " ; echo "$opt"
a zmienna powłokiopt
zawiera tekst--help
. Zgodnie ze standardem POSIXecho
nie wolno zachowywać się w ten sposób, ale echo GNU jest nieprzyzwoicie niezgodne.echo -e
iecho -n
logika jest też błędem?Odpowiedzi:
man echo
dotyczyecho
programu . GNUecho
obsługuje do--help
opcji, podobnie jak kilka innych. Kiedy uruchamiasz sięecho
w Bash, zamiast tego dostajesz wbudowane narzędzie,echo
które nie działa.Aby uzyskać dostęp do
echo
programu, zamiast wbudowanego, możesz podać ścieżkę do niego:lub użyj
enable
polecenia Bash, aby wyłączyć wbudowaną wersję:Bash ma wbudowane wersje wielu podstawowych poleceń, ponieważ jest to trochę szybsze, ale zawsze możesz je ominąć, gdy zajdzie taka potrzeba.
źródło
zsh
.enable
jednak działa.echo
W szczególności GNU ma wiele rozszerzeń powyżej POSIX, a Bash jestecho
tylko kilka. Nie ma tak naprawdę ogólnej nazwy dla poleceń, które mogłyby zostać ukryte przez wbudowane funkcje. Nie ma tak wiele, że należałoby jeden:echo
,test
,[
, ipwd
są ci, jesteś prawdopodobnie do czynienia.command
zawsze jawnie wywołuje wbudowane wywołania. Nie wiem, o czym myślałem, poza tymzsh
, że działa to w drugą stronę.Oprócz innych odpowiedzi możesz użyć
zobacz także krótką pomoc dotyczącą wbudowanego
echo
polecenia.źródło
Używasz
echo
wbudowanego polecenia bash, które nie rozumie--help
opcji. Posługiwać się:Aby wyświetlić pomoc dotyczącą wbudowanego
echo
, użyjman bash
i wyszukajecho
.źródło