2014-09-11 157 views
2

設定日期和時間我試圖通過設置bash腳本 假的日期我使用下面的命令:通過Linux的bash腳本

#!/bin/bash 
echo 'myPass' | sudo -s 'date -s "1 NOV 2011 09:00:00"' 

但我發現了命令錯誤。 什麼是正確的做法?

+2

什麼是錯誤信息? – 2014-09-11 10:24:20

回答

-2

對於sudo,沒有短劃線的第一個參數是要執行的命令,下列參數是要給該命令的參數。如果將命令及其參數用引號括起來(例如"echo foo"),則sudo會嘗試使用參數「foo」執行命令「echo foo」而不是命令「echo」。因此,你需要省略最外層的引號:

sudo date -s "1 NOV 2011 09:00:00" 
+0

'sudo'的'-s'選項啓動一個shell,並將command參數傳遞給shell執行。 – chepner 2014-09-11 12:12:28

2

sudo默認情況下不從標準輸入讀取密碼,但是從終端本身,所以你不能管你的密碼進入sudo這種方式。您需要使用-S選項從標準輸入讀取。

echo "myPass" | sudo -S date -s "1 NOV 2011 09:00:00" 

(請注意,您不需要使用-s(小寫)選項; sudo可以在沒有開始介入殼直接運行date)。

然而,像這樣暴露您的密碼是安全風險。最好將sudo配置爲允許您(或任何打算運行此腳本的人)在沒有密碼的情況下運行 此特定的date命令。