zoukankan      html  css  js  c++  java
  • Shell 一键安装命令

    现在是懒人的天下,为了迎合用户的需求,很多开源软件或者包提供的安装步骤都非常简单,大家应该看到不少类似一键安装的命令。下面是几个典型的例子:

    # homebrew 安装
    $ ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
    
    # nvm 安装, 两种方法
    $ curl https://raw.githubusercontent.com/creationix/nvm/v0.8.0/install.sh | sh
    $ wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.8.0/install.sh | sh
    
    # rvm 安装
    $ curl -sSL https://get.rvm.io | bash -s stable
    wget -qO- https://get.rvm.io | bash -s -- arg1 arg2  # -- 表示 参数不做任何处理,bash -s 传参时, $#、$@获取不到正确的值。
    wget -qO- https://get.rvm.io | bash -x -s -- arg1 arg2  # -x 可以打印执行的情况,可以用于调试

    简单粗暴,CMD + C 再加 CMD + V,随手一个 Enter,就搞定了。

    那么这上面的原理是什么样子的呢?其实很简单。

    首先通过 curl 或者 wget 将安装脚本下载下来,将内容输出到标准输出。这一步对应上面的 curl -ssL 或者 wget -qO-,一定要注意将错误或者异常输出过滤掉,保证标准输出的内容就是脚本的内容。

    然后通过管道传递给 shell,shell 在没有指定脚本文件的时候,支持从标准输入读取脚本内容并解释执行。这样将"下载 - 保存 - 安装"这几步操作合到一个命令中完成。

    对于 rvm 的安装又有点特殊,安装脚本需要指定执行参数,bash -s stable 中 -s 之后的部分就是透传给安装脚本的参数,翻译下可以理解的形式是:

    $ curl -sSL https://get.rvm.io > /tmp/rvm_install.sh
    $ bash /tmp/rvm_install.sh stable
    $ rm -f /tmp/rvm_install.sh
    

    PS: curl 的用法,我在 终端下肉眼看不见的东西 曾经提到过。

    不过,建议执行类似一键安装的命令之前,一定要先大致看下安装脚本,避免里面有不安全的代码。

  • 相关阅读:
    系统吞吐量、TPS(QPS)、用户并发量、性能测试概念和公式[转]
    EF RepositoryBase 参考示例【转】
    Entity Framework 杂碎
    Oracle.ManagedDataAccessDTC.dll 使用
    c# http请求,获取非200时的响应体
    c# windows service(服务)
    git log
    解决冲突
    clone命令
    remote指令添加远程数据库
  • 原文地址:https://www.cnblogs.com/linkenpark/p/10153882.html
Copyright © 2011-2022 走看看