~ubuntu-branches/debian/sid/man-pages-it/sid

« back to all changes in this revision

Viewing changes to man7/glob.7

  • Committer: Bazaar Package Importer
  • Author(s): Francesco Tapparo
  • Date: 2001-04-01 15:40:28 UTC
  • Revision ID: james.westby@ubuntu.com-20010401154028-z6m3zeb44vbw7yhp
Tags: upstream-0.3.0
Import upstream version 0.3.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
.\" Copyright (c) 1998 Andries Brouwer
 
2
.\"
 
3
.\" This is free documentation; you can redistribute it and/or
 
4
.\" modify it under the terms of the GNU General Public License as
 
5
.\" published by the Free Software Foundation; either version 2 of
 
6
.\" the License, or (at your option) any later version.
 
7
.\"
 
8
.\" The GNU General Public License's references to "object code"
 
9
.\" and "executables" are to be interpreted as the output of any
 
10
.\" document formatting or typesetting system, including
 
11
.\" intermediate and printed output.
 
12
.\"
 
13
.\" This manual is distributed in the hope that it will be useful,
 
14
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
 
15
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
16
.\" GNU General Public License for more details.
 
17
.\"
 
18
.\" You should have received a copy of the GNU General Public
 
19
.\" License along with this manual; if not, write to the Free
 
20
.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
 
21
.\" USA.
 
22
.\"
 
23
..\" Traduzione by Ottavio G. Rizzo (otto@mast.queensu.ca)
 
24
.\" Luglio 1998
 
25
.TH GLOB 7 "12 giugno 1998" "Unix" "Linux Programmer's Manual"
 
26
.SH NOME
 
27
glob \- Globbare i percorsi dei file
 
28
.SH DESCRIZIONE
 
29
Molto tempo fa, in Unix V6, c'era un programma
 
30
.I /etc/glob
 
31
che espandeva i modelli di metacaretteri. 
 
32
Poco dopo divenne parte della shell.
 
33
 
 
34
Al giorno d'oggi c'� pure una routine di libreria
 
35
.BR glob (3)
 
36
per svolgere un simile compito a vantaggio dei programmi utenti.
 
37
 
 
38
Le regole sono le seguenti (POSIX 1003.2, 3.13).
 
39
.SH "CORRISPONDENZE DI METACARATTERI"
 
40
Una stringa � un modello di metacaratteri se contiene uno dei caratteri
 
41
`?', `*' o `['. Globbare � l'operazione che espande un modello di
 
42
metacaratteri in un elenco di percorsi che corrisponde al modello. Una
 
43
corrispondenza � definita da:
 
44
 
 
45
Un `?' (non fra parentesi) corrisponde ad un carattere singolo.
 
46
 
 
47
Un `*' (non fra parentesi) corrisponde a qualsiasi stringa, compresa
 
48
quella vuota.
 
49
 
 
50
.SS "Classi di Carattere"
 
51
Un'espressione della forma `[...]', dove il primo caratttere dopo la
 
52
`[' iniziale non � un `!', corrisponde ad un carattere singolo, cio� a
 
53
qualsiasi carattere fra quelli racchiusi tra le parentesi. La stringa
 
54
nelle parentesi non pu� essere vuota; perci� � possibile avere una `]'
 
55
fra parentesi, purch� essa sia il primo carattere (ad es., `[][!]'
 
56
corrisponde ai tre caratteri `[', `]' e `!').
 
57
 
 
58
.SS Serie
 
59
Una convenzione speciale:
 
60
due caratteri separati da un `-' indicano una serie
 
61
(ad es., `[A-Fa-f0-9]' equivale a `[ABCDEFabcdef0123456789]').
 
62
Si pu� includere un `-' col suo significato letterale ponendolo al
 
63
primo o all'ultimo posto fra le parentesi
 
64
(ad es. `[]-]' corrisponde solo ai due caratteri `]' e `-', mentre
 
65
`[--/]' corrisponde ai tre caratteri `-', `.', `/').
 
66
 
 
67
.SS Complementazione
 
68
Un espressione `[!...]' corrisponde ad un carattere singolo, cio� a
 
69
qualsiasi carattere cui non corrisponda l'espressione ottenuta
 
70
rimuovendo il `!' iniziale (per es.,  `[!]a-]' corrisponde a
 
71
qualsiasi carattere singolo eccetto `]', `a' e `-').
 
72
 
 
73
Si pu� togliere a  `?', `*' e `[' il loro significato speciale
 
74
precedendoli con uno backslash, o, nel caso l'espressione sia parte di
 
75
una riga di comando della shell, ponendola fra virgolette doppie. Fra
 
76
parentesi quadre questi caratteri hanno un significato letterale. Per
 
77
es.,  `[[?*\e]' corrisponde ai quattro caratteri `[', `?', `*' e `\e'.
 
78
 
 
79
.SH PERCORSI
 
80
Ogni componente di un percorso viene globbata separatamente. A uno '/'
 
81
di un percorso non pu� corrispondere una dei metacaratteri `?' o `*', n�
 
82
una serie come `[.-0]'. Una serie non pu� contenere uno '/' esplicito:
 
83
ci� risulterebbe in un errore di sintassi.
 
84
 
 
85
Se il nome di un file inizia con un `.', deve esserci una
 
86
corrispondenza esplicitamente per il `.'. Per es., `rm *' non rimuove
 
87
.profile, n� `tar c *' archivia tutti i file: `tar c .' � meglio.
 
88
 
 
89
.SH "LISTE VUOTE"
 
90
 
 
91
La chiara e semplice regola di pi� sopra: �espandere un modello di
 
92
metacaratteri in un elenco di percorsi che corrisponde al modello� era la
 
93
definizione originale di Unix. Permetteva modelli che si espandevano
 
94
in liste vuote, come in
 
95
.br
 
96
.nf
 
97
        xv -wait 0 *.gif *.jpg
 
98
.fi
 
99
quando, magari, non c'� nessun file *.gif (e questo non causa un
 
100
errore). D'altra parte, POSIX richiede che un modello di metacaratteri
 
101
non venga modificato se � sintatticamente sbagliato o se la lista dei
 
102
percorsi corrispondenti � vuota.
 
103
Con
 
104
.I bash
 
105
si pu� forzare il comportamento classico ponendo
 
106
IR allow_null_glob_expansion=true .
 
107
 
 
108
(Problemi simili accadono in altri posti. Per es., mentre script
 
109
vecchi usano
 
110
.br
 
111
.nf
 
112
        rm `find . -name "*~"`
 
113
.fi
 
114
per uno script nuovo  bisogna usare
 
115
.br
 
116
.nf
 
117
        rm -f  `find . -name "*~"`
 
118
.fi
 
119
per evitare messagi di errore di
 
120
.I rm
 
121
invocato con una lista vuota di argomenti)
 
122
 
 
123
.SH NOTE
 
124
.SS Espressioni regolari
 
125
Si noti che i modelli di metacaratteri non sono espressioni regolari, per
 
126
quanto si assomiglino. Prima di tutto, corrispondono a nomi di file
 
127
piuttosto che a testo, e poi, le convenzioni non sono le stesse: per
 
128
esempio, `*' in un'espressione regolare vuol dire zero o pi� copie
 
129
della cosa precedente.
 
130
 
 
131
Ora che le espressioni regolari usano espressioni fra parentesi quadre
 
132
in cui la negazione � indicata con un `^', POSIX ha dichiarato
 
133
indefinito l'effetto di un modello come `[^...]'.
 
134
 
 
135
.SS Classi di carattere e internazionalizzazione
 
136
Naturalmente le serie erano originariamente interpretate come serie
 
137
ASCII, per cui `[ -%]' stava per `[ !"#$%]' e `[a-z]' per �una
 
138
qualsiasi minuscola�.
 
139
Alcune implementazioni Unix hanno generalizzato questo comportamento
 
140
in modo tale che la serie X-Y denota l'insieme di caratteri i cui
 
141
codici sono compresi fra i codici di X e Y. D'altra parte, ci�
 
142
richiede che l'utente conosca la codifica usata sul sistema locale, e,
 
143
inoltre, non � comodo quando la sequenza di collazione per l'alfabeto
 
144
locale � diversa dall'ordine dei codici di carattere. Perci� POSIX ha
 
145
notevolmente esteso la notazione parentetica, sia per i modelli di
 
146
metacaratteri che per le espressioni regolari. Prima abbiamo visto tre tipi
 
147
di argomenti che possono apparire in un'espressione parentetica:
 
148
1. una negazione  2. un esplicito carattere singolo 3. una
 
149
serie. POSIX definisce le serie in un modo internazionalmente pi�
 
150
utile e aggiunge altri tre tipi:
 
151
 
 
152
4.