我想在 bash 中创建一个别名,这样
git diff somefile
变成
git diff --color somefile
但我不想定义自己的自定义别名
alias gitd = "git diff --color"
因为如果我习惯了这些自定义别名,那么我就会失去在没有这些映射的机器上工作的能力。
编辑:似乎 bash 不允许多字别名。除了创建别名之外,还有其他替代解决方案吗?
要为命令创建更智能的别名,您必须编写一个与该命令同名的包装函数,它分析参数、转换它们,然后使用转换后的参数调用真正的命令。
例如,您的git
函数可以识别diff
正在被调用的,并在那里插入--color
参数。
代码:
# in your ~/.bash_profile
git()
{
if [ $# -gt 0 ] && [ "$1" == "diff" ] ; then
shift
command git diff --color "$@"
else
command git "$@"
fi
}
如果你想支持之前的任何选项diff
并且仍然让它 add --color
,你必须使这个解析更聪明,很明显。
更好的答案(对于这种特定情况)。
从git-config
手册页:
color.diff
When set to always, always use colors in patch. When false (or
never), never. When set to true or auto, use colors only when the
output is to the terminal. Defaults to false.
不需要函数或别名。但是函数包装器方法对于任何命令都是通用的;把那张卡塞进你的袖子里。
Git 有自己的方式来指定别名(http://git-scm.com/book/en/Git-Basics-Tips-and-Tricks#Git-Aliases)。例如:
git config --global alias.d 'diff --color'
然后你可以使用git d
.
避免在 bash 中的赋值符号周围出现空格:
alias gitd="git diff --color"
你找错树了。将color.diff
配置选项设置为auto
.