我有以下问题:在脚本中,必须以root身份执行,我必须在新创建的空文件中写一行。该文件位于/ etc中,因此我需要提升特权才能写入该文件。
创建文件很简单:
sudo touch /etc/myfile
现在,仅使用echo来像这样写入文件是行不通的...
sudo echo "something" > /etc/myfile
...因为仅命令(echo)的第一部分是使用sudo执行的,而不是重定向到文件中的。
以前我用过这样的东西...
sudo sed -i -e "\$aInsert this" /etc/differntfile
...添加到文件的末尾,这很有用,因为文件不是空的。但是由于sed是基于行的,所以它什么也没做,因此文件保持完全为空。
有什么建议?有什么办法可以通过回声来做到这一点吗?sed有什么特别的表达吗?我可以使用其他工具吗?
您可以使用tee
:
echo "something" | sudo tee /etc/myfile # tee -a to append
或者,/dev/null
如果不想看到输出,请重定向到:
echo "something" | sudo tee /etc/myfile > /dev/null
另一个选项是用于sh -c
在sudo下执行完整的命令:
sudo sh -c 'echo "something" > /etc/myfile'
关于使用sed
:我认为这是不可能的。由于sed
是流编辑器,因此如果没有流,则无法对其进行任何处理。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句