GNU/Linux >> Znalost Linux >  >> Linux

Jak zkontrolovat, zda soubor nebo adresář existuje v Bash

Úvod

V Linuxu existuje několik funkcí, které fungují pouze v případě, že určitý soubor nebo adresář existuje. Bash je shell, který interpretuje příkazy. Můžete použít a

V této příručce se dozvíte, jak pomocí příkazu bash zkontrolovat, zda soubor nebo adresář existuje.

Předpoklady

  • Operační systém Linux
  • Přístup do okna terminálu / příkazového řádku (Ctrl-Alt-T / Ctrl-Alt-F2)

Jak zkontrolovat, zda soubor existuje

Chcete-li otestovat soubor /tmp/test.log , zadejte z příkazového řádku následující:

test –f /tmp/test.txt

První řádek provede test, aby se zjistilo, zda soubor existuje. Druhý příkaz, echo , zobrazí výsledky 0, což znamená, že soubor existuje, 1 znamená, že nebyl nalezen žádný soubor.

echo $?

V našem příkladu byl výsledek 1.

Nyní zkuste vytvořit soubor a poté jej otestovat:

touch /tmp/test.txt
test –f /tmp/test.txt
echo $?

Protože jsme soubor vytvořili předem, výsledek je nyní 0:

Místo testu můžete také použít hranaté závorky příkaz:

[ –f /tmp/test.txt ]
echo $?

Jak zkontrolovat, zda adresář existuje

Chcete-li zkontrolovat, zda adresář existuje, vypněte –f možnost test příkaz pro –d (pro adresář):

test –d /tmp/test
echo $?

Vytvořte tento adresář a znovu spusťte test:

touch /tmp/test
test –d /tmp/test
echo $?

Tento příkaz funguje stejně jako pro soubory, takže místo testu použijete závorky příkaz funguje i zde.

Jak zkontrolovat, zda soubor neexistuje

Testování souboru obvykle vrátí 0 (true), pokud soubor existuje, a 1 (false), pokud soubor neexistuje. U některých operací možná budete chtít obrátit logiku. Je užitečné, když napíšete skript pro vytvoření konkrétního souboru, pouze pokud ještě neexistuje.

Chcete-li vytvořit soubor, pokud ještě neexistuje, zadejte na příkazový řádek následující:

[ ! –f /tmp/test.txt ] && touch /tmp/test.txt

Vykřičník ! znamená ne . Tento příkaz zajistí, že není soubor s názvem test.txt v /tmp adresář. Neuvidíte, že se něco stane.

Chcete-li zjistit, zda systém vytvořil soubor, zadejte následující:

ls /tmp

Měli byste vidět test.txt uvedeny. Pro adresář můžete použít podobný příkaz – nahraďte –f možnost s –d :

[ ! –d /tmp/test ] && touch /tmp/test 

Jak zkontrolovat více souborů

Chcete-li testovat dva soubory současně, použijte && možnost přidat druhý soubor:

[ -f /tmp/test.txt && -f /tmp/sample.txt ] && echo “Both files were found”

Chcete-li otestovat více souborů pomocí zástupného znaku, jako je hvězdička * pro různé znaky:

[ -f /tmp/*.jpg ] && echo “Files were found”

Jako obvykle, změna –f možnost –d umožňuje spustit stejný test pro více adresářů.

Operátoři testování souborů k nalezení konkrétních typů souborů

Zde je několik příkazů, které můžete otestovat, abyste našli konkrétní typy souborů:

  • -f – soubor
  • -d – adresář
  • L – symbolický odkaz
  • -r – čitelné
  • -x – spustitelný
  • w – zapisovatelný

K dispozici je mnoho dalších možností. Další možnosti naleznete na hlavní stránce (test ––help).

Práce s úryvky kódu

Předchozí příkazy fungují dobře pro jednoduchý dvouřádkový příkaz na příkazovém řádku. Můžete také použít bash s více příkazy. Když je několik příkazů spojeno dohromady, nazývají se skript .

skript se obvykle uloží jako soubor a spustí. Skriptování také používá logické operátory k testování podmínky a poté provádí akci na základě výsledků testu.

Chcete-li vytvořit soubor skriptu, použijte editor Nano k otevření nového souboru:

sudo nano bashtest.sh

Zadejte jeden z úryvků zespodu, včetně #!/bin/bash identifikátor. Použijte Ctrl-o uložte soubor a poté Ctrl-x k ukončení Nano. Poté spusťte skript zadáním:

bash bashtest.sh

Následující fragment kódu testuje přítomnost konkrétního souboru. Pokud soubor existuje, skript zobrazí Soubor existuje na obrazovce.

#!/bin/bash

if [ -f /tmp/test.txt ]

then

echo “File exists”

fi

Funguje to stejně, pokud hledáte adresář. Stačí nahradit –f možnost s –d :

#!/bin/bash

if [ -d /tmp/test ]

then 

echo “File exists”

fi

Tento příkaz zkontroluje adresář /tmp/test . Pokud existuje, systém zobrazí Soubor existuje .


Linux
  1. Zkontrolujte, zda v adresáři existuje určitý typ souboru/přípona

  2. Jak analyzovat soubor CSV v Bash?

  3. Jak zkontrolovat syslog v Bash na Linuxu?

  1. Jak zkontrolovat, zda je soubor prázdný v Bash?

  2. Jak získám absolutní adresář souboru v bash?

  3. Jak zkontrolovat, zda soubor existuje v konkrétním adresáři ve skriptu bash?

  1. Jak zkontrolovat syntaxi sudoers

  2. Jak zkontrolovat průběh běhu Cp?

  3. Bash:Žádný takový soubor nebo adresář?