Когда я запускаю git help -a
, он показывает мне список внутренних команд, все мои псевдонимы и все мои внешние git команды (то есть любой исполняемый файл, начинающийся с git-
в моем пути). Мне нужен псевдоним или скрипт, который я могу запустить как git which
, который скажет мне одно из следующего:
- команда не найдена (например,
git which notacommand
) - встроенная команда (например,
git which checkout
) - полный путь к команде (например,
git which pwd
покажет /usr/local/bin/git-pwd
) - текст псевдонима (например,
git which wtf
покажет alias.wtf blame -w
)
Я мог бы довольно легко написать скрипт, чтобы использовать вывод git help -a
и произвести его, но есть какая-то команда git, которую я пропускаю, которая уже предоставляет некоторые или все
Обновление
Благодаря комментарию и ответу от @jthill я разработал следующий скрипт git-which
:
#!/bin/sh
if test $# -ne 1
then
echo "Usage: $0 <git command>" >&2
exit 1
fi
CMD=git-"$1"
if PATH="$(git --exec-path)" command -v "$CMD" >/dev/null
then
echo "$1: git built-in command"
exit 0
elif command -v "$CMD"
then
exit 0
elif git config --get-regexp '^alias\.'"$1"'$' |\
sed 's/^alias\.\([^\s]\+\)/\1: aliased to /'
then
exit 0
fi
echo "$1 not found"
exit 1