Bash & ZSH 带有参数的别名

341 阅读1分钟

如果你像我一样,你的别名中没有空格。它们都是单字的,像这样:

alias gs="git status"
alias gd="git diff "

几天前,我开始学习Elixir和Phoenix,意识到Phoenixiex -S mixmix phx.server 这样的命令。我来自Ruby on Rails,我想我太习惯于rails crails s ,所以我想弄清楚如何获得多字的别名。

作为别名的Shell函数

如果你仔细想想,你的.bashrc.zshrc 文件只是Bash脚本。我从来没有这样想过,直到今天我才知道,你可以在其中定义函数 作为别名使用

对于几乎所有的目的来说,shell函数都比别名要好。

有了新发现的知识,这就是我如何为更多粗话的iex -S mixmix phx.server 命令设置别名的:

phx() {
  if [[ $@ == "c" || $@ == "console" ]]; then
    command iex -S mix
  elif [[ $@ == "s" || $@ == "server" ]]; then
    command mix phx.server
  elif [[ $@ == "r" || $@ == "routes" ]]; then
    command mix phx.routes
  fi
}

带有空格的Bash别名

有了这个,你可以直接运行phx cphx console 来加载预装在你的Phoenix应用中的IEx 。或者phx sphx server 来启动你的Phoenix服务器;其中c,console,s,serverphx() 函数的参数。

PS:你可以运行source /path/to/.*rc 来立即使用你的命令,而不需要重新启动你的shell,其中*rc 将是你的 "运行命令 "文件(.bashrc,.zshrc 或其他)。

这样打字和记忆都比较短和快。

编码愉快!