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. |