每次我这样做的时候git diff
我都希望我的 bash 能够做到clear & git diff
这一点。
我尝试调整答案“Bash:别名中的空格“ 像这样:
git() {
if [[ $@ == "diff" ]]; then
command clear && git diff
else
command git "$@"
fi
}
但不幸的是,这不起作用(命令行最终陷入了一种在bash
和之间git
永远切换的无限循环,我需要[CTRL|CMD]+C
摆脱它)。
答案1
command
或之类的东西sudo
不会神奇地应用于该行的其余部分。(只有#
注释和time
内置命令才有这样的魔力。)
也就是说,如果您使用command clear && git diff
,它首先会扩展为两个单独的命令:(command clear
其中“命令”前缀无用)和git diff
(需要它的地方)。
正确的功能应该是:
git() {
if [[ $1 == "diff" ]]; then
clear && command git "$@"
else
command git "$@"
fi
}
或者:
git() {
if [[ $1 == diff ]]; then
clear
fi
command git "$@"
}
"$@"
(在两种情况下都使用,因为您可能有一天会需要git diff --cached
或诸如此类。)