Bash-controle of bestand bestaat – zelfstudie en te gebruiken opdrachten

Tijdens het maken van een bash-script kunt u een situatie tegenkomen waarin u moet zien of een bestand bestaat of niet om er iets mee te doen. Je kunt het testcommando gebruiken om te controleren of het bestand bestaat en welk type het is.

In deze tutorial laten we je zien hoe je kunt controleren of het bestand bestaat in de op Linux gebaseerde besturingssystemen.

Basissyntaxis van testopdracht

De basissyntaxis van de testopdracht om te controleren of het bestand bestaat, zoals hieronder weergegeven:

test -e file

Of

test -f file

Waar:

  • -e
    Deze optie controleert of een bestand bestaat ongeacht het type.
  • -f
    Deze optie controleert of een bestand alleen bestaat als het FILE een gewoon bestand is.

Je zou de man-pagina van het test commando moeten zien zoals hieronder getoond:

man test

Je zou het volgende scherm moeten zien :

Test of bestand bestaat met de opdrachtregel

In dit gedeelte laten we u zien hoe te controleren of een bestand bestaat met de opdrachtregel:

Voer de volgende opdracht uit om te controleren of een bestand met de naam / etc / fstab bestaat (T rue):

test -f /etc/fstab

Voer vervolgens de volgende opdracht uit om de exitcode op 0 of 1 in te stellen, telkens wanneer de test is geslaagd of niet.

echo $?

Uitvoer:

0

De uitvoer is 0, wat betekent dat het bestand / etc / fstab bestaat.

Je kunt ook gebruik het volgende commando om te controleren of het bestand bestaat:


echo $0

Uitvoer:

0

Voer vervolgens de volgende opdracht uit om te testen of het bestand / etc / fabab bestaat ( False).

test -f /etc/fabab
echo $?

Uitvoer:

1

De uitvoer is 1, wat betekent dat het bestand / etc / fabab niet bestaat.

Jij kan ook testen of een bestand met de naam /etc/rc.local bestaat of niet de voorwaardelijke bash-uitvoering gebruikt, zoals hieronder getoond:

test -f /etc/rc.local && echo "Exists" || echo "Not Exists"

Of

&& echo "Exists" || echo "Not Exists"

Als het bestand met de naam /etc/rc.local bestaat, zou je de volgende uitvoer moeten zien:

Exists

U kunt ook controleren of er meerdere bestanden bestaan of niet met een enkele opdracht:

&& echo "both files exist"

Of

test -f /etc/passwd -a -f /etc/crontab && echo "both files exist"

Je zou de volgende output moeten zien:

both files exist

Test of bestand in Bash bestaat

In deze sectie zullen we een bash-script maken en controleren of een bestand bestaat of niet, door een bericht af te drukken.

Laten we een bestand maken met de naam test.sh en controleren of een bestand /etc/rc.local bestaat of niet:

nano test.sh

Voeg de volgende regels toe:

#!/bin/bash
FILE=/etc/rc.local
if ; then
echo "The file "$FILE" exists."
else
echo "The file "$FILE" is not exists."
fi

Sla het bestand op en sluit het en voer het script uit met het volgende commando:

bash test.sh

U zou de volgende uitvoer moeten zien:

The file "/etc/rc.local" exists.

Laten we nu een bestand test.sh maken en testen of het bestand / etc / rc.localad bestaat uit niet:

nano test.sh

Voeg de volgende regels toe:

#!/bin/bash
FILE=/etc/rc.localad
if ; then
echo "The file "$FILE" exists."
else
echo "The file "$FILE" is not exists."
fi

Sla het bestand op en sluit het en voer het script vervolgens uit met het volgende commando:

bash test.sh

Je zou de volgende output moeten zien:

The file "/etc/rc.localad" is not exists.

Je kunt ook zien of een bestand al dan niet bestaat en er een actie op uitvoeren in het bash-script.

Zoek bijvoorbeeld een bestand met de naam / etc / hosts en kopieer het naar de directory / opt als het bestand bestaat.

Maak hiervoor een bestand aan met de naam test.sh:

nano test.sh

Voeg de volgende regels toe:

FILE=/etc/hosts
if ; then
cp $FILE /opt
fi

Sla het bestand op en sluit het en voer het script uit met de volgende opdracht:

Test nu de / opt-directory met het volgende commando:

ls /opt/hosts

Je zou het hosts-bestand in de volgende uitvoer moeten zien:

/opt/hosts

U kunt ook de uitdrukking gebruiken! om te controleren of het bestand niet bestaat.

Voer bijvoorbeeld het volgende commando uit om te controleren of het bestand / etc / hosting niet bestaat:

&& echo "File does not exist"

Of

test ! -f /etc/hosting && echo "File does not exist"

Je zou de volgende output moeten zien:

File does not exist

Test of directory bestaat

U kunt ook nagaan of er een directory bestaat of niet met de optie -d.

Controleer bijvoorbeeld of de directory / etc / apache2 bestaat of niet.

&& echo "Directory is exists"

Of

test -d /etc/apache2 && echo "Directory is exists"

Je zou de volgende output moeten zien:

Directory is exists

Je kunt ook een bash-script maken met voorwaardelijke expressies om te controleren of een directory bestaat of niet.

Maak een bestand met de naam test.sh zoals hieronder getoond:

nano test.sh

Voeg de volgende regels toe:

Sla het bestand op en sluit het als u klaar bent. Geef vervolgens de juiste toestemming met het volgende commando:

chmod 755 test.sh

Test vervolgens of de directory / etc / nginx beschikbaar is of niet met het volgende commando:

./test.sh /etc/nginx

Je zou de volgende output moeten zien:

Directory /etc/nginx/ exists.

Test vervolgens of de directory / etc / linux beschikbaar is of niet met het volgende commando:

./test.sh /etc/linux

Je zou de volgende output moeten zien:

Directory /etc/linux does not exists

Operatoren voor het testen van bestanden in Bash

De volgende operatoren voor het testen van bestanden zullen u helpen te controleren of een “bestand” bestaat en specifieke typen heeft:

  • -b
    FILE bestaat en is blokspecifiek
  • -c
    FILE bestaat en is karakter-speciaal
  • -d
    FILE bestaat en is een directory
  • -e
    FILE bestaat
  • -f
    FILE bestaat en is een normaal bestand
  • -g
    FILE bestaat en is set-group-ID
  • -G
    FILE ex ists en is eigendom van de effectieve groeps-ID.
  • -h
    FILE bestaat en is een symbolische link (hetzelfde als -L)
  • -k
    FILE bestaat en heeft zijn sticky bit set
  • -L
    FILE bestaat en is een symbolische link (zelfde als -h)
  • -O
    FILE bestaat en is eigendom van de effectieve gebruiker ID
  • -p
    FILE bestaat en is een named pipe
  • -r
    FILE bestaat en leestoestemming is verleend
  • -s
    FILE bestaat en heeft een grootte groter dan nul
  • -S
    FILE bestaat en is een socket
  • -u
    FILE bestaat en zijn set-user-ID bit is ingesteld
  • -w
    FILE bestaat en schrijfrechten zijn verleend
  • -x
    FILE bestaat en toestemming voor uitvoeren (of zoeken) is verleend

Conclusie

Leave a Reply

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *