GNU Rreadlineライブラリは入力の際の便利な機能を提供するライブラリ。これを使用したプログラムでは、入力の際にシェルのようなEmacsキーバインドでの移動や、履歴の呼び出し、カッコの対応の表示などの機能が使えるようになる。
rlwrapはreadlineを使用していないプログラムでもreadlineが使えるように入力をラップするコマンド。
http://utopia.knoware.nl/~hlub/rlwrap/
から入手できる。FreeBSDではportsにあった。
特にLispのREPLではカッコの対応がすぐわかってうれしい。
あるテキストファイルの全角英数を半角英数に変換する必要があった。
文字ごとの置換には sed の y 関数を使う。
sed 'y/置換する文字*/置換後の文字*/'
として、置換する文字と対応する置き換え先の文字を列挙する。
% sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ¥
abcdefghijklmnopqrstuvwxyz0123456789/¥
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789/'¥
input.txt > output.txt
のようにすれば、全角英数を半角英数に置換できる。
ftpコマンドでファイルを一括転送するにはmget、mput、mdel内部コマンドをつかう。
>mget *.html
対話モードでは1ファイルごとにダウンロードするか聞いてくるのでprompt内部コマンドで非対話モードに切り替えておく。
環境変数の一覧を出力するにはprintenvコマンドを引数無しで使う。
ファイルなどを16進ダンプするにはod(octet dump)コマンドを使う。
>od -Ax -txC foo.jpg
0000000 ff d8 ff e0 00 10 4a 46 49 46 00 01 01 01 00 60
0000010 00 60 00 00 ff db 00 43 00 08 06 06 07 06 05 08
0000020 07 07 07 09 09 08 0a 0c 14 0d 0c 0b 0b 0c 19 12
0000030 13 0f 14 1d 1a 1f 1e 1d 1a 1c 1c 20 24 2e 27 20
0000040 22 2c 23 1c 1c 28 37 29 2c 30 31 34 34 34 1f 27
...
もとは8進ダンプするコマンドだけど-tオプションで表示形式を選択できる。
-tに続くxで16進表示を指定。続くCでcharサイズごとに区切る。
-Axオプションはアドレスの表示形式を指定している。
xで16進を指定。
chmodコマンドではファイルやディレクトリのモード指定に絶対値指定として4桁の8進数を用いる。
1~3桁目まではrwxrwxrwxなのだが4桁目はMSBからsetuidビット(suidビット)、setgidビット(sgidビット)、スティッキビットとなっている。
setuidビット、setgidビットをファイルに設定した場合、そのファイルが実行されるとき、実行権限が実行したユーザではなく、そのファイルのオーナーやグループとして実行される。
ディレクトリに設定した場合、そのディレクトリ以下で作成したファイルやディレクトリはそのディレクトリと同じオーナーやグループになる。
グループでディレクトリを共有する場合(Subversionのリポジトリなど)に使うと便利。
新規にX環境をセットアップした。
jp106キーボードで`_’(アンダースコア)が入力できない。
X.orgは7.4にもなったというのに未だにこの問題は解決されてない様子。
解決法を忘れていて調べ直すことになったので、メモ。
% xev
でキーコードを調べる。
% vi ~/kbd
に
keycode <調べたキーコード> = backslash underscore
と書いて、
xmodmap ~/kbd
とする。
対話シェルでデータとして[TAB]を入力するには「C-v C-i」と入力する。
CはCtrl。
どのシェルで使えるかは未確認。
2つのファイル中のレコードを連結するにはjoinコマンドが便利。
ファイルの1つ目のフィールドをキーとして対応する値を連結して表示する。
出力は
キー、ファイル1の値(複数)、ファイル2の値(複数)
となる。
catが行の連結なのに対して、joinは列の連結。
>join -t ',' file1 file2
最近のコメント