O shell expandirá os padrões de acordo com o nome do arquivo.
-
o primeiro formulário se expande para
abcdfg
(no e) e / ouabcefg
(no d) e nenhum arquivo existe, portanto o padrão é deixado sem expansão, e o comando é o que você pensa que é; efetivamente,mv -v "abcdefg" "abc[de]fg"
-
O segundo formulário se expande para
abcdefg
, e esse arquivo existe, então o padrão se expande para o nome do arquivo e, assim, o comando é, efetivamente,mv -v abcdefg abcdefg
Tente ver quando o padrão é mantido ou expandido.
touch abcdefg
ls -l abc[de]fg ; echo abc[de]fg
ls -l abc??fg ; echo abc??fg
ls -l abc?fg ; echo abc?fg
ls -l abc[d]efg ; echo abc[d]efg