Jasin Yip

添加 Bash 自定义命令

今天看一个视频教程,看到视频中的老师用 subl . 命令,来用 Sublime Text 打开当前目录,还有用 Chrome index.html 命令,来用 Chrome 打开 index.html,真是酷炫!一开始没查到资料,上 Segmentfault 提问,别人给了个关键词 alias,自行查了下资料,将这酷炫的方法实现了。

alias 命令

alias 命令简单来说,就是将一些复杂繁琐的命令,简化成自定义的命令。语法如下:

  • 查看当前的自定义命令列表
  • 添加一条自定义命令:alias {自定义指令名}='{具体指令}'
  • 删除一条自定义命令:unalias {自定义指令名}

举个例子:
在 Bash 中清屏的命令是 clear,如果我想用 clr 去代替,那么我就写 alias clr='clear'
这时用 alias 可以看到刚才添加的自定义命令 clr='clear'
执行 clr,成功清屏了,意味着命令执行成功。

输入参数

如果光光是去代替固定的命令,那就没什么意思啦,不过我们可以引入参数:

  • $@ 表示一个参数,命令中可以添加多个 $@,使用时按顺序输入。

实现 subl、chrome 命令

我使用的是 Windows 系统,Sublime Text 的路径是 G:\Program Files\Sublime Text 2\sublime_text.exe

输入命令:alias sulb='"\G\Program Files\Sublime Text 2\sublime_text.exe" $@'

现在,我们可以使用 sulb . 来打开当前目录了!

当然,chrome 命令同理。

实现 web 命令,用以 localhost 打开指定文件(或目录)

由于使用 php 较多,所以经常会使用到 http://localhost/来打开 php 文件。这个时候上面的 chrome 就不能愉快地使用了。

由于 php 文件夹是固定的,我将所有项目都存放在这个 php 的目录中,路径是 E:\www\,所以如果我要执行 E:\www\hello\index.php 的话,访问地址应该为 http://localhost/hello/index.php
访问地址与实际目录的区别就是 hello 前面那一个字符串,将之替换就好。

不过我使用的是另外的一个更简单方法,那就是先获取当前目录名,然后在前面添加 http://localhost 就好。

我们会用到 $PWD 来获取当前路径,以及用 Shell 的字符串截取指令(相关资料:Linux shell脚本的字符串截取)来获得最后一个 / 之后的字符串。

于是我们得到这样的一个东西:${PWD##*www/}

最后,使用 alias 命令:

alias web='"F:\Program Files\Chrome\Application\chrome.exe" "http://localhost/${PWD##*/}/$@"'

现在来使用 web 命令,就可以打开当前的目录所对应的访问地址了,如果后面添加参数的话,就可以打开指定的文件了~

重启后继续使用的方法

实际上,直接在命令行里使用 alias,仅仅可以应用于当前的会话,为了下次启动时不需要重新再写,我们应该把它写到 ~/.bashrc 里。

  1. 使用 vim 打开 .bashrc
    vim ~/.bashrc
  1. 直接在里面添加你需要的 alias 命令,比如 alias hi='echo hi'
  2. 保存,完成~

新技能 get 吧?哈哈

标签:linux, bash, shell

已有 4 条评论

  1. zakasyu zakasyu

    用自定义命令打开sublime后 发现命令行一直是挂起的,一旦按快捷键ctrl+c ,被打开的sublime text就会被关闭,这个怎么解决 啊? 大兄弟,你有解决方法吗?

    1. 在命令最后加一个&就可以让程序在后台执行,之后可以用kill杀死命令就关闭了

  2. Secan Secan

    alias好像在Windows下无法使用,请问你是怎么在Windows下实现alias的,需要安装什么软件,还是需要脚本什么的?

    1. Windows 下我使用的是 Git Bash,所以是可以支持的。原生的 CMD 和 PowerShell 都不好用,而且我习惯了 Linux 的命令行,所以没用原生的。

添加新评论