我想做的是创建一个命令,如果命令成功,则打印一些相关信息。例如,如果我将别名定义为
alias cd='cd /path/to/destination/ && echo "changing directory to echo $(pwd)"'
然后当我执行时cd
,终端将打印changing directory to /path/to/destination/
。但使用此解决方案,我无法使用为 command 定义的标志cd
。我想定义一个行为类似于上面的命令,但也接受最初为底层命令定义的所有标志。我计划为 、 和 执行mkdir
此cp
操作rm
。
答案1
将其包装为脚本或函数~/.bash_profile
:
脚本,例如mycmd.sh
:
#! /bin/bash
your "$1"
commands "$1"
shift
the_original_command "$@"
功能:
mycmd() {
your "$1"
commands "$1"
shift
the_original_command "$@"
}
如果您需要使用多个参数,例如
your "$1"
commands "$2"
使用shift 2
、3、4、5 等。
所以,它会是:
your "$1"
commands "$2"
shift 2
the_original_command "$@"
答案2
您可以将以下命令添加到 Bash 配置文件 ( ~/.bashrc
),然后重新启动 shell。
function cd_echo() {
cd "${@}";
echo "Changing directory to $(pwd)";
}
alias cd="cd_echo";
测试结果:
$ cd /home
Changing directory to /home
$ cd -P /dev
Changing directory to /dev