dotfileをあちこちにコピーする。
dotfileをあるディレクトリにまとめておいて、gitで管理するようにしています。ところが、いまさらですが、あちこちに転送するのがめんどくなったので、shell scriptを書きました。一部awkですが。
HOSTSのところを、scpが認識できるホスト名の羅列にしておきます。dot.cshrcとか、そんな感じでdot.hogeなファイルがカレントディレクトリに複数あるとします。~/.hostsを用意している人は、そこから読み込んでもいいかもしれない。
#!/bin/sh HOSTS="hoge foo bar" dotfiles=`ls dot\.*` dotfiles_truename=`ls dot\.* |awk -F. '{ print substr($0, 4, length($0)) }'|xargs echo` for df in ${dotfiles_truename}; do cp dot${df} ${df} done for i in ${HOSTS}; do scp ${dotfiles_truename} ${i}: done for df in ${dotfiles_truename}; do rm -f ${df} done
scpの起動回数を減らすべく、いったんdotを削ったファイルにコピーしているところが汚いのですが、、、(全部公開鍵認証するようになっているわけではないので、こういうことになっている…)
起動回数を気にしないなら、
#!/bin/sh HOSTS="hoge foo bar" dotfiles=`ls dot\.*` dotfiles_truename=`ls dot\.* |awk -F. '{ print substr($0, 4, length($0)) }'|xargs echo` for i in ${HOSTS}; do for df in ${dotfiles}; do df_dotstriped=`echo ${df}|awk -F. '{ print substr($0, 4, length($0)) }|xargs echo` scp ${df} ${i}:${df_dotstriped} done done
でしょうか。
awkを使わなくてもできそうですが…