以前紹介した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
ここまで————–
みなさんLinuxやUnixでバックアップや毎日定期的に動かしたい
プログラムなどはシェルで作ってそれをcronなどで登録してると
思うのですが、シェルの中身はテキストなので、パスワードもそのまま丸見えの状態ではないでしょうか?
セキュリティ上パスワードが丸見えというのは、危険だと思うので
どうにかなかならないものかと思っていたら
シェルスクリプトをバイナリの実行形式にコンパイルするツールを発見しました。
その名もshc です。
これでコンパイルしたら一緒にC言語ファイル(中身はたぶんよくわからない用になっている)も作成されるので、シェルスクリプトを配布したいが、ソースは公開したくないと時にも使える。
もちろんシェルの暗号化にも使える。
一度試してみてはいかがでしょうか?
千葉 真人
日経BP社
売り上げランキング: 96255
志田 智 川井 義治 田淵 貴昭 米田 聡
翔泳社
売り上げランキング: 290733
おすすめ度の平均:

よみやすい
LinuxやUnixを使っている人はシェルというものにこだわりがあるものだ。
solarisやBSD系の人はだいたいcsh tcsh。Linuxの人はbashが定番なのだが、
zshはご存知だろうか?アルファベットのzがついているので最後のシェルという
意味らしいのだが、その名にふさわしく最強のシェルだそうだ。
どんな感じかは漢のzshというコラムに
zshの魅力が紹介されている。
この中のsetopt auto_pushd というオプションが便利だな~と私は使ってみて思った。
ということで、シェルスクリプトで似たような感じができないかなと思ったので、作ってみました。
けっこうzshが入ってる環境は少ないもので(笑)
とりあえず下記のプログラムをファイルに保存し実行権限をつけてください。
ここではgd.shという名前に保存したとする。
ここから————–
#!/bin/sh
dirs -v
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
ここまで————–
そして、pathが通っているとこに持っていってください。
次にaliasに下記を設定してください。
alias gd=’. gd.sh’
alias cd=’pushd > /dev/null’
これで終了です。
# gd
で起動できると思います。
あとはお好きにしてください。
また便利なシェルスクリプトを作ったら載せてみたいと思います。