Masaatoshi Ito の備忘録

主にザウルス(SL-C3100)に関する備忘録を書いています。更新停滞中&書く内容迷走中…。

cd の履歴を持たせる bashrc

2009年07月23日 19時18分28秒 | Zaurus/環境設定
以前、私が職場で使用していたUNIX環境で、cdコマンドのディレクトリ移動の履歴を残せるコマンドのaliasがcsh用に作られていました。
丁度、Windowsのエクスプローラの「進む」や「戻る」をコマンドで実行するようなものでした。
元は雑誌からの引用だったようですが、1990年代位の日付がコメントに入っていたと思います。
結構、そのコマンドに慣れていましたので、その機能を思い出しながら、今Zaurusで使用しているbashで実現してもました。
pushdやpopd等を素直に使用すればいいのかもしれませんが、「進む」機能がないというのと、手になじんでいるということで…。

コマンドは以下の通りです。

cd
aliasで置き換えていますが、そのままディレクトリ移動です。pushdのような機能も持たせています。

bd
一個前にいたディレクトリに移動します。popdやエクスプローラの「戻る」のような機能です。

nd
bdで戻る前のディレクトリに移動します。エクスプローラの「進む」のような機能です。

ds
ディレクトリの履歴を表示します。「p」はカレントディレクトリです。(「c」の方がよかったかも…。)bdは「0」から「9」の順に移動し、ndは「9」から「0」の順に移動します。

以下、bashrcの抜粋です。

# cd history
alias cd=chdir
function chdir {
	if [ -r "$1" -a -d "$1" -o "$1" = "" ] ; then
		local i
		for i in 8 7 6 5 4 3 2 1 0 ; do
			dirstack[$i+1]=${dirstack[$i]}
		done
		dirstack[0]=`pwd`
		\cd $1
	fi
	pwd
}
function ds {
	echo "p:"`pwd`
	local i
	for i in 0 1 2 3 4 5 6 7 8 9 ; do
		echo "$i:${dirstack[$i]}"
	done
}
function bd {
	dirstack[10]=`pwd`
	\cd ${dirstack[0]}
	local i
	for i in 0 1 2 3 4 5 6 7 8 9 ; do
		dirstack[$i]=${dirstack[$i+1]}
	done
	pwd
}
function nd {
	dirstack[10]=`pwd`
	\cd ${dirstack[9]}
	local i
	for i in 8 7 6 5 4 3 2 1 0 ; do
		dirstack[$i+1]=${dirstack[$i]}
	done
	dirstack[0]=${dirstack[10]}
	pwd
}


コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« QPOBox(pbserver)について | トップ | RSS取得プログラム(RSSリー... »
最新の画像もっと見る

コメントを投稿

Zaurus/環境設定」カテゴリの最新記事