Bash zkontrolovat, zda soubor existuje

Většinou se můžeme setkat s situací, kdy budeme možná muset provést akci, která ověří, zda soubor existuje nebo ne.

V Bash můžeme pomocí „testovacího příkazu“ zkontrolovat, zda soubor existuje, a určit typ souboru.

Následuje syntaxe testovacího příkazu a my můžete použít kterýkoli z těchto příkazů:

Aby se náš skript stal přenosným pro všechny skořápky POSIX, musíme použít jediný příkaz „[“. Aktualizovaná verze testovacího příkazu obsahuje dvojité závorky „[[“, které je podporováno ve většině moderních systémů používajících jako výchozí shell Bash, Zsh a Ksh.

Zkontrolovat, zda soubor existuje

Při kontrole, zda soubor existuje, jsou nejčastěji používanými operátory souborů -e a -f. Možnost „-e“ se používá ke kontrole, zda soubor existuje bez ohledu na typ, zatímco volba „-f“ se používá k vrácení skutečné hodnoty, pouze pokud je soubor běžným souborem (nikoli adresářem nebo zařízením).

Nejběžnější možností, jak zkontrolovat, zda soubor existuje, je použít testovací příkaz s příkazem „if conditional“.

Následují příklady ke kontrole, zda je soubor „read_file“. Soubor txt „existuje:

Metoda 1

Metoda 2

Metoda 3

Výstup

Výstup pro všechny tři metody bude uveden níže, protože v adresáři je soubor (read_file.txt):

read_file.txt exist

Pokud chceme provést akci, která poskytne výsledek na základě toho, zda soubor existuje nebo ne, můžeme použít konstrukci if / then v následujícím způsobem:

Příklad

Výstup

read_file.txt exist

Můžeme také použít testovací příkaz bez příkazu if. Můžeme použít kteroukoli z následujících metod:

Metoda 1

Metoda 2

Metoda 3

Výstup

Výstup pro všechny tři metody bude uveden níže, protože v adresáři je soubor (read_file.txt):

read_file.txt exist

Příklad

Na rozdíl od & &, prohlášení za || operátor je spuštěn, pouze pokud je stav ukončení testovacího příkazu „false“.

Příklad

Výstup

read_file.txt exist

Toto jsou běžně používané metody v Bash ke kontrole, zda soubor existuje nebo ne.

Zkontrolovat, zda existuje adresář

Operátor „-d“ nám umožňuje otestovat, zda je soubor adresářem či nikoli.

Následují metody kontroly, zda existuje adresář „Javatpoint“:

Metoda 1

Metoda 2

Poznámka: Můžeme také použít dvojité závorky „[[“ místo jediné závorky “[“ .

Výstup

Výstup pro obě výše uvedené metody bude uveden níže, protože v zadaném umístění máme adresář (s názvem Javatpoint):

Javatpoint is a directory

Zkontrolovat, zda IF soubor neexistuje

Testovací výraz lze vyvrátit pomocí vykřičníku (! -logický operátor NOT). Podívejte se na následující příklad:

Příklad

Výše uvedený skript lze napsat také níže:

Výstup

missing_read_file.txt unavailable

Operátoři testování souborů

Testovací příkazy obsahují následující operátory souborů, které nám umožňují test pro konkrétní typy souborů:

-b FileReturns „True“, pokud SOUBOR existuje jako speciální blok soubor.
-c FileReturns „True“, pokud SOUBOR existuje jako soubor se speciálními znaky.
-d FileReturns „True“, pokud SOUBOR existuje jako adresář.
-e FileReturns „True „pokud SOUBOR existuje jako soubor, bez ohledu na typ (uzel, adresář, soket atd.).
-f FileReturns “ True “ pokud SOUBOR existuje jako běžný soubor (nikoli jako adresář nebo zařízení).
-G FileReturns „True“, pokud SOUBOR existuje a obsahuje stejná skupina jako uživatel, který spouští komunikaci a.
-h FileReturns „True“, pokud SOUBOR existuje jako symbolický odkaz.
-g FileReturns „True“, pokud SOUBOR existuje a obsahuje sadu příznaků set-group-id (sgid).
-k FileReturns „True“, pokud SOUBOR existuje a obsahuje sadu příznaků lepivého bitu.
-L FileReturns „True“, pokud SOUBOR existuje jako symbolický odkaz.
-O FileReturns „True“, pokud SOUBOR existuje a je vlastněn uživatelem, který spouští příkaz.
-p FileReturns „True“, pokud SOUBOR existuje jako roura.
– r FileReturns „True“, pokud SOUBOR existuje jako čitelný soubor.
-S FileReturns „True“, pokud SOUBOR existuje jako soket.
-s FileReturns „True“, pokud SOUBOR existuje a má nenulovou velikost.
-u FileReturns „True“, pokud SOUBOR existuje a je nastaven příznak set-user-id (suid).
-w FileReturns „True“, pokud SOUBOR existuje jako zapisovatelný soubor.
-x FileReturns „True“, pokud SOUBOR existuje jako spustitelný soubor.

Write a Comment

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *