[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FDclone-users:00452] Re: FDclone 2.08 has been released
- Subject: [FDclone-users:00452] Re: FDclone 2.08 has been released
- From: Takashi SHIRAI <shirai@unixusers.net>
- Date: Mon, 26 Dec 2005 23:16:24 +0900
しらいです。
今回の目玉は pty の強化と、KOF2005 のステージで予告してお
おた root での利用体制への対応の二本柱です。
In Message-Id <20051226131629.76F9C40C508@yuka.unixusers.net>
Takashi SHIRAI <shirai@unixusers.net>writes:
> しらいです。
> 以下は HISTORY より今回の変更点の抜粋です。
幾つか関連する機能はまとめて解説します。
> 内部変数 PTYINKCODE, PTYOUTKCODE の追加。
2.07 で実装した疑似端末ですが、こいつの入出力に漢字コード
の wrapper を噛ませました。
その結果、EUC-JP でキー入力した漢字を Shift_JIS として入力
させたり、UTF-8 で出力された漢字を EUC-JP として表示させたり
といったことが可能になりました。
FDclone の中だけで閉じた話ならばこれまでも可能だったのです
が、FDclone から起動した ls(1) なり tar(1) なりの入出力はど
うしてもそのコマンドが決めてしまうので、こいつらの入出力漢字
コードを変換するには疑似端末を使うしかないんですね。
例えば Fedora Core や OpenPDA の場合、標準漢字コードに UTF-
8 を使っているため、ls(1) すると当然 UTF-8 で表示されますが、
端末が UTF-8 対応していない場合、文字化けが生じて読むことが
出来ません。
普通はそういう場合、ls(1) の出力を nkf(1) に pipe で渡した
り、そもそも telnet(1) に nkf(1) を pipe で繋いで接続したり
という手を使う訳ですが、shell に FDclone を使っていればこの
変換を自動で行なってくれます。
UTF-8 対応した端末って意外と少ないんですよね。りなざうとか
初期の Mac OS X とか、標準が UTF-8 の癖に端末は EUC-JP だっ
たりして全然一貫性がありませんし。
また、UTF-8 対応した端末でも自動的に漢字コードを切替えてく
れる訳ではないので、remote login する時は host 毎にいちいち
設定をし直す必要があって面倒です。
FDclone の場合ですと、例えば端末の側は EUC-JP に固定してお
いて、それぞれの host の .fd2rc で PTYINKCODE と PTYOUTKCODE
を UTF-8 に、LANGUAGE と INPUTKCODE を EUC-JP にしておけば、
host の漢字コードを気にせずに透過的な操作が実現されます。
勿論、そういったコード変換が不要な host では PTYMODE=0 に
しておけば疑似端末は起動しないので、無駄な performance 劣化
は抑えられます。
但し注意すべき点が二点。一つは疑似端末を使わないと無意味な
こと。もう一つは疑似端末側の漢字コードはウィンドウ毎に設定し
なくてはならないことです。
前者は単に PTYMODE=1 という設定で済みます。後者はちょっと
厄介で、.fd2rc ではなく起動後の設定で漢字コード設定しても、
期待通りに動的な変更が有効にならないケースがあるという点です。
例えばウィンドウ 1, 2 を開いた状態で、ウィンドウ 1 の中で
PTYINKCOCE=utf8 とした場合、ウィンドウ 1 と以降開くウィンド
ウとは UTF-8 になりますがウィンドウ 2 は元の漢字コードのまま
になります。
また、ウィンドウ 1 の中ではなくカスタマイザで変更した場合、
以降開くウィンドウは UTF-8 になりますがウィンドウ 1, 2 は元
のままです。
これは逆手にとって、ウィンドウ毎に別々の漢字コードを設定出
来るというメリットでもあるのですが、直観的には判りにくいかも
知れないので気をつけて下さい。
> 内部変数 LOGFILE, LOGSIZE, USESYSLOG の追加。
> 内部変数 LOGLEVEL, ROOTLOGLEVEL の追加。
ToAdmin というテキストに長いこと書かれていた「FDclone 内で
の操作は log に一切残らないという問題」を解消しました。これ
で root で FDclone 使ってもちょっとは安心出来ます。
log は log file に吐く方法と syslogd(8) に渡す方法の二通り
があって、LOGFILE に設定すると前者、USESYSLOG に指定すると後
者になります。勿論、両方指定しても構いません。
log に残される内容は、FDclone で使用されている主な system
call と、EXECUTE_SH 等のコマンドラインです。ある程度レベル分
けもしてあるので適切に設定すればそこそこ使えると思います。
詳しくは man page の記述を参照して下さい。
> 内部変数 THRUARGS の追加。
[FDclone-users:00444] に対する回答です。この値が設定されて
いる場合は、「fd mp3/Spock\'s_Beard/」のように起動されても、
ちゃんと「mp3/Spock's_Beard/」に chdir します。
> 組込みコマンド savetty を追加。
> 組込みコマンド set に -o autosavetty, -S オプションの追加。
こっちは [FDclone-users:00440] に対する回答です。例えば FD
clone の中から stty(1) で端末設定をいじる場合、「stty -ixon;
savetty」とすれば、以降のコマンドラインで -ixon されたままに
なります。
これを自動的に行ないたい場合は「set -o autosavetty」もしく
は「set -S」とします。-S option 付で起動しても同じことです。
各コマンド実行後に自動的に savetty します。
個人的にはマニアックな機能だと思ってるんですが、使いたい人
は使ってみて下さい。
> 組込みコマンド set に -o ptyshell, -T オプションの追加。
先の PTYINKCODE や PTYOUTKCODE を使うことを前提に考えると、
この機能はむしろ fdsh の機能として使った方が有用であると考え
られます。
しかも、fdsh を起動した最初っからずっと疑似端末として起動
していれば、疑似端末の存在を意識することなく、透過的に「漢字
コード変換してくれる shell」として使えます。
そういう起動オプションがこれです。起動時以外は無意味なので、
.fd2rc を処理した後は設定しても無効です。また fdsh 専用なの
で、fd として起動した場合も無効です。
ま、何も考えずに、例えば Fedora Core や OpenPDA を使ってる
人だったら、.fd2rc に「PTYINKCODE=utf8」「PTYOUTKCODE=utf8」
「set -T」と書いて fdsh を起動してみて下さい。
りなざうだったら ~/Documents/Web_Files/Bookmark_files/ 辺
りに UTF-8 な file が並んでるので ls(1) してみましょう。pipe
で convert するのと違って「ls 検索」みたいに入力も出来るのが
疑似端末のいいところですね。
> 組込みコマンド set に -o physical の別名 -P オプションを追加。
これは別に大した話ではないんですが、bash(1) の仕様でこうい
う alias があったので実装してみました。
実は、最初は -T option の名前を -P にしようとしてて、どっ
かで -P は使ってそうだなって調べたら bash(1) の option にあ
ったんで -P は避けたんです。
どうせ避けるくらいなら -P に bash(1) と同じ機能を割当てて
おけってのがこの変更点です。
> ATTR_DIR コマンドの追加
> ATTR_FILE で owner/group を変更可能に。
log 対応になって root 権限で FDclone を使えるようになると、
じゃあ root で一番やりたいことはというとこの辺りの操作らしい
です。
ATTR_DIR が chmod -R に相当する再帰的にモード変更するコマ
ンドですね。勿論、モードだけでなく timestamp も変えられます。
で、root で操作するならってんで、ATTR_FILE や ATTR_DIR に
chown(8) や chgrp(1) も実装しました。あんまり直観的な操作で
はありませんが、慣れれば普通に操作可能でしょう。
一応ユーザ名補完やグループ名補完にも対応してるので試してみ
て下さい。
あと、こういったバルクでモード変更する場合には、特定のビッ
トのみ変更したいというケースもあると考えてビットマスクも用意
してます。
ATTR_DIR の方には、Linux な chmod(1) にある -X, +X 的な設
定子も用意しました。これで結構楽になるでしょう。詳しくは man
page 読んで下さい。
> ディレクトリ書込み時に再配置に失敗することがある点を修正。
最後に駆込みで [FDclone-users:00449] の patch も突っ込んで
おきました。code freeze した直後だったので慌てましたが :-)
しらい たかし