用shell 自定义终端命令能干些啥?
你在工作中一定会遇到这样的情形:频繁的在终端敲一组命令(多个命令,只是为了实现某个作用),长此以往,你或许早也厌烦了这种状态,毕竟在这个追求效率的时代,我们想要摆脱这种状态、提升工作效率,对吧!
那么谁能让你脱离苦海呢?
自定义终端命令,这么说你可能还是没有一个直观的感受,那么先来看下图自定义终端命令update_m
的使用过程。
PS: update_m
是我在工作中自定义的一个终端命令。
如果没有定义这个命令的话,我要怎么做呢?
git add .
git commit -m "test"
git push origin develop
cd ../deploy_gems
git checkout develop
git pull
cd ../shop_pg
rake build
cp pkg/shop_pg-0.0.1.gem ../deploy_gems
cd ../deploy_gems
git add .
git commit -m "test"
git push origin develop
curl -u yyy:xxx@2000 http://up.test.yurl.vip/gem_update\?target_gem\=shop_pg
# 老老实实一步步在终端输入上面的命令
以一敌十有木有?是的,它可以帮你大大节省时间,这也是为什么我要写这篇的主要原因。
先来热个身
在具体开始定义快捷命令之前,我们先来热个身,先来认识下什么是shell?
下面是Linux 云服务器部署课程中的说法:
Shell 是指和电脑沟通的指令,这又分很多种,Unix 上常见使用 Bash Shell,Mac 也是默认用 Bash,但也有人推荐改用 Zsh 更为花俏。Windows 则是用 PowerShell。Shell 可以只当作是 Shell command 用,但也可以当作 Shell script 使用,就像编程语言一样。
简单点说就是:
1、shell 的作用在于解释我们输入到终端的命令,然后让电脑去做我们希望它做的事
2、shell 有许多种:如Bash、Power、Zsh(全栈营课程配置的都是这种)
好了,既然是热身,我们先试着自定义一个简单的命令吧!
step1
打开终端,执行
vim ~/.zshrc
按e打开zsh的定义文件
step2
键盘按i,进入insert模式,光标定义到适当位置后,复制下面代码:
say_hello() {
echo "hello world"
# 程序都是从hello world 开始,这里也从了这个惯例吧
}
然后保存离开(esc 然后 输入冒号(:) 然后输入wq)
Snip20180123_1.png
step3
更新下zsh命令,执行:
source ~/.zshrc
然后可以在终端中试下,刚刚我们定义的命令,终端输入:
say_hello
下图这样表示成功了:
自定义一个大家常会用到的
为了简化起见,便于理解,自定义一个大家常常会用到的一组命令,就下面的这组操作吧。
git add .
git commit -m "test"
git push origin develop
怎么写呢?
vi编辑器打开 ~/.zshrc
(具体方法不再赘述),写入下面的代码
# 姑且把它叫做update_m 用做更新分支并推到develop
update_b() {
git add .
git commit -m "test"
git push origin develop # 这里确保你的项目有develop分支
}
保存离开,回到终端,更新zsh source ~/.zshrc
随便找一个项目测试下,我们自定义的update_b
命令,正确执行后如下:
你可能会说这样就没法输commit信息了吗?让我们优化下代码
update_b() {
git add .
git commit -m $1 # $1 代表我们传入的第一个参数
git push origin develop # 这里确保你的项目有develop分支
}
执行后如下:
Snip20180124_4.png
再看一个连接远端机器的
这个是我工作中之前用到的一个,比前面介绍的都复杂,但很有用。
在~/.zshrc下,写入下面代码:
function debug1() {
echo "-----下面将切入到172.16.11.${1} puma.stderr.log😊 ,请耐心等待..." #欢迎语句
# 这里利用密码登录(不用手动输入密码)
sshpass -p "密码字符串" ssh -tt root@192.168.x.xxx << EOF
# 跳到第二台远端机器
ssh -tt devel
# 再跳到第三台远端机器
ssh 172.16.11.$1 #根据参数不同,切到不同机器
if [ $1 -eq 6 ]; then
# 如果第一个参数是6 则切到/var/log/manage
cd /var/log/manage
else
# 否则切到这个目录
cd /var/log/yeeshop
fi
# 追踪下面的日子文件 puma.stderr.log
tail -200f puma.stderr.log
EOF
}
PS: 这里在免密码登录时,需要利用sshpass
,这里有它的安装方式
最后
相信你看了这几个例子也基本明白如何去自定义一个自己的终端快捷命令了,如果你对bash 的语法感兴趣呢?又或者你定义命令时对一些语法不清楚。可以参考这里
另外,如果你在bash下(~/.bashrc)定义命令,和zsh下其实是一样的,更新的时候更新bash(source ~/.bashrc
)就ok啦!
博客原文地址:http://dmy-blog.logdown.com/posts/5204516-define-terminal-shortcut-commands-with-shell
网友评论