Hoe u kunt controleren of een bestand of map in Bash bestaat

Bij het schrijven van Shell-scripts kunt u vaak in een situatie terechtkomen waarin u een actie moet uitvoeren op basis van het feit of een bestand al dan niet bestaat .

In Bash kunt u het testcommando gebruiken om te controleren of een bestand bestaat en het type bestand te bepalen.

Het testcommando heeft een van de volgende syntaxisvormen:

Als u wilt dat uw script draagbaar is, kunt u beter de oude test ; then echo "$FILE exists."fi

Als u een andere actie wilt uitvoeren op basis van of het bestand al dan niet bestaat, gebruik de if / then-constructie:

Gebruik altijd dubbele aanhalingstekens om problemen bij het omgaan met bestanden te voorkomen met spaties in hun namen.

Je kunt ook het test commando gebruiken zonder het if statement. Het commando na de && operator zal alleen worden uitgevoerd als de exit-status van het testcommando waar is,

Als je wilt voer een reeks opdrachten uit na de && -operator, plaats de opdrachten gewoon tussen accolades, gescheiden door ; of &&:

In tegenstelling tot &&, de instructie na de || operator wordt alleen uitgevoerd als de afsluitstatus van het testcommando false is.

Controleer of directory bestaat #

Met de operatoren -d kunt u testen of een bestand een directory of niet.

Om bijvoorbeeld te controleren of de /etc/docker directory bestaat, gebruikt u:

Je kunt ook de dubbele haakjes gebruiken ; then echo "$FILE does not exist."fi

Hetzelfde als hierboven:

Controleer of er meerdere bestanden bestaan #

In plaats van ingewikkelde geneste if / else-constructies te gebruiken, kun je -a (of && met ; then echo "Both files exist."fi

Equivalente varianten zonder de IF-instructie te gebruiken:

File test operators #

Het test-commando bevat de volgende FILE-operators waarmee je op bepaalde bestandstypen kunt testen:

  • -b FILE – Waar als het BESTAND bestaat en een speciaal blokbestand is.
  • -c FILE – Waar als het BESTAND bestaat en een speciaal tekenbestand is.
  • -d FILE – Waar als het BESTAND bestaat en een directory is.
  • -e FILE – Waar als het FILE bestaat en een bestand is, ongeacht het type (knooppunt, directory, socket, etc.).
  • -f FILE – Waar als het BESTAND bestaat en een normaal bestand is (geen directory of apparaat).
  • -G FILE – Waar als het FILE bestaat en dezelfde groep heeft als de gebruiker die de opdracht uitvoert.
  • -h FILE – Waar als het BESTAND bestaat en een symbolische link is.
  • -g FILE – Waar als het BESTAND bestaat en de vlag set-group-id (sgid) is ingesteld.
  • -k FILE – Waar als het BESTAND bestaat en een sticky bit-vlag is ingesteld.
  • -L – Waar als het BESTAND bestaat en een symbolische link is.
  • -O FILE – Waar als het BESTAND bestaat en eigendom is van de gebruiker die de opdracht uitvoert.
  • -p FILE – Waar als het BESTAND bestaat en is een pipe.
  • -r FILE – Waar als het BESTAND bestaat en leesbaar is.
  • -S FILE – Waar als het BESTAND bestaat en een socket is.
  • -s FILE – Waar als het BESTAND bestaat en de grootte niet nul heeft.
  • -u FILE – Waar als het BESTAND bestaat en de vlag set-user-id (suid) is ingesteld.
  • -w FILE – Waar als het BESTAND bestaat en schrijfbaar is.
  • -x FILE – Waar als het FILE bestaat en exe is snijdbaar.

Conclusie #

In deze gids hebben we je laten zien hoe je kunt controleren of er een bestand of map bestaat in Bash.

Geef een reactie

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