[コマンド] rlwrap

GNU Rreadlineライブラリは入力の際の便利な機能を提供するライブラリ。これを使用したプログラムでは、入力の際にシェルのようなEmacsキーバインドでの移動や、履歴の呼び出し、カッコの対応の表示などの機能が使えるようになる。 rlwrapはreadlineを使用していないプログラムでもreadlineが使えるように入力をラップするコマンド。 http://utopia.knoware.nl/~hlub/rlwrap/ から入手できる。FreeBSDではportsにあった。 特にLispのREPLではカッコの対応がすぐわかってうれしい。

[sed] 全角英数を半角にする

あるテキストファイルの全角英数を半角英数に変換する必要があった。 文字ごとの置換には sed の y 関数を使う。 sed ‘y/置換する文字*/置換後の文字*/’ として、置換する文字と対応する置き換え先の文字を列挙する。 % sed ‘y/ABCDEFGHIJKLMNOPQRSTUVWXYZ¥ abcdefghijklmnopqrstuvwxyz0123456789/¥ ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789/’¥ input.txt > output.txt のようにすれば、全角英数を半角英数に置換できる。

setuidビットとsetgidビット

chmodコマンドではファイルやディレクトリのモード指定に絶対値指定として4桁の8進数を用いる。 1~3桁目まではrwxrwxrwxなのだが4桁目はMSBからsetuidビット(suidビット)、setgidビット(sgidビット)、スティッキビットとなっている。 setuidビット、setgidビットをファイルに設定した場合、そのファイルが実行されるとき、実行権限が実行したユーザではなく、そのファイルのオーナーやグループとして実行される。 ディレクトリに設定した場合、そのディレクトリ以下で作成したファイルやディレクトリはそのディレクトリと同じオーナーやグループになる。 グループでディレクトリを共有する場合(Subversionのリポジトリなど)に使うと便利。

X環境で日本語キーボードのアンダースコアが入力できない

新規にX環境をセットアップした。 jp106キーボードで`_'(アンダースコア)が入力できない。 X.orgは7.4にもなったというのに未だにこの問題は解決されてない様子。 解決法を忘れていて調べ直すことになったので、メモ。 % xev でキーコードを調べる。 % vi ~/kbd に keycode = backslash underscore と書いて、 xmodmap ~/kbd とする。

joinコマンド

2つのファイル中のレコードを連結するにはjoinコマンドが便利。 ファイルの1つ目のフィールドをキーとして対応する値を連結して表示する。 出力は キー、ファイル1の値(複数)、ファイル2の値(複数) となる。 catが行の連結なのに対して、joinは列の連結。 >join -t ‘,’ file1 file2