Такие вещи, как command
или sudo
не магически относятся к остальной части линии. (Только #
комментарии и time
встроенные имеют такую магию.)
То есть, если вы используете command clear && git diff
, он сначала расширяется до двух отдельных команд: command clear
(где префикс «command» бесполезен) и 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
.)