La syntaxe d' extension d'accolade accepte les virgules, mais elle n'accepte pas d'espace après la virgule. Dans de nombreux langages de programmation, les espaces après des virgules sont monnaie courante, mais pas ici. Dans Bash, la présence d'un espace sans guillemets empêche l'expansion de l'accolade.
Retirez l'espace, et cela fonctionnera:
cp ~/some/dir/{my-file-to-rename.bin,new-name-of-file.bin}
Bien que cela ne soit pas du tout requis, notez que vous pouvez déplacer la queue en .bin
dehors des accolades:
cp ~/some/dir/{my-file-to-rename,new-name-of-file}.bin
Si vous souhaitez tester l'effet de l'expansion de l'accolade, vous pouvez utiliser echo
ou printf '%s '
, ou printf
avec la chaîne de format que vous préférez, pour le faire. (Personnellement, je ne l'utilise que echo
pour cela, lorsque je suis dans Bash, car la fonction echo
intégrée de Bash ne développe pas les séquences d'échappement par défaut, et est donc raisonnablement bien adaptée pour vérifier quelle commande sera réellement exécutée.) Par exemple:
ek@Io:~$ echo cp ~/some/dir/{my-file-to-rename,new-name-of-file}.bin
cp /home/ek/some/dir/my-file-to-rename.bin /home/ek/some/dir/new-name-of-file.bin