Kon*_*ten 9 command-line bash syntax
免责声明。我是 Windows 的长期用户,并且刚刚开始了解 Linux 范式。虽然对此感到兴奋,但我明白我的配方可能由于无知而选择不当。
我收到了一个答案,其中的内容包括以下行,我需要帮助解释(经过一段时间的谷歌搜索,我有一个很好的猜测,但我想让它更可靠)。
curl -sL https://blabla | sudo -E bash -
Run Code Online (Sandbox Code Playgroud)
我知道我们首先创建对 URL blabla的 Web 调用,然后(这是弹出的管道魔术)执行具有管理员提升权限的命令以打开新的终端窗口实例。
但是,当我尝试消化该命令时,我了解到它等效于以下序列。
curl --silent --location https://blabla
sudo -E bash -
Run Code Online (Sandbox Code Playgroud)
问题1:正确理解吗?
进一步,我试图了解第二行的开关是什么,并使用如下语句。
man bash | sed -n '/-E/,+1p'
Run Code Online (Sandbox Code Playgroud)
但是,我真的看不出“ -E ”是什么的简写(它是--empty还是它--或者也许是--err)并被困在解释上。另外,我无法弄清楚单独的破折号字符的作用,我不确定如何使用上面的语句在手册中查找它。
问题 2:如何查找开关的详细语法?
问题3:没有开关的破折号是什么意思?
小智 12
管道命令 (|) 表示获取左侧命令的输出并将其作为输入传递给右侧命令。所以,你对什么的理解几乎是正确的
curl -sL https://blabla | sudo -E bash -
Run Code Online (Sandbox Code Playgroud)
做。您缺少的是捕获第一个命令的输出,并将其传递给第二个命令。您上面的内容需要类似于以下内容:
curl --silent --location https://blabla >/tmp/output
sudo -E bash - </tmp/output
Run Code Online (Sandbox Code Playgroud)
第二个命令末尾的破折号 (-) 只是告诉 bash 读入标准输入并处理它。所以,
sudo -E bash - </tmp/output
Run Code Online (Sandbox Code Playgroud)
相当于
sudo -E bash </tmp/output
Run Code Online (Sandbox Code Playgroud)
“-E”选项实际上与 sudo 相关联,而不是与 bash 相关联。运行命令:
man sudo
Run Code Online (Sandbox Code Playgroud)
表明 -E 保护环境。
希望这有助于为您澄清一些事情。
祝学习linux好运!:)
归档时间: |
|
查看次数: |
4740 次 |
最近记录: |