gd.sh改良しました。

以前紹介したzsh auto_pushd のシェルスクリプト

gd.shというの書いたのですが、少し改良しました。

改良した点はdirs -v -l で表示される重複したディレクトリは表示しないよう

にしたのと、逆順ソートにして最新のディレクトリが一番下に表示されるように

しました。改良時間は1時間くらいなのでうまく動かない場合があるかもしれませんが

その時はコメントお願いします。

では プログラムです。

ここから————–

#!/bin/sh
dirs -v -l | awk '{
    a[$1]=$2;
    b[$1]=$2;
}
END{
    for( i=0; i<NR; i++){
        work=a[i];
        checknum=0;
        for( j=i+1; j<NR; j++){
            if( work == a[j] ){
                b[j] = "skip";
            }
        }
    }
    for ( i=NR-1; i>-1; i--){
        if ( b[i] != "skip"){
            printf("%d %s\n",i,b[i]);
        }
    }
}'
echo 移動したい番号を選んでください。
read newdir
# 入力値に1をプラスし、その終了ステータスを判定する。
expr 1 + $newdir >/dev/null 2>&1
case $? in
    0 | 1 )var=`dirs -v -l |grep -w $newdir |awk '{printf("%s\n",$2)}'`
        cd $var;;
    * ) echo " 数字以外が入力されました >$newdir" ;;
esac

ここまで————–

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメント

  1. 管理人 より:

    コメントありがとうございます。
    最後のpwd表示は良いですね。参考にさせていただきます。
    通常通りの”cd”や”cd -“の時の動作はマズイですね~なにかいい方法を
    考えないと・・・また思いついたらまた書きますね。
    やはり自分では気づかないところがわかるので、とても勉強になります。