Come eseguire comandi del terminale da Python 2 - by NiktorTheNat
Sommario:
- Controlla se il file esiste
- Controlla se Directory esiste
- Controlla se il file non esiste
- Controlla se esistono più file
- Operatori di test dei file
- Conclusione
Molte volte durante la scrittura di script Shell, è possibile trovarsi in una situazione in cui è necessario eseguire un'azione in base all'esistenza o meno di un file.
In Bash, è possibile utilizzare il comando test per verificare l'esistenza di un file e determinare il tipo di file.
Il comando test utilizza una delle seguenti forme di sintassi:
Controlla se il file esiste
Quando si controlla se esiste un file, gli operatori FILE più comunemente usati sono
-e
e
-f
. Il primo verificherà se esiste un file indipendentemente dal tipo, mentre il secondo tornerà vero solo se il FILE è un file normale (non una directory o un dispositivo).
L'opzione più leggibile quando si controlla se esiste o meno un file è utilizzare il comando test in combinazione con l'istruzione if. Uno dei seguenti frammenti verificherà l'esistenza del file
/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
Se si desidera eseguire un'azione diversa in base all'esistenza o meno del file, utilizzare semplicemente il costrutto if / then:
FILE=/etc/resolv.conf if; then echo "$FILE exist" else echo "$FILE does not exist" fi
Utilizzare sempre virgolette doppie per evitare problemi quando si tratta di file contenenti spazi bianchi nei loro nomi.
È inoltre possibile utilizzare il comando test senza l'istruzione if. Il comando dopo l'operatore
&&
verrà eseguito solo se lo stato di uscita del comando test è vero,
test -f /etc/resolv.conf && echo "$FILE exist"
&& echo "$FILE exist"
] && echo "$FILE exist"
&& { echo "$FILE exist"; cp "$FILE" /tmp/; }
Di fronte a
&&
, la dichiarazione dopo il
||
l'operatore verrà eseguito solo se lo stato di uscita del comando test è
false
.
&& echo "$FILE exist" || echo "$FILE does not exist"
Controlla se Directory esiste
L'operatore
-d
consente di verificare se un file è una directory o meno.
Ad esempio per verificare se esiste la directory
/etc/docker
dovresti usare:
FILE=/etc/docker if; then echo "$FILE is a directory" fi
&& echo "$FILE is a directory"
Puoi anche usare le parentesi doppie
, 'linuxize_com-medrectangle-4', 'ezslot_7', 160, '0', '0']));
Controlla se il file non esiste
Simile a molte altre lingue, l'espressione test può essere negata usando
!
(punto esclamativo) logico non operatore:
FILE=/etc/docker if; then echo "$FILE does not exist" fi
Come sopra:
&& echo "$FILE does not exist"
Controlla se esistono più file
Invece di usare complicati costrutti if / else nidificati puoi usare
-a
(o
&&
con
; then echo "$FILE is a directory" fi
FILE=/etc/docker if; then echo "$FILE is a directory" fi
Varianti equivalenti senza usare l'istruzione IF:
&& echo "both files exist"
Operatori di test dei file
Il comando test include i seguenti operatori FILE che consentono di verificare determinati tipi di file:
-
-b
FILE
- Vero se il FILE esiste ed è un file speciale a blocchi.-c
FILE
- Vero se il FILE esiste ed è un file di caratteri speciali.-d
FILE
- Vero se il FILE esiste ed è una directory.-e
FILE
- Vero se il FILE esiste ed è un file, indipendentemente dal tipo (nodo, directory, socket, ecc.).-f
FILE
- Vero se il FILE esiste ed è un file normale (non una directory o un dispositivo).-G
FILE
- Vero se il FILE esiste e ha lo stesso gruppo dell'utente che esegue il comando.-h
FILE
- Vero se il FILE esiste ed è un collegamento simbolico.-g
FILE
- Vero se il FILE esiste e ha impostato il flag set-group-id (sgid).-k
FILE
- Vero se il FILE esiste e ha un flag di bit appiccicoso impostato.-L
FILE
- Vero se il FILE esiste ed è un collegamento simbolico.-O
FILE
- Vero se il FILE esiste ed è di proprietà dell'utente che esegue il comando.-p
FILE
- Vero se il FILE esiste ed è una pipe.-r
FILE
- Vero se il FILE esiste ed è leggibile.-S
FILE
- Vero se il FILE esiste ed è socket.-s
FILE
- Vero se il FILE esiste e ha dimensioni diverse da zero.-u
FILE
- Vero se il flag esiste e set-user-id (suid) è impostato.-w
FILE
- Vero se il FILE esiste ed è scrivibile.-x
FILE
- Vero se il FILE esiste ed è eseguibile.
Conclusione
In questa guida, ti abbiamo mostrato come verificare se esiste un file o una directory usando Bash.
bash terminalL'omosessualità "Non esiste" in Star Wars
Star Wars Lo sviluppatore MMO di Old Republic blocca discussioni che parlano dell'omosessualità e delle relazioni tra persone dello stesso sesso in forum di gioco, dice "non esistono" nei miti.
Come verificare se una stringa contiene una sottostringa in bash
Una delle operazioni più comuni quando si lavora con stringhe in Bash è determinare se una stringa contiene o meno un'altra stringa. In questo articolo, ti mostreremo diversi modi per verificare se una stringa contiene una sottostringa.
Come verificare se esiste un file o una directory in Python
Quando si scrivono script Python, è possibile che si desideri eseguire una determinata azione solo se esiste un file o una directory. Ad esempio, potresti voler leggere o scrivere dati in un file di configurazione o creare il file solo se non esiste già.