当 cp 成功时,将字符串回显到文件中失败
echo string into file fails when cp succeeds
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
复制操作成功时我收到错误消息的原因是什么?
当然可以。
将输出重定向到文件是由 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
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
复制操作成功时我收到错误消息的原因是什么?
当然可以。
将输出重定向到文件是由 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