Android

Bir dosya veya dizinin bash'da olup olmadığını kontrol etme

BASH Scripting | Dosya İzinleri - PATH Değişkeni | Part 1

BASH Scripting | Dosya İzinleri - PATH Değişkeni | Part 1

İçindekiler:

Anonim

Birçok kez Shell komut dosyaları yazarken, kendinizi bir dosyanın var olup olmadığına bağlı olarak bir eylem gerçekleştirmeniz gereken bir durumda bulabilirsiniz.

Bash'te, bir dosyanın var olup olmadığını kontrol etmek ve dosyanın türünü belirlemek için test komutunu kullanabilirsiniz.

Test komutu aşağıdaki sözdizimi formlarından birini alır:

test EXPRESSION]

Dosyanın Var olup olmadığını kontrol edin

Bir dosyanın olup olmadığını kontrol ederken, en çok kullanılan FILE işleçleri -e ve -f . Birincisi dosyanın türüne bakılmaksızın var olup olmadığını kontrol ederken, ikincisi yalnızca DOSYA normal bir dosyaysa (dizin veya aygıt değil) true değerini döndürür.

Bir dosyanın var olup olmadığını kontrol ederken en okunabilir seçenek, test komutunu if ifadesiyle birlikte kullanmaktır. Aşağıdaki snippet'lerden herhangi biri /etc/resolv.conf dosyasının var olup olmadığını kontrol eder:

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

Dosyanın var olup olmamasına bağlı olarak farklı bir eylem gerçekleştirmek istiyorsanız, if / then yapısını kullanın:

FILE=/etc/resolv.conf if; then echo "$FILE exist" else echo "$FILE does not exist" fi Adlarında boşluk içeren dosyalarla uğraşırken sorunları önlemek için her zaman çift tırnak kullanın.

Test komutunu if ifadesi olmadan da kullanabilirsiniz. && sonraki komut yalnızca test komutunun çıkış durumu doğruysa çalıştırılır, test -f /etc/resolv.conf && echo "$FILE exist"

&& echo "$FILE exist"

] && echo "$FILE exist"

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

&& , || operatörü yalnızca test komutunun çıkış durumu false .

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

Dizin Var olup olmadığını kontrol edin

-d işleçleri bir dosyanın dizin olup olmadığını test etmenizi sağlar.

Örneğin, /etc/docker dizininin var olup olmadığını kontrol etmek için şunu kullanabilirsiniz:

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

&& echo "$FILE is a directory"

Ayrıca , 'linuxize_com-medrectangle-4', 'ezslot_7', 160, '0', '0'])); çift ​​köşeli parantezleri de kullanabilirsiniz , 'linuxize_com-medrectangle-4', 'ezslot_7', 160, '0', '0']));

Dosyanın Var Olmadığını Kontrol Edin

Diğer birçok dile benzer şekilde, test ifadesi ! (ünlem işareti) mantıksal değil mantıksal:

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

Yukarıdaki gibi:

&& echo "$FILE does not exist"

Birden Fazla Dosyanın Var olup olmadığını kontrol edin

Karmaşık iç içe yerleştirilmiş if / else yapılarını kullanmak yerine -a (veya && ile ; then echo "$FILE is a directory" fi

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

IF deyimini kullanmadan eşdeğer varyantlar:

&& echo "both files exist"

] && echo "both files exist"

Dosya testi operatörleri

Sınama komutu, belirli dosya türlerini sınamanıza izin veren aşağıdaki FILE işleçlerini içerir:

  • -b FILE - DOSYA varsa ve bir blok özel dosyasıysa doğrudur. -c FILE - FILE varsa ve özel bir karakter dosyasıysa doğrudur. -d FILE - DOSYA varsa ve bir -d doğrudur. -e FILE - FILE, türden (düğüm, dizin, soket vb.) bağımsız olarak varsa ve bir dosyaysa doğrudur. -f FILE - DOSYA varsa ve normal bir dosyaysa (dizin veya aygıt değil) doğrudur. -G FILE - FILE varsa ve komutu çalıştıran kullanıcıyla aynı gruba sahipse doğrudur. -h FILE - DOSYA varsa ve sembolik bir bağlantıysa doğrudur. -g FILE - FILE varsa ve set-group-id (sgid) bayrağı ayarlanmışsa true olur. -k FILE - FILE varsa ve yapışkan bit bayrağı ayarlanmışsa doğrudur. -L FILE - DOSYA varsa ve sembolik bir bağlantıysa doğrudur. -O FILE - DOSYA varsa ve komutu çalıştıran kullanıcının sahibi varsa doğrudur. -p FILE - DOSYA varsa ve bir boru ise doğrudur. -r FILE - DOSYA varsa ve okunabilirse doğrudur. -S FILE - FILE varsa ve soket ise doğrudur. -s FILE - DOSYA varsa ve sıfır olmayan bir boyuta sahipse doğrudur. -u FILE - Var ve set-user-id (suid) bayrağı ayarlanmışsa doğrudur. -w FILE - DOSYA varsa ve yazılabilirse doğrudur. -x FILE - FILE varsa ve çalıştırılabilirse doğrudur.

Sonuç

Bu kılavuzda, Bash kullanarak bir dosya veya dizinin var olup olmadığını nasıl kontrol edeceğinizi gösterdik.

bash terminali