Hoy me encontré con un comando interesante '[ ' (corchete) a través del famoso blog de Linux llamado nixCraft. Fue una publicación bastante interesante que explicaba el uso de '/usr/bin/[ ‘comando en Linux. Pero sabes qué, he estado trabajando en Linux durante algunos años y no conocía este comando hasta que apareció ese tweet de nixcraft en mi fuente de noticias. Lo aprendí de ustedes, gracias.
Bueno, estoy escribiendo esta publicación para compartir lo que aprendí de nixCraft. Básicamente '/usr/bin/[ ‘ comando es igual a ‘prueba ‘comando en Linux. Déjame explicarte.
En la programación de shell, si alguna vez desea verificar si un archivo en particular existe o no, entonces normalmente usa IF cond is not? Algo como el que se muestra a continuación:
if [ -f /etc/passwd ] then echo "Yes" else echo "No" fi
Ahora, si ‘/etc/passwd existe, entonces verá el resultado "Sí ” más “No “. Eso es simple y también puede hacer lo mismo para comparar valores. Pero, ¿notaste que '[ ‘ paréntesis después de ‘si '? Ahí es donde está'/usr/bin/[ entra en escena.
Alternativamente, puede verificar si el archivo existe o no como se muestra a continuación (sin IF):
[demo ~]$ [ -f /etc/passwd ] && echo "Yes" || echo "No" Yes [demo ~]$ [ -f /etc/passwd1 ] && echo "Yes" || echo "No" No
En el fragmento anterior, puede ver ‘[‘ dominio. Como se dijo, el comando es igual a 'test '. Consulte el siguiente ejemplo:
if test -f /etc/passwd then echo "Yes" else echo "No" fi
Bien, ambos '[ ‘ y ‘prueba ' hace el mismo trabajo, pero ¿están enlazados? Lo comprobé también, pero no lo son.
[demo ~]$ ls -l /usr/bin/test -rwxr-xr-x 1 root root 30064 Mar 21 2012 /usr/bin/test
[demo ~]$ ls -l /usr/bin/[ -rwxr-xr-x 1 root root 32296 Mar 21 2012 /usr/bin/[
Básicamente, '[ ' es un comando de shell incorporado. Confírmelo usando 'escribir 'comando como se muestra a continuación:
[demo ~]$ type -a [ [ is a shell builtin [ is /usr/bin/[
Dado que es un comando, debería haber una página de manual, ¿no es así?
[demo ~]$ man [ No manual entry for [
No pude encontrar la página del manual para '[ ', luego vi la página man de 'test ' donde en la parte inferior, había una nota que dice acerca de '[ '. Ver a continuación:
[demo ~]$ man test ::::::::::::: NOTE: your shell may have its own version of test and/or [, which usually supersedes the version described here. Please refer to your shell's documentation for details about the options it supports.
Bonificación... Como '[' también hay '[['
[demo ~]$ type -a [[ [[ is a shell keyword
'[[ ‘ es en realidad una palabra clave similar a otras palabras clave en SHELL – ‘! hasta que termine seleccione elif else esac fi para la función de caso si [[ ]] en luego mientras { } tiempo ‘
Dado que es una palabra clave, no puede encontrarla como comando.
[demo ~]$ ls -l /usr/bin/[[ ls: /usr/bin/[[: No such file or directory
[demo@gridfs ~]$ whereis [[ [[: