从https://www.cyberciti.biz/faq/sudo-append-data-text-to-file-on-linux-unix-macos/ 中看到的
当我们想往root所属文件中添加内容时,你可能会写出这样的语句
sudo echo '192.168.1.254 route' >> /etc/hosts
然而,这种写法是错误的,它的意思是执行sudo命令,然后将sudo命令的结果添加到/etc/hosts中.
所以,当你用非root用户执行上一语句时,会提示 bash: /etc/hosts: Permission denied
.
正确的做法是为sudo命令使用tee命令或者shell本身:
- 使用tee命令
echo '192.168.1.254 router' | sudo tee -a /etc/hosts
- 使用shell本身
sudo sh -c 'echo "192.168.1.254 router" >> /etc/hosts'