Android

Kako provjeriti postoji li datoteka ili direktorij u bashu

How to Setup Multinode Hadoop 2 on CentOS/RHEL Using VirtualBox

How to Setup Multinode Hadoop 2 on CentOS/RHEL Using VirtualBox

Sadržaj:

Anonim

Često se prilikom pisanja skripti Shell nađete u situaciji u kojoj trebate izvesti radnju na osnovu toga postoji li datoteka ili ne.

U Bashu možete koristiti testnu naredbu da provjerite postoji li datoteka i odredite vrstu datoteke.

Naredba testa ima jedan od sljedećih oblika sintakse:

test EXPRESSION]

Provjerite postoji li datoteka

Prilikom provjere postoji li datoteka, najčešće korišteni operateri FILE su -e i -f . Prva će provjeriti postoji li datoteka bez obzira na vrstu, dok će druga vratiti true ako je FILE obična datoteka (a ne mapa ili uređaj).

Najčitanija opcija pri provjeri postoji li datoteka ili ne je korištenje naredbe ispitivanja u kombinaciji s naredbom if. Bilo koji isječak ispod će provjeriti postoji li /etc/resolv.conf datoteka:

FILE=/etc/resolv.conf if test -f "$FILE"; then echo "$FILE exist" fi

FILE=/etc/resolv.conf if; then echo "$FILE exist" fi

FILE=/etc/resolv.conf if]; then echo "$FILE exist" fi

Ako želite izvršiti drugu radnju na temelju toga postoji li datoteka ili ne jednostavno koristite konstrukciju if / then:

FILE=/etc/resolv.conf if; then echo "$FILE exist" else echo "$FILE does not exist" fi Uvijek koristite dvostruke navodnike da biste izbjegli probleme pri radu s datotekama koje u njihovim imenima sadrže razmak.

Možete koristiti i naredbu ispitivanja bez izjave if. Naredba nakon && operatora izvršava se samo ako je status izlaza testne naredbe točan, test -f /etc/resolv.conf && echo "$FILE exist"

&& echo "$FILE exist"

] && echo "$FILE exist"

&& { echo "$FILE exist"; cp "$FILE" /tmp/; }

Nasuprot && , izjava nakon || Operator će se izvršiti samo ako je status izlaza testne naredbe false .

&& echo "$FILE exist" || echo "$FILE does not exist"

Provjerite postoji li direktorij

Operatori -d omogućuju vam da provjerite je li datoteka direktorij ili ne.

Na primjer da provjerite postoji li /etc/docker direktorij koji biste koristili:

FILE=/etc/docker if; then echo "$FILE is a directory" fi

&& echo "$FILE is a directory"

Također možete koristiti dvostruke zagrade , 'linuxize_com-medrectangle-4', 'ezslot_7', 160, '0', '0']));

Provjerite ne postoji li datoteka

Slično mnogim drugim jezicima, testni se izraz može zanemariti koristeći ! (uskličnik) logički ne operator:

FILE=/etc/docker if; then echo "$FILE does not exist" fi

Isto kao što je gore:

&& echo "$FILE does not exist"

Provjerite postoji li više datoteka

Umjesto korištenja složenih ugniježđenih ako / else konstrukcija možete upotrijebiti -a (ili && with ; then echo "$FILE is a directory" fi

FILE=/etc/docker if; then echo "$FILE is a directory" fi

Ekvivalentne varijante bez korištenja izraza IF:

&& echo "both files exist"

] && echo "both files exist"

Operatori za testiranje datoteka

Naredba za testiranje uključuje sljedeće operatore FILE koji vam omogućuju testiranje za određene vrste datoteka:

  • -b FILE - Točno ako FILE postoji i posebna je datoteka bloka. -c FILE - Točno ako datoteka sadrži posebnu datoteku s znakovima. -d FILE - Točno ako FILE postoji i ako je direktorij. -e FILE - Točno ako FILE postoji i datoteka je, bez obzira na vrstu (čvor, direktorij, utičnica itd.). -f FILE - Točno ako FILE postoji i uobičajena je datoteka (a ne mapa ili uređaj). -G FILE - Točno ako FILE postoji i ima istu grupu kao i korisnik koji izvršava naredbu. -h FILE - Točno ako FILE postoji i simbolička je veza. -g FILE - Točno ako FILE postoji i ako je postavljena zastava-group-id (sgid). -k FILE - Točno ako FILE postoji i postavljena je ljepljiva bit zastava. -L FILE - Točno ako FILE postoji i simbolička je veza. -O FILE - Točno ako FILE postoji i u vlasništvu je korisnika koji izvršava naredbu. -p FILE - Točno ako FILE postoji i postoji cijev. -r FILE - Točno ako FILE postoji i čitljiv. -S FILE - Točno ako FILE postoji i utičnica. -s FILE - Točno ako FILE postoji i ima nebrojnu veličinu. -u FILE - Točno ako je postavljena postojeća i postavljena-user-id (suid) zastava. -w FILE - Točno ako FILE postoji i može se pisati. -x FILE - Točno ako FILE postoji i može se izvršiti.

Zaključak

U ovom smo vodiču pokazali kako provjeriti postoji li datoteka ili direktorij pomoću Bash-a.

bash terminal