bash在更改目录后执行shell函数(cd)

时间:2010-08-09 19:56:43

标签: bash scripting shell

尝试在更改到目录后找到在BASH中执行函数的方法。

例如,

# cd code/project/blah
"Your latest modified files are main.cc blah.hpp blah.cc"
(~/code/project/blah) # _

有了上述内容,我希望能够在bash命令中包含其他功能。

希望找到zsh hook函数的内容 http://zsh.sourceforge.net/Doc/Release/Functions.html#SEC45

4 个答案:

答案 0 :(得分:4)

除非您从不使用它们,否则不要忘记pushdpopd。我这样做:

PS1='(\w) \$ '
chdir() {
    local action="$1"; shift
    case "$action" in
        # popd needs special care not to pass empty string instead of no args
        popd) [[ $# -eq 0 ]] && builtin popd || builtin popd "$*" ;;
        cd|pushd) builtin $action "$*" ;;
        *) return ;;
    esac
    # now do stuff in the new pwd
    echo Your last 3 modified files:
    ls -t | head -n 3
}
alias cd='chdir cd'
alias pushd='chdir pushd'
alias popd='chdir popd'

答案 1 :(得分:3)

您可以为执行标准cd的{​​{1}}创建一个别名,然后执行您定义的某个函数。

答案 2 :(得分:3)

使用PROMPT_COMMAND。你应该看一下git-sh,其中包括许多与git相关的花哨技巧,也应该很容易学习。

答案 3 :(得分:0)

alias cd='echo DO SOME WORK; cd $*'