Při práci se soubory v libovolném operačním systému je povinné, aby uživatel tyto soubory otestoval z hlediska určitých aspektů, jako je jejich vlastnictví, přístupová práva, obsah, existence atd. Tyto aspekty lze zjistit spojením příkazu „if“ s různými operátory testování souborů v Bash. „If -e“ a „if -s“ jsou takové operátory v Bash, používané pro testování existence souboru. Rozdíl mezi nimi spočívá v tom, že první testuje pouze existenci souboru, zatímco druhý také kontroluje, zda v něm existuje nějaký obsah nebo ne. Dnes se pokusíme porozumět použití těchto dvou operátorů spolu s několika dalšími operátory testování souborů v Bash.
Poznámka: K demonstraci použití operátorů testování souborů v Bash jsme použili Linux Mint 20.
Příklady použití operátorů testování souborů v Bash
Existuje několik způsobů, jak lze použít operátory testování souborů „if -e“ a „if -s“. Abychom vysvětlili jejich použití, podělíme se s vámi o několik příkladů.
Příklad použití operátoru „if -e“
Chcete-li v Bash použít operátor „if -e“, musíte postupovat podle těchto kroků:
Nejprve jsme vytvořili prázdný textový soubor s názvem Test.txt v našem domovském adresáři. Pak jsme vytvořili bash soubor s názvem FileTestOperators.sh ve stejném adresáři. Po vytvoření tohoto souboru jsme do našeho souboru zadali skript zobrazený na následujícím obrázku. V tomto bash skriptu deklaroval proměnnou s názvem „soubor“ a přidělil jí náš textový soubor s názvem Test.txt jako jeho hodnota. Pak máme příkaz „if -e“, který vytváří výstup „true“, pokud existuje zadaný soubor.
Pro testování našeho skriptu jej spustíme pomocí níže uvedeného příkazu:
$ bash FileTestOperators.sh
V našem případě, protože textový soubor existoval, bude proto výstup našeho skriptu pravdivý, jak ukazuje následující obrázek:
Příklad použití operátoru „if -s“
Chcete-li použít operátor „if -s“ v Bash, měli byste provést kroky uvedené níže:
V tomto příkladu je náš bash skript stejný jako jsme použili výše. Právě jsme změnili příkaz „if -e“ na „if -s“. Také jsme použili stejný prázdný textový soubor Test.txt.
Nyní, když spustíme tento skript, bude výstup nepravdivý, protože operátor „if -s“ vrací true, pokud soubor existuje a také pokud není prázdný. Protože v našem případě, i když soubor existoval, byl stále prázdný, a proto se náš výstup ukázal jako nepravdivý, jak je znázorněno na následujícím obrázku:
Aby byl tento příznak pravdivý, napíšeme do našeho textového souboru nějaký fiktivní text, jak je znázorněno níže:
Potom znovu spustíme náš bash skript a tentokrát bude výstup pravdivý, jak je znázorněno na následujícím obrázku, protože textový soubor má nyní nějaký text.
Příklady použití dalších operátorů testování souborů
Kromě operátorů „if -e“ a „if -s“ existují i další operátoři testování souborů. Níže s vámi sdílíme některé z nejdůležitějších operátorů testování souborů, které nejsou uvedeny výše.
Příklad použití operátoru „if -d“
Chcete-li v Bash použít operátor „if -d“, měli byste provést kroky uvedené níže:
V tomto příkladu je náš bash skript stejný jako jsme použili výše. Právě jsme změnili příkaz „if -s“ na „if -d“. Také jsme použili stejný textový soubor Test.txt.
Operátor „if -d“ vrací true, pokud je váš soubor adresář, jinak bude mít hodnotu false. Protože náš textový soubor nebyl adresářem, bude výstup nepravdivý, jak ukazuje následující obrázek:
Příklad použití operátoru „if -h“
Chcete-li v Bash použít operátor „if -h“, musíte postupovat podle těchto kroků:
V tomto příkladu je náš bash skript stejný, jaký jsme použili výše. Právě jsme změnili příkaz „if -d“ na „if -h“. Pro testování jsme však tentokrát použili jiný soubor, kterým byl ve skutečnosti symbolický odkaz s názvem NewBash.sh.
Operátor „if -h“ vrací true, pokud je váš soubor symbolickým odkazem, jinak bude nepravdivý. Protože náš testovací soubor byl symbolickým odkazem, bude výstup pravdivý, jak ukazuje následující obrázek:
Příklad použití operátoru „if -r“
Chcete-li v Bash použít operátor „if -r“, musíte postupovat podle těchto kroků:
V tomto příkladu je náš bash skript stejný, jaký jsme použili výše. Právě jsme změnili příkaz „if -h“ na „if -r“. Také jsme použili stejný textový soubor Test.txt.
Výstup operátoru „if -r“ bude pravdivý, pokud může aktuální uživatel soubor přečíst, jinak bude nepravdivý. Protože náš textový soubor byl čitelný námi, bude výstup pravdivý, jak ukazuje následující obrázek:
Stejným způsobem můžete použít operátory „if -w“ a „if -x“ ke kontrole, zda je soubor zapisovatelný a spustitelný aktuálním vlastníkem.
Příklad použití operátoru „if -O“
Pro použití operátoru „if -O“ v Bash byste měli provést kroky uvedené níže:
V tomto příkladu je náš bash skript stejný jako jsme použili výše. Právě jsme změnili příkaz „if -r“ na „if -O“. Také jsme použili stejný textový soubor Test.txt.
Výstup operátoru „if -O“ bude pravdivý, pokud soubor vlastní aktuální uživatel, jinak bude nepravdivý. Protože náš textový soubor vlastnili my, bude výstup pravdivý, jak ukazuje následující obrázek:
Závěr
Tento článek informoval čtenáře o použití různých operátorů testování souborů v Bash pomocí operačního systému Linux. Využitím těchto operátorů testování souborů je pro uživatele velmi výhodné pracovat se soubory bez jakýchkoli potíží. Existují i další operátoři testování souborů, které lze použít pro různé účely. Nejčastěji se však používají ty, které jsou popsány v tomto článku.