Bash if –e y –s y otros operadores de prueba de archivos
En bash, la instrucción 'if' se utiliza para ejecutar acciones en función de la evaluación de una expresión booleana. Los operadores de prueba de archivos se utilizan dentro de la expresión booleana para evaluar si un archivo existe, si es un archivo regular, si está vacío, entre otros. En este artículo, exploraremos en profundidad dos de estos operadores: '-e' y '-s', además de otros operadores de prueba de archivo comunes.
-e y -s
El operador '-e' se utiliza para evaluar si un archivo existe. Si el archivo existe, el operador devuelve verdadero (true), de lo contrario, devuelve falso (false). A continuación, se muestra un ejemplo de cómo se utiliza el operador '-e' en un script bash:
```
```
if [ -e archivo.txt ]
then
echo "El archivo existe"
else
echo "El archivo no existe"
fi
Por otro lado, el operador '-s' se utiliza para evaluar si un archivo existe y tiene un tamaño mayor que cero. Si el archivo existe y no está vacío, el operador devuelve verdadero (true), de lo contrario, devuelve falso (false). A continuación, se muestra un ejemplo de cómo se utiliza el operador '-s' en un script bash:
```
```
if [ -s archivo.txt ]
then
echo "El archivo no está vacío"
else
echo "El archivo está vacío"
fi
Operadores comunes de prueba de archivos
-d
Este operador se utiliza para evaluar si un archivo es un directorio. Si el archivo es un directorio, el operador devuelve verdadero (true), de lo contrario, devuelve falso (false). Ejemplo:
```
```
if [ -d carpeta/ ]
then
echo "La carpeta existe"
else
echo "La carpeta no existe"
fi
-f
Este operador se utiliza para evaluar si un archivo es regular (no un directorio o enlace simbólico). Si el archivo es regular, el operador devuelve verdadero (true), de lo contrario, devuelve falso (false). Ejemplo:
```
```
if [ -f archivo.txt ]
then
echo "El archivo es regular"
else
echo "El archivo no es regular"
fi
-r
Este operador se utiliza para evaluar si un archivo tiene permisos de lectura. Si el usuario actual tiene permisos de lectura, el operador devuelve verdadero (true), de lo contrario, devuelve falso (false). Ejemplo:
```
```
if [ -r archivo.txt ]
then
echo "El archivo se puede leer"
else
echo "El archivo no se puede leer"
fi
-w
Este operador se utiliza para evaluar si un archivo tiene permisos de escritura. Si el usuario actual tiene permisos de escritura, el operador devuelve verdadero (true), de lo contrario, devuelve falso (false). Ejemplo:
```
```
if [ -w archivo.txt ]
then
echo "El archivo se puede escribir"
else
echo "El archivo no se puede escribir"
fi
-x
Este operador se utiliza para evaluar si un archivo tiene permisos de ejecución. Si el usuario actual tiene permisos de ejecución, el operador devuelve verdadero (true), de lo contrario, devuelve falso (false). Ejemplo:
```
```
if [ -x archivo.sh ]
then
echo "El archivo se puede ejecutar"
else
echo "El archivo no se puede ejecutar"
fi
Ejemplos de código
Aquí presentamos algunos ejemplos de cómo se pueden utilizar los operadores de prueba de archivo en combinación con la instrucción 'if':
- Comprobar si un archivo existe antes de eliminarlo:
- Comprobar si un directorio existe antes de crearlo:
```
if [ -e archivo.txt ]
then
rm archivo.txt
echo "El archivo se eliminó correctamente"
else
echo "El archivo no existe"
fi
```
```
if [ ! -d carpeta/ ]
then
mkdir carpeta
echo "La carpeta se creó correctamente"
else
echo "La carpeta ya existe"
fi
```
Conclusión
Evaluando la existencia y el contenido de archivos es importante en la programación bash. Los operadores de prueba de archivo '-e' y '-s' son herramientas comunes para lograr esto. Además, existen otros operadores de prueba de archivo como '-d', '-f', '-r', '-w' y '-x', los cuales también son útiles en distintas situaciones. Aprovecha las funcionalidades que te brinda bash y utiliza estas herramientas para crear scripts más robustos.
Preguntas frecuentes
¿Cuál es la diferencia entre los operadores -e y -f?
El operador '-e' evalúa si un archivo existe, mientras que el operador '-f' evalúa si el archivo es un archivo regular (no es un directorio ni un enlace simbólico).
¿Cómo se puede utilizar el operador -r para crear un archivo de sólo lectura?
El operador '-r' se utiliza para evaluar si un archivo tiene permisos de lectura. Para crear un archivo de sólo lectura, se puede utilizar el comando 'chmod' para quitar los permisos de escritura y ejecución, dejando sólo los permisos de lectura:
```chmod -w-x archivo.txt
```
¿Cómo se puede utilizar el operador -d para listar todos los subdirectorios dentro de un directorio?
El operador '-d' evalúa si un archivo es un directorio. Para listar todos los subdirectorios dentro de un directorio, se puede utilizar el comando 'find' junto con el operador '-type d':
```find /directorio/a/listar -type d
```
¿Es posible combinar varios operadores en una sola expresión?
Sí, es posible combinar varios operadores en una sola expresión utilizando los operadores lógicos '&&' y '||'. Por ejemplo:
```if [ -f archivo.txt ] && [ -r archivo.txt ]
```
then
echo "El archivo existe y se puede leer"
else
echo "El archivo no existe o no se puede leer"
fi
Deja una respuesta