Workstation online OnWorks Linux e Windows

Logo

Hosting online gratuito per workstation

<Precedenti | Contenuti | Succ.>

Espressioni di file

Per valutare lo stato dei file vengono utilizzate le seguenti espressioni:


Tabella 27-1: espressioni del file di test


L'espressione è vera se:

L'espressione è vera se:

file1 -ef file2 file1 e file2 hanno gli stessi numeri di inode (i due

i nomi dei file fanno riferimento allo stesso file tramite collegamento fisico).


Immagine

file1 -nt file2 file1 è più recente di file2.


Immagine

file1 -o file2 file1 è più vecchio di file2.


Immagine

-b filetto filetto esiste ed è un file (dispositivo) a blocchi speciali.


Immagine

-c filetto filetto esiste ed è un file (dispositivo) speciale per i caratteri.


Immagine

-d filetto filetto esiste ed è una directory.


Immagine

-e filetto filetto esiste.


Immagine

-f filetto filetto esiste ed è un file normale.


Immagine

-g filetto filetto esiste ed è set-group-ID.


Immagine

-G filetto filetto esiste ed è di proprietà dell'ID gruppo effettivo.


Immagine

-k filetto filetto esiste e ha il suo set di "bit appiccicosi".


Immagine


Immagine

-L filetto filetto esiste ed è un collegamento simbolico.


Immagine

-O filetto filetto esiste ed è di proprietà dell'ID utente effettivo.


Immagine

-p filetto filetto esiste ed è una pipe denominata.


Immagine

-r filetto filetto esiste ed è leggibile (ha l'autorizzazione di lettura per l'utente effettivo).


Immagine

-s filetto filetto esiste e ha una lunghezza maggiore di zero.


Immagine

-S filetto filetto esiste ed è un socket di rete.


Immagine

-t fd fd è un descrittore di file diretto da/verso il terminale. Può essere utilizzato per determinare se l'input/output/errore standard viene reindirizzato.


Immagine

-u filetto filetto esiste ed è setuid.


Immagine

-w filetto filetto esiste ed è scrivibile (ha il permesso di scrittura per l'utente effettivo).


Immagine

-x filetto filetto esiste ed è eseguibile (ha l'autorizzazione di esecuzione/ricerca per l'utente effettivo).


Immagine


Ecco uno script che mostra alcune delle espressioni dei file:



#! / Bin / bash


# test-file: Valuta lo stato di un file FILE=~/.bashrc

se [ -e "$FILE" ]; allora

se [ -f "$FILE" ]; allora

echo "$FILE è un file normale."

fi

se [ -d "$FILE" ]; allora

echo "$FILE è una directory."

fi

se [ -r "$FILE" ]; allora

echo "$FILE è leggibile."

fi

se [ -w "$FILE" ]; allora

echo "$FILE è scrivibile."

fi

se [ -x "$FILE" ]; allora

echo "$FILE è eseguibile/ricercabile."

#! / Bin / bash


# test-file: Valuta lo stato di un file FILE=~/.bashrc

se [ -e "$FILE" ]; allora

se [ -f "$FILE" ]; allora

echo "$FILE è un file normale."

fi

se [ -d "$FILE" ]; allora

echo "$FILE è una directory."

fi

se [ -r "$FILE" ]; allora

echo "$FILE è leggibile."

fi

se [ -w "$FILE" ]; allora

echo "$FILE è scrivibile."

fi

se [ -x "$FILE" ]; allora

echo "$FILE è eseguibile/ricercabile."


per altro

echo "$FILE non esiste" exit 1

fi


exit

per altro

echo "$FILE non esiste" exit 1

fi


exit


Lo script valuta il file assegnato alla costante RISORSE e visualizza i risultati durante la valutazione. Ci sono due cose interessanti da notare su questo script. Innanzitutto, nota come il parametro $FILE è citato all'interno delle espressioni. Questo non è necessario per completare sintatticamente l'espressione, ma è piuttosto una difesa contro il fatto che il parametro sia vuoto. Se l'espansione del parametro di $FILE Se restituisse un valore vuoto, si verificherebbe un errore (gli operatori verrebbero interpretati come stringhe non nulle anziché come operatori). L'utilizzo delle virgolette attorno al parametro garantisce che l'operatore sia sempre seguito da una stringa, anche se la stringa è vuota. In secondo luogo, si noti la presenza di exit comando verso la fine dello script. Il exit Il comando accetta un singolo argomento facoltativo, che diventa lo stato di uscita dello script. Quando non viene passato alcun argomento, lo stato di uscita predefinito è lo stato di uscita dell'ultimo comando eseguito. Utilizzando exit in questo modo consente allo script di indicare il fallimento se $FILE si espande al nome di un file inesistente. Il exit Il comando che appare sull'ultima riga dello script è presente solo come formalità. Quando uno script "esce dalla fine" (raggiunge la fine del file), termina con lo stato di uscita dell'ultimo comando eseguito.

Allo stesso modo, le funzioni shell possono restituire uno stato di uscita includendo un argomento intero al ritorno comando. Se dovessimo convertire lo script sopra in una funzione shell per includerlo in un programma più grande, potremmo sostituire exit comandi con ritorno affermazioni e ottenere il comportamento desiderato:



file_di_prova () {


# test-file: Valuta lo stato di un file FILE=~/.bashrc

se [ -e "$FILE" ]; allora

se [ -f "$FILE" ]; allora

echo "$FILE è un file normale."

fi

se [ -d "$FILE" ]; allora

echo "$FILE è una directory."

fi

se [ -r "$FILE" ]; allora

file_di_prova () {


# test-file: Valuta lo stato di un file FILE=~/.bashrc

se [ -e "$FILE" ]; allora

se [ -f "$FILE" ]; allora

echo "$FILE è un file normale."

fi

se [ -d "$FILE" ]; allora

echo "$FILE è una directory."

fi

se [ -r "$FILE" ]; allora


echo "$FILE è leggibile."

fi

se [ -w "$FILE" ]; allora

echo "$FILE è scrivibile."

fi

se [ -x "$FILE" ]; allora

echo "$FILE è eseguibile/ricercabile."

fi

altro

echo "$FILE non esiste" return 1

fi


}

echo "$FILE è leggibile."

fi

se [ -w "$FILE" ]; allora

echo "$FILE è scrivibile."

fi

se [ -x "$FILE" ]; allora

echo "$FILE è eseguibile/ricercabile."

fi

altro

echo "$FILE non esiste" return 1

fi


}


Il miglior sistema operativo cloud computing su OnWorks: