set -f
é o caminho portátil (ou seja, POSIX) para desabilitar a expansão de nomes de arquivos.
Quando ativada (por padrão ou com set +f
), a expansão de nome de arquivo é uma operação executada pelo shell que substitui, quando possível, argumentos de linha de comando que contêm:
- ocorrências de curingas (
?
= qualquer caractere único e*
= qualquer número de caracteres) - intervalos entre colchetes (por exemplo,
[a-z12]
= qualquer caractere dea
az
ou1
ou2
) - listas não correspondentes (por exemplo,
[^a-z]
= qualquer caractere que não esteja no intervaloa
toz
) - e classes de caracteres (por exemplo,
[[:xdigit:]]
= qualquer caractere que possa ser usado para representar um número hexadecimal)
pelos nomes dos arquivos que correspondem a eles.
Quando desativado, esses argumentos permanecem inalterados.
$ pwd
/etc/samba
$ echo *
lmhosts smb.conf
$ echo *o??
smb.conf
$ set -f
$ echo *
*
$ echo *o??
*o??