Bash Zkontrolovat, zda soubor existuje – výuka a příkazy k použití

Při vytváření bash skriptu se můžete setkat se situací, kdy potřebujete zjistit, zda soubor existuje nebo ne provést nějakou akci. Pomocí příkazu test můžete zkontrolovat, zda soubor existuje a jaký je typ.

V tomto výukovém programu vám ukážeme, jak zkontrolovat, zda soubor existuje v operačních systémech Linux.

Základní syntaxe testovacího příkazu

Základní syntaxe testovacího příkazu ke kontrole, zda soubor existuje, jak je uvedeno níže:

test -e file

Nebo

test -f file

Kde:

  • -e
    Tato možnost ověří, zda soubor existuje bez ohledu na typ.
  • -f
    Tato možnost ověří, zda soubor existuje, pouze pokud je SOUBOR běžným souborem.

Měla by se zobrazit manuálová stránka testovacího příkazu, jak je uvedeno níže:

man test

Měla by se zobrazit následující obrazovka :

Vyzkoušejte, zda soubor existuje, pomocí příkazového řádku

V této části vám ukážeme jak zkontrolovat, zda soubor existuje pomocí příkazového řádku:

Spuštěním následujícího příkazu zkontrolujte, zda existuje soubor s názvem / etc / fstab (T rue):

test -f /etc/fstab

Dále spusťte následující příkaz a nastavte výstupní kód na 0 nebo 1, kdykoli bude test úspěšný, nebo ne.

echo $?

Výstup:

0

Výstup je 0, což znamená, že soubor / etc / fstab existuje.

Můžete také pomocí následujícího příkazu zkontrolujte, zda soubor existuje:


echo $0

Výstup:

0

Dále spusťte následující příkaz a otestujte, zda soubor / etc / fabab existuje ( False).

test -f /etc/fabab
echo $?

Výstup:

1

Výstup je 1, což znamená, že soubor / etc / fabab neexistuje.

Vy lze také otestovat, zda soubor s názvem /etc/rc.local existuje nebo nepoužívá podmíněné spuštění bash, jak je uvedeno níže:

test -f /etc/rc.local && echo "Exists" || echo "Not Exists"

Nebo

&& echo "Exists" || echo "Not Exists"

Pokud soubor s názvem /etc/rc.local existuje, měl by se zobrazit následující výstup:

Exists

Pomocí jediného příkazu můžete také zkontrolovat, zda existuje více souborů:

&& echo "both files exist"

Nebo

test -f /etc/passwd -a -f /etc/crontab && echo "both files exist"

Měli byste vidět následující výstup:

both files exist

Vyzkoušet, zda soubor existuje v Bashi

V této části vytvoříme bash skript a vytiskneme zprávu, zda soubor existuje nebo ne.

Umožňuje vytvořit soubor s názvem test.sh a zkontrolovat, zda soubor /etc/rc.local existuje nebo neexistuje:

nano test.sh

Přidejte následující řádky:

#!/bin/bash
FILE=/etc/rc.local
if ; then
echo "The file "$FILE" exists."
else
echo "The file "$FILE" is not exists."
fi

Uložte a zavřete soubor a poté spusťte skript pomocí následujícího příkazu:

bash test.sh

Měli byste vidět následující výstup:

The file "/etc/rc.local" exists.

Nyní vytvořme soubor test.sh a otestujeme, zda soubor / etc / rc.localad existuje z not:

nano test.sh

Přidejte následující řádky:

#!/bin/bash
FILE=/etc/rc.localad
if ; then
echo "The file "$FILE" exists."
else
echo "The file "$FILE" is not exists."
fi

Uložte a zavřete soubor a poté spusťte skript pomocí následujícího příkazu:

bash test.sh

Měli byste vidět následující výstup:

The file "/etc/rc.localad" is not exists.

Můžete také zjistit, zda soubor existuje nebo ne, a provést s ním nějakou akci v bash skriptu.

Například najděte soubor s názvem / etc / hosts a zkopírujte jej do adresáře / opt, pokud soubor existuje.

Chcete-li tak učinit, vytvořte soubor s názvem test.sh:

nano test.sh

Přidejte následující řádky:

FILE=/etc/hosts
if ; then
cp $FILE /opt
fi

Uložte a zavřete soubor a poté spusťte skript pomocí následujícího příkazu:

Nyní otestujte adresář / opt pomocí následujícího příkazu:

ls /opt/hosts

Soubor hostitelů byste měli vidět v následujícím výstupu:

/opt/hosts

Můžete také použít výraz! zkontrolovat, zda soubor neexistuje.

Například spuštěním následujícího příkazu zkontrolujte, zda soubor / etc / hosting neexistuje:

&& echo "File does not exist"

Nebo

test ! -f /etc/hosting && echo "File does not exist"

Měli byste vidět následující výstup:

File does not exist

Vyzkoušet, zda existuje adresář

Můžete také zjistit, zda adresář existuje nebo ne, pomocí volby -d.

Například zkontrolujte, zda existuje adresář / etc / apache2.

&& echo "Directory is exists"

Nebo

test -d /etc/apache2 && echo "Directory is exists"

Měli byste vidět následující výstup:

Directory is exists

Můžete také vytvořit bash skript s podmíněnými výrazy, abyste zkontrolovali, zda adresář existuje nebo ne.

Vytvořte soubor s názvem test.sh, jak je znázorněno níže:

nano test.sh

Přidejte následující řádky:

Po dokončení soubor uložte a zavřete. Poté udělejte správné povolení pomocí následujícího příkazu:

chmod 755 test.sh

Dále otestujte, zda je adresář / etc / nginx k dispozici nebo ne pomocí následujícího příkazu:

./test.sh /etc/nginx

Měli byste vidět následující výstup:

Directory /etc/nginx/ exists.

Dále otestujte, zda je adresář / etc / linux k dispozici nebo ne, pomocí následujícího příkazu:

./test.sh /etc/linux

Měli byste vidět následující výstup:

Directory /etc/linux does not exists

Operátoři testování souborů v Bash

Následující operátoři testování souborů vám pomohou zkontrolovat, zda „soubor“ existuje a má konkrétní typy:

  • -b
    SOUBOR existuje a je speciální blok
  • -c
    SOUBOR existuje a je speciální znak
  • -d
    SOUBOR existuje a je adresář
  • -e
    SOUBOR existuje
  • -f
    SOUBOR existuje a je běžným souborem
  • -g
    SOUBOR existuje a je set-group-ID
  • -G
    SOUBOR ex ists and is owned by the efficient group ID
  • -h
    FILE exists and is a symbolic link (same as -L)
  • -k
    SOUBOR existuje a má jeho lepkavá sada bitů
  • -L
    SOUBOR existuje a je symbolickým odkazem (stejný jako -h)
  • -O
    SOUBOR existuje a je ve vlastnictví účinného uživatele ID
  • -p
    SOUBOR existuje a je pojmenovaným kanálem
  • -r
    SOUBOR existuje a je uděleno oprávnění ke čtení
  • -s
    SOUBOR existuje a má velikost větší než nula
  • -S
    SOUBOR existuje a je soketem
  • -u
    SOUBOR existuje a jeho bit set-user-ID je nastaveno
  • -w
    SOUBOR existuje a je povoleno oprávnění k zápisu
  • -x
    SOUBOR existuje a oprávnění k provádění (nebo vyhledávání) je uděleno

Závěr

Leave a Reply

Napsat komentář

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