Resposta para a pergunta original
Why are square brackets preventing shell expansion
Os colchetes não impedem a expansão do shell, mas as cotações fazem.
Eu suspeito que os comandos que você executou foram os seguintes
Isso executa o md5sum nos arquivos em dir/
:
$ md5sum d[i]r/*
02fdd7309cef4d392383569bffabf24c dir/file1
db69ce7c59b11f752c33d70813ab5df6 dir/file2
Isso move dir
para d[i]r
com as aspas impedindo a expansão dos colchetes:
$ mv dir 'd[i]r'
Isso procura o diretório dir
que não existe mais:
$ md5sum d[i]r/*
d[i]r/*: No such file or directory
Por causa das aspas, a aparência a seguir está no novo diretório chamado d[i]r
:
$ md5sum 'd[i]r'/*
02fdd7309cef4d392383569bffabf24c d[i]r/file1
db69ce7c59b11f752c33d70813ab5df6 d[i]r/file2
Resposta para a pergunta revisada
Na pergunta revisada, o diretório 4800483343 existe e o seguinte comando é executado:
mv 4800483343 4800[48]3343
O que acontece quando este comando é executado depende se o glob 4800[48]3343
corresponde a qualquer diretório existente. Se nenhum diretório corresponder a isso, então 4800[48]3343
se expande para si mesmo 4800[48]3343
e o diretório 4800483343
é movido para o diretório 4800[48]3343
.
Consequentemente:
-
O comando
md5sum 4800[48]3343/*
retornará o erro "Nenhum arquivo ou diretório", porque não existe nenhum diretório que corresponda ao glob4800[48]3343
. -
O comando
md5sum '4800[48]3343'/*
localizará corretamente os arquivos porque as citações impedem a expansão do glob.
Exemplos de globs
Vamos criar dois arquivos:
$ touch a1b a2b
Agora, observe estes globs:
$ echo a[123]b
a1b a2b
$ echo a?b
a1b a2b
$ echo *b
a1b a2b