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 的用法,我在 终端下肉眼看不见的东西 曾经提到过。
不过,建议执行类似一键安装的命令之前,一定要先大致看下安装脚本,避免里面有不安全的代码。
Shell 一键安装命令的更多相关文章
- linux安装mysql(shell一键安装)
1. 相关文件(install_mysql.sh.my.cnf.mysqld相关内容在文中最后面) 2. 将上面的文件上传到linux服务器某一目录下 3.给install_mysql.sh赋执行权限 ...
- zabbix agent shell一键安装脚本
#!/bin/bash basepath=$(cd ``; pwd) SHELL_DIR="${basepath}/shell" PACKAGE_DIR="${basep ...
- 转:CentOS/Debian/Ubuntu一键安装LAMP(Apache/MySQL/PHP)环境
CentOS/Debian/Ubuntu一键安装LAMP(Apache/MySQL/PHP) 今天遇到一个网友提到需要在Linux VPS服务器中安装LAMP(Apache/MySQL/PHP)网站环 ...
- (转)流量加速插件 FinalSpeed介绍及一键安装教程
原文章连接:https://blog.kuoruan.com/82.html 1 介绍 官方介绍:FinalSpeed是高速双边加速软件,可加速所有基于tcp协议的网络服务,在高丢包和高延迟环境下,仍 ...
- lnmp环境一键安装
lnmp一键安装命令: wget -c http://soft.vpser.net/lnmp/lnmp1.5.tar.gz && tar zxf lnmp1.5.tar.gz & ...
- centos shell编程5 LANMP一键安装脚本 lamp sed lnmp 变量和字符串比较不能用-eq cat > /usr/local/apache2/htdocs/index.php <<EOF重定向 shell的变量和函数命名不能有横杠 平台可以用arch命令,获取是i686还是x86_64 curl 下载 第三十九节课
centos shell编程5 LANMP一键安装脚本 lamp sed lnmp 变量和字符串比较不能用-eq cat > /usr/local/apache2/htdocs/ind ...
- openstack pike 单机 一键安装 shell
#openstack pike 单机 centos 一键安装 shell #openstack pike 集群高可用 安装部署 汇总 http://www.cnblogs.com/elvi/p/7 ...
- 使用 shell 脚本实现 LANMP 一键安装
使用 shell 脚本来实现 LANMP 系统的一键安装.使用的操作系统是 CentOS 6 ,不区分 32 位和 64 位,要求机器可以连通互联网.支持 LAMP 和 LNMP ,MySQL 支持 ...
- Centos 6.4上面用Shell脚本一键安装vsftpd
Centos 6.4上面用Shell脚本一键安装vsftpd install.sh #!/bin/bash if [ `uname -m` == "x86_64" ];then m ...
随机推荐
- 缓存一致性协议 mesi
m : modified e : exlusive s : shared i : invalid 四种状态的转换略过,现在讨论为什么有了这个协议,i++在多线程上还不是安全的. 两个cpu A B同时 ...
- 51nod1009
给定一个十进制正整数N,写下从1开始,到N的所有正数,计算出其中出现所有1的个数. 例如:n = 12,包含了5个1.1,10,12共包含3个1,11包含2个1,总共5个1. Input 输入N( ...
- L325 如何睡觉
Getting enough shut-eye is one of life’s biggest challenges. It’s recommended that the average perso ...
- django面试三
1.Django. Flask.Tornado框架的比较? Django: 对于django,大而全的框架它的内部组件比较多,内部提供:ORM.Admin.中间件.Form.ModelForm.Ses ...
- Fedora 10编程开发工具
1请问Fedora 10编程开发工具有什么 编辑器就用vim,编译用gcc,当然个人爱好随意 IDE的话推荐eclipse,如果做C/C++的,用codeblocks也是个不错的选择 输入gcc -v ...
- JAVA_全局配置文件(配置网址,url等等)_第二种方式
@ComponentScan主要就是定义扫描的路径从中找出标识了需要装配的类自动装配到spring的bean容器中 1.application-local.yml 配置文件 2.Service 3. ...
- REST是什么?
REST -- REpresentational State Transfer 直接翻译:表现层状态转移. @Ivony 老师的一句话概括很精辟: 用URL定位资源,用HTTP动词(GET,POS ...
- ecshop常见sql注入修复(转)
ecshop系统部署在阿里云服务器上,阿里云提示Web-CMS漏洞: 修复方法如下: 0. /good.php 大概在第80行 $goods_id = $_REQUEST['id']; 修改为 $go ...
- Pytorch加载模型推荐的方法
https://stackoverflow.com/questions/42703500/best-way-to-save-a-trained-model-in-pytorch
- [LeetCode&Python] Problem 206. Reverse Linked List
Reverse a singly linked list. Example: Input: 1->2->3->4->5->NULL Output: 5->4-> ...