Как объединить две строки в Bash без использования переменных? - PullRequest
2 голосов
/ 05 февраля 2012

Я пытаюсь скопировать большой каталог, и я хотел бы, чтобы выходной файл содержал дату. Вот что у меня есть.

tar -zcvf "mywebsite website backup" $(date "+%Y-%m-%d %T") public_html

Это не совсем работает, хотя. Как пример, я пытаюсь получить единственную строку ниже, чтобы быть именем файла. Вызов на сегодняшний день работает нормально, и мне не нужна помощь с этим, но я не уверен, как объединить «резервную копию моего веб-сайта» с выходными данными даты без предварительного сохранения их в переменных (что, кажется, не имеет значения).

mywebsite website backup 2001-12-01 12:04:03

Ответы [ 2 ]

4 голосов
/ 05 февраля 2012

Переменные и т.п. интерпретируются в двойных кавычках (но не в одинарных кавычках):

tar -zcvf "mywebsite website backup $(date '+%Y-%m-%d %T').tgz" public_html

(я добавил суффикс .tgz, вы, очевидно, забыли.)

Если выне было пробела в имени файла, вы могли бы сделать это без кавычек:

tar -zcvf foo_backup_$(date '+%Y-%m-%d_%T').tgz foo/

Или вы могли бы перевернуть его и использовать тот факт, что date уже принимает строку формата:

tar -zcvf $(date +'foo_backup_%Y-%m-%d_%T.tgz') foo/

(Все еще нужны двойные кавычки вокруг $(), если имя файла содержит пробел.)

Примечание: по разным причинам обычно не рекомендуется включать двоеточия в имена файлов.

1 голос
/ 05 февраля 2012

Вы также можете попробовать синтаксис:

tar -zcvf "mywebsite website backup `date \"+%Y-%m-%d %T\"`.tgz" public_html
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...