基本上我想输入 show
并检查是否有 show
命令或别名已定义并触发它,如果未定义则触发 git show
。
例如 rm
应该执行 rm
但 checkout
应该执行 git checkout
。
是否可以在 bashrc
中对此进行编程?
最佳答案
这非常简单:
master tmp$ trap 'git $BASH_COMMAND' ERR
master tmp$ touch foo
master tmp$ rm foo
master tmp$ add foo
bash: add: command not found
fatal: pathspec 'tmp/foo' did not match any files
master tmp$ branch
bash: branch: command not found
aix
allocators
...
这会运行通常的 touch
和 rm
命令,但是因为没有 add
命令,它会运行 git add foo
并且因为没有 branch
命令它运行 git branch
陷阱命令会在任何错误时运行,所以不仅是在找不到命令时。您可能想做一些更聪明的事情,例如运行一个脚本来检查 $?
是否为 127(当没有找到命令时 bash 设置的代码)然后检查用 git 运行它是否可行(例如通过检查名为 git-xxx
其中 xxx
是 $BASH_COMMAND
的第一个单词)。我将其作为练习留给读者。
关于linux - 如果存在 git 命令,则使 bash 命令回退到 git 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12791251/