如何在 bash 中围绕现有命令添加包装器?
How to add wrapper around existing command in bash?
有什么方法可以添加或包装现有命令吗?
例如,如果有人 运行s git pull
真的 运行s git pull --rebase
?
当然,我们已经为它写了一个别名,但问题是人们没有使用这个别名。
有什么方法可以检测到 git pull
是 运行 并添加到其中吗?
理想的解决方案?
$ git pull
回声
$ This is not the prefered way of pulling down new code. Did you mean to run ~/my_scripts/git_pull_script.sh?
然后取消原来的git拉。
可能有一种更简单的方法来做这种事情,但四处搜索并没有在调整现有命令方面取得太多成果。
您可以使用命令替换运算符 $(command) 来 运行 命令并捕获其输出。
例如,如果你想运行一个命令并捕获它的输出,你可以使用下面的:
$(command)
如果您想 运行 命令并捕获其输出,这将很有用。
要具体化@Barmar 的答案,您可以编写如下脚本:
echo
if [ "" == "pull" ] ;then
echo This is not the prefered way of pulling down new code. Did you mean to run ~/my_scripts/git_pull_script.sh?
else
git $*
fi
将其命名为 git
并将其放置在一个目录中,该目录位于 git 二进制文件实际位置之前的用户的 PATH 变量中。
有什么方法可以添加或包装现有命令吗?
例如,如果有人 运行s git pull
真的 运行s git pull --rebase
?
当然,我们已经为它写了一个别名,但问题是人们没有使用这个别名。
有什么方法可以检测到 git pull
是 运行 并添加到其中吗?
理想的解决方案?
$ git pull
回声
$ This is not the prefered way of pulling down new code. Did you mean to run ~/my_scripts/git_pull_script.sh?
然后取消原来的git拉。
可能有一种更简单的方法来做这种事情,但四处搜索并没有在调整现有命令方面取得太多成果。
您可以使用命令替换运算符 $(command) 来 运行 命令并捕获其输出。
例如,如果你想运行一个命令并捕获它的输出,你可以使用下面的:
$(command)
如果您想 运行 命令并捕获其输出,这将很有用。
要具体化@Barmar 的答案,您可以编写如下脚本:
echo
if [ "" == "pull" ] ;then
echo This is not the prefered way of pulling down new code. Did you mean to run ~/my_scripts/git_pull_script.sh?
else
git $*
fi
将其命名为 git
并将其放置在一个目录中,该目录位于 git 二进制文件实际位置之前的用户的 PATH 变量中。