如何在不使用变量的情况下连接Bash中的两个字符串



我正在尝试标记一个大目录,我希望输出文件包含日期。这是我迄今为止所拥有的。

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

不过这不太管用。举个例子,我试图将下面的单个字符串作为文件名。到目前为止,调用运行良好,我不需要帮助,但我不知道如何将"我的网站备份"与到目前为止的输出连接起来,而不首先将它们存储在变量中(这似乎很笨拙)。

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

变量等在双引号内(但不在单引号内)进行解释:

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/

(如果文件名包含空白,则$()周围仍需要双引号。)

注意:由于各种原因,在文件名中包含冒号通常不是一个好主意。

您也可以尝试语法:

tar -zcvf "mywebsite website backup `date "+%Y-%m-%d %T"`.tgz" public_html

最新更新