| Line |  | 
|---|
| 1 | # | 
|---|
| 2 | # ksh-like `cd': cd [-LP] [dir [change]] | 
|---|
| 3 | # | 
|---|
| 4 | cd() | 
|---|
| 5 | { | 
|---|
| 6 | OPTIND=1 | 
|---|
| 7 | while getopts "LP" opt | 
|---|
| 8 | do | 
|---|
| 9 | case $opt in | 
|---|
| 10 | L|P)    CDOPTS="$CDOPTS -$opt" ;; | 
|---|
| 11 | *)      echo "$FUNCNAME: usage: $FUNCNAME [-LP] [dir] [change]" >&2 | 
|---|
| 12 | return 2;; | 
|---|
| 13 | esac | 
|---|
| 14 | done | 
|---|
| 15 |  | 
|---|
| 16 | shift $(( $OPTIND - 1 )) | 
|---|
| 17 |  | 
|---|
| 18 | case $# in | 
|---|
| 19 | 0)      builtin cd $CDOPTS "$HOME" ;; | 
|---|
| 20 | 1)      builtin cd $CDOPTS "$@" ;; | 
|---|
| 21 | 2)      old="$1" new="$2" | 
|---|
| 22 | case "$PWD" in | 
|---|
| 23 | *$old*) ;; | 
|---|
| 24 | *)       echo "${0##*/}: $FUNCNAME: bad substitution" >&2 ; return 1 ;; | 
|---|
| 25 | esac | 
|---|
| 26 |  | 
|---|
| 27 | dir=${PWD//$old/$new} | 
|---|
| 28 |  | 
|---|
| 29 | builtin cd $CDOPTS "$dir" && echo "$PWD" | 
|---|
| 30 |  | 
|---|
| 31 | ;; | 
|---|
| 32 | *)      echo "${0##*/}: $FUNCNAME: usage: $FUNCNAME [-LP] [dir] [change]" >&2 | 
|---|
| 33 | return 2 ;; | 
|---|
| 34 | esac | 
|---|
| 35 | } | 
|---|
       
      
  Note:
 See   
TracBrowser
 for help on using the repository browser.