linux - 如果存在 git 命令,则使 bash 命令回退到 git 命令

标签 linux git bash command-line terminal

基本上我想输入 show 并检查是否有 show 命令或别名已定义并触发它,如果未定义则触发 git show

例如 rm 应该执行 rmcheckout 应该执行 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
  ...

这会运行通常的 touchrm 命令,但是因为没有 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/

相关文章:

c++ - 对象是否会通过kill正确地被销毁?

linux - linux 中的 join 命令说文件没有排序,但它们是

Cherry-Pick 之后的 Git Rebase

linux - 如何将标准压缩到文件中并将标准打印到标准输出?

linux - 用sed命令改变/etc/hosts

linux - 配置SVN通过TOR代理

linux - 如何删除文件的扩展名?

git fsck --full 只检查目录

python - 如何将文件的所有 git 版本保存到磁盘?

linux - Bash 中的双斜杠?