免责声明。我是 Windows 的老用户,刚刚开始了解 Linux 范式。虽然我对此感到兴奋,但我明白由于无知,我的表述可能选择不当。
我收到了一个答案,其内容包括下面这一行,我需要帮助来解释(经过一段时间的谷歌搜索,我得到了一个很好的猜测,但我想让它更可靠)。
curl -sL https://blabla | sudo -E bash -
我知道我们首先要创建一个对 URL 的网络调用啦啦然后(这里弹出管道魔法)以管理员提升的权限执行命令来打开一个新的终端窗口实例。
然而,当我尝试消化该命令时,我发现它等同于以下序列。
curl --silent --location https://blabla
sudo -E bash -
问题 1:这样理解正确吗?
接下来,我尝试了解第二行的开关是什么,并使用如下语句。
man bash | sed -n '/-E/,+1p'
然而,我真的不明白“-E“是(是吗)的简写- 空的或者是--或者可能- 呃) 并陷入解释的泥潭。另外,我无法弄清楚单独的破折号字符的作用,也不确定如何使用上述语句在手册中查找它。
问题2:如何查找开关的详细语法?
问题 3:没有开关的破折号字符是什么意思?
答案1
管道命令 (|) 表示将左侧命令的输出作为右侧命令的输入。因此,你对以下内容的理解几乎是正确的:
curl -sL https://blabla | sudo -E bash -
确实如此。您缺少的是捕获第一个命令的输出,并将其传递到第二个命令中。您上面所拥有的内容需要类似于以下内容:
curl --silent --location https://blabla >/tmp/output
sudo -E bash - </tmp/output
第二条命令末尾的破折号 (-) 只是告诉 bash 读取标准输入并进行处理。因此,
sudo -E bash - </tmp/output
相当于
sudo -E bash </tmp/output
“-E”选项实际上与 sudo 相关,而不是与 bash 相关。运行以下命令:
man sudo
表明 -E 保留了环境。
希望这有助于您澄清一些事情。
祝你学习 Linux 顺利!:)