用于将数据传输到受保护文件的 Bash 函数

用于将数据传输到受保护文件的 Bash 函数

我想创建一个.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

相关内容