curl,sh,这些命令是什么意思?

curl,sh,这些命令是什么意思?

我一直在网上闲逛,看到了有关如何安装新文本编辑器 atom 的信息:

$ curl -sL https://packagecloud.io/AtomEditor/atom/gpgkey | sudo apt-key add -
$ sudo sh -c 'echo "deb [arch=amd64] https://packagecloud.io/AtomEditor/atom/any/ any main" > /etc/apt/sources.list.d/atom.list'

我只是想知道这些命令实际上在做什么。 做什么curl

我还读到sh有关运行一些 shell 实例的内容,但是对于什么来说,这个命令可以实现什么,它在这里具体做什么?

答案1

$ curl -sL https://packagecloud.io/AtomEditor/atom/gpgkey | sudo apt-key add -

这实际上是两个命令。

curl -sL https://packagecloud.io/AtomEditor/atom/gpgkey从 PackageCLoud 下载 Atom Editor 存储库的 GPG 密钥。

sudo apt-key add -将其添加apt以便它可以识别并验证包上的存储库 GPG 签名。


$ sudo sh -c 'echo "deb [arch=amd64] https://packagecloud.io/AtomEditor/atom/any/ any main" > /etc/apt/sources.list.d/atom.list'

如果我们将其分成三个组成部分会更容易。

sudo以超级用户身份执行sh命令。

sh -c表示执行shell中特定的命令sh

'echo "deb [arch=amd64] https://packagecloud.io/AtomEditor/atom/any/ any main" > /etc/apt/sources.list.d/atom.list'是正在运行的命令sh -c,它会创建单独的存储库条目,/etc/apt/sources.list.d/atom.list以便当您执行此操作时sudo apt update它会检查该存储库中的包数据。

答案2

卷曲

主页说,curl是一个

使用 URL 传输数据的命令行工具和库

非常简单,它允许您从(网络)服务器下载文件。

https://packagecloud.io/AtomEditor/atom/gpgkey您可以通过浏览器打开然后将显示的文件保存到磁盘来获得相同的结果。

上海

跑步sh 打开一个新的 shell。这里使用的方式是执行命令列表(通过标志-c新的具有root权限的shell(sudo部分)。

sh -c由于重定向 ( ),因此需要该部分> /etc/apt/sources.list.d/atom.list。由于文件/etc/apt/sources.list.d/atom.list需要 root 权限才能写入,因此您不能简单地执行sudo echo ... > file,因为重定向不会从该sudo部分“继承”权限。您必须将整个echo+>它包装在新的 shell 实例中。它在某种程度上等同于这些单独的步骤:

  1. sudo sh以 root 权限打开一个新的 shell;
  2. echo "deb [arch=amd64] https://packagecloud.io/AtomEditor/atom/any/ any main" > /etc/apt/sources.list.d/atom.list将新行写入文件atom.list
  3. exit返回到您的正常用户 shell。

答案3

对于初学者:

  1. sh (shell) 是一个命令解释程序。与 Bash 一样,“Bourne Again SHell” 是 GNU 项目的 shell。

  2. curl 或 cURL 是一个计算机软件项目,它提供了一个库和命令行工具,用于使用各种协议传输数据。cURL 项目生产两个产品,libcurl 和 cURL。它于 1997 年首次发布。名称代表“客户端 URL”。

相关内容