El comando de tipo es un comando de shell bash incorporado que puede proporcionar el tipo de un comando específico.
¿Qué significa el "tipo de un comando"? Significa que puede obtener información como si un comando de Linux es un comando de shell incorporado, dónde se encuentra su ejecutable y si tiene un alias para algún otro comando.
Puede parecer que no es de mucha utilidad, pero créanme, podría resultar útil al investigar por qué un comando se comporta de cierta manera.
Usando type command en Linux
La sintaxis del comando de tipo es simple:
type [options] name
Para comenzar, usemos el comando type sin opciones en el conocido comando echo:
[email protected]:~$ type echo
echo is a shell builtin
Nos dice que echo es un comando integrado de shell. Este es el tipo de comando que se ejecutaría si la línea de comando interpretara el nombre echo.
Probemos algo más:
[email protected]:~$ type mkdir
mkdir is /usr/bin/mkdir
En el caso anterior, localiza el ejecutable del comando mkdir. Esto es similar al comando which pero el tipo es más rápido porque es un comando de shell integrado.
Si lo usa con algo que no es un comando, da un error de no encontrado.
[email protected]:~$ type no_command
bash: type: no_command: not found
2. Tipo de comando con alias
Probablemente ya esté familiarizado con los alias en Linux. Para recordar rápidamente, estos son pseudocomandos que funcionan como atajos. Se pueden configurar en su perfil de shell.
Veamos qué tipo de información encuentra el comando cuando lo usa en un comando con alias:
[email protected]:~$ type ll
ll is aliased to `ls -alF'
Como puede ver, muestra el comando real detrás del alias.
3. Obtener el tipo de múltiples comandos
También puede usar el tipo con varios comandos y obtener los resultados de vuelta a nosotros.
[email protected]:~$ type ls ll
ls is aliased to `ls --color=auto'
ll is aliased to `ls -alF'
En Ubuntu y algunas otras distribuciones, ls tiene un alias para mostrarle una salida colorida. Esto le ayuda a distinguir los enlaces simbólicos, enlaces duros, directorios, ejecutables y otros tipos diferentes de archivos.
4. Force type para devolver la ruta de los comandos
Si desea ubicar el ejecutable de un comando y el tipo sigue dando resultados como shell integrado e información de alias, puede forzar la obtención de la ruta con la opción -P.
[email protected]:~$ type -P ls
/usr/bin/ls
Esto devolverá el nombre de la ruta incluso si es un alias, integrado o función.
5. Obtener toda la información de los comandos
Podemos obtener la información más completa usando la opción -a.
[email protected]:~$ type -a ls
ls is aliased to `ls --color=auto'
ls is /usr/bin/ls
ls is /bin/ls
Esto nos muestra tanto la información del tipo como cada ubicación en la ruta del sistema con el archivo.
6. Devuelve solo el tipo de comando, no la ruta
Aquí hay diferentes tipos que puede obtener:
- Alias
- Incorporado
- Archivo
- Función
- Palabra clave
Puede solicitar solo el tipo con la opción -t. Estos son algunos ejemplos:
[email protected]:~$ type -t ls
alias
[email protected]:~$ type -t echo
builtin
[email protected]:~$ type -t sort
file
[email protected]:~$ type -t _mac_addresses
function
[email protected]:~$ type -t if
keyword
Bonificación:¿Por qué ves "command is hash"?
Algunas veces, cuando verá que un comando de salida tiene hash junto con la ruta al ejecutable:
[email protected]:~$ type man
man is hashed (/usr/bin/man)
Para evitar perder demasiado tiempo buscando la ruta de un ejecutable, el shell a menudo mantiene una lista de los programas que ha encontrado en el pasado. Esta lista se llama 'hash'.
Cuando ve una salida como 'el comando tiene hash', significa que el comando de tipo está devolviendo el resultado de las búsquedas ya realizadas. Puede usar hash -r para obligar al shell a buscar desde cero.
Conclusión
Espero que hayas aprendido algo nuevo hoy con esta introducción del comando type en Linux. Lo encuentro similar al comando de archivo que se usa para obtener información sobre archivos.
Si te gusta esta guía, compártela en las redes sociales. Si tiene algún comentario o pregunta, déjelos a continuación. Si tiene alguna sugerencia sobre temas que le gustaría ver cubiertos, no dude en dejarlos también. Gracias por leer.