7

Tip #769   .. revisited

Tip 550 gives a script for a '..' command which will go up n directory levels, however the version there messes up your previous directory so "cd -" will not work. The version below fixes this problem:

.. v1.1
Usage .. [n]
Go up n-levels.
i.e.: .. 3 will go up 3 levels

function .. (){
  local arg=${1:-1};
  local dir=""
  while [ $arg -gt 0 ]; do
    dir="../$dir"
    arg=$(($arg - 1));
  done
  cd $dir >&/dev/null
}


Another possible task is to go up several levels until we find the directory we need. The function below will do this:

... v0.1
Usage ... Thing/Some
Go up until you encounter Thing/Some, then go there
i.e.: I'm in /usr/share/X11
... src will go up to /usr, then change to /usr/src

function ... (){
  if [ -z "$1" ]; then
    return
  fi
  local maxlvl=16
  local dir=$1
  while [ $maxlvl -gt 0 ]; do
      dir="../$dir"
      maxlvl=$(($maxlvl - 1));
      if [ -d "$dir" ]; then 
        cd $dir >&/dev/null
      fi
  done
}