A bash parancsfájl létrehozása közben olyan helyzetbe kerülhet, hogy meg kell találnia, létezik-e fájl vagy sem hogy valamilyen műveletet hajtson végre vele. A teszt paranccsal ellenőrizheti, hogy létezik-e fájl és milyen típusú.
Ebben az oktatóanyagban megmutatjuk, hogyan ellenőrizhető, hogy létezik-e fájl a Linux-alapú operációs rendszerekben.
A tesztparancs alapszintaktikája
A tesztparancs alapvető szintaxisa a fájl létezésének ellenőrzésére az alábbiak szerint:
test -e file
Vagy
test -f file
Hol:
- -e
Ez az opció ellenőrzi, hogy létezik-e fájl a típustól függetlenül. - -f
Ez az opció csak akkor ellenőrzi, hogy létezik-e fájl, ha a FÁJL rendes fájl.
A tesztparancs man oldalát az alábbiak szerint kell látnia:
man test
A következő képernyőt kell látnia :
Ellenőrizze, hogy a fájl létezik-e parancssor használatával
Ebben a szakaszban megmutatjuk Önnek a parancssor használatával ellenőrizheti, hogy létezik-e fájl:
Futtassa a következő parancsot, hogy ellenőrizze, létezik-e az / etc / fstab nevű fájl (T rue):
test -f /etc/fstab
Ezután futtassa a következő parancsot a kilépési kód 0 vagy 1 értékre állításához, amikor a teszt sikeres volt, vagy nem.
echo $?
Kimenet:
0
A kimenet 0, ami azt jelenti, hogy az / etc / fstab fájl létezik.
Ezenkívül a következő paranccsal ellenőrizheti, hogy létezik-e fájl:
echo $0
Kimenet:
0
Ezután futtassa a következő parancsot, hogy ellenőrizze, létezik-e az / etc / fabab fájl ( Hamis).
test -f /etc/fabab
echo $?
Kimenet:
1
A kimenet 1, ami azt jelenti, hogy az / etc / fabab fájl nem létezik.
Ön azt is tesztelheti, hogy létezik-e /etc/rc.local nevű fájl, vagy nem használja a bash feltételes végrehajtást, az alábbiak szerint:
test -f /etc/rc.local && echo "Exists" || echo "Not Exists"
Vagy
&& echo "Exists" || echo "Not Exists"
Ha létezik az /etc/rc.local nevű fájl, akkor a következő kimenetet kell látnia:
Exists
Egyetlen paranccsal ellenőrizheti, hogy több fájl létezik-e vagy sem:
&& echo "both files exist"
Vagy
test -f /etc/passwd -a -f /etc/crontab && echo "both files exist"
A következő kimenetet kell látnia:
both files exist
Ellenőrizze, hogy a fájl létezik-e a Bash-ban
Ebben a szakaszban létrehozunk egy bash parancsfájlt, és üzenet nyomtatásával ellenőrizzük, hogy létezik-e fájl.
Hozza létre a test.sh nevű fájlt, és ellenőrizze, hogy van-e fájl Az /etc/rc.local létezik vagy sem:
nano test.sh
Adja hozzá a következő sorokat:
#!/bin/bash
FILE=/etc/rc.local
if ; then
echo "The file "$FILE" exists."
else
echo "The file "$FILE" is not exists."
fi
Mentse és zárja be a fájlt, majd futtassa a parancsfájlt a következő paranccsal:
bash test.sh
A következő kimenetet kell látnia:
The file "/etc/rc.local" exists.
Most hozzunk létre egy test.sh fájlt, és teszteljük, hogy az / etc / Az rc.localad nem létezik:
nano test.sh
Adja hozzá a következő sorokat:
#!/bin/bash
FILE=/etc/rc.localad
if ; then
echo "The file "$FILE" exists."
else
echo "The file "$FILE" is not exists."
fi
Mentse és zárja be a fájlt, majd futtassa a parancsfájlt a következő paranccsal:
bash test.sh
A következő kimenetet kell látnia:
The file "/etc/rc.localad" is not exists.
Megtalálhatja, hogy létezik-e egy fájl, vagy nem, és végezzen rajta valamilyen műveletet a bash szkriptben.
Keressen meg például egy / etc / hosts nevű fájlt, és másolja át az / opt könyvtárba, ha a fájl létezik.
Ehhez hozzon létre egy test.sh nevű fájlt:
nano test.sh
Adja hozzá a következő sorokat:
FILE=/etc/hosts
if ; then
cp $FILE /opt
fi
Mentse és zárja be a fájlt, majd futtassa a parancsfájlt a következő paranccsal:
Most tesztelje az / opt könyvtárat a következő paranccsal:
ls /opt/hosts
A hosts fájlt a következő kimenetben kell látnia:
/opt/hosts
Használhatja a kifejezést is! hogy ellenőrizze, hogy a fájl nem létezik-e.
Futtassa például a következő parancsot, hogy ellenőrizze, hogy a / etc / hosting fájl nem létezik-e:
&& echo "File does not exist"
Vagy
test ! -f /etc/hosting && echo "File does not exist"
A következő kimenetet kell látnia:
File does not exist
Ellenőrizze, hogy létezik-e könyvtár
A -d kapcsolóval megtudhatja, hogy létezik-e könyvtár vagy sem.
Például ellenőrizze, hogy létezik-e az / etc / apache2 könyvtár.
&& echo "Directory is exists"
Vagy
test -d /etc/apache2 && echo "Directory is exists"
A következő kimenetet kell látnia:
Directory is exists
Létrehozhat egy bash parancsfájlt feltételes kifejezésekkel annak ellenőrzésére, hogy létezik-e könyvtár vagy sem.
Hozzon létre egy test.sh nevű fájlt az alábbiak szerint:
nano test.sh
Adja hozzá a következő sorokat:
Ha elkészült, mentse és zárja be a fájlt. Ezután adjon megfelelő engedélyt a következő paranccsal:
chmod 755 test.sh
Ezután tesztelje, hogy az / etc / nginx könyvtár elérhető-e vagy sem a következő paranccsal:
./test.sh /etc/nginx
A következő kimenetet kell látnia:
Directory /etc/nginx/ exists.
Ezután tesztelje, hogy az / etc / linux könyvtár elérhető-e vagy sem, a következő paranccsal:
./test.sh /etc/linux
A következő kimenetet kell látnia:
Directory /etc/linux does not exists
Fájltesztelő operátorok a Bash-ban
A következő fájltesztelő operátorok segítenek ellenőrizni, hogy létezik-e “fájl” és van-e meghatározott típusa:
- -b
A FÁJL létezik és blokk speciális - -c
A FÁJL létezik és karakterspecifikus - -d
A FÁJL létezik és egy könyvtár - -e
FILE létezik - -f
FILE létezik, és egy rendes fájl - -g
FILE létezik és set-group-ID - -G
FÁJL ex létezik, és a tényleges csoportazonosító a tulajdonosa. - -h
A FILE létezik, és szimbolikus link (ugyanaz, mint az -L). - -k
FILE létezik és van ragacsos bitkészlete - -L
FÁJL létezik, és szimbolikus link (ugyanaz, mint a -h) - -O
A FÁJL létezik és a tényleges felhasználó tulajdonában van Azonosító - -p
A FILE létezik, és egy megnevezett cső - -r
A FILE létezik, és az olvasási engedély megadva - -s
FILE létezik, és mérete nagyobb, mint nulla - -S
FILE létezik, és egy socket - -u
FILE létezik, és annak set-user-ID bitje be van állítva - -w
FILE létezik és írási engedély megadva - -x
FILE létezik, és végrehajtási (vagy keresési) engedélyt kap