bash выполнить функцию оболочки после изменения каталога (cd) - PullRequest
4 голосов
/ 09 августа 2010

Попытка найти способ выполнить функцию в 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 ]

4 голосов
/ 10 августа 2010

Не забывайте о pushd и popd, если только вы никогда их не используете.Я бы сделал это:

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'
3 голосов
/ 10 августа 2010

Используйте PROMPT_COMMAND.Вы должны взглянуть на git-sh, который включает в себя множество причудливых трюков, связанных с git, и также должен быть прост в освоении.

3 голосов
/ 10 августа 2010

Вы можете создать псевдоним для cd, который выполняет стандарт cd, а затем какую-то определенную вами функцию.

0 голосов
/ 10 августа 2010
alias cd='echo DO SOME WORK; cd $*'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...