cp foo.txt {,.backup.`date`}
To rozwija się do czegoś takiego cp foo.txt .backup.Thu Oct 17 01:02:03 GMT 2013
. Spacja przed nawiasami klamrowymi rozpoczyna nowe słowo.
cp foo.txt {,.backup. $((date)) }
Nawiasy klamrowe są osobnymi słowami, więc są interpretowane dosłownie. Ponadto $((…))
jest składnią interpretacji arytmetycznej; wynik date
jest niczym wyrażenie arytmetyczne. Zastąpienie polecenia wykorzystuje pojedynczy zestaw nawiasach: $(date)
.
cp foo.txt foo.backup.`date`
Bliższy. Mógłbyś to wyrazić za pomocą nawiasów klamrowych jako cp foo.{txt,.backup.`date`}
. Nadal występuje problem polegający na tym, że dane wyjściowe date
zawierają spacje, dlatego należy je umieścić w podwójnych cudzysłowach. To by działało:
cp foo.{txt,backup."`date`"}
lub
cp foo.{txt,backup."$(date)"}
Domyślny format wyjściowy date
nie jest dobrze dopasowany do nazwy pliku, a może nawet nie działać, jeśli ustawienia narodowe używają /
znaków w domyślnym formacie wyjściowym. Użyj formatu daty YMD, aby porządek leksykograficzny w nazwach plików był porządkiem chronologicznym (a także aby uniknąć niejednoznaczności między amerykańskimi i międzynarodowymi formatami dat).
cp foo.{txt,backup."$(date +%Y%m%d-%H%M%S)"}