以前、私が職場で使用していたUNIX環境で、cdコマンドのディレクトリ移動の履歴を残せるコマンドのaliasがcsh用に作られていました。
丁度、Windowsのエクスプローラの「進む」や「戻る」をコマンドで実行するようなものでした。
元は雑誌からの引用だったようですが、1990年代位の日付がコメントに入っていたと思います。
結構、そのコマンドに慣れていましたので、その機能を思い出しながら、今Zaurusで使用しているbashで実現してもました。
pushdやpopd等を素直に使用すればいいのかもしれませんが、「進む」機能がないというのと、手になじんでいるということで…。
コマンドは以下の通りです。
丁度、Windowsのエクスプローラの「進む」や「戻る」をコマンドで実行するようなものでした。
元は雑誌からの引用だったようですが、1990年代位の日付がコメントに入っていたと思います。
結構、そのコマンドに慣れていましたので、その機能を思い出しながら、今Zaurusで使用しているbashで実現してもました。
pushdやpopd等を素直に使用すればいいのかもしれませんが、「進む」機能がないというのと、手になじんでいるということで…。
コマンドは以下の通りです。
- cd
- aliasで置き換えていますが、そのままディレクトリ移動です。pushdのような機能も持たせています。
- bd
- 一個前にいたディレクトリに移動します。popdやエクスプローラの「戻る」のような機能です。
- nd
- bdで戻る前のディレクトリに移動します。エクスプローラの「進む」のような機能です。
- ds
- ディレクトリの履歴を表示します。「p」はカレントディレクトリです。(「c」の方がよかったかも…。)bdは「0」から「9」の順に移動し、ndは「9」から「0」の順に移動します。
# 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 }
※コメント投稿者のブログIDはブログ作成者のみに通知されます