在 shell 中运行特定命令时如何触发第二个命令?

yas*_*ask 4 shell zsh alias

我会用例子来解释我的问题。

我跑去$ python manage.py执行一些动作。

我想运行另一个命令$ xyz,就在任何用户运行上一个命令时。

因此,从现在开始,每当用户运行 $ python manage.py

它应该像这样运行:

$ python manage.py && xyz

我想创建一个别名。但是别名变量之间不能有空格吗?

小智 14

您可以在调用python(将其放入.zshrc.bashrc...取决于您的外壳)周围放置一个外壳包装器,

python () {
    if [ "$1" = manage.py ]; then
        command python manage.py && xyz
    else
        command python "$@"
    fi
}
Run Code Online (Sandbox Code Playgroud)

但我怀疑你最好manage.py改为xyz在最后运行(参见 python 子进程库),或者创建一个 shell 脚本,

管理.sh :

#! /bin/sh
python manage.py && xyz
Run Code Online (Sandbox Code Playgroud)

  • 在该函数中,您需要 `command python ...` 以便不会递归调用该函数。而且,当然,它必须是`python "$@"`。 (3认同)