mandato Command
Finalidad
Ejecuta un mandato simple.
Sintaxis
command [-p] command_name [argument...]
command [-p] [-v|-V ] command_nameDescripción
El mandato command hace que el shell trate el mandato y los argumentos especificados como un mandato simple, suprimiendo la búsqueda de función de shell.
Normalmente, cuando a/(barra inclinada) no precede a un mandato (que indica una vía de acceso específica), el shell localiza un mandato buscando en las categorías siguientes:
- shell especial incorporado
- funciones de shell
- shell normal incorporado
- Variable de entorno PATH
Por ejemplo, si hay una función con el mismo nombre que una normal incorporada, el sistema utiliza la función. El mandato command le permite llamar a un mandato que tiene el mismo nombre que una función y obtener el mandato simple.
Los comandos -v y -V escriben en la salida estándar qué nombre de ruta utilizará el shell y cómo interpreta el shell el tipo de comando (integrado, función, alias, etc.). Dado que los indicadores -v y -V producen resultados en relación con el entorno actual del shell, el comando command se proporciona como un comando incorporado regular del shell Korn o del shell POSIX. El /usr/bin/command puede que no produzca resultados correctos, porque se llama en un subshell o en un entorno de ejecución de comandos separado. En el ejemplo siguiente, el shell no puede identificar alias, subrutinas o mandatos de shell especiales:
(PATH=foo command -v)
nohup command -vDistintivos
| Elemento | Descripción |
|---|---|
| -p | Realiza la búsqueda de mandatos utilizando un valor predeterminado para la variable de entorno PATH que busca todos los mandatos estándar. |
| -v | Escribe en la salida estándar el nombre de vía de acceso utilizado por el shell actual para invocar el mandato especificado, de acuerdo con los convenios siguientes:
Si no se puede encontrar el nombre de mandato especificado, no se graba ninguna salida y el estado de salida devuelve un valor > 0 . |
| -v | Escribe en la salida estándar el nombre de mandato que interpretará el entorno de shell actual. Aunque el formato de esta salida no está especificado, la salida indica en cuál de las categorías siguientes se encuentra el mandato:
|
Estado de salida
Cuando se especifica el distintivo -v o -V , se devuelven los siguientes valores de salida:
| Elemento | Descripción |
|---|---|
| 0 | Finalización satisfactoria. |
| >0 | No se ha podido encontrar el mandato especificado con el parámetro nombre_mandato o se ha producido un error. |
Cuando no se especifica el distintivo -v o -V , se devuelven los siguientes valores de salida:
| Elemento | Descripción |
|---|---|
| 126 | Se ha encontrado el mandato especificado por el parámetro nombre_mandato pero no se ha podido invocar. |
| 127 | Se ha producido un error en el mandato command , o no se ha podido encontrar el mandato especificado por el parámetro nombre_mandato . |
De lo contrario, el mandato command devuelve el estado de salida asociado con el mandato especificado por el parámetro nombre_mandato .
Ejemplos
- Para crear una versión del mandato cd que imprima el nuevo directorio de trabajo siempre que cambie de directorio, entre:
cd () { command cd "$@" >/dev/null pwd } - Para iniciar un script de Secure Shell, en el que el script evita ser suplantado por su padre, entre:
En este punto, teniendo en cuenta los permisos correctos en los directorios invocados por la variable de entorno PATH , el script tiene la capacidad de asegurarse de que cualquier mandato al que llame sea el deseado.IFS=' ' # The preceding value should be <space><tab><newline>. # Set IFS to its default value \unalias -a # Unset all possible aliases. # Note that unalias is escaped to prevent an alias # being used for unalias. unset -f command # Ensure command is not a user function. PATH="$(command -p getconf _CS_PATH):$PATH" # Put on a reliable PATH prefix. # ...
Archivos
| Elemento | Descripción |
|---|---|
| /usr/bin/ksh | Contiene el mandato incorporado command del shell Korn. |
| /usr/bin/command | Contiene el mandato command . |