2012-02-05 48 views
2

我試圖tar一個大目錄,我想輸出文件包含日期。這是迄今爲止我所擁有的。如何在Bash中連接兩個字符串而不使用變量?

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

雖然這並不完美。作爲一個例子,我試圖讓下面的單個字符串成爲文件名。迄今爲止的調用工作正常,我不需要幫助,但我不知道如何將「我的網站備份」與日期輸出連接在一起,而無需先將它們存儲在變量中(這看起來很火。

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

回答

4

變量和如雙引號內解釋(而不是單引號):

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/ 

注:由於種種在文件名中包含冒號通常不是一個好主意。

+0

我想你列出的命令,並將其拋出此錯誤。只是說明這並不清楚$(date)是對date命令的調用,而不是一個變量。 tar(child):無法連接到mywebsite網站備份2012-02-05 09:解決失敗 – Jazzepi 2012-02-05 14:38:55

+1

@Jazzepi:冒號可能會給您的設置帶來問題(似乎被解釋爲網絡路徑)。使用另一種時間格式。這與你的原始問題無關。 – hop 2012-02-05 14:40:29

+0

是的,這似乎是問題所在。我沒有意識到你可以在字符串文字中進行$()調用。 – Jazzepi 2012-02-05 14:43:18

1

您也可以嘗試語法:

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

反引號不贊成使用'$()'。對格式字符串使用單引號會使轉義不必要。 – hop 2012-02-05 14:49:00

相關問題