Introducción
Hay varias funciones en Linux que solo funcionan si existe un archivo o directorio en particular. Bash es un shell que interpreta comandos. Puedes usar un
En esta guía, aprenda a usar un comando bash para verificar si existe un archivo o directorio.
Requisitos previos
- Un sistema operativo Linux
- Acceso a una ventana de terminal/línea de comando (Ctrl-Alt-T / Ctrl-Alt-F2)
Cómo comprobar si existe un archivo
Para probar el archivo /tmp/test.log , ingrese lo siguiente desde la línea de comando:
test –f /tmp/test.txt
La primera línea ejecuta la prueba para ver si el archivo existe. El segundo comando, eco , muestra los resultados 0 significa que el archivo existe, 1 significa que no se encontró ningún archivo.
echo $?
En nuestro ejemplo, el resultado fue 1.
Ahora intenta crear un archivo y luego pruébalo:
touch /tmp/test.txt
test –f /tmp/test.txt
echo $?
Como hemos creado el archivo de antemano, el resultado ahora es 0:
También puede usar corchetes en lugar de la prueba comando:
[ –f /tmp/test.txt ]
echo $?
Cómo comprobar si existe un directorio
Para verificar si existe un directorio, cambie el –f opción en la prueba comando para –d (para directorio):
test –d /tmp/test
echo $?
Cree ese directorio y vuelva a ejecutar la prueba:
touch /tmp/test
test –d /tmp/test
echo $?
Este comando funciona igual que para los archivos, por lo que se usa corchetes en lugar de la prueba el comando también funciona aquí.
Cómo verificar si un archivo no existe
Normalmente, la prueba de un archivo devuelve 0 (verdadero) si el archivo existe y 1 (falso) si el archivo no existe. Para algunas operaciones, es posible que desee invertir la lógica. Es útil si escribe una secuencia de comandos para crear un archivo en particular solo si aún no existe.
Para crear un archivo si aún no existe, ingrese lo siguiente en una línea de comando:
[ ! –f /tmp/test.txt ] && touch /tmp/test.txt
El signo de exclamación ! significa no . Este comando se asegura de que no un archivo llamado test.txt en el /tmp directorio. No verás que suceda nada.
Para ver si el sistema creó el archivo, ingrese lo siguiente:
ls /tmp
Debería ver prueba.txt listado. Puede usar un comando similar para un directorio:reemplace el –f opción con –d :
[ ! –d /tmp/test ] && touch /tmp/test
Cómo buscar varios archivos
Para probar dos archivos al mismo tiempo, utilice && opción para agregar un segundo archivo:
[ -f /tmp/test.txt && -f /tmp/sample.txt ] && echo “Both files were found”
Para probar varios archivos con un comodín, como un asterisco * para representar varios caracteres:
[ -f /tmp/*.jpg ] && echo “Files were found”
Como de costumbre, cambiando la –f opción a –d le permite ejecutar la misma prueba para varios directorios.
Operadores de prueba de archivos para encontrar tipos particulares de archivos
Aquí hay varios comandos para probar y encontrar tipos específicos de archivos:
- -f – archivo
- -d – directorio
- – L – enlace simbólico
- -r- legible
- -x – ejecutable
- –w – escribible
Hay muchas otras opciones disponibles. Consulte la página principal (prueba ––ayuda) para obtener opciones adicionales.
Trabajar con fragmentos de código
Los comandos anteriores funcionan bien para un comando simple de dos líneas en un símbolo del sistema. También puedes usar bash con múltiples comandos. Cuando se unen varios comandos, se denominan script. .
Un guión generalmente se guarda como un archivo y se ejecuta. Las secuencias de comandos también usan operadores lógicos para probar una condición y luego toman medidas en función de los resultados de la prueba.
Para crear un archivo de secuencia de comandos, use el editor Nano para abrir un archivo nuevo:
sudo nano bashtest.sh
Ingrese uno de los fragmentos de abajo, incluido el #!/bin/bash identificador Utilice Ctrl-o para guardar el archivo, luego Ctrl-x para salir de Nano. Luego, ejecute el script ingresando:
bash bashtest.sh
El siguiente fragmento de código prueba la presencia de un archivo en particular. Si el archivo existe, la secuencia de comandos muestra El archivo existe en la pantalla.
#!/bin/bash
if [ -f /tmp/test.txt ]
then
echo “File exists”
fi
Esto funciona igual si está buscando un directorio. Simplemente reemplace el –f opción con –d :
#!/bin/bash
if [ -d /tmp/test ]
then
echo “File exists”
fi
Este comando busca el directorio /tmp/test . Si existe, el sistema muestra El archivo existe .