Синтаксис расширения скобок допускает запятые, но не допускает пробел после запятой. Во многих языках программирования пробелы после запятых являются обычным явлением, но не здесь. В Bash наличие пробела без кавычек препятствует раскрытию скобок.
Уберите пробел и все заработает:
cp ~/some/dir/{my-file-to-rename.bin,new-name-of-file.bin}
Хотя это и не обязательно, обратите внимание, что вы можете переместить конечный .bin
за фигурные скобки:
cp ~/some/dir/{my-file-to-rename,new-name-of-file}.bin
Если вы хотите проверить эффект расширения фигурных скобок, вы можете использовать echo
, printf '%s '
илиprintf
с любой строкой формата, которую вы предпочитаете, чтобы сделать это. (Лично я просто использую echo
для этого, когда работаю в Bash, потому что встроенная команда echo
Bash по умолчанию не расширяет escape-последовательности и, таким образом, достаточно хорошо подходит для проверки того, какая команда на самом деле будет работать. )Например:
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