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:
-
-b
FILE
– Sant om FILEN existerar och är en speciell blockfil. -
-c
FILE
– True om FILEN finns och är en specialteckenfil. -
-d
FILE
– Sant om FILEN finns och är en katalog. -
-e
FILE
– Sant om FILEN existerar och är en fil, oavsett typ (nod, katalog, uttag etc.). -
-f
FILE
– Sant om FILEN finns och är en vanlig fil (inte en katalog eller enhet). -
-G
FILE
– Sant om FILEN finns och har samma grupp som användaren som kör kommandot. -
-h
FILE
– Sant om FILEN finns och är en symbolisk länk. -
-g
FILE
– Sant om FILEN finns och har set-group-id (sgid
) flagguppsättning. -
-k
FILE
– Sant om FILEN existerar och har en klibbig bituppsättning. -
-L
– Sant om FILEN existerar och är en symbolisk länk. -
-O
FILE
– Sant om FILEN existerar och ägs av användaren som kör kommandot. -
-p
FILE
– True if FILEN existerar och är ett rör. -
-r
FILE
– Sant om FILEN existerar och är läsbar. -
-S
FILE
– Sant om FILEN finns och är ett uttag. -
-s
FILE
– Sant om FILEN existerar och har en nollstorlek. -
-u
FILE
– Det är sant om FILEN finns och set-user-id (suid
) flaggan är inställd. -
-w
FILE
– Sant om FILEN existerar och är skrivbar. -
-x
FILE
– 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.