13
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ディレクトリを覚えられない人のto() function

Last updated at Posted at 2012-12-27

これは私が新卒のときにNYのチームでOJTしたときに、Unix SAのKさんが使用していたものです。ちなみに当時、そのチームでよく使われているWindowManagerはratpoison… It’s really cool to work without mouse という感じでした^^;;

歴史のある会社で働いているとディレクトリがたくさんあり、階層も深くなっていると思います。たまに覚えている人もいますが、やはりどこかに書いておくのが現実的ですよね。to()を定義して使うと覚える必要がありません:)

まずは使い方から

$ to abc
$ pwd 
/nfs/here/is/also/too/long/path/I/cant/remember

こんな感じで移動できます。また引数なしで使うと一覧を表示するので

$ to
Please choose from the following ‘to’ destinations:

hoge:/nfs/this/is/too/long/path/I/cant/remember
abc:/nfs/here/is/also/too/long/path/I/cant/remember	

で関数は下記のようになります。.bashrcのようなrcファイルで定義すればよいです。zshでも動くはずです。

#-----------------------------------------------
# for those who can't remember the file place
#-----------------------------------------------
dest_type()
{
	 key=$1
     check_host=`ypmatch $key hosts 2> /dev/null`
     check_passwd=`ypmatch $key passwd 2> /dev/null`
     if [ "${check_host}X" != "X" ]; then
            echo host
     elif [ "${check_passwd}X" != "X" ]; then
            echo user
     else
            echo dir
     fi
}
to()
{
    mapfile=“$HOME/.custom/dir_maps.txt"

    if [ ! -f $mapfile ]; then
            echo "directory map file doesn't exist"
    else

            if [ "${1}X" = "X" ]; then
                    echo "Please choose from the following 'to' destinations:"
                    echo ""
                    cat $mapfile | tr ':' '\t\t'
            else
                    key=$1
                    # the directory key takes precedence
                    line=`grep "^${key}:" $mapfile`
                    if [ "${line}X" = "X" ]; then
                            type=`dest_type $key`
                    else
                            type="dir"
                    fi

                    case $type in
                    'host')
                            echo "ssh $key"
                            ssh $key
                            ;;
                    'user')
                            echo "~$key"
                            $_user_dir=`/bin/echo ~$key`
                            cd $_user_dir
                            ;;
                    'dir')
                            dest=`echo $line | awk -F':' '{print $2}'`
                            echo "$dest"
                            cd $dest
                            ;;
                    *)
                            echo "Unknown key: \"$key\""
                            ;;
                    esac
            fi
    fi
}

でdir_maps.txtは下記のように定義します。

# $HOME/.custom/dir_maps.txt
hoge:/nfs/this/is/too/long/path/I/cant/remember
abc:/nfs/here/is/also/too/long/path/I/cant/remember

ちなみに to HOST でssh. to USERNAMEでユーザのホームに行けますが、私はあんまり使用していません。

以上です^^ Have fun :)

13
13
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
13
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?