可以使用sudo
单个命令以超级用户权限运行它:
sudo echo "hi"
但是当我使用带有命令的管道时:
sudo echo "hi" > /a.txt
超级用户权限未扩展到管道(> /a.txt
)部分,并且我收到拒绝权限的错误:
bash:/a.txt:权限被拒绝
我的问题是:
sudo
是否存在一种语法可以让我扩展上面的范围,以便也能在管道部分工作?
答案1
在提升 root 权限的 shell 中运行该命令,然后你的 I/O 重定向也将以 root 身份完成:
sudo bash -c 'echo "hi" > /a.txt'
如果你不想创建子 shell 来执行此操作,可以使用以下解决方法tee
:
echo "hi" | sudo tee /a.txt > /dev/null
其他资源:
- 如何使用 sudo 将输出重定向到我没有权限写入的位置?
在 Stack Overflow 上