Sådan kontrolleres, om en fil eller et bibliotek findes i Bash

Mange gange når du skriver Shell-scripts, kan du komme i en situation, hvor du har brug for at udføre en handling baseret på, om en fil findes eller ej .

I Bash kan du bruge testkommandoen til at kontrollere, om der findes en fil, og bestemme filtypen.

Testkommandoen har en af følgende syntaksformer:

Hvis du vil have dit script til at være bærbart, foretrækker du at bruge den gamle test ; then echo "$FILE exists."fi

Hvis du vil udføre en anden handling baseret på om filen eksisterer eller ikke brug if / then-konstruktionen:

Brug altid dobbelt anførselstegn for at undgå problemer, når du behandler filer indeholdende mellemrum i deres navne.

Du kan også bruge testkommandoen uden if-sætningen. Kommandoen efter && -operatøren udføres kun, hvis testkommandos udgangsstatus er sand,

Hvis du vil kør en række kommandoer efter && -operatøren ved blot at omslutte kommandoerne i krøllede parenteser adskilt af ; eller &&:

Modsat til &&, udsagnet efter || operatør udføres kun, hvis testkommandoens udgangsstatus er false.

Kontroller, om kataloget findes #

Operatorerne -d giver dig mulighed for at teste, om en fil er en katalog eller ej.

For eksempel for at kontrollere, om /etc/docker -mappen eksisterer, vil du bruge:

Du kan også bruge de dobbelte parenteser ; then echo "$FILE does not exist."fi

Samme som ovenfor:

Kontroller, om der findes flere filer #

I stedet for at bruge kompliceret indlejret hvis / ellers konstruktioner kan du bruge -a (eller && med ; then echo "Both files exist."fi

Ækvivalente varianter uden brug af IF-sætningen:

File test operators #

Testkommandoen inkluderer følgende FILE-operatører, der giver dig mulighed for at teste for bestemte filtyper:

  • -b FILE – Sandt, hvis FILEN eksisterer og er en særlig blokfil.
  • -c FILE – Sand hvis FILEN findes og er en specialtegnfil.
  • -d FILE – Sandt, hvis filen findes og er en mappe.
  • -e FILE – Sandt hvis FILEN findes og er en fil, uanset type (node, bibliotek, stikkontakt osv.).
  • -f FILE – Sandt hvis FILEN findes og er en almindelig fil (ikke en mappe eller en enhed).
  • -G FILE – Sandt hvis FILEN findes og har den samme gruppe som brugeren, der kører kommandoen.
  • -h FILE – Sandt hvis FILEN eksisterer og er et symbolsk link.
  • -g FILE – Sandt hvis FILEN eksisterer og har set-group-id (sgid) flag sæt.
  • -k FILE – Sandt, hvis FILEN findes og har et sticky bit-sæt.
  • -L – Sandt, hvis FILEN eksisterer og er et symbolsk link.
  • -O FILE – Sandt, hvis filen findes og ejes af brugeren, der kører kommandoen.
  • -p FILE – Sand hvis FILEN eksisterer og er et rør.
  • -r FILE – Sandt, hvis FILEN eksisterer og er læsbar.
  • -S FILE – Sandt hvis FILEN findes og er en stikkontakt.
  • -s FILE – Sandt hvis FILEN eksisterer og har en nul størrelse.
  • -u FILE – Sandt hvis FILEN findes, og set-user-id (suid) flag er indstillet.
  • -w FILE – Sandt, hvis FILEN findes og kan skrives.
  • -x FILE – Sandt, hvis FILEN eksisterer og er exe kan klippes.

Konklusion #

I denne vejledning har vi vist dig, hvordan du kontrollerer, om der findes en fil eller mappe i Bash.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *