Äîêóìåíò âçÿò èç êýøà ïîèñêîâîé ìàøèíû. Àäðåñ
îðèãèíàëüíîãî äîêóìåíòà
: http://www.arcetri.astro.it/irlab/doc/library/linux/AppLinux/al70.htm
Äàòà èçìåíåíèÿ: Tue Sep 21 18:08:37 1999 Äàòà èíäåêñèðîâàíèÿ: Sat Dec 22 13:21:45 2007 Êîäèðîâêà: |
Prima di poter gestire i file occorre saper amministrare i loro contenitori: le directory. Questo capitolo analizza i programmi attraverso i quali si possono gestire le directory e analizzare il loro contenuto.
La tabella 52.1 elenca i programmi a cui si accenna in questo capitolo.
Programma | Descrizione |
mkdir | Crea una directory. |
rmdir | Elimina una directory vuota. |
pwd | Emette il percorso della directory corrente. |
basename | Emette l'ultimo nome di un percorso. |
dirname | Emette il nome della directory estraendolo da un percorso. |
namei | Scompone un percorso alla ricerca di collegamenti troppo complessi. |
pathchk | Analizza un percorso alla ricerca di possibili errori. |
ls | Elenca il contenuto di una o piÛ directory. |
dircolors | Configura la colorazione di ls . |
file | Determina il tipo di file in base al magic number. |
du | Calcola lo spazio utilizzato da una serie di directory e sottodirectory. |
which | Determina quale eseguibile venga messo in esecuzione in modo predeterminato. |
whereis | Cerca di determinare la collocazione di un programma. |
La directory Õ un tipo speciale di file, il cui scopo Õ quello di contenere riferimenti ad altri file e ad altre directory. Detto in altri termini, la directory Õ un indice di file ed eventualmente di altri sottoindici.
I permessi attribuiti a una directory vanno interpretati in maniera particolare:
il permesso in lettura permette di conoscere il contenuto di una directory attraverso un programma come ls
o simile, senza il quale, la directory puÐ essere attraversata ugualmente;
il permesso in scrittura permette di modificarne il contenuto, cioÕ di aggiungere o eliminare file e altre directory;
il permesso in esecuzione permette il suo attraversamento, ovvero permette di raggiungere il suo contenuto o quello di altre directory discendenti.
mkdir [<opzioni>] <directory>... |
Crea una o piÛ directory. In mancanza di indicazioni gli attributi della nuova directory sono 777
meno i bit della maschera dei permessi. Il valore tipico di questa maschera Õ 022
e di conseguenza gli attributi normali di una nuova directory sono 755
, cosa che in pratica permette a tutti di accedere e leggerne il contenuto, ma concede solo al proprietario di modificarle.
|
Permette di definire esplicitamente i permessi attribuiti alle directory che vengono create. I permessi possono essere attribuiti in forma numerica o in forma simbolica. La sintassi della forma simbolica Õ descritta in occasione della presentazione del programma chmod
(
53.2.5).
|
Fa in modo che vengano create anche le directory precedenti se queste non sono presenti. In tal caso la modalitÞ utilizzata, per i permessi di queste directory precedenti, corrisponde a quanto stabilito per quella o quelle directory da creare con l'aggiunta (se necessario) dei permessi in scrittura ed esecuzione per l'utente proprietario. Infatti, sarebbe normalmente logico pensare che almeno al proprietario sia concesso di accedervi e di poterle modificare.
|
Emette un messaggio per ogni directory creata. õ particolarmente utile in abbinamento all'opzione
.
-
p
rmdir [<opzioni>] <directory>... |
Elimina le directory indicate, se sono vuote.
|
Elimina anche le directory precedenti se, dopo la cancellazione delle directory finali, queste restano vuote.
Il percorso o path Õ il modo con cui si identifica la posizione di un file o di una directory. File e directory vengono spesso indicati per nome facendo riferimento a una posizione sottintesa: la directory corrente (o attuale). File e directory possono essere indicati utilizzando un nome che comprende anche l'indicazione del percorso necessario a raggiungerli.
pwd [<opzioni>] |
pwd
(Print Working Directory) emette attraverso lo standard output il percorso completo della directory corrente. Viene mostrato il percorso reale, traducendo i collegamenti simbolici.
õ molto probabile che la shell utilizzata metta a disposizione un comando interno con lo stesso nome. Il funzionamento di questo comando potrebbe essere leggermente differente da quello del programma. |
basename <percorso> [<suffisso>] |
Estrae il nome di un file o di una directory da un percorso. In pratica: rimuove dal percorso la parte anteriore contenente l'informazione sulla directory, ed eventualmente, il suffisso indicato dalla parte finale del nome rimanente. Il risultato viene emesso attraverso lo standard output.
$
basename "/idrogeno/ossigeno"
[Invio]
ossigeno |
$
basename "/idrogeno/eliografia.sh" ".sh"
[Invio]
eliografia |
$
basename "/idrogeno/eliografia.sh" "grafia.sh"
[Invio]
elio |
dirname <percorso> |
Estrae la directory da un percorso. In pratica: rimuove dal percorso la parte finale a partire dall'ultima barra obliqua (/
) di divisione tra l'informazione della directory e il nome del file. Se il percorso contiene solo un nome di file, il risultato Õ un punto singolo (.
), cioÕ la directory corrente. Il risultato viene emesso attraverso lo standard output.
$
dirname "/idrogeno/ossigeno"
[Invio]
/idrogeno |
namei [<opzioni>] <percorso>... |
Scompone un percorso finchÈ raggiunge un punto terminale. In pratica vengono analizzati i percorsi forniti, ne viene scomposto e descritto il contenuto nelle varie (eventuali) sottodirectory, e infine, se tra gli elementi contenuti nei percorsi richiesti esistono dei collegamenti simbolici, viene visualizzato anche l'elemento di destinazione. Questo programma Õ particolarmente utile per seguire i collegamenti simbolici, soprattutto quando questi hanno troppi livelli, cioÕ quando un collegamento punta a un altro collegamento ecc. I vari elementi visualizzati sono preceduti da una lettera che ne descrive le caratteristiche:
f:
il percorso che si sta analizzando;
d
directory;
l
collegamento simbolico;
s
socket;
b
file di dispositivo a blocchi;
c
file di dispositivo a caratteri;
file normale;
-
?
errore.
$
namei /usr/bin/X11
Genera il risultato seguente:
f: /usr/bin/X11 d / d usr d bin l X11 -> ../X11R6/bin d .. d X11R6 d bin |
Da questo si intende che la directory /usr/bin/X11
in realtÞ non esiste, e che si tratta di un collegamento simbolico alla vera directory /usr/X11R6/bin/
.
pathchk [<opzioni>] [<percorso>...] |
Per ogni percorso indicato come argomento viene eseguita una verifica, e se necessario, viene emesso attraverso lo standard output un messaggio per informare di uno dei problemi seguenti:
una delle directory esistenti, indicate all'interno di uno dei percorsi, non ha il permesso di esecuzione necessario per essere attraversata;
la lunghezza totale di un percorso Õ maggiore di quella gestibile con quel tipo di filesystem;
la sola lunghezza di uno degli elementi di un percorso Õ maggiore di quella gestibile con quel tipo di filesystem.
|
Invece di eseguire un controllo in base alle possibilitÞ del filesystem effettivamente in funzione, il programma si basa sulle specifiche minime stabilite dallo standard POSIX.1 sulla portabilitÞ. Inoltre viene controllato che non siano usati caratteri che potrebbero creare problemi di portabilitÞ.
0
se tutti i percorsi hanno superato i controlli con successo;
1
in tutti gli altri casi.
$
pathchk
[Invio]-
p /home/perchÈ
path `/home/perchÈ' contains nonportable character `È' |
Quando a un programma devono essere passati uno o piÛ nomi di file tra gli argomenti, si utilizza il meccanismo del file globbing, attraverso il quale, con l'uso di simboli adatti, ci si riferisce a gruppi di file. La trasformazione del file globbing in elenchi di file (e directory) esistenti effettivamente, Õ compito della shell: Õ cioÕ qualcosa a cui gli altri programmi sono normalmente estranei. Nella sezione 42.3.8 viene trattato il modo con cui la shell Bash si comporta al riguardo.
Il contenuto di una directory viene analizzato normalmente attraverso il programma ls
. In particolare, ls
puÐ essere configurato in modo da colorare i nomi dei file in modo diverso a seconda del tipo di questi.
ls [<opzioni>] [<nome>...] |
Visualizza i nomi di file o il contenuto delle directory indicate. In mancanza di questa indicazione viene visualizzato il contenuto della directory corrente e di norma non vengono inclusi i nomi di file e directory il cui nome inizia con un punto: questi sono considerati nascosti. *1*
Il funzionamento predefinito di ls
dipende anche dalla configurazione fatta attraverso dircolors
. In generale, se non viene indicato diversamente, ls
genera un elenco ordinato per colonne se lo standard output Õ diretto allo schermo del terminale, oppure un elenco su un'unica colonna se viene diretto altrove. Questa particolaritÞ Õ molto importante per poter gestire l'output di questo programma attraverso elaborazioni successive.
|
Per ciÐ che Õ competenza di ls
, vengono elencati anche gli elementi i cui nomi iniziano con punto (i cosiddetti file nascosti).
|
Vengono elencati tutti gli elementi, esclusi i riferimenti alla directory corrente (.
) e a quella precedente (..
).
|
Oltre ai nomi, vengono visualizzati il tipo, i permessi, la quantitÞ di collegamenti fisici, il nome dell'utente proprietario, il nome del gruppo, la dimensione in byte, la data di modifica.
|
Utilizza il punto interrogativo per sostituire i caratteri non stampabili che dovessero essere contenuti eventualmente nei nomi.
|
Vengono elencati i contenuti di tutte le directory in modo ricorsivo.
|
Ordina il contenuto delle directory in funzione della data: dalla piÛ recente alla piÛ antica. Se non viene specificato diversamente, si fa riferimento alla data di modifica.
|
Utilizza la data di cambiamento dello stato dei file (ovvero la data di creazione, anche se questa definizione non Õ perfetta). Se viene usato il formato lungo di visualizzazione (
), viene indicata questa data; se l'opzione -
l
viene usata insieme a -
c
, l'elenco viene ordinato in base a questa data.
-
t
|
Utilizza la data di accesso ai file. Se viene usato il formato lungo di visualizzazione (
), viene indicata questa data; se l'opzione -
l
viene usata insieme a -
u
, l'elenco viene ordinato in base a questa data.
-
t
|
Quando l'elenco comprende l'indicazione della data, questa viene espressa in modo dettagliato.
|
Emette, alla sinistra delle indicazioni inerenti i file, il numero di inode.
|
Riordina in modo inverso rispetto al normale.
|
Esclude dall'elenco i file che terminano con il simbolo tilde (~
). Infatti, questo simbolo viene utilizzato normalmente per distinguere le copie di sicurezza delle versioni precedenti di file che hanno la stessa radice.
|
Emette un elenco organizzato in colonne, indipendentemente dalla destinazione dello standard output.
|
Se non Õ giÞ la modalitÞ di funzionamento predefinita, aggiunge un carattere alla fine dei nomi dei file, in modo da riconoscerne il tipo:
*
eseguibile;
/
directory;
@
collegamento simbolico;
|
pipe con nome o FIFO;
=
socket.
Gli altri file non hanno alcun simbolo.
|
Riordina in base alla dimensione in modo decrescente.
|
Riordina in base all'estensione, cioÕ alla parte di nome che appare dopo l'ultimo punto. I nomi che non contengono alcun punto hanno la precedenza.
|
Elenca i nomi, uno per ogni riga.
|
Utilizza la codifica ISO 8859 per visualizzare i caratteri. Normalmente, questa Õ la modalitÞ predefinita.
|
Definisce la larghezza a disposizione per l'elenco. L'argomento dell'opzione si riferisce al numero di caratteri utilizzabili. Di solito, la larghezza viene determinata in funzione del numero di colonne che ha a disposizione il terminale o la finestra del terminale.
|
Permette di escludere dall'elenco i file che sono rappresentati dal modello specificato, quando questi non sono indicati espressamente nella riga di comando.
Bisogna tenere presente che il modello in questione deve essere interpretato da |
$
ls
-
l
Visualizza un elenco lungo del contenuto della directory corrente.
$
ls
-
R /*/*/dir*
Cerca, a partire dal secondo livello dopo la directory radice, gli elementi che iniziano per dir
.
$
ls
-
I \*.html
Elenca il contenuto della directory corrente, escludendo i file corrispondenti al modello *.html
. La barra obliqua inversa davanti all'asterisco serve per richiedere alla shell di non espanderlo, e non viene passato a ls
.
eval `dircolors [<opzioni>] [<file>]` |
Configura la colorazione e le modalitÞ predefinite di funzionamento di ls
. Se non viene specificato il file di configurazione in modo esplicito, dircolors
cerca di utilizzare ~/.dir_colors
e in mancanza di questo /etc/DIR_COLORS
, che si riferisce alla configurazione generale del sistema dei colori per ls
.
dircolors
Õ fatto per essere avviato immediatamente dopo l'esecuzione di una shell, in quanto la configurazione si traduce nella creazione della variabile di ambiente LS_COLORS
, con la quale si possono definire degli alias di shell per attuare in pratica questa configurazione.
Per analizzarne il contenuto basta utilizzare il comando seguente:
$
echo "$LS_COLORS"
Si ottiene un record molto lungo. Di seguito appare un esempio di questo spezzato in piÛ parti per poterlo consultare.
no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01: cd=40;33;01:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32: *.bat=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31: *.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.jpg=01;35: *.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35: |
Con questa variabile si puÐ costruire un alias al programma ls
.
$
alias ls='/bin/ls
-
-
color'
In questo modo, l'alias ls
avvia il programma /bin/ls
con l'argomento
che attiva la gestione dei colori utilizzando il contenuto della variabile -
-
colorLS_COLORS
.
I dettagli sul funzionamento di dircolors
e sul modo con cui puÐ essere configurato si trovano in dircolors(1) e ls(1).
file [<opzioni>] <file>... |
Determina il tipo di file. Il programma analizza i file indicati come argomento e cerca di classificarli utilizzando il seguente ordine di analisi: filesystem, magic number, linguaggio.
Quando il programma analizza i file in base al cosiddetto magic number, utilizza le informazioni contenute all'interno di /usr/share/misc/magic
che in pratica contiene delle stringhe o delle sequenze binarie di riconoscimento.
du [<opzioni>] <file>... |
du
(Disk Usage) emette una sorta di statistica dell'utilizzo dello spazio da parte di un elenco di file o directory (in base al loro contenuto).
L'unitÞ di misura con cui si esprime questo spazio Õ in blocchi la cui dimensione cambia a seconda delle opzioni utilizzate oppure dalla presenza di una variabile di ambiente: POSIXLY_CORRECT
. Se esiste e non viene usata l'opzione
, fa sË che i blocchi siano di 512 byte come prevede per questo lo standard POSIX. Diversamente, il valore predefinito dei blocchi Õ di 1024 byte.
-
k
|
Emette il conteggio riferito a tutti i file, non solo alle directory.
|
Emette le dimensioni in byte e non in Kbyte.
|
Emette le dimensioni in Kbyte. Questa opzione fa riferimento all'unitÞ di misura predefinita, ma permette di fare ignorare a du
la presenza eventuale della variabile POSIXLY_CORRECT
.
|
Emette le dimensioni in Mbyte.
|
Aggiunge una lettera alla dimensione, in modo da chiarire il tipo di unitÞ di misura utilizzato.
|
Emette anche un totale generale finale.
|
Emette solo un totale per ogni argomento.
|
Emette la dimensione delle directory in modo separato, senza includere lo spazio utilizzato dalle sottodirectory.
|
Salta il conteggio delle directory che si trovano in un filesystem diverso da quello di partenza.
In linea di principio, per avviare un file eseguibile ci sarebbe bisogno di indicare precisamente il suo percorso. Per ovviare a questo inconveniente viene utilizzato un elenco di percorsi possibili all'interno dei quali devono essere cercati i file eseguibili che sono stati indicati semplicemente per nome. Questo elenco di percorsi Õ gestito dalla shell e normalmente viene contenuto nella variabile di ambiente PATH
.
Se si vuole poter avviare un eseguibile dalla directory corrente senza indicare il suo percorso (./
<programma>), occorre includere anche la directory corrente (.
) nell'elenco della variabile PATH
.
*2*
Tanto piÛ grande Õ il numero di directory contenuto nella variabile PATH
, tanto maggiore Õ il rischio di avviare eseguibili diversi da quelli desiderati. Molti file script standard hanno lo stesso nome e si distribuiscono in piÛ punti del filesystem. In questi casi conviene utilizzare l'indicazione del percorso per avviare esattamente quello che si vuole. Questa Õ la situazione tipica degli script di configurazione che si usano per preparare un applicativo prima della sua compilazione:
$
./configure
which <programma>... |
Simula la ricerca che farebbe la shell per avviare i programmi indicati negli argomenti e determina la posizione di quelli che verrebbero scelti. CiÐ Õ utile per sapere: sia dove si trova un comando determinato, sia quale programma viene scelto effettivamente nel caso ne esistano diversi con lo stesso nome collocati in posizioni differenti nell'albero di directory.
which
potrebbe non essere un programma vero e proprio, ma semplicemente un alias a un comando di shell. In effetti, which
compie lo stesso compito del comando type
della shell Bash (
45.38).
-
path
whereis [<opzioni>] <file>... |
Localizza i file binari, i sorgenti e le pagine di manuale dei file specificati nell'argomento.
Vedere whereis(1).
---------------------------
Appunti Linux 1999.09.21 --- Copyright © 1997-1999 Daniele Giacomini -- daniele @ pluto.linux.it
1.) õ importante ricordare che se vengono indicati dei nomi di file o directory nella riga di comando, Õ compito della shell espandere eventuali caratteri jolly. Di conseguenza, in questo caso, Õ la shell che non fornisce a ls
i nomi che iniziano con un punto.
2.) Per convenzione, e anche per motivi di sicurezza, si mette il punto che simboleggia la directory corrente alla fine della serie contenuta nella variabile PATH
.