Många gånger när du skriver Shell-skript kan du befinna dig i en situation där du behöver utföra en åtgärd baserat på om en fil finns eller inte .
I Bash kan du använda testkommandot för att kontrollera om det finns en fil och bestämma filtypen.
Testkommandot har en av följande syntaxformer:
Om du vill att ditt skript ska vara bärbart bör du föredra att använda det gamla testet ; then echo "$FILE exists."fi
Om du vill utföra en annan åtgärd baserat på om filen existerar eller inte använd if / then-konstruktionen:
Du kan också använda testkommandot utan if-satsen. Kommandot efter && -operatorn kommer endast att utföras om testkommandot utgångsstatus är sant,
Om du vill kör en serie kommandon efter operatorn && helt enkelt bifoga kommandona i lockiga parenteser åtskilda av ; eller &&:
Mittemot &&, uttalandet efter || -operatören kommer endast att köras om testkommandots utgångsstatus är false.
Kontrollera om katalogen finns #
Operatorerna -d låter dig testa om en fil är en katalog eller inte.
Till exempel för att kontrollera om /etc/docker katalog finns som du skulle använda:
Du kan också använda de dubbla parenteserna ; then echo "$FILE does not exist."fi
Samma som ovan:
Kontrollera om flera filer finns #
I stället för att använda komplicerade kapslade if / else-konstruktioner kan du använda -a (eller && med ; then echo "Both files exist."fi
Motsvarande varianter utan att använda IF-satsen:
Filtestoperatörer #
Testkommandot innehåller följande FIL-operatörer som låter dig testa för vissa filtyper:
-
-bFILE– Sant om FILEN existerar och är en speciell blockfil. -
-cFILE– True om FILEN finns och är en specialteckenfil. -
-dFILE– Sant om FILEN finns och är en katalog. -
-eFILE– Sant om FILEN existerar och är en fil, oavsett typ (nod, katalog, uttag etc.). -
-fFILE– Sant om FILEN finns och är en vanlig fil (inte en katalog eller enhet). -
-GFILE– Sant om FILEN finns och har samma grupp som användaren som kör kommandot. -
-hFILE– Sant om FILEN finns och är en symbolisk länk. -
-gFILE– Sant om FILEN finns och har set-group-id (sgid) flagguppsättning. -
-kFILE– Sant om FILEN existerar och har en klibbig bituppsättning. -
-L– Sant om FILEN existerar och är en symbolisk länk. -
-OFILE– Sant om FILEN existerar och ägs av användaren som kör kommandot. -
-pFILE– True if FILEN existerar och är ett rör. -
-rFILE– Sant om FILEN existerar och är läsbar. -
-SFILE– Sant om FILEN finns och är ett uttag. -
-sFILE– Sant om FILEN existerar och har en nollstorlek. -
-uFILE– Det är sant om FILEN finns och set-user-id (suid) flaggan är inställd. -
-wFILE– Sant om FILEN existerar och är skrivbar. -
-xFILE– Sant om FILEN existerar och exe skärbar.
Slutsats #
I den här guiden har vi visat dig hur du kontrollerar om en fil eller katalog finns i Bash.