J'ai essayé 'man echo' dans Bash et il m'a dit que 'echo --help' affichera de l'aide puis quittera, et de même, que 'echo --version' affichera la version et quittera. Mais pourquoi ça ne marche pas? 'echo --help' imprime simplement '--help' littéralement.
20
echo --help
est un bug . Imaginez ce qui se passe si vous le faites:printf "The option you entered is: " ; echo "$opt"
et la variable shellopt
contient le texte--help
. Selon la norme POSIX, ilecho
n'est pas autorisé de se comporter de cette manière, mais l'écho GNU est manifestement non conforme.echo -e
etecho -n
c'est aussi un bug, par ta logique?Réponses:
man echo
se rapporte auecho
programme . GNUecho
prend en charge une--help
option, tout comme certaines autres. Lorsque vous exécutezecho
dans Bash, vous obtenez à la place sa fonction intégréeecho
qui ne fonctionne pas.Pour accéder au
echo
programme, plutôt qu'au programme intégré, vous pouvez soit lui donner un chemin:ou utilisez la
enable
commande de Bash pour désactiver la version intégrée:Bash a des versions intégrées de nombreuses commandes de base, car c'est un peu plus rapide pour le faire, mais vous pouvez toujours les contourner comme cela quand vous en avez besoin.
la source
zsh
.enable
fonctionne, cependant.echo
en particulier a beaucoup d'extensions au-dessus de POSIX, et Bash n'estecho
que quelques-unes. Il n'y a pas vraiment de nom général auquel je puisse penser pour les commandes qui pourraient être masquées par les commandes internes. Il n'y a pas tellement que vous auriez besoin d' un:echo
,test
,[
etpwd
sont celles que vous risquez fortement de rencontrer.command
appelle toujours explicitement les buildins. Je ne sais pas ce que je pensais, sinon çazsh
marche dans l 'autre sens.En plus d'autres réponses, vous pouvez utiliser
voir aussi une brève aide pour la
echo
commande intégrée .la source
Vous utilisez la
echo
commande intégrée de bash, qui ne comprend pas l'--help
option. Utilisation:Pour voir l'aide pour le intégré
echo
, utilisezman bash
et recherchezecho
.la source