よく使うディレクトリへの移動を簡単にするために
シェルスクリプトの関数を作ります。
作り方
- シェルスクリプトの関数を作る
- 起動時に関数を読み込むように、bashrcに記載する
- 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
ディレクトリに移動しています。
参考にした記事
- [shell scriptで現在のディレクトリを変更して移動する] (https://qiita.com/mattak/items/bd159863be10b0ae81d8) (aliasを使う方法)
- 配列を使用する | UNIX & Linux コマンド・シェルスクリプト リファレンス
- bash のビルトインコマンド “local” について