Tutoriales

Cómo demostrar si el archivo no existe en Bash

H¿Cómo puedo comprobar si un archivo no existe en un script Bash?

Podemos aprender rápidamente si un archivo en serie no existe en Bash usando el comando de prueba o [ builtin. This page explains how to find a regular file under the Linux or Unix-like system using Bash.

Tutorial details
Difficulty Easy (rss)
Root privileges No
Requirements Bash on Linux/Unix/macOS
Time 2m



Checking if file does not exist in Bash

The test command check file types and compare values. The basic syntax is as follows:

[ -f filename ] 
prueba Nombre del archivo 
[ ! -f filename ]
! prueba Nombre del archivo

Sintaxis

El comando de prueba siempre sale con un estado de 0 (efectivo) o 1 (infiel) dependiendo de la evaluación de EXPR. Por ejemplo:

  1. -f nombre de archivo (prueba -f nombre de archivo) devuelve efectivo si el archivo existe y es un archivo ordinario.
  2. los ! (signo de interjección) ejecutar como natural «NO«cirujano.

En otras palabras, podemos usar el comando if de la sucesivo modo:

if [ ! -f /path/to/file ]
then
    echo "File does not exist in Bash"
else
    echo "File found. Do something meaningful here"
fi

Ejemplos de

#!/bin/bash
src="/etc/host.ip.conf"
if [ ! -f /etc/demo.txt ]
then
	echo "File not found"
fi
 
# another syntax #
[ ! -f "$src" ] && echo "$src file missing" || echo "$src file found and now copying ..."

A continuación, ejecute el script de shell del archivo .sh en Linux / UNIX:
chmod +x script.sh
./script.sh

¿Cómo puedo aprender si dos archivos normales no existen en Bash?

A menudo, desea hacer poco si se encuentran varios archivos. Para este tipo de operación, usamos operadores booleanos:

  1. EXPR1 y EXPR2 Devuelve efectivo si EXPR1 Y EXPR2 son verdaderos.
  2. EXPR1 || EXPR1 El comando de prueba devuelve Definitivo si EXPR1 O EXPR1 es efectivo.

Por ejemplo:

#!/bin/bash
# a list of required files 
f1="/etc/hosts"
f2="/etc/resolv.conf"
 
#
# Die if $f1 or $f2 is missing 
#
if [ ! -f "$f1"  ] ||  [ ! -f "$f2" ]
then
	echo "Required files are missing."
else
	echo "Let us build SFTP jail."
fi

Nómina de operadores de archivos

Tabla 1: archivo de comando de prueba y repertorio de otros operadores
Cirujano Devoluciones
-un archivo Definitivo si el archivo existe.
-b ARCHIVO Definitivo si el archivo es específico de coalición.
-c ARCHIVO Definitivo si el archivo es de carácter específico.
-d ARCHIVO Definitivo si el archivo es un directorio.
-e ARCHIVO Definitivo si el archivo existe.
-f ARCHIVO Definitivo si el archivo existe y es un archivo ordinario.
-g ARCHIVO Definitivo si el archivo es set-group-id.
-h ARCHIVO Definitivo si el archivo es un enlace simbólico.
-L ARCHIVO Definitivo si el archivo es un enlace simbólico.
-k ARCHIVO Definitivo si el archivo tiene su bit «pegajoso» establecido.
-p ARCHIVO Definitivo si el archivo es una tubería con nombre.
-r ARCHIVO Definitivo si usted puede interpretar el archivo.
-s ARCHIVO Definitivo si el archivo existe y no está hueco.
-S ARCHIVO Definitivo si el archivo es un socket.
-t FD Definitivo si FD se abre en un terminal.
-u ARCHIVO Definitivo si el archivo es set-user-id.
-w ARCHIVO Definitivo si usted puede escribir en el archivo.
-x ARCHIVO Definitivo si el archivo es ejecutable por usted.
-O ARCHIVO Definitivo si el archivo es de su propiedad.
-G ARCHIVO Definitivo si el archivo pertenece efectivamente a su agrupación.
-N ARCHIVO Definitivo si el archivo se ha modificado desde la última repaso.
! EXPR Inductivo no.
EXPR1 y EXPR2 Realizar la y operación.
EXPR1 || EXPR2 Realizar la o operación.

Bash incorporado vs prueba externa

Tenga en cuenta que el comando de prueba se proporciona como comandos integrados (internos) y externos. Entonces la sintaxis puede variar. Este ejemplo utiliza el comando incorporado de bash. Podemos demostrar que usando el comando de prueba o el comando de comando:
type -a test
# /bin/test and /usr/bin/test are same (hardlinks) files #
stat /usr/bin/test /bin/test
# find default test command #
command -V test

Resumiendo

Aprendió a demostrar si un archivo no existe en el script Bash. Le recomiendo que lea el manual / documentación de GNU / BASH en término o atando el sucesivo comando man:
man bash
help test # bulitin test help page
man test # external test man page



Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba