LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1056|回复: 1

快速返回上级目录的 bash 函数

[复制链接]
发表于 2010-4-9 13:01:05 | 显示全部楼层 |阅读模式
使用办法:
u N     # N 是非零开头的数字,回退 N 级目录
u xxx   # xxx 是一个字符串,回退到 $PWD 中此字符串最后一次出现的地方所在目录


  1. u () {
  2.     if expr "$1" : "[1-9][0-9]*$" >/dev/null; then
  3.         local arg="$1" s=..
  4.         while [ $((--arg)) -gt 0 ]; do
  5.             s="$s/.."
  6.         done
  7.         cd $s
  8.     else
  9.         local i=$(expr "$PWD" : ".*$1") j
  10.         if [ $i -gt 0 ]; then
  11.             j=$(expr index "$(expr substr "$PWD" $((++i)) 10000)" /)
  12.             [ $j -gt 0 ] && cd "$(expr substr "$PWD" 1 $((i+j)))"
  13.         else
  14.             echo "ERROR: can't find "$1" in "$PWD"!" >&2
  15.         fi
  16.     fi
  17. }
复制代码
发表于 2010-4-9 14:47:40 | 显示全部楼层
好脚本。。。我修改如下

.. () {
    if [ "$1" = "" ]
    then
        cd ..
    elif expr "$1" : "[1-9][0-9]*$" >/dev/null; then
        local arg="$1" s=..
        while [ $((--arg)) -gt 0 ]; do
            s="$s/.."
        done
        cd $s
    else
        local i=$(expr "$PWD" : ".*$1") j
        if [ $i -gt 0 ]; then
            j=$(expr index "$(expr substr "$PWD" $((++i)) 10000)" /)
            [ $j -gt 0 ] && cd "$(expr substr "$PWD" 1 $((i+j)))"
        else
            echo "ERROR: can't find \"$1\" in \"$PWD\"!" >&2
        fi
    fi
}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表