我想创建一个.bashrc
函数来简化将数据传递到写保护文件的过程。
function pipe {
sudo bash -c "$1"
}
不幸的是命令
pipe echo something > /etc/importantfile
仍然显示许可被拒绝。我应该如何修复它?
答案1
您可能想将所有内容作为一个参数传递:
function pipe {
sudo bash -c "$@"
}
pipe 'echo something > /etc/importantfile'
答案2
这是由于 > 被外壳解释了。正在运行的命令不知道重定向,因此它无法将其作为参数传递给函数。换句话说: > 在sudo
运行之前就已经执行了。
你可以做的是使用一个名为 save 的命令:
save() {
sudo tee "$@" >/dev/null
}
echo something | save /etc/importantfile