読者です 読者をやめる 読者になる 読者になる

opamp_sando's blog

クソザコが割りと適当なことを書くためにある備忘録です。あとたまに普通の日記も書きます

久々に設定ファイルを書きなおした

日記

vimの設定ファイルがかなり前から使いまわしてるせいでかなりごちゃごちゃしてたのでvimの設定ファイルを1から書き直してた。

それはそうと、自分はそういったhome以下のdotな設定ファイルは適当なディレクトリにまとめて圧縮してdropboxにでもおいておくっていうのが普通なんだけど、そんな時便利なコピースクリプトを書いてみた。

#!/bin/sh

#if you use osx, you should rewrite "#!/bin/sh" to "#!/bin/zsh"

installto=$HOME
confsdir=`dirname $0`

# 0 is success
# 1 is failure

#2 is dumplicate
installfile(){
    if test $# -eq 1;then
        if test -f $installto/.$1 -o -d $installto/.$1;then
            return 2
        else
            cp -fr $confsdir/$1 $installto/.$1
            return 0
        fi
    else
        return 1
    fi
}

q_overwrite(){
    if test $# -eq 1;then
        echo -e "\e[31m[OVERWRITE]\e[m$installto/.$1 [y/n] :\c"
        read q
        if test $q = 'y' -o $q = 'yes';then
            rm -fr $installto/.$1
            installfile $1 
            return $?
        else
            echo -e "\e[34m[OVERWRITE-CANCEL]\e[m$1"
            return 0
        fi
    else
        return 1
    fi
}

for cf in `ls $confsdir`;do
    [ $cf = 'install.sh' ] && continue
    echo -e "[INSTALL]$cf [y/n] :\c"
    read ans
    if test $ans = 'y' -o $ans = 'yes';then
        installfile $cf
        case $? in
            0  ) echo -e "\e[32m[COPY]\e[m$cf to $installto/.$cf" ;;
            1  ) echo -e "\e[31;45m[ERROR]\e[m Failed to copy $cf" ;;
            2 ) q_overwrite $cf ;;
        esac
    else
        echo -e "\e[34m[CANCEL]\e[m$cf"
    fi
done
echo "Finished"

シェルスクリプトちからがなかったのでかなり時間がかかった上になんか微妙だけど...
とりあえず表示させてみたら色なしだとちょっと見にくかったのでecho -eで色をつけてみた。
macのshだと正常に表示されないので注意...
そんな時は一行目を適当にzshとかにするといい気がする。

使い方は、このスクリプトと同じディレクトリにdotな設定ファイルからdotを外した名前でファイルを入れる。すごくわかりにくい気がするけど例えば、".vimrc"なら"vimrc"にしてこのスクリプトと同じディレクトリに入れるといいんじゃないかな...
あ、それとスクリプトは"install.sh"っていう名前で保存しないと一部ちゃんと動かないきがする。

gitで管理してもいいけどgitが入ってない環境も想定してgitで管理はしない。
あとgitよりmercurialのほうが個人的に好きだけどmercurialだともっと入ってない環境が多そうなので更に管理しない

Firefox ブラウザ無料ダウンロード