各サーバへファイルを設置する場合

ちょっとした応用として二通りあげる
一つは複数ファイルを送る場合

 $ tar cf - Makefile *.c *.h  | dsh -iacM tar xvf - -C path/

サイズが小さければ,これで送ってしまえば結構楽.
Makefile *.c *.h は送りたいファイル
path/ は送り先ディレクト

だた一つ注意が必要で,絶対パスでやると,たとえば
~/.bashrc とかすると home/user/.bashrcというファイルを作ろうとする
# 正確には/も入るけど,オプションによって異なる.
ま,詳しくはtar(http://www.linux.or.jp/JM/html/GNU_tar/man1/tar.1.html)のmanで確認してください



もう一つは,サーバによって微妙にファイルが違う場合
たとえば,何かのコンフィグファイルで $HOME/bin を設定したいけれど,$HOMEは展開しておかなければならず,しかもサーバ毎に違う場合.

具体的にあげれば,dot.configrcってファイルを用意して

ROOT $HOME/tools/appli

として

 $ dsh -aM 'echo "'"`cat dot.configrc `"'" > ~/.configrc'

とすれば,$HOMEが /home/user やら /export/home/user やらに置き換えられるわけ.でも,このクォーテションの嵐はやんなるね.



処理が複雑な場合は,スクリプト書いたほうが早いだろね.
あと,.bashrcに export SITENAME=hogehogeとか用意してあると,

 $ gcc file.c -D$SITENAME

とか,makeなら

CPPFLAGS=-D$(SITENAME)

とすれば,各サーバごとにコンパイルしなくても,gxpやdshで一発コンパイルできてOK