2011-08-19 48 views
7

我要讓當前日期到一個目錄的標題中/home/chris/Downloads使用mkdirdate -I在bash中製作一個日期目錄的標題?

我試圖 的mkdir「日期-I」 這讓我的文件夾名爲「日期-I」沒有引號它給人的錯誤

mkdir: invalid option -- 'I' 

試圖使它變下一

date= date -I 
mkdir -p $date 

-p選項,它看起來不錯,但經過​​檢查,該文件夾沒有創建。 去除-p得到我的錯誤

mkdir: cannot create directory `/home/chris/Downloads/': File exists 

,甚至將其指向整個路徑

date= date -I 
mkdir "/home/chris/Downloads/$date" 

讓我相同的錯誤之前

這並不是說變量是空的,我贊同'它和價值是我應該期望的,它似乎是該值在創建目錄之前不被替換。怎樣才能解決這個問題?我正在運行Ubuntu 11.04(Natty Narwhal),如果這給你更多的信息。

+0

該解決方案不需要設置'$ date'變量,但是您的語法是關閉的,而不僅僅是因爲缺少反引號或$(...)。在變量賦值中,在'='之前或之後不能有空格。 'date = date -I'將'$ date'設置爲空字符串,然後運行'date -I'。它就像'date = foobar date -I',只是'$ date'被設置爲空字符串而不是'foobar'。正確的語法是'date = $(date -I)'。 –

回答

12

你的語法是錯誤的:

mkdir -p /home/chris/downloads/$(date -I) 

mkdir -p /home/chris/downloads/`date -I` 

將工作

+3

+1。雖然作爲習慣,我會建議圍繞shell變量擴展引用:'mkdir -p/tmp /「$(date -I)」'。 '日期'無關緊要,但對於其他命令它可以。 'mkdir -p/tmp/$(echo foo bar)'沒有達到你所期望的。 – Nemo

+1

由於所有的POSIX shell都支持''()'',所以它們可以嵌套,與反引號不同,並且更易於閱讀。 – jw013

3

使用此:反引號運行命令,而不是打印出來。

mkdir `date -I` 
0

也可以嘗試xargs的(但是,不知道這是否是一個很好的做法)

date -I | xargs mkdir 
相關問題