Det meste av tiden kan vi finne en situasjon der vi kanskje trenger å utføre en handling som vil kontrollere om en fil eksisterer eller ikke.
I Bash kan vi bruke en «testkommando» for å sjekke om en fil eksisterer og bestemme typen av fil.
Følgende er syntaksen til testkommandoen, og vi kan bruke hvilken som helst av disse kommandoene:
Vi er pålagt å bruke en enkelt brakett «[» -kommando for å gjøre skriptet vårt bærbart for alle POSIX-skall. Den oppgraderte versjonen av testkommandoen inneholder doble parenteser [[«, som støttes på de fleste moderne systemer som bruker Bash, Zsh og Ksh som standard skall.
Sjekk om filen eksisterer
Mens du sjekker om en fil eksisterer, er de mest brukte filoperatørene -e og -f. Alternativet «-e» brukes til å kontrollere om en fil eksisterer uavhengig av type, mens alternativet «-f» bare brukes til å returnere sann verdi hvis filen er en vanlig fil (ikke en katalog eller en enhet).
Det vanligste alternativet for å sjekke om filen eksisterer eller ikke er å bruke testkommandoen med «hvis betinget uttalelse».
Følgende er eksemplene for å kontrollere om «read_file. txt «-fil eksisterer:
Metode 1
Metode 2
Metode 3
Output
Output for alle de tre metodene vil være som nedenfor fordi vi har en fil (read_file.txt) til stede i katalogen:
read_file.txt exist
Hvis vi ønsker å utføre en handling som vil gi et resultat basert på om filen eksisterer eller ikke, kan vi bruke if / then-konstruksjonen i følgende måte:
Eksempel
Output
read_file.txt exist
Vi kan også bruke testkommandoen uten if-setningen. Vi kan bruke en av følgende metoder:
Metode 1
Metode 2
Metode 3
Output
Output for alle de tre metodene vil være som nedenfor fordi vi har en fil (read_file.txt) til stede i katalogen:
read_file.txt exist
Eksempel
I motsetning til & &, uttalelsen etter || operatøren utføres bare hvis utgangsstatusen for testkommandoen er «falsk».
Eksempel
Output
read_file.txt exist
Dette er de vanligste metodene i Bash for å sjekke om filen eksisterer eller ikke.
Sjekk om katalogen eksisterer
Operatøren «-d» lar oss teste om en fil er en katalog eller ikke.
Følgende er metodene for å sjekke om «Javatpoint» -katalogen eksisterer:
Metode 1
Metode 2
Merk: Vi kan også bruke doble parenteser «[[» i stedet for en enkelt parentes «[» .
Output
Output for begge metodene ovenfor vil være som nedenfor, da vi har en katalog (kalt Javatpoint) tilstede på det angitte stedet:
Javatpoint is a directory
Kontroller HVIS filen ikke eksisterer
Testuttrykket kan negeres ved å bruke utropstegnet (! -logisk NOT-operator). Ta en titt på følgende eksempel:
Eksempel
Ovenstående skript kan også skrives som nedenfor:
Output
missing_read_file.txt unavailable
File Test Operators
Testkommandoene inkluderer følgende filoperatører som lar oss test for bestemte filtyper:
-b FileReturns | «True» hvis FILEN eksisterer som en blokkspesial fil. |
-c FileReturns | «True» hvis FILEN eksisterer som en spesialtegnfil. |
-d FileReturns | «True» hvis FILEN eksisterer som en katalog. |
-e FileReturns | «True «hvis FILEN eksisterer som en fil, uavhengig av type (node, katalog, stikkontakt osv.). |
-f FileReturns | » True » hvis FILEN eksisterer som en vanlig fil (ikke en katalog eller enhet). |
-G FileReturns | «True» hvis FILE eksisterer og inneholder samme gruppe som brukeren kjører komm og. |
-h FileReturns | «True» hvis FILEN eksisterer som en symbolsk lenke. |
-g FileReturns | «True» hvis FILEN eksisterer og inneholder set-group-id (sgid) flag set. |
-k FileReturns | «True» hvis FILEN eksisterer og inneholder et klebrig bit-sett. |
-L FileReturns | «True» hvis FIL eksisterer som en symbolsk lenke. |
-O FileReturns | «True» hvis FILEN eksisterer og eies av brukeren som kjører kommandoen. |
-p FileReturns | «True» hvis FILEN eksisterer som et rør. |
– r FileReturns | «True» hvis FILEN eksisterer som en lesbar fil. |
-S FileReturns | «True» hvis FILE eksisterer som en stikkontakt. |
-s FileReturns | «True» hvis FILEN eksisterer og har ikke-null størrelse. |
-u FileReturns | «True» hvis FILEN eksisterer, og set-user-id (suid) flagg er satt. |
-w FileReturns | «True» hvis FILEN eksisterer som en skrivbar fil. |
-x FileReturns | «True» hvis FILEN eksisterer som en kjørbar fil. |