主に、UNIX 系ツールの 本質的ではないけれど便利で楽しい使い方の紹介と、 色々な自作 patch の紹介です。
私が便利だなと思っている、 tcsh のちょっと凝った使い方を紹介します。 tcsh 以外のシェルでも出来るものもあります。 (各種シェルの比較はこちら)参考書籍
- 『プロフェショナル シェルプログラミング』(アスキー出版局)
UNIX ユーザの指の負担を大幅に削減した機能、 それが補完機能(+ヒストリ編集、ライン編集)です。 長いファイル名や深いディレクトリも即座にアクセスできます。 これさえあれば Explorer系のソフトなんて全く必要無いですね。 最近は GNU readline (補完+ヒストリ編集+ライン編集用のライブラリ) を使用したソフトも増えて便利になりました。 たまに Windows なんか使うとストレス溜ってしまいます。そして、tcsh では complete コマンドを使うことで 通常のファイル名やコマンドの補完だけでなく コマンドに応じたファイル名補完やオプションの補完の設定が可能です。 この機能をプログラマブル補完機能といい、 例えば、
complete cd 'p/1/d/'と設定すれば、cd コマンドではディレクトリのみを補完の対象にします。 また、complete {cc,gcc} 'c/-[IL]/d/' 'n/-c/f:*.c/' 'n/*/f:*.[co]/'だと、cc や gcc では、-I, -L オプションの後はディレクトリ、 -c オプションが来れば *.c のみ、そうでなければ *.c か *.o を 補完の対象にします。 ファイルやディレクトリだけでなく変数名や任意の文字列からの選択 (長いオプションとか)など非常に柔軟に設定できます。 配布物に含まれている complete.tcsh (FreeBSD の package なら /usr/local/share/doc/tcsh/complete.tcsh) に complete コマンドの例が出ていますので参考にしてください (ほとんど理解不能なほど複雑なものもありますが^^;)。 また、私が使っているものを ここ に置いておきます (基本的なものですが補完の威力が全然違います)。ちなみに、zsh では compctl というコマンドで同様に設定できます。 また、zsh の配布物に lete2ctl というツールがあって tcsh の complete コマンドを変換することもできるようです。 (comctl は complete より若干高機能ですが設定が読みづらいと思います)。 一応、私が使っている(いた)ものを ここ に置いておきます。
シェルを使用する時に誰もが真っ先にカスタマイズるのがプロンプトでしょう。 特に tcsh, zsh では `%' で始まる特殊文字が、 bash では `\' で始まる特殊文字が使用可能で、 いろんな設定が出来ます。 tcsh での一例を挙げるとset prompt='[ %d %w %D %T %Y ] %~\ %n@%m<%h>'と設定すると[ Fri Feb 19 0:58 1999 ] ~/public_html hsaka@myname<101>のようになります(`myname' はホスト名です)。 当然、時刻やカレントディレクトリ(%~) はプロンプトの表示毎に変わります。 マニュアルには多くの特殊文字の説明があるので、 いろいろ試してみるといいでしょう。 例えば、太字(%B…%b)や アンダーライン(%U…%u)も可能です。 さらにカラー化も可能です。
kterm などの端末はカラー表示が可能です (Windows のいわゆる DOS 窓でも同様に可能です)。 カラー表示のためには、`\e[コードm' という形の 特別なエスケープシークエンスを用います (正確には OS や端末依存性があります。多くはこれですが)。 `\e' はエスケープ文字とよばれ、 `^['(Ctrl+[) や `\033'(8進表示) で表される [ESC] キーを押した時の文字です。 [Ctrl+V] [ESC] と押せば入力できます(`^[' と表示されます)。 `コード' は、00 … 初期状態へ、理解しない端末もある 01 … bold(太字) 04 … アンダーライン 05 … blink(太字になる端末が多い) 07 … reverse(反転) 30 … 文字を black 31 … 文字を red 32 … 文字を green 33 … 文字を yellow 34 … 文字を blue 35 … 文字を magenta 36 … 文字を cyan 37 … 文字を white 40 … 背景を black 41 … 背景を red 42 … 背景を green 43 … 背景を yellow 44 … 背景を blue 45 … 背景を magenta 46 … 背景を cyan 47 … 背景を whiteが使用できます。 複数組み合わせることも可能で、`;' で区切ります。 例えば、printf "\033[33;41;04mABC\033[00m\n"とコマンド入力すると、と出力されます。 なお、kterm 上で動作させる場合、 厳密には red や yellow は実際の色ではありません。 kterm に対して *VT100*textColor0 〜 *VT100*textColor7 で設定されている色です。 デフォルトでは、そのままの色です。
ABC さて、tcsh でどうカラー化するかですが、 まずは、ファイル補完候補や ls-F での表示をカラー化してみましょう。 といっても難しくはなく、
set colorとするだけです。 これで、GNU-ls と同じくファイルの一覧がカラー化できます。 環境変数 LS_COLORS を使うところも同じです。 tcsh とは関係ありませんが、 ls の表示がカラーになると非常に分かりやすいです。 Linux を使っている人は /bin/ls が GNU-ls なのでいいのですが、 FreeBSD を使っている人は package から gnuls をインストールしましょう。 gnuls --color でカラー表示できます。次に、プロンプトをカラー化してみます。 tcsh ではプロンプトにエスケープシークエンスを安全に組み込むために `%{', `%}' という一組の特殊文字を使います。 一例を挙げると、
set prompt='[ %{\e[31m%d %w %D %T %Y\e[00m%} ] %{\e[34m%~\e[00m%} \ %n@%m<%h>'とすると、[ Fri Feb 19 0:58 1999 ] ~/public_html hsaka@myname<101>の様になります。 `\e' は `\033' でもかまいません。 (注意、`%}' の直後に改行しないようにしてください。)
ちなみに、zsh や bash でも同様のことができます。 zsh では tcsh と同じく `%{…%}' で、 bash では `\[…\]' でエスケープシークエンスを保護します。また、NLS カタログ をカラー化することもやってみました (こんな感じです)。 tcsh に patch をあてる必要がありますが ここ に置いておきますのでよろしければお使いください。
kterm などのタイトルを変更することもコマンドラインから可能です。 tcsh とは直接関係ありませんが、tcsh はこれを使うためにあるとしか 思えない機能を持っていますので紹介します。タイトルを変更するためには、 `\e]2;タイトル\a' という特別なエスケープシークエンスを用います。 `\a' はベル文字とよばれ `^G'(Ctrl+G) や `\007'(8進表示) で表される文字で、 本来 beep 音を鳴らすために用いられます。 [Ctrl+V] [Ctrl+G] と押せば入力できます(`^G' と表示されます)。 これを使って、例えば、
printf "\033]2;$PWD\007"とコマンド入力すると、kterm のタイトルバーにカレントディレクトリが表示されます。
また、`\e]1;タイトル\a' はアイコンのタイトルを変更します。tcsh でこれをどう使うかなのですが、 一つはプロンプトに埋め込んでしまう方法があります。 一例をあげると、
set prompt='%{\e]2;kterm: %~\a\e]1;%.\a%}[ %d %w %D %T %Y ] %~\ %n@%m<%h>'とすると、タイトルには `kterm: カレントディレクトリ' と表示され、 アイコンにした時には、そのタイトルにカレントディレクトリの最後の名前 (`%.')が表示されます。
二つ目の方法は、特殊な alias を使用する方法です。 precmd という alias を設定すると、各プロンプト表示前に実行されます。 そこで、alias precmd 'pritnf "\033]2;kterm: $PWD\007"と設定すると各プロンプト表示前にタイトルを変更することが出来ます。 cwdcmd という alias を同様に設定すると、 ワーキングディレクトリが変わった後にタイトルを変更することが出来ます。
どちらを使用してもいいのですが、 特殊文字を使えるので私はプロンプトに埋め込んでいます。
tcsh が他のシェルより一歩進んでいるのが国際化対応です。 複数バイト文字の表示編集はもちろん NLS (Native Language System)カタログ に対応しています (NLS についてはこちら)。 現在、正式リリースには C(English), French, German, Greek, Italian, Japanese, Spanish が含まれています。 特に、日本では znc HomePage でまとめられている多くの 「アニメキャラ」風 や 「方言」風 の日本語カタログが使用可能です。 非常に楽しいので是非一度、使用してみてください。 私も、生まれ故郷の 『土佐弁』風カタログ を作ってみましたので、 興味がある方はお使いください。
(ひとこと)
生まれ故郷の言葉はいいです。ほっとします。 コマンドを間違った時に『Command not found.』と言われるより、 『コマンドが見つからんちや.』と言われた方がどれほどいいか。 好きなキャラでも一緒ですけれど。
Vim は vi 系の高機能エディタです。 それを日本語対応させたのが JVim です。 基本的には vi クローンなのですが以下の様な点が機能強化されています (詳しくは、 Vim 日本語移植版のページ を御覧ください)。UNIX のもう一つの高機能エディタ Emacs(Mule) が持っている機能を移植した感じです。
- マルチ Undo 機能
- ファイル/コマンド/変数の補完機能
- コマンドヒストリ機能
- マルチ・ウィンドウ
- ブロック指定
- オンラインヘルプ
- 日本語対応(EUC,SJIS,JIS)
- Windows対応
元々、Windows 上で動作する vi クローンはないかなと探して見つけたのが JVim なのですが、 その高機能さに UNIX系 OS 上でも OS 付属の vi を捨てて JVim に乗り換えました。 個人的には、マルチ Undo 機能と補完機能が非常に便利です。 vi の持つ軽さは損なわれていませんし。
Lynx はテキストベースのブラウザです。 絵の表示は(当然)出来ませんが、 動作が非常に軽く、文字ベースの情報収集やダウンロード、 HTML 形式のマニュアルを読む時などに非常に便利です。 lynx-2.8 あたりから国際化もされています (kinput2 などを使った日本語の入力も当然できます)。 UNIX 版だけでなく Windows 版もあります。が、私はもうひとつのテキストベースのブラウザ w3m を愛用しています^^
Lynx も kterm 上でカラー化が出来ます。 こんな感じです
カラー化するためには ~/.lynxrc に、show_color=defaultを設定して、/etc/termcap でカラー対応していると設定されている端末 (FreeBSD では xterm-color)を -term オプションで指定して立ち上げます。lynx -term=xterm-color-term オプションを使用せずに、環境変数 TERM を変更してもいいですし、 /etc/termcap の kterm のエントリを変更しても可能です。色の変更については、lynx.cfg (FreeBSD では /usr/local/etc/lynx.cfg)に、
#COLOR:0:black:white #COLOR:1:blue:whiteなどとデフォルトが(コメントの形で)設定されていますので、 これを参考にして設定します (COLOR:0 〜 COLOR:7 の意味も lynx.cfg に書いてあります)。 具体的には、環境変数 LYNX_CFG にファイル名(~/.lynx_cfg とします)を 設定し ~/.lynx_cfg を次の様に書きます。INCLUDE:/usr/local/etc/lynx.cfg COLOR:6:brightred:whiteCOLOR:6 は、現在セレクトされているリンクの色であり、 これの文字の色を brightred にしてみたものです。 `bright' は kterm 上では太字になります。 なお、kterm 上で動作させる場合、 厳密には red や white は実際の色ではありません。 kterm に対して *VT100*textColor0 〜 *VT100*textColor7 で設定されている色です。 デフォルトでは、そのままの色です。
xlhtml は MS-Excel の *.xls ファイルを HTML に変換するツールです。
ホームページは、 http://www.xlhtml.org/ です。
現在、最新版として xlhtml-0.3.9.5 が公開されています。 また、Maling List も出来ています。table タグを多用した HTML を出力しますので、 table に対応したテキストブラウザ w3m がお勧めです。
Excel 97 以降では Unicode(UTF-8) で出力されますので、 lv 等で Shift-JIS か EUC-JP に変換するといいでしょう。 xlhtml の README にもありますが、xlhtml file.xls | lv -Iu8 -Oej | w3m -T text/htmlの様にして使えます。 私の開発している w3m-m17n であれば、xlhtml file.xls | w3m-m17n -T text/htmlとすることもできます。
さらに、w3m は mime.types と mailcap を見ますので、 ~/.mime.types にapplication/excel xlsを追加し、~/.w3m/mailcap にapplication/excel; xlhtml %s; htmloutputと書いておくと、w3m-m17n file.xlsとして使えます。 (注意: mailcap の htmloutput は w3m の独自拡張です)。
また、同じ方法で、PowerPoint (pptHtml を使用) や MS-Word (wv を使用) の文書を w3m(w3m-m17n) で読む事ができます。なお、Excel 5.0 や Excel 95 だと Shift-JIS で出力されるのですが、 デフォルトだとエンティティ表現(&#XXXX;)でエンコードされてしまいますので -m オプションを使ってエンコーディングされないようにするといいでしょう。
xlhtml -m file.xls他に、xlhtml はタブ区切りやカンマ区切り(CSV形式)の plain テキストとして出力することもできます。 例えば最初のページを出力する場合には、xlhtml -asc -xp:0 file.xlsとします。 その他のオプションは xlhtml を引数無しで立ち上げると一覧が表示されますので、 それを見てください。
xlhtml には ppthtml という PowerPoint の *.ppt ファイルを HTML に変換するツールも同包されています。 ただし、ChangeLog に0.0.0 10/13/1999 *So far its just a dream. :)とあるように、実用レベルには達しておらず文字情報だけしか変換できません。
oneko は、X Window System 上のあまりにも有名なマスコットです (知らない人っているの?)。 私にとっては X 上のプログラムを勉強するきっかけとなったソフトでもあります。この oneko ですが 2.0b になってから biff 機能等、大幅に機能強化されていますが、 オリジナルの配布ページがないためか、あまり知られていないようです。
現在、オリジナルの oneko-2.0b は佐々木さんのページ
http://www02.so-net.ne.jp/~nsasaki/oneko/
からダウンロードできます。また、ここには POP 対応 patch もあります。
また、荒井さんによる TIP patch (到着メールのリスト表示ウィンドウが 追加されている。oneko-2.0b + POP 対応 patch への patch)もあります。
http://www.net24.ne.jp/~ryo2/fsw.htmlまた、oneko-2.0b + POP 対応 patch + TIP patch に、 メールの差し出し人表示機能や XPM 対応(カラー化) を施した patch を作ってみました。 詳しくは、README を読んでください。
oneko-2.0b-sender0.4.tar.gz
(実は、一年以上前に作ったものなのですが公開していませんでした。 今見ると、稚拙なコーディングである部分もありますが御容赦ください。)