Por ejemplo,
[fakename]$ type echo
echo is a shell builtin
Pero man echo
me da la versión GNU coreutils de echo
. ¿Cuál es la forma más fácil de saber si la página de manual que estoy viendo es la correcta, es decir, la de la utilidad que obtendría si la invocara directamente?
Respuesta aceptada:
No lo haces, de verdad. No sin conocimientos externos a la página de manual.
En el caso de echo
(y printf
y test
, …), a menudo es un shell integrado, por lo que deberá saberlo y leer la documentación del shell. (Y echo
es notoriamente diferente en diferentes implementaciones, use printf
en su lugar.)
En la mayoría, si no en todos los shells, puede encontrar si algo está integrado con type command
, p.ej. type echo
imprimirá echo is a shell builtin
. (type
está especificado por POSIX pero p. fish también lo admite, aunque no sea POSIXy). En Bash, entonces leería man bash
, la documentación en línea, o use el comando incorporado help
(que es específico de Bash y que necesita saber que existe).
Incluso si el comando es no un incorporado, es posible que haya varios comandos con el mismo nombre, rename
siendo un ejemplo famoso (consulte ¿Por qué la utilidad de cambio de nombre en Debian/Ubuntu es diferente a la de otras distribuciones, como CentOS?). Ahora, su sistema operativo debe tener la página de manual correcta para la utilidad realmente instalada y, p. en Debian, el sistema de "alternativas" actualiza las correspondientes páginas man también cuando se cambian las alternativas de comando. Pero si lee una página de manual en línea, deberá conocerla.
Muchas utilidades tienen una opción de línea de comando como --version
lo que podría decirle qué implementación es ese comando. (Pero no casi todas las utilidades lo tienen. Creo que originalmente es un GNUismo, por lo que las utilidades de GNU lo tienen, así como aquellas que copiaron la costumbre). En el caso de rename
, funciona al diferenciar dos implementaciones diferentes:
debian$ rename --version
/usr/bin/rename using File::Rename version 0.20
centos$ rename --version
rename (util-linux-ng 2.17.2)
Además de eso, su sistema puede tener un alias o una función con el mismo nombre de una utilidad, generalmente para modificar el comportamiento de la utilidad. En ese caso, es posible que no se apliquen los valores predeterminados presentados en una página de manual. Alias para ls
son comunes, al igual que los alias que agregan -i
a rm
o mv
. Pero type foo
también te diría si foo
es un alias o función.