Hogyan ellenőrizhető megfelelően, hogy létezik-e fájl a Bash vagy a Shell fájlban (példákkal)
Tartalomjegyzék
Ebben az oktatóanyagban különféle attribútumokat fogok bemutatni, amelyeket a bash vagy a shell parancsfájlokban használhat a fájlok és könyvtárak ellenőrzésére. Használhatja a bash feltételes kifejezéseket a ]
paranccsal, vagy a típussal ellenőrizheti, hogy létezik-e fájl.
Meg fogjuk tenni használja a bash if and else operátort az összes példához, ezért javasoljuk, hogy olvassa el: Bash if else használati útmutató az abszolút kezdők számára
1. Bash / Shell: Ellenőrizze, hogy létezik-e fájl és rendes fájl-e
Ez a szakasz példákat mutat be annak ellenőrzésére, hogy létezik-e szabályos fájl a bash-ban.
1.1: 1. módszer: egy- vagy kettős zárójelek használata
kettős zárójelek használata ]
#!/bin/bashFILE="/etc/passwd"if ];then echo "$FILE exists"else echo "$FILE doesn"t exist"fi
Egyes zárójelek használata
#!/bin/bashFILE="/etc/passwd"if ;then echo "$FILE exists"else echo "$FILE doesn"t exist"fi
1.2: 2. módszer: teszt parancs használata
test
paranccsal ellenőrizhetjük a fájltípusokat és összehasonlíthatjuk őket. értékek.
#!/bin/bashFILE="/etc/passwd"if test -f $FILE; then echo "$FILE exists"else echo "$FILE missing"fi
1.3: 3. módszer: Egysoros
Ebben a példában itt egy vagy dupla zárójelet használhatunk. Azt javaslom, hogy mindig használjon dupla zárójelet, ha egy vonalhívó kódot ír be héjba, mivel ez minimalizálja a figyelmeztetések megjelenésének kockázatát a konzolon, amikor szófelosztás történik.
#!/bin/bashFILE="/etc/passwd"] && echo "$FILE exists" || echo "$FILE missing"
A &&
utáni utasítás végrehajtásra kerül, ha SIKER. Ha az első feltétel FALSE-t ad vissza, akkor a ||
nevű utasítás végrehajtásra kerül.
Hasonlóképpen használjon teszt parancsot annak ellenőrzésére, hogy létezik-e szabályos fájl a bash vagy a shell szkriptben egyetlen sorban .
#!/bin/bashFILE="/etc/passwd"test -f $FILE && echo "$FILE exists" || echo "$FILE missing"
2. Bash / Shell: Ellenőrizze, hogy létezik-e fájl (üres vagy nem üres)
A fájl létezésének ellenőrzése és ha üres vagy van valamilyen tartalma, akkor a “-s
” attribútumot használjuk
2.1: 1. módszer: egy- vagy kettős zárójelek használata
Ellenőrizze, hogy létezik-e fájl, és üres-e vagy sem üres dupla zárójelek segítségével ]
#!/bin/bashFILE="/etc/passwd"if ]; then echo "$FILE exists and not empty"else echo "$FILE doesn"t exist or is empty"fi
Ellenőrizze, hogy van-e fájl létezik, és üres vagy nem üres dupla zárójelek használatával
if ; then echo "$FILE exists and not empty"else echo "$FILE doesn"t exist or is empty"fi
2.2: 2. módszer: teszt parancs használata
A teszt parancs használatával egyesítjük az -s
attribútumot annak ellenőrzéséhez, hogy a fájl létezik, üres vagy tartalmaz valamilyen tartalmat:
2.3: 3. módszer: Egysoros
Használhatunk dupla vagy egy zárójelet is egy ilyen vonalhajózáshoz, de mint korábban mondtam, dupla zárójelek használatát ajánlom.
#!/bin/bashFILE="/etc/passwd"test -s $FILE && echo "$FILE exists and not empty" || echo "$FILE doesn"t exist or is empty"
A tesztparancshoz hasonlóan használhatjuk a &&
és a ||
operátor, hogy ellenőrizze a fájlt egysoros parancsban a shell szkriptünkben.
#!/bin/bashFILE="/etc/passwd"] && echo "$FILE exists and not empty" || echo "$FILE doesn"t exist or is empty"
3. Bash / Shell: Ellenőrizze, hogy létezik-e könyvtár
Remélem tudod, hogy Linux alatt minden fájl. Tehát ily módon egy könyvtárat is fájlnak tekintenek. Használhatjuk az “-d
” attribútumot annak ellenőrzésére, hogy létezik-e könyvtár a shell programozásban.
3.1: 1. módszer: dupla vagy egyes zárójelek használata
Az -d
attribútumot egyetlen vagy kettős zárójelben
]
használhatjuk az ellenőrzéshez ha létezik könyvtár.
#!/bin/bashDIR="/var/log"if ]; then echo "$DIR exists"else echo "$DIR doesn"t exist"fi
Hasonlóképpen ebben a példában egyetlen zárójelet is használunk annak ellenőrzésére, hogy a könyvtár be van-e állítva a shell parancsfájlban.
#!/bin/bashDIR="/var/log"if ; then echo "$DIR exists"else echo "$DIR doesn"t exist"fi
3.2: 2. módszer: teszt parancs használata
Ebben a példában a teszt parancs segítségével ellenőrizzük, hogy van-e könyvtár, vagy sem, mielőtt végrehajtanánk bizonyos feladatokat.
#!/bin/bashDIR="/var/log"if test -d $DIR; then echo "$DIR exists"else echo "$DIR doesn"t exist"fi
3.3: 3. módszer: egysoros
Ebben a példában egy- és dupla zárójelet használunk egysoros formában az ellenőrzéshez a könyvtárhoz. Az &&
operátor utáni utasítás akkor kerül végrehajtásra, ha az első feltétel IGAZ, és ha HAMIS, akkor a ||
feltétel “utasítás végrehajtásra kerül .
#!/bin/bashDIR="/var/log"] && echo "$DIR exists" || echo "$DIR doesn"t exist"
Azt javasolnám, hogy a helyett a
]
szót használja. egy ilyen vonalhordozó kód esetén a shell programozásban.
Hasonlóan a &&
és a ||
elemekhez, a teszt parancs segítségével ellenőrizhetjük ha létezik könyvtár
#!/bin/bashDIR="/var/log"test -d $DIR && echo "$DIR exists" || echo "$DIR doesn"t exist"
4. Bash / Shell: Ellenőrizze, hogy létezik-e könyvtár (üres vagy nem üres)
Nincsenek shell attribútumok mint ahogy ezt az oktatóanyag minden más példájában és forgatókönyvében használtam. De van néhány feltörésünk, amelyekkel ellenőrizhetjük, hogy a könyvtár üres-e vagy sem.
4.1: 1. módszer: Sorolja fel a könyvtár tartalmát és ellenőrizze
Ebben a példában felsoroljuk a könyvtár tartalmát, elnyomjuk a kimenetet, majd a kilépési kód ellenőrzése alapján ellenőrizzük, hogy a könyvtár üres-e vagy tartalmaz-e valamit tartalom
#!/bin/bashDIR="/tmp"if ls -1qA $DIR | grep -q . ; then echo "$DIR is not -empty"else echo "$DIR is empty"fi
Ezt meg is fordíthatjuk a NOT (!
) feltétel megadásával. Így néz ki:
#!/bin/bashDIR="/tmp"if ! ls -1qA $DIR | grep -q . ; then echo "$DIR is empty"else echo "$DIR is not-empty"fi
A kimenet mindkét példa szkriptben megegyezik.
4.2: 2. módszer: Használat find parancs
Használhatjuk a find parancsot, majd elnyomhatjuk a kimenetet, hogy ellenőrizzük, van-e a célkönyvtárban tartalom vagy sem.
#!/bin/bashDIR="/tmp"if find -- "$DIR" -prune -type d -empty | grep -q . ; then echo "$DIR is empty"else echo "$DIR is not-empty"fi
4.3: 3. módszer: Sorolja fel a tartalmat
Ismét, ahogy mondtam, mivel nincs egyszerű módja annak ellenőrzésére, hogy egy könyvtár üres-e vagy nem használ-e valamilyen attribútumot, felsoroljuk a könyvtár tartalmát. Ha nem kap kimenetet, akkor a könyvtár üres, vagy nem üres. p> Hasonlóképpen még sok olyan attribútum van, amelyet shell parancsfájlokkal használhat a különböző fájltípusok ellenőrzésére, például szimbolikus hivatkozások, fájlengedélyek stb.
Attribútumok | Mit csinál? |
---|---|
-a FILE |
Igaz, ha FILE létezik |
-b FILE |
Igaz, ha FILE létezik, és blokk speciális fájl. |
-c FILE |
Igaz, ha FILE létezik, és egy karakteres speciális fájl. |
-d FILE |
Igaz, ha FILE létezik és könyvtár. |
Igaz, ha létezik FILE |
|
-f FILE |
Igaz, ha létezik FILE és rendes fájl |
-g FILE |
Igaz, ha létezik FILE és a set-group-id bit beállítása |
-h FILE |
Igaz, ha létezik FILE és szimbolikus link |
-k FILE |
Igaz, ha létezik FILE és a “ragacsos” bitje be van állítva |
-p FILE |
Igaz, ha FILE létezik és elnevezett cső (FIFO) |
-r FILE |
Igaz, ha FILE létezik és olvasható |
-s FILE |
Igaz, ha FILE létezik, és mérete nagyobb, mint nulla |
-u FILE |
Igaz, ha létezik FILE , és annak set-user-id bitje be van állítva |
-w FILE |
Igaz, ha FILE létezik és írható |
-x FILE |
Igaz, ha FILE létezik és futtatható |
-G FILE |
Igaz, ha FILE létezik, és a tényleges csoport-azonosító |
-L FILE |
Igaz, ha létezik FILE és szimbolikus link |
-N FILE |
Igaz, ha létezik FILE és az utolsó olvasása óta módosult |
-o FILE |
Igaz, ha FILE létezik és a tényleges tulajdonosa felhasználói azonosító |
-S FILE |
Igaz, ha létezik FILE és egy foglalat |
|
Igaz, ha FILE1 és FILE2 ugyanarra az eszközre utal, és inode számok |
FILE1 -nt FILE2 |
Igaz, ha FILE1 újabb (a módosítási dátum szerint), mint a FILE2 , vagy ha létezik FILE1 és FILE2 nem |
FILE1 -ot FILE2 |
Igaz, ha FILE1 régebbi mint FILE2 , vagy ha létezik FILE2 és FILE1 nem |