PowerShell in Azure Cloud Shell GA | Azure Friday
Obsah:
- Zkontrolujte, zda soubor existuje
- Zkontrolujte, zda adresář existuje
- Zkontrolujte, zda soubor neexistuje
- Zkontrolujte, zda existuje více souborů
- Operátoři testu souborů
- Závěr
Při psaní skriptů Shell se mnohokrát ocitnete v situaci, kdy je třeba provést akci na základě toho, zda soubor existuje nebo ne.
V Bash můžete pomocí příkazu test zkontrolovat, zda soubor existuje, a určit typ souboru.
Příkaz test má jednu z následujících forem syntaxe:
Zkontrolujte, zda soubor existuje
Při kontrole, zda soubor existuje, jsou nejčastěji používanými operátory FILE
-e
a
-f
. První zkontroluje, zda soubor existuje bez ohledu na typ, zatímco druhý vrátí true pouze v případě, že FILE je běžný soubor (nikoli adresář nebo zařízení).
Nejčitelnější možností při kontrole, zda soubor existuje nebo ne, je použít příkaz test v kombinaci s příkazem if. Kterýkoli z úryvků níže zkontroluje, zda existuje soubor
/etc/resolv.conf
:
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
Pokud chcete provést jinou akci na základě toho, zda soubor existuje nebo ne, jednoduše použijte konstrukci if / then:
FILE=/etc/resolv.conf if; then echo "$FILE exist" else echo "$FILE does not exist" fi
Vždy používejte dvojité uvozovky, abyste se vyhnuli problémům se soubory, které v jejich názvech obsahují mezery.
Příkaz test můžete také použít bez příkazu if. Příkaz po operátoru
&&
bude proveden pouze tehdy, je-li stav ukončení testovacího příkazu pravdivý,
test -f /etc/resolv.conf && echo "$FILE exist"
&& echo "$FILE exist"
] && echo "$FILE exist"
&& { echo "$FILE exist"; cp "$FILE" /tmp/; }
Naproti
&&
, prohlášení po
||
operátor bude proveden, pouze pokud je výstupní stav testovacího příkazu
false
.
&& echo "$FILE exist" || echo "$FILE does not exist"
Zkontrolujte, zda adresář existuje
Operátoři
-d
vám umožňují otestovat, zda je soubor adresářem nebo ne.
Například pro kontrolu, zda existuje adresář
/etc/docker
, byste použili:
FILE=/etc/docker if; then echo "$FILE is a directory" fi
&& echo "$FILE is a directory"
Můžete také použít dvojité závorky
, 'linuxize_com-medrectangle-4', 'ezslot_7', 160, '0', '0']));
Zkontrolujte, zda soubor neexistuje
Podobně jako v mnoha jiných jazycích lze testovací výraz negovat pomocí
!
(vykřičník) logicky není operátor:
FILE=/etc/docker if; then echo "$FILE does not exist" fi
Stejné jako výše:
&& echo "$FILE does not exist"
Zkontrolujte, zda existuje více souborů
Namísto použití složitých vnořených, pokud / else konstrukty můžete použít
-a
(nebo
&&
with
; then echo "$FILE is a directory" fi
FILE=/etc/docker if; then echo "$FILE is a directory" fi
Ekvivalentní varianty bez použití příkazu IF:
&& echo "both files exist"
Operátoři testu souborů
Příkaz test obsahuje následující operátory SOUBORU, které vám umožňují testovat konkrétní typy souborů:
-
-b
FILE
- Pravda, pokud existuje SOUBOR a jedná se o speciální soubor bloku.-c
FILE
- Pravda, pokud FILE existuje a je souborem speciálních znaků.-d
FILE
- Pravda, pokud FILE existuje a je adresářem.-e
FILE
- Pravda, pokud FILE existuje a je souborem, bez ohledu na typ (uzel, adresář, soket atd.).-f
FILE
- Pravda, pokud existuje SOUBOR a jedná se o běžný soubor (nikoli adresář nebo zařízení).-G
FILE
- Pravda, pokud FILE existuje a má stejnou skupinu jako uživatel, který příkaz spouští.-h
FILE
- Pravda, pokud FILE existuje a je symbolickým odkazem.-g
FILE
- Pravda, pokud FILE existuje a má nastaven příznak set-group-id (sgid).-k
FILE
- Pravda, pokud FILE existuje a má nastavený příznak lepkavého bitu.-L
FILE
- Pravda, pokud FILE existuje a je symbolickým odkazem.-O
FILE
- Pravda, pokud FILE existuje a je vlastněn uživatelem spouštějícím příkaz.-p
FILE
- Pravda, pokud existuje SOUBOR a jedná se o potrubí.-r
FILE
- Pravda, pokud FILE existuje a je čitelný.-S
FILE
- Pravda, pokud FILE existuje a je soket.-s
FILE
- Pravda, pokud FILE existuje a má nenulovou velikost.-u
FILE
- Pravda, pokud je nastaven příznak existující a nastavený uživatel-id (suid).-w
FILE
- Pravda, pokud FILE existuje a je zapisovatelný.-x
FILE
- Pravda, pokud FILE existuje a je spustitelný.
Závěr
V této příručce jsme vám ukázali, jak zkontrolovat, zda existuje soubor nebo adresář pomocí Bash.
bash terminálKaspersky Whitelist: Zkontrolujte, zda je soubor bezpečný nebo ne
Kaspersky Whitelist je v podstatě databáze, která ukládá informace o různých souborech.
Jak zkontrolovat, zda řetězec obsahuje podřetězec v bash
Jednou z nejčastějších operací při práci s řetězci v Bash je zjistit, zda řetězec obsahuje jiný řetězec. V tomto článku vám ukážeme několik způsobů, jak zkontrolovat, zda řetězec obsahuje podřetězec.
Jak zkontrolovat, zda v pythonu existuje soubor nebo adresář
Při psaní skriptů Pythonu můžete chtít provést určitou akci, pouze pokud soubor nebo adresář existuje nebo ne. Můžete například chtít číst nebo zapisovat data do konfiguračního souboru nebo vytvořit soubor, pouze pokud již neexistuje.