このページは、UNIX 使いである筆者の日常の愚痴などを書きためる場所です。 まとまった記事は別ページになるので、このページはいつまでも工事中です。
別ページにSSHの使い方として切り出しました。 また、NATな環境で放置したSSH接続が切断される問題についてをまとめました。
UNIXでネット見るなら必需品。 マウスでちまちまセーブなんかしてられん。
自分の便利のため、別ページに wget の使い方としてまとめてみました。 (節操のない構成だなあ…)
スクリプトを書いていて気づいたことなど。
UNIX でいうところの dup() が、Perl にはない。 代わりに、open でできる(cf. man perlfunc(1))。 たしかに、open() だろうと dup() だろうと、 新しいファイルディスクリプタを作るわけだから、 これを統一するのはスマートな手だよなあ。 Perl 的にだけど。
Perl4 の頃からの人間(自分)にはリファレンスは難しい。 同じキーにヒットする値が複数あるときに、 ハッシュの先が配列だったらいいなあと思うことがある。 これは、 @{$arrayref{$key}} でOK。
初心者が Perl を使ったときに、 最も理解しづらいのはコンテキストの周りだろう。 全体が見えないうちは理解しにくいのではないだろうか。 しかし、一通り理解しているはずの中級者以上でも、 コンテキストが原因のバグに何度もはまってしまう。
筆者がたった今はまったこと: $rev = reverse($str) とかやると文字列を反転できるが、 それを print reverse($str) などとやると、反転しないままの文字列が出力される。
理由:array context だと reverse() はリストの反転なのだ。 この場合、文字列$strが1要素だけであるようなリストを逆順に並べ替える (よって、print の結果は reverse がないときと同じである)。
マニュアルの split() の説明として、全ての字間をデリミタにする指定 @array=split(//, $str) により、 文字列を1文字づつに分割する例が書いてあるが、 これよりも @array=($str =~ /./g); の方が (少なくとも筆者の環境では)速い。 ただし、array context で評価するのを忘れずに。
GNU 風なら -vax は --vax とは異なり、 -v -a -x と等価になるのが当然だろうと筆者は思うが、 Getopt::Long は getopt_long と似たような名前のくせに、デフォルト動作が全然違う。 マニュアルを斜めに読んだだけだが、 次のようにすれば getopt_long() と割と同じように動くのではないだろうか。
Getopt::Long::Configure("bundling", "no_ignore_case");
wu-ftpd は、デフォルトで馬鹿正直に ftpd の名前とバージョンを喋るが、 これを抑制することができる。
greeting brief
manpage にもこの設定が推奨されている。 (なぜデフォルトを直さないのかと思ってしまうが)
このファイルで、各ユーザーについての指定ができる。 あやしいことに、anon ftp に関していえば、 ftpaccess の class と limit の指示に加え、 このファイルでもアクセス制限ができてしまう。 例えば、NASA からの anon ftp を禁止したければ ftpaccess に
class anonftp anonymous !*.nasa.gov
と書いても可能だが、
class anonftp anonymous *
と書いておいて、 ftphosts に
deny ftp *.nasa.gov
と書いてもできる。 また、localhost からしか anon ftp を許したくなければ
allow ftp localhost
などとなる。 あまり使い道があるとも思えないが。
shutdown -h now っていう方が好きなんですけど、 Solaris の shutdown はオプションが BSD 系とは違う。 halt させたいときは、モード0にする。
$ shutdown -i 0 -g 0
どちらか一方がモード変更、 もう一方はモード変更まで何秒待つかです。 デフォルトは30秒なので、つけた方が幸せです。 reboot はモード6です。
$ shutdown -i 6 -g 6
-i と -g はどっちがどっちだかわからないので、 6秒くらい文句を言わずに待ってもいいんじゃないの。 滅多にやることじゃないしね。 不安なら manpage 見てくださいませ。
vold って、CD-ROM 勝手にマウントしてくれてすげー便利なんだけど、 そのかわり floppy disk をどう使えばいいのかわからなかったりする。
$ volcheck $ dir /floppy/ $ dd count=1 if=/vol/dev/aliases/floppy0 of=floppy.img $ eject floppy
要するに、floppy だけは自動認識しないので、 volcheck しないと使えない。 Ultra5 などでは、ドライブにイジェクトボタンがついているので、 eject を打たずに floppy を取り出すことも物理的には可能だが、 eject してから取り出すのが約束事。
最近初めて知ったのだが、 /etc/logindevperm により、 Solaris では console ログインすると /dev/audio のオーナーがログインした人に変わる。 フレームバッファも同様。 これにより盗聴や screendump におびえなくてよいわけだ。 誰もおびえちゃいないとは思うが。 (cf. man logindevperm)
% tbl /usr/man/man1m/mpstat.1m | groff -man -Tps | lp
などとするとmanpageが格好良く印刷できる。 しかし、troff(1)だといまいちうまくいかないのはなぜだろう。 Solaris 付属の manpage でなければこんな細工は不要。
大学からマシンを引き上げて会社に置いた際のメモ。 大学ではNISだったもんで動かすまで難儀した。
$Date: 2003-04-05 16:31:32 $