File: glob.7

package info (click to toggle)
manpages-pt 20011020-2
  • links: PTS
  • area: main
  • in suites: woody
  • size: 3,052 kB
  • ctags: 5
  • sloc: makefile: 49
file content (188 lines) | stat: -rw-r--r-- 7,639 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
.\" -*- nroff -*-
.\" Copyright (c) 1998 Andries Brouwer
.\"
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\"
.\" The GNU General Public License's references to "object code"
.\" and "executables" are to be interpreted as the output of any
.\" document formatting or typesetting system, including
.\" intermediate and printed output.
.\"
.\" This manual is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public
.\" License along with this manual; if not, write to the Free
.\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
.\" USA.
.\"
.TH GLOB 7 "12/06/1998" "Unix" "Manual do Programador Linux"
.SH NOME
glob \- Caminhos de diretrios de englobamento
.SH DESCRIO
Muito tempo atrs, no Unix V6, havia um programa
.I /etc/glob
que poderia expandir os padres de coringas.
Logo em seguida, isso se tornaria embutido no interpretador de comandos.

Nos dias de hoje, tambm h uma rotina de biblioteca
.BR glob (3)
que realizar esta funo para um programa de usurio.

As regras so as que seguem (POSIX 1003.2, 3.13).
.SH "CASAMENTO DE CORINGAS"
Uma cadeia de caracteres  um padro de coringas se contiver um
ou mais caracteres `?', `*' ou `['. Englobamento  a operao
que expande um padro de coringas para uma lista de nomes de caminhos
que casam com o padro. Casamento  definido por:

Um `?' (no entre colchetes) casa com qualquer caractere unitrio.

Um `*' (no entre colchetes) casa com qualquer string,
incluindo uma cadeia de caracteres  vazia.

.SS "Classes de caracteres"
Uma expresso `[...]' onde o primeiro caractere depois do
primeiro `[' no  um `!' que casa com um caractere unitrio,
desde que seja um dos caracteres de dentro dos colchetes.
A string cercada pelos colchetes no pode estar vazia:
portanto `]'  um caractere permitido entre os colchetes,
desde que seja o primeiro caractere. Portanto, `[][!]' casa
com os trs caracteres `[', `]' e `!'.)

.SS Faixas
H uma conveno especial:
dois caracteres separados por `-' denotam uma faixa.
(Portanto, `[A-Fa-f0-9]'  equivalente a  `[ABCDEFabcdef0123456789]'.)
 possvel incluir `-' com seu significado literal ao coloc-lo em
primeiro ou em ltimo entre os caracteres dentro dos colchetes.
(Portanto, `[]-]' casa apenas com os dois caracteres `]' e `-',
e `[--/]' casa com os trs caracteres `-', `.', `/'.)

.SS Complementao
Uma expresso `[!...]' casa com um caractere unitrio, desde que
seja um caractere no presente na expresso obtida
pela remoo do primeiro `!'.
(Portanto, `[!]a-]' casa com qualquer caractere unitrio, exceto `]', `a' e `-'.)

 possvel remover o significado especial de `?', `*' e `['
precedendo-os por uma barra invertida, ou, caso seja parte de
uma linha de comando do shell, cercando-os com aspas. 
Entre colchetes, estes caracteres respondem por eles mesmos.
Portanto, `[[?*\e]' casa com os quatro caracteres `[', `?', `*' e `\e'.

.SH NOMES DE CAMINHOS
Englobamento  a aplicao de cada um dos componentes de um nome de
caminho separadamente. Um `/' em um nome de caminho no pode casar com um coringa `?' ou `*',
ou com uma faixa como `[.-0]'. Uma faixa no pode conter um caractere `/'
explcito; isto levaria a um erro de sintaxe.

Se um nome de arquivo comea com um `.', este caractere deve ser casado explicitamente.
(Portanto, `rm *' no remover .profile, e `tar c *' no
arquivar todos os seus arquivos: `tar c .'  melhor.)

.SH "LISTAS VAZIAS"
A bela e simples regra dada acima: `expanda um padro de coringas na lista
de caminhos de diretrio de casamento' foi a definio padro do
Unix. Ela permite padres que se expandam para
uma lista vazia, como em 
.br
.nf
	xv -wait 0 *.gif *.jpg
.fi
onde talvez nenhum arquivo *.gif esteja presente (e isto no 
um erro).
Porm, o POSIX requer que um padro de coringas seja deixado
inalterado quando estiver sintaticamente incorreto, ou a lista
de nomes de caminhos esteja vazia.
Com
.I bash
pode-se forar o comportamento clssico, setando-se
.IR allow_null_glob_expansion=true .

(Problemas similares ocorrem em toda a parte. Por exemplo, onde h em scripts antigos
.br
.nf
	rm `find . -name "*~"`
.fi
os novos scripts requerem
.br
.nf
	rm -f nosuchfile `find . -name "*~"`
.fi
para evitar mensagens de erro de
.I rm
chamado com uma lista de argumentos vazia.)

.SH NOTAS
.SS Expresses regulares
Note que padres de coringas no so expresses regulares,
apesar de que so um pouco similares. Primeiramente, eles casam com
nomes de arquivos em vez de texto, e em segundo lugar, as convenes
no so as mesmas: por exemplo, em uma expresso regular `*' significa zero ou
mais cpias da coisa precedente.

Agora que as expresses regulares tm expresses com colchetes, onde
a negao  indicada por um `^', o POSIX declarou que o
efeito de um padro de coringa `[^...]'  indefinido.

.SS Classes de caracteres e Internationalizao
Obviamente, faixas significavam originalmente as faixas ASCII,
de forma que `[ -%]' significa `[ !"#$%]' e `[a-z]' significa
"qualquer letra minscula".
Algumas implementaes Unix generalizaram isso, de tal forma que que uma
faixa X-Y significa o conjunto de caracteres com cdigo entre o cdigo
de X e o de Y. Porm, isso requer que o usurio saiba o
cdigo do caractere em uso no sistema local, e alm disso, no 
conveniente se a seqncia de conferncia para o alfabeto local
difere da ordenao dos cdigos de caractere.
Portanto, POSIX estendeu grandemente a notao de colchetes,
tanto nos padres de coringas quanto nas expresses regulares.
Anteriormente, ns vimos trs tipos de itens que podem ocorrer em uma
expresso em colchetes: (i) a negao, (ii) caracteres unitrios
explicitados e (iii) faixas. POSIX especifica faixas de uma forma
internacionalmente mais til, e acrescenta mais trs tipos:

(iv) Faixas X-Y compreendem todos os caractees que caem entre X
e Y (inclusive) na seqncia de conferncia corrente, como definido
pela categoria LC_COLLATE no locale corrente.

(iv) Classes nomeadas de caracteres, como
.br
.nf
[:alnum:]  [:alpha:]  [:blank:]  [:cntrl:]
[:digit:]  [:graph:]  [:lower:]  [:print:]
[:punct:]  [:space:]  [:upper:]  [:xdigit:]
.fi
, de forma que se pode dizer `[[:lower:]]' (minsculo) em vez de `[a-z]',
e funciona na Dinamarca tambm, onde h trs letras depois do `z' no
alfabeto.
Essas classes de caracteres so definidas pela categoria LC_CTYPE
na localizao atual.

(v) Smbolos de conferncia, como `[.ch.]' ou `[.a-acute.]',
onde a string entre `[.' e `.]'  um elemento de conferncia
definido na localizao atual. Note que este pode ser um
elemento multi-caractere.

(vi) Expresses de classes de equivalncia, como `[=a=]',
onde a string entre `[=' e `=]'  um elemento de conferncia
qualquer da sua classe de equivalncia, como  definido no
locale corrente. Por exemplo, `[[=a=]]' deve ser equivalente
a `[a]' (cuidado: Latin-1 aqui), ou seja,
a `[a[.a-acute.][.a-grave.][.a-umlaut.][.a-circumflex.]]'.

.SH "VEJA TAMBM"
.BR sh (1),
.BR glob (3),
.BR fnmatch (3),
.BR locale (7),
.BR regex (7)
.SH TRADUZIDO POR LDP-BR em 21/08/2000.
\&\fR\&\f(CWRubens de Jesus Nogueira <darkseid99@usa.net> (traduo)\fR
\&\fR\&\f(CWAndr L. Fassone Canova <lonelywolf@blv.com.br> (reviso)\fR