gpt4 book ai didi

Git 相当于 which/where

转载 作者:行者123 更新时间:2023-12-03 12:26:35 30 4
gpt4 key购买 nike

当我运行 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

最佳答案

git help 会显示别名,比如说 git help wtf 并且它会说 'wtf' is aliased to 'blame -w'。对于其余部分,搜索 libexec/git-core 并不难,比如说 git --exec-pathwhich 已经搜索了命令,所以

PATH=$(git --exec-path):$PATH which git-checkout

会为你做你的狩猎,别名不能覆盖内置所以(手指到文本框警告:)

f() { PATH=$(git --exec-path)${PATH+:$PATH} which git-$1 2>&- || git help $1; }

看起来是个不错的开始。

关于Git 相当于 which/where,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60286923/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com