cp foo.txt {,.backup.`date`}
Це розширюється на щось подібне cp foo.txt .backup.Thu Oct 17 01:02:03 GMT 2013
. Пробіл перед дужками починає нове слово.
cp foo.txt {,.backup. $((date)) }
Дужки складаються окремими словами, тому їх інтерпретують буквально. Крім того, $((…))
є синтаксисом арифметичного розширення; вихід з date
арифметичного виразу. Підстановка команд використовує один набір дужок: $(date)
.
cp foo.txt foo.backup.`date`
Ближче. Ви могли це виразити дужками як cp foo.{txt,.backup.`date`}
. Існує проблема, що вихід date
містить пробіли, тому його потрібно поставити всередині подвійних лапок. Це спрацювало б:
cp foo.{txt,backup."`date`"}
або
cp foo.{txt,backup."$(date)"}
Формат виводу за замовчуванням date
не добре підходить до імені файлу, і він може навіть не працювати, якщо в локалі використовуються /
символи у вихідному форматі за замовчуванням. Використовуйте формат дати YMD, щоб лексикографічний порядок імен файлів був хронологічним порядком (а також щоб уникнути неоднозначності між американськими та міжнародними форматами дат).
cp foo.{txt,backup."$(date +%Y%m%d-%H%M%S)"}