2014-09-11 147 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命令。