För det mesta kan vi hitta en situation där vi kan behöva utföra en åtgärd som kontrollerar om en fil finns eller inte.
I Bash kan vi använda ett ”testkommando” för att kontrollera om en fil existerar och bestämma typen av en fil.
Följande är syntaxerna för testkommandot, och vi kan använda någon av dessa kommandon:
Vi är skyldiga att använda ett enda parentes ”[” -kommando för att göra vårt skript bärbart för alla POSIX-skal. Den uppgraderade versionen av testkommandot innehåller dubbla parenteser [[”som stöds på de flesta moderna system med Bash, Zsh och Ksh som standardskal.
Kontrollera om filen finns
När du kontrollerar om en fil finns är de vanligaste filoperatorerna -e och -f. Alternativet ”-e” används för att kontrollera om en fil existerar oavsett typ, medan alternativet ”-f” används för att endast returnera sant värde om filen är en vanlig fil (inte en katalog eller en enhet).
Det vanligaste alternativet för att kontrollera om filen existerar eller inte är att använda testkommandot med ”if villkorligt uttalande”.
Följande är exempel för att kontrollera om ”read_file. txt ”-fil finns:
Metod 1
Metod 2
Metod 3
Output
Output för alla de tre metoderna kommer att vara som nedan eftersom vi har en fil (read_file.txt) närvarande i katalogen:
read_file.txt exist
Om vi vill utföra en åtgärd som ger ett resultat baserat på om filen existerar eller inte, kan vi använda if / then-konstruktionen i följande sätt:
Exempel
Output
read_file.txt exist
Vi kan också använda testkommandot utan if-uttalandet. Vi kan använda någon av följande metoder:
Metod 1
Metod 2
Metod 3
Output
Output för alla de tre metoderna kommer att vara som nedan eftersom vi har en fil (read_file.txt) närvarande i katalogen:
read_file.txt exist
Exempel
Till skillnad från & &, uttalandet efter || operatören körs endast om testkommandot utgångsstatus är ”falskt”.
Exempel
Output
read_file.txt exist
Detta är de vanligaste metoderna i Bash för att kontrollera om filen finns eller inte.
Kontrollera om katalogen finns
Operatören ”-d” låter oss testa om en fil är en katalog eller inte.
Följande är metoderna för att kontrollera om katalogen ”Javatpoint” finns:
Metod 1
Metod 2
Obs: Vi kan också använda dubbla parenteser ”[[” istället för en enda parentes ”[” .
Output
Output för båda ovanstående metoder kommer att vara som nedan eftersom vi har en katalog (med namnet Javatpoint) närvarande på den angivna platsen:
Javatpoint is a directory
Kontrollera om filen inte finns
Testuttrycket kan negeras med hjälp av utropstecknet (! -logisk NOT-operatör). Kolla in följande exempel:
Exempel
Ovanstående skript kan också skrivas enligt nedan:
Output
missing_read_file.txt unavailable
File Test Operators
Testkommandona inkluderar följande filoperatörer som tillåter oss att testa för specifika filtyper:
-b FileReturns | ”True” om FILEN existerar som en blockspecial fil. |
-c FileReturns | ”True” om FILEN existerar som en specialteckenfil. |
-d FileReturns | ”True” om FILEN finns som en katalog. |
-e FileReturns | ”True ”om FILEN existerar som en fil, oavsett typ (nod, katalog, uttag, etc.). |
-f FileReturns | ” True ” om FILEN existerar som en vanlig fil (inte en katalog eller enhet). |
-G FileReturns | ”True” om FILEN finns och innehåller samma grupp som användaren kör kommandot och. |
-h FileReturns | ”True” om FILEN finns som en symbolisk länk. |
-g FileReturns | ”True” om FILEN finns och innehåller set-group-id (sgid) flagguppsättning. |
-k FileReturns | ”True” om FILEN existerar och innehåller en klibbig bituppsättning. |
-L FileReturns | ”True” om FIL finns som en symbolisk länk. |
-O FileReturns | ”True” om FILEN existerar och ägs av användaren som kör kommandot. |
-p FileReturns | ”True” om FILEN finns som ett rör. |
– r FileReturns | ”True” om FILEN existerar som en läsbar fil. |
-S FileReturns | ”True” om FIL finns som ett uttag. |
-s FileReturns | ”True” om FILEN finns och har en nollstorlek. |
-u FileReturns | ”True” om FILEN finns, och set-user-id (suid) -flaggan är inställd. |
-w FileReturns | ”True” om FILEN existerar som en skrivbar fil. |
-x FileReturns | ”True” om FILEN finns som en körbar fil. |