如何回应OS X bash别名'调用它后命令终端(比如!cmd)?

时间:2016-06-14 22:36:04

标签: bash macos shell alias .bash-profile

在〜/ .bash_profile中定义了别名,例如。 alias vaguppro='vagrant up --provision

在终端输入vagrant up --provision后,我想要的是vaguppro的回音。

类似于终端中的一个ls -hal类型,然后再次键入!ls。在执行之前终端中有ls -hal的回声。

一些解决方案

vaguppro='vagrant up --provision'
alias vaguppro='echo $vaguppro && $vaguppro'

或andlrc的功能解决方案如下。

2 个答案:

答案 0 :(得分:3)

您可能会发现此快捷方式很有用:

   shell-expand-line (M-C-e)
          Expand the line as the shell does.  This performs alias and his‐
          tory expansion as well as all of the shell word expansions.  See
          HISTORY EXPANSION below for a description of history expansion.

换句话说,如果你写了vaguppro并在bash'中按 Ctrl + Alt + E 默认的Emacs模式,它会扩展当前行中的别名并将其转换为vagrant up --provision。然后,您可以按Enter键照常运行。

答案 1 :(得分:1)

!ls是一个历史记录扩展,用于搜索ls的命令历史记录并扩展到找到的命令。作为奖励,扩展也会打印到终端。

要使用别名获得相同的行为,我认为您需要将其转换为函数并手动打印:

vaguppro() {
  echo "vagrant up --provision"
  vagrant up --provision "$@"
}

我几乎总是建议人们使用函数而不是别名,除非它为grepls添加颜色,...

alias grep='grep --color=auto'
alias ls='ls --color=auto'
alias cd..='cd ..'