【发布时间】:2021-08-10 23:13:07
【问题描述】:
我想要做的是将参数传递给第二个程序,它需要 cmdline-args 并使用 sudo 打开,但与我传递给 sudo 的 stdin 没有任何关系。
下面是一个例子来理解我想要做什么。
echo "mypass" | sudo -S nvim "filename"
这里 sudo 必须采用标准输入,nvim 必须采用 cmdline-arg 的文件名。但是 nvim 打开一个未命名的文件并将标准输入放入该文件,甚至不关心我传递给它的参数。
我的最终目标不是只打开文件而不输入密码,而是了解如何以我想要的方式传递参数
有可能吗?
【问题讨论】:
-
我不明白。你为什么不
echo "mypass" | sudo -S nvim "$1"?还有,顺便问一下,你知道sudoedit吗? -
@mumboFromAvnotaklu : AFIK,
sudo不从标准输入读取。 -
@user1934428 我也是这么想的。因为我不知道 OP 使用的
-S选项,所以我查看了手册,上面写着:“-S, --stdin 将提示写入标准错误并从标准输入中读取密码而不是使用终端设备。”你知道这是什么意思吗? -
sudo在大多数系统上肯定会从stdin读取,但不是密码。echo date|sudo su将读取stdin以获取以 root 身份执行和运行date的命令。不过,-S选项可以。 -
“正确”的做法是忽略
-S,并配置sudo让您在没有密码的情况下运行nvim filename。
标签: bash sudo cmdline-args