yuu_nkjm blog
2010-10-28(Thu) 編集
[Linux][command][Script][find][nkf] findとnkfを使って,ファイルの文字コードを一括変換
ディレクトリorig以下の文字コードを一括変換したものを,new以下に格納する場合を考える.
origを全コピーする.これにより,ディレクトリをコピーする.
cp -a orig newrun.shを作成.
find ./orig -type f \( -name '*.java' -or -name '*.xml' \) -printf 'nkf -S -w %p > new/%P\n' > run.shnkfの-Sは入力がShift-JIS,-wはUTF出力である.改行コードをUNIX改行(LF)に変更したい場合は,-Luをつける.中身を確認して,run.shを実行する.
他にも,sedにファイルを喰わせても色々出来る.
find ./orig -type f \( -name '*.java' -or -name '*.xml' \) -printf 'sed s/charset=Shift_JIS/charset=utf-8/ %p > new/%P\n' > run.sh
最初はxargsを引数を一つずつ実行するオプションをつけて使おうと思ったけど,参考記事の様にfindに直接コマンドを実行させた方が分かりやすいと思った.リダイレクトを使って結果を書き出そうとすると,リダイレクト先のディレクトリが存在しないといけない.これも参考記事の様に,cp -aでコピーをとって,そこに流し込むようにすれば,間違えなさそう.
コピペ用
Javaのソースコード+XML変換.Shift-JIS→UTF-8
cp -a orig new find ./orig -type f \( -name '*.java' -or -name '*.xml' \) -printf 'nkf -S -w %p > new/%P\n' > run.sh . run.sh
なんでも変換.EUC→UTF-8
cp -a orig new find ./orig -printf 'nkf -E -w %p > new/%P\n' > run.sh . run.sh
手抜き
オプション -w utf-8 -s shift-jis -e euc-jp -Lu UNIX(LF) -Lw Windows(CR+LF) nkf -w -Lw --overwrite *.java
2012-10-28(Sun) 編集
[ssh] トンネルのトンネルのトンネルの…
図なしだと説明がむずいな.PuTTY使っててSSHを直接使ってるわけでもないし.まあ,メモ程度.
前準備
リモートサーバのポートとグローバルサーバのポートを接続
remote-server.nkjm.infoへログインし,以下を実行.
ssh -R 40022:localhost:22 global-server.nkjm.info
global-server.nkjm.info:40022へのアクセスが,localhost:22(remote-server.nkjm.info)へ転送される.
リモートデスクトップで接続する前に毎回やる
クライアントPCのポートとグローバルサーバのポート接続
クライアントPCからglobal-serverへ接続し,以下のトンネルを作成.
ssh -L 40022:global-server.nkjm.info:40022 global-server.nkjm.info
クライアントPCのローカルポートの40022へのアクセスが,global-server.nkjm.infoの40022へ転送される.
クライアントPCのポートとリモートPCのポートを接続
ssh -P 40022 43389:remote-pc.nkjm.info:3389 localhost
クライアントPCのローカルポートの43389へのアクセスを,remote-pc.nkjm.infoの3389へ転送する.