logo

A Bash ellenőrizze, hogy létezik-e a fájl

Legtöbbször előfordulhat, hogy olyan műveletet kell végrehajtanunk, amely ellenőrzi, hogy létezik-e fájl vagy sem.

A Bash-ban egy „tesztparancs” segítségével ellenőrizhetjük, hogy létezik-e fájl, és meghatározhatjuk a fájl típusát.

Az alábbiakban a tesztparancs szintaxisa látható, és ezek közül bármelyik parancsot használhatjuk:

 test expression [ expression ] [[ expression ]] 

Egyetlen zárójelben lévő „[” parancsot kell használnunk, hogy a szkriptünket az összes POSIX shell számára hordozhatóvá tegyük. A tesztparancs frissített verziója dupla zárójeleket tartalmaz „[[”], amelyet a legtöbb modern rendszer támogat, amelyek alapértelmezett shellként használják a Bash-t, Zsh-t és Ksh-t.

Ellenőrizze, hogy létezik-e a fájl

A fájl létezésének ellenőrzése során a leggyakrabban használt fájloperátorok az -e és -f. Az '-e' opció annak ellenőrzésére szolgál, hogy létezik-e fájl típustól függetlenül, míg az '-f' opció csak akkor ad vissza valódi értéket, ha a fájl egy normál fájl (nem könyvtár vagy eszköz).

A legáltalánosabb lehetőség annak ellenőrzésére, hogy a fájl létezik-e vagy sem, a teszt parancs használata az „if feltételes utasítással”.

Az alábbi példák segítségével ellenőrizheti, hogy létezik-e a 'read_file.txt' fájl:

1. módszer

 #!/bin/bash File=read_file.txt if test -f '$File'; then echo '$File exist ' fi 

2. módszer

 #!/bin/bash File=read_file.txt if [ -f '$File' ]; then echo '$File exist ' fi 

3. módszer

 #!/bin/bash File=read_file.txt if [[ -f '$File' ]]; then echo '$File exist ' fi 

Kimenet

Mindhárom metódus kimenete a következő lesz, mert van egy fájl (read_file.txt) a könyvtárban:

cp parancsot linuxban
 read_file.txt exist 

Ha olyan műveletet akarunk végrehajtani, amely eredményt ad annak alapján, hogy a fájl létezik-e vagy sem, akkor az if/then konstrukciót a következő módon használhatjuk:

Példa

 #!/bin/bash File=read_file.txt if [ -f '$File' ]; then echo '$File exist' else echo '$File does not exist' fi 

Kimenet

 read_file.txt exist 

Használhatjuk a teszt parancsot az if utasítás nélkül is. Az alábbi módszerek bármelyikét használhatjuk:

1. módszer

 #!/bin/bash File=read_file.txt test -f read_file.txt && echo '$File exist' 

2. módszer

 #!/bin/bash File=read_file.txt [ -f read_file.txt ] && echo '$File exist' 

3. módszer

 #!/bin/bash File=read_file.txt [[ -f read_file.txt ]] && echo '$File exist' 

Kimenet

Mindhárom metódus kimenete a következő lesz, mert van egy fájl (read_file.txt) a könyvtárban:

 read_file.txt exist 

Ha több parancsot kell futtatni a && operátor után, akkor a parancsokat zárójelbe tegye pontosvesszővel (;) vagy ÉS (&&) elválasztva, azaz:

Példa

 #!/bin/bash File=read_file.txt [ -f read_file.txt ] && { echo '$File exist'; echo 'Task Completed'; } 

A &&-től eltérően a || utáni utasítás operátor csak akkor kerül végrehajtásra, ha a tesztparancs kilépési állapota 'false'.

Példa

 #!/bin/bash File=read_file.txt [ -f read_file.txt ] && echo '$File exist' || echo '$File does not exist' 

Kimenet

 read_file.txt exist 

Ezek a Bash leggyakrabban használt módszerek annak ellenőrzésére, hogy a fájl létezik-e vagy sem.

Ellenőrizze, hogy létezik-e könyvtár

A '-d' operátor lehetővé teszi számunkra, hogy teszteljük, hogy egy fájl könyvtár-e vagy sem.

A következő módszerek segítségével ellenőrizheti, hogy létezik-e a „Javatpoint” könyvtár:

részleges származék latex

1. módszer

 #!/bin/bash File=Javatpoint if [ -d '$File' ]; then echo '$File is a directory' fi 

2. módszer

 #!/bin/bash File=Javatpoint [ -d '$File' ] && echo '$File is a directory' 

Jegyzet:Használhatunk dupla zárójelet is „[[” egyetlen zárójel „[' helyett.

Kimenet

Mindkét fenti módszer kimenete az alábbiak szerint alakul, mivel a megadott helyen van egy könyvtárunk (Javatpoint néven):

 Javatpoint is a directory 

Ellenőrizze, hogy a fájl nem létezik

A tesztkifejezés a felkiáltójel (! -logical NOT operátor) használatával tagadható. Nézze meg a következő példát:

Példa

 #!/bin/bash File=missing_read_file.txt if [ ! -f '$File' ]; then echo '$File does not exist' fi 

A fenti szkript az alábbiak szerint is írható:

 #!/bin/bash File=missing_read_file.txt [ ! -f '$File' ] && echo '$File unavailable' 

Kimenet

 missing_read_file.txt unavailable 

Fájlteszt operátorok

A tesztparancsok a következő fájlkezelőket tartalmazzák, amelyek lehetővé teszik bizonyos típusú fájlok tesztelését:

-b File Returns 'Igaz', ha a FILE blokk-speciális fájlként létezik.
-c Fájl visszatér 'Igaz', ha a FILE speciális karakterfájlként létezik.
-d File Returns 'Igaz', ha a FILE könyvtárként létezik.
-e File Returns 'Igaz', ha a FÁJL fájlként létezik, függetlenül a típusától (csomópont, könyvtár, socket stb.).
-f Fájl visszatér „Igaz”, ha a FÁJL normál fájlként létezik (nem könyvtárként vagy eszközként).
-G File Returns 'Igaz', ha a FÁJL létezik, és ugyanazt a csoportot tartalmazza, mint a felhasználó futtatja a parancsot.
-h File Returns 'Igaz', ha a FÁJL szimbolikus hivatkozásként létezik.
-g File Returns 'Igaz', ha a FÁJL létezik, és tartalmazza a set-group-id (sgid) jelzőkészletet.
-k File Returns 'Igaz', ha a FÁJL létezik, és ragadós bitjelzőt tartalmaz.
-L File Returns 'Igaz', ha a FÁJL szimbolikus hivatkozásként létezik.
-O File Returns 'Igaz', ha a FÁJL létezik, és a parancsot futtató felhasználó tulajdonosa.
-p File Returns 'Igaz', ha a FILE csőként létezik.
-r File Returns 'Igaz', ha a FILE olvasható fájlként létezik.
-S File Returns 'Igaz', ha a FILE socketként létezik.
-s File Returns 'Igaz', ha a FÁJL létezik, és mérete nem nulla.
-u File Returns 'Igaz', ha a FÁJL létezik, és a set-user-id (suid) jelző be van állítva.
-w File Returns 'Igaz', ha a FILE írható fájlként létezik.
-x File Returns 'Igaz', ha a FÁJL végrehajtható fájlként létezik.