Hvordan sjekke om en fil eller katalog eksisterer i Bash

Mange ganger når du skriver Shell-skript, kan du komme i en situasjon der du trenger å utføre en handling basert på om en fil eksisterer eller ikke .

I Bash kan du bruke testkommandoen til å sjekke om en fil eksisterer og bestemme typen av fil.

Testkommandoen har en av følgende syntaksformer:

Hvis du vil at skriptet ditt skal være bærbart, bør du foretrekke å bruke den gamle testen ; then echo "$FILE exists."fi

Hvis du vil utføre en annen handling basert på om filen eksisterer eller ikke bare bruk if / then-konstruksjonen:

Bruk alltid dobbelt anførselstegn for å unngå problemer når du arbeider med filer inneholder mellomrom i navnene.

Du kan også bruke testkommandoen uten if-setningen. Kommandoen etter && operatøren vil bare kjøres hvis utgangsstatusen til testkommandoen er sann,

Hvis du vil kjør en serie med kommandoer etter && operatøren bare legge kommandoene i krøllete parenteser atskilt med ; eller &&:

Motsatt til &&, uttalelsen etter || operatør vil bare bli utført hvis utgangsstatusen for testkommandoen er false.

Sjekk om katalogen eksisterer #

Operatørene -d lar deg teste om en fil er en katalog eller ikke.

For eksempel for å sjekke om /etc/docker katalogen du vil bruke:

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

Samme som ovenfor:

Sjekk om flere filer eksisterer #

I stedet for å bruke kompliserte nestede hvis / annet-konstruksjoner, kan du bruke -a (eller && med ; then echo "Both files exist."fi

Tilsvarende varianter uten å bruke IF-setningen:

Filtestoperatører #

Testkommandoen inkluderer følgende FILE-operatører som lar deg teste for bestemte typer filer:

  • -b FILE – Sant hvis FILEN eksisterer og er en spesiell blokkfil.
  • -c FILE – True hvis FILEN eksisterer og er en spesialtegnfil.
  • -d FILE – sant hvis FILEN eksisterer og er en katalog.
  • -e FILE – Sant hvis FILEN eksisterer og er en fil, uavhengig av type (node, katalog, stikkontakt osv.).
  • -f FILE – Sant hvis FILEN eksisterer og er en vanlig fil (ikke en katalog eller enhet).
  • -G FILE – Sant hvis FILEN eksisterer og har samme gruppe som brukeren som kjører kommandoen.
  • -h FILE – Sant hvis FILEN eksisterer og er en symbolsk lenke.
  • -g FILE – Sant hvis FILEN eksisterer og har set-group-id (sgid) flaggsett.
  • -k FILE – Sann hvis FILEN eksisterer og har et klebrig bitflagg satt.
  • -L – Sant hvis FILEN eksisterer og er en symbolsk lenke.
  • -O FILE – Sant hvis FILEN eksisterer og eies av brukeren som kjører kommandoen.
  • -p FILE – Sant hvis FILEN eksisterer og er et rør.
  • -r FILE – Sant hvis FILEN eksisterer og er lesbar.
  • -S FILE – Sant hvis FILEN eksisterer og er en stikkontakt.
  • -s FILE – Sann hvis FILEN eksisterer og har en null-størrelse.
  • -u FILE – Sant hvis FILEN eksisterer, og set-user-id (suid) flagg er satt.
  • -w FILE – Sant hvis FILEN eksisterer og er skrivbar.
  • -x FILE – Sant hvis FILEN eksisterer og er exe kuttbar.

Konklusjon #

I denne guiden har vi vist deg hvordan du sjekker om en fil eller katalog finnes i Bash.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *