Bash-kontroll om filen finns

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.

Write a Comment

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *