LoginSignup
5
1

More than 5 years have passed since last update.

cd ../../../../../が嫌いな人向けalias

Last updated at Posted at 2018-03-16

モチベーション

cd ../../../../../../../ってタイプするの死ぬほどめんどくさいじゃん。

pushd、popdである程度は解決できるが、解決できない時もある。例えばtmuxやscreenとか使ってペインを作った時。
カレントディレクトリは引き継ぐけどpushdのディレクトリスタックは引き継がないため、
上位ディレクトリに行く時はcd ../../../../打つしかない。

ぐぐってもこれを解決しようとしている人には出会ったことがなかったから、自分で解決することにした。

コード

以下のコードをbashrcに貼って快適な生活を手に入れよう。

.bashrc
isNum() { 
  if [ $# -ne 1 ]; then
    return 1
  fi
  expr "$1" + 1 >/dev/null 2>&1
  if [ $? -ge 2 ]; then
    return 1
  fi
  return 0
}

dirUp () {
  hierarchy_path=""
  isNum "$@"
  if [ $? -eq 0 ]; then
    for i in `seq 1 $1`
      do
        hierarchy_path=${hierarchy_path}"../"
      done
      \cd $hierarchy_path
  else
    \cd "$@"
  fi
}

alias cd="dirUp"

How to use

$ pwd
/home/hugashy/project/hoge/bar/foo/

$ cd 3
$ pwd
/home/hugashy/project

cdコマンドの引数として数字を与えるとその数字分だけ上位ディレクトリに移動できる。

ダメな所

ディレクトリ名が数字のディレクトリに移動できない。
一応回避策は用意していて

数字ディレクトリ名への移動
$ cd 3 適当な文字列

と数字の後に1つ適当な引数を加えてやると正しく数字のディレクトリに移動できる。
というよりは「cdの引数が1個の場合、かつ数字の場合」という条件で上位ディレクトリに移動させているだけなので、その条件から外れる場合は普通のcdと同じ。

最後に

あんまり綺麗な実装じゃないけど、../../../../../../のストレスから開放される喜びを皆さんにも体験していただきたい。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1