2010-08-09 66 views

回答

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

幾乎工作.'沒有參數的pushd'交換與dir堆棧的頂部.' cd'沒有參數更改爲$ HOME目錄,代之以:'pushd | popd | cd)[[$#-eq 0]] && builtin $ action ||內置$動作「$ *」;;'。 – 2013-04-24 22:47:20

+0

這個呢? http://stackoverflow.com/a/18244439/171318 – hek2mgl 2013-08-15 00:24:05

+0

加入Charles Merriam的建議 – fuzzyTew 2015-11-14 12:20:12

3

你可以建立一個別名cd執行該標準cd,然後您已經定義了一些功能。

0
alias cd='echo DO SOME WORK; cd $*' 
+3

不,'$ *'用於函數中,而不是別名。 – 2010-08-09 20:25:35

3

使用PROMPT_COMMAND。你應該看看git-sh,其中包含了很多花哨的git相關技巧,也應該很容易學習。

+0

這也是非常有用的,但我不能標記2個東西作爲答案:( 謝謝! – battlemidget 2010-08-09 20:56:39