1
4

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 3 years have passed since last update.

ディレクトリ移動をするbashシェルスクリプト関数

Posted at

よく使うディレクトリへの移動を簡単にするために
シェルスクリプトの関数を作ります。

作り方

  1. シェルスクリプトの関数を作る
  2. 起動時に関数を読み込むように、bashrcに記載する
  3. bashrcを再読込する

1. シェルスクリプトの関数を作る

移動先のディレクトリを、仮にhome/myname/Documents/myworkとします。
以下のように、ディレクトリ移動をする関数を作成します。

mywork.sh
#!/bin/bash

function mywork() {
    cd /home/myname/Documents/mywork
}

2. 起動時に関数を読み込むように、bashrcに記載する

~/.bashrcに以下を追記します。

~/.bashrc
source スクリプト/への/パス/mywork.sh

3. bashrcを再読込する

$ source ~/.bashrc

使い方

作ったmywork関数が叩けるようになっているので、ターミナルで叩けばOK。

$ mywork # /home/myname/Documents/mywork へ移動することができる

少し機能拡張

複数ディレクトリから選択する方法

よく使うするディレクトリが複数あるときは、
以下のように書くことで実現することができます。

mywork.sh
#!/bin/bash

function mywork() {
    # 移動したいディレクトリのリスト
    local WORKDIRS="
        /home/myname/Documents/myworkA
        /home/myname/Documents/myworkB
    "

    # 配列に格納する
    local WORKINGDIR_ARRAY=(`echo ${WORKDIRS}`)
    local DIRNUM=${#WORKINGDIR_ARRAY[@]}

    # ディレクトリ一覧を表示する
    local dir
    local i=0
    for dir in "${WORKINGDIR_ARRAY[@]}"
    do
        echo "${i}: ${dir}"
        i=$((i + 1))
    done

    # ディレクトリの選択を促す
    local n
    read -p "Select directory number: " n

    # 入力された値をチェックし、cdコマンドで移動する
    if [ ${n} -ge 0 -a ${n} -lt ${DIRNUM} ]; then
        cd "${WORKINGDIR_ARRAY[${n}]}"
    else
        echo "Invalid Number"
    fi
}

実行結果

$ mywork 
0: /home/takumi/Documents/myworkA
1: /home/takumi/Documents/myworkB
Select directory number: 0     # 0を入力する

$ pwd
/home/takumi/Documents/myworkA

0番を入力したので、myworkAディレクトリに移動しています。

参考にした記事

1
4
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
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?