¿Qué significa -x en la declaración condicional if?


Respuestas:


26

De las man bashpáginas (especialmente la sección EXPRESIONES CONDICIONALES):

   -a file
          True if file exists.
   -b file
          True if file exists and is a block special file.
   -c file
          True if file exists and is a character special file.
   -d file
          True if file exists and is a directory.
   -e file
          True if file exists.
   -f file
          True if file exists and is a regular file.
   -g file
          True if file exists and is set-group-id.
   -h file
          True if file exists and is a symbolic link.
   -k file
          True if file exists and its ``sticky'' bit is set.
   -p file
          True if file exists and is a named pipe (FIFO).
   -r file
          True if file exists and is readable.
   -s file
          True if file exists and has a size greater than zero.
   -t fd  True if file descriptor fd is open and refers to a terminal.
   -u file
          True if file exists and its set-user-id bit is set.
   -w file
          True if file exists and is writable.
   -x file
          True if file exists and is executable.

   [...]

3
Cabe señalar que el ejecutable de un directorio significa que se puede atravesar.
rico remer

2
@StevenPenny La segunda parte de la pregunta fue "¿Cómo podría encontrar esta página del manual si?"
Sparhawk

1
@drewbenn Cuando invocas testen bash, no estás invocando el testbinario. En cambio, estás invocando a bash testincorporado, que tiene documentación en help test, entre otros lugares. man testpuede ser engañoso en algunos casos por esa razón.
Chris Down

11

ifen sí es una palabra clave de shell, por lo que puede encontrar información al respecto help if. ifsolo se ramifica en función de si el siguiente comando devuelve verdadero (0) o falso (no cero). Sin embargo, lo que realmente quieres es man [o man testdónde [es un alias test. Esa declaración se está ejecutando realmente test -x /etc/rc.local, lo que prueba para ver si ese archivo existe y si es ejecutable (o tiene permiso de búsqueda).


1
man [también funciona
Sparhawk

1
No solo prueba para ver si existe, también prueba si el archivo también es ejecutable.
Tom Fenech

@TomFenech, ahh, cierto ...
psusi

@psusi ifno es shell incorporado, es palabra clave de shell. Ejecute este comando type ifpara verificar eso.
Avinash Raj

3

De info test:

`-x FILE'
    True if FILE exists and execute permission is granted (or search permission, if it is a directory).

Se necesita permiso de ejecución en un directorio para poder crear un CD en él (es decir, hacer que algún directorio sea su directorio de trabajo actual).

Se necesita ejecutar en un directorio para acceder a la información de "inodo" de los archivos que contiene. Necesita esto para buscar en un directorio para leer los inodos de los archivos dentro. Por esta razón, el permiso de ejecución en un directorio a menudo se denomina permiso de búsqueda.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.