Android

Paano suriin kung ang isang file o direktoryo ay umiiral sa bash

Using Bash .bashrc and .profile Files to Initialize Your Terminal

Using Bash .bashrc and .profile Files to Initialize Your Terminal

Talaan ng mga Nilalaman:

Anonim

Maraming beses kapag nagsusulat ng mga script ng Shell, maaari mong makita ang iyong sarili sa isang sitwasyon kung saan kailangan mong magsagawa ng isang aksyon batay sa kung mayroong isang file o hindi.

Sa Bash, maaari mong gamitin ang test command upang suriin kung mayroon ang isang file at matukoy ang uri ng file.

Ang pagsubok na utos ay tumatagal ng isa sa mga sumusunod na form ng syntax:

test EXPRESSION]

Suriin kung ang File Exist

Kapag suriin kung mayroong isang file, ang pinaka-karaniwang ginagamit na FILE operator ay -e at -f . Susuriin ng una kung ang isang file ay mayroon nang anuman ang uri, habang ang pangalawa ay babalik din ang totoo kung ang FILE ay isang regular na file (hindi isang direktoryo o isang aparato).

Ang pinaka-mababasa na pagpipilian kapag sinuri kung mayroon ang isang file o hindi ay ang paggamit ng pagsubok na utos kasama ang kung pahayag. Ang alinman sa mga snippet sa ibaba ay susuriin kung ang /etc/resolv.conf file ay umiiral:

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

Kung nais mong magsagawa ng ibang pagkilos batay sa kung mayroon ang file o hindi lamang gamitin ang kung / pagkatapos ay itayo:

FILE=/etc/resolv.conf if; then echo "$FILE exist" else echo "$FILE does not exist" fi Laging gumamit ng dobleng quote upang maiwasan ang mga isyu kapag nakikipag-ugnayan sa mga file na naglalaman ng whitespace sa kanilang mga pangalan.

Maaari mo ring gamitin ang pagsubok na pagsubok kung wala ang pahayag. Ang utos pagkatapos ng && operator ay isasagawa lamang kung totoo ang exit status ng test command, test -f /etc/resolv.conf && echo "$FILE exist"

&& echo "$FILE exist"

] && echo "$FILE exist"

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

Salungat sa && , ang pahayag pagkatapos ng || naisakatuparan lamang ang operator kung false ang exit status ng test command.

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

Suriin kung ang Directory na Wala

Pinapayagan ka ng mga operator-na subukan kung ang isang file ay isang direktoryo o hindi.

Halimbawa upang suriin kung umiiral ang /etc/docker direktoryo ng /etc/docker gagamitin mo:

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

&& echo "$FILE is a directory"

Maaari mo ring gamitin ang dobleng bracket , 'linuxize_com-medrectangle-4', 'ezslot_7', 160, '0', '0']));

Suriin kung ang File ay hindi Nariyan

Katulad sa maraming iba pang mga wika, ang ekspresyon ng pagsubok ay maaaring mapabaya gamit ang ! (exclaim mark) lohikal na hindi operator:

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

Katulad ng nasa itaas:

&& echo "$FILE does not exist"

Suriin kung Maramihang Mga Files na Umiiral

Sa halip na gumamit ng kumplikadong nested kung / kung anu-ano ang mga konstruksyon maaari mong gamitin -a (o && with ; then echo "$FILE is a directory" fi

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

Mga magkatulad na variant nang hindi gumagamit ng pahayag ng IF:

&& echo "both files exist"

] && echo "both files exist"

Ang mga operator ng pagsubok sa file

Kasama sa pagsubok na pagsubok ang mga sumusunod na FILE operator na nagbibigay-daan sa iyo upang subukan para sa mga partikular na uri ng mga file:

  • -b FILE - Totoo kung umiiral ang FILE at isang bloke ang espesyal na file. -c FILE - Totoo kung umiiral ang FILE at isang espesyal na file ng character. -d FILE - Totoo kung umiiral ang FILE at isang direktoryo. -e FILE - Totoo kung umiiral ang FILE at isang file, anuman ang uri (node, direktoryo, socket, atbp.). -f FILE - Totoo kung umiiral ang FILE at isang regular na file (hindi isang direktoryo o aparato). -G FILE - Totoo kung umiiral ang FILE at may parehong pangkat tulad ng gumagamit na nagpapatakbo ng utos. -h FILE - Totoo kung umiiral ang FILE at ito ay isang simbolikong link. -g FILE - Totoo kung umiiral ang FILE at may set-group-id (sgid) na set ng bandila. -k FILE - Totoo kung umiiral ang FILE at may malagkit na set ng bandila. -L FILE - Totoo kung umiiral ang FILE at isang simbolikong link. -O FILE - Totoo kung umiiral ang FILE at pag-aari ng gumagamit na nagpapatakbo ng utos. -p FILE - Totoo kung umiiral ang FILE at isang pipe. -r FILE - Totoo kung umiiral ang FILE at mababasa. -S FILE - Totoo kung ang FILE ay umiiral at ay socket. -s FILE - Totoo kung umiiral ang FILE at may sukat na nonzero. -u FILE - Totoo kung ang umiiral at set-user-id (suid) na flag ay nakatakda. -w FILE - Totoo kung umiiral ang FILE at nakasulat. -x FILE - Totoo kung umiiral ang FILE at naisakatuparan.

Konklusyon

Sa gabay na ito, ipinakita namin sa iyo kung paano suriin kung mayroon ang isang file o direktoryo gamit ang Bash.

terminal ng bash