当cp成功时,echo string into file失败

时间:2015-12-30 13:19:11

标签: bash sudo io-redirection cp

OS: Ubunutu 14.04

在/ home / ubuntu目录中,我创建了以下脚本:

echo >000-default.conf.test
sudo cp 000-default.conf.test /etc/apache2/sites-enabled/000-default.conf.test
sudo echo 'this is a test'>> /etc/apache2/sites-enabled/000-default.conf.test
sudo cat /etc/apache2/sites-enabled/000-default.conf.test

当我运行脚本时,收到以下错误消息:

./test_f.sh: line 3: /etc/apache2/sites-enabled/000-default.conf.test: Permission denied

当复制操作成功时,我收到错误消息的任何想法?

1 个答案:

答案 0 :(得分:2)

不确定

将输出重定向到文件由shell完成,而不是由sudo完成。因此,如果shell在非特权用户下运行,则>>的调用早于sudo获取权限。

您可以使用以下方法:

echo >000-default.conf.test
sudo cp 000-default.conf.test /etc/apache2/sites-enabled/000-default.conf.test
echo 'this is a test' | sudo tee -a /etc/apache2/sites-enabled/000-default.conf.test >/dev/null
sudo cat /etc/apache2/sites-enabled/000-default.conf.test

顺便说一句,而不是

echo >000-default.conf.test

你可以使用

touch 000-default.conf.test

甚至

>000-default.conf.test