带有 su 和 echo 的 Zsh 函数

use*_*327 3 zsh shell-script quoting

我正在尝试向.zshrc我的/etc/portage/package.use文件中添加一个函数,以便更轻松地向我的文件中添加新的 USE 标志。通常,我必须这样做

su -c 'echo "net-misc/aria2 bash-completion bittorrent" >> /etc/portage/package.use'
Run Code Online (Sandbox Code Playgroud)

所以我试着做一个像

new_use() {
    su -c 'echo "$1" >> /etc/portage/package.use'
}
Run Code Online (Sandbox Code Playgroud)

但后来我意识到这行不通。我想知道是否有办法让这个函数起作用,或者至少函数是否适合于此。顺便说一句,我不介意每次调用该函数时都必须输入 root 密码。

Chr*_*own 7

您可以将 stdin 提供给具有 root 权限的程序,如下所示:

new_use() {
    sudo tee -a /etc/portage/package.use <<< "$1" > /dev/null
}
Run Code Online (Sandbox Code Playgroud)