¿Por qué 'echo --help' no me da la página de ayuda de echo?

20

Intenté 'man echo' en Bash y me dijo que 'echo --help' mostrará ayuda y luego saldrá, y de manera similar, 'echo --version' generará la versión y saldrá. ¿Pero por qué no funciona? 'echo --help' simplemente imprime '--help' literalmente.

booksee
fuente
2
Tenga en cuenta que la producción de un mensaje de ayuda por echo --helpes un error . Imagine lo que sucede si lo hace: printf "The option you entered is: " ; echo "$opt"y la variable de shell optcontiene el texto --help. Según el estándar POSIX, echono está permitido comportarse de esta manera, pero el eco GNU es desagradablemente disconforme.
R ..
1
@R .. Entonces, ¿ echo -ey echo -ntambién es un error, según tu lógica?
Tyilo
@Tyilo: Vea la especificación en POSIX, o mi cobertura del problema aquí: etalabs.net/sh_tricks.html
R ..
@R .. Imagine lo que sucede si lo hace: printf "La opción que ingresó es:"; echo "$ opt" y la variable de shell opt contiene el texto -e o -n.
Tyilo
@Tyilo: en lugar de volver a explicarlo, me gustó una página donde ya expliqué la respuesta a esa pregunta.
R ..

Respuestas:

26

man echose relaciona con el echoprograma . GNU echo admite una --helpopción, al igual que otras. Cuando corres echoen Bash, obtienes su incorporado,echo que no lo hace.

Para acceder al echoprograma, en lugar de al programa integrado, puede darle una ruta:

/bin/echo --help

o use el enablecomando de Bash para deshabilitar la versión integrada:

$ enable -n echo
$ echo --help

Bash tiene versiones integradas de muchos comandos básicos, porque es un poco más rápido hacerlo, pero siempre puedes omitirlos así cuando lo necesites.

Michael Homer
fuente
Me sirve bien para usar zsh. enablefunciona, sin embargo.
Michael Homer
@MichaelHomer ¿Entonces algunas versiones integradas pueden diferir de ... las originales? Si hay diferencias, ¿cuál es el nombre de todos los comandos originales, incluido el 'programa de eco' como mencionó? ¿O qué término usamos para distinguirlos de las versiones integradas?
booksee
1
@booksee: Sí, pueden diferir. GNU echoen particular tiene muchas extensiones por encima de POSIX, y Bash echosolo unas pocas. No hay realmente un nombre general que se me ocurra para los comandos que podrían estar sombreados por los incorporados. No hay tantos que se necesitaría una: echo, test, [, y pwdson los que es probable encontrar.
Michael Homer
@Gnouc: Sí, commandsiempre llama explícitamente a los builtins. No sé lo que estaba pensando, aparte de que eso zshfunciona a la inversa.
Michael Homer
2
"use el comando de habilitación de Bash para deshabilitar" sí, chicos, es así
Braiam
10

Además de otras respuestas, puede usar

$ help echo

También vea una breve ayuda para el echocomando incorporado .

Dmitry Alexandrov
fuente
8

Está utilizando el echocomando incorporado de bash, que no comprende la --helpopción. Utilizar:

/bin/echo --help

Para ver la ayuda para el incorporado echo, utilice man bashy busque echo.

Greg Hewgill
fuente
esto funcionó para mí
Hayden Thring