unix

リダイレクトの奥義

exec 3>&1; grep yyy xxx 2>&1 1>&3 3>&- | sed s/file/foobar/ 1>&2 3>&- grep: xxx: No such foobar or directorydevice=/dev/rmt8 dd_noise='^[0-9]+\+[0-9]+ records (in|out)$' exec 3>&1 status=`((dd if=$device ibs=64k 2>&1 1>&3 3>&- 4>&-; echo $…

OSDN Linux Kernel Conference 資料

http://osdn.jp/event/kernel2002/pdf/ http://osdn.jp/event/kernel2003/pdf/ http://osdn.jp/event/kernel2004/pdf/ http://osdn.jp/event/kernel2005/pdf/

Solaris auto_ef

Solaris 10 からテキストの文字コードを判別する auto_ef というコマンドが入ったらしい。 http://shain.tomocreative.net/2007/03/auto_ef_1.html

シェル終了時の SIGHUP

http://d.hatena.ne.jp/lurker/20070220/1171932797bash 2.0.2 以降では shopt -s huponexit のようですね。これがデフォルトでは off になっているらしい。 設定されている場合、bash は対話的なログインシェルを終了する時に、全てのジョブに SIGHUP を送…

nkf のバグ

連続したオプションの解釈問題 $ echo テスト | nkf -EsLw (UTF-8 な「テスト」)どうも w (UTF-8 に変換)が効いてしまっているようです。 従来(1.92 時代までの)のオプション解釈では -Lw と解釈 されていました。 http://sourceforge.jp/tracker/index.php?…

ccache, distcc

ccacheとdistccでビルドを高速に http://www.otsune.com/bsd/ports/ccache_distcc.html

漢字をひらがな・カタカナに変換する

自慢の.emacsを貼り付けようスレより $ echo 自慢 | kakasi -JH じまん $ echo 自慢 | kakasi -JK ジマン

ユーティリティ

私たちは普段 cp, ls, find, grep などを「コマンド」と言っているが、FreeBSD man ページや古い文献では「ユーティリティ」と呼んでいるようだ。 私たちも「ユーティリティ」と呼んだ方が通っぽくて (・∀・)カコイイ! のではなかろうか。 しかし sh やデーモ…

ファイルリストを番号でソート

ファイラによくある「番号順ソート」をやってみようと思った。 $ ls ero1.jpg ero11.jpg ero12.jpg ero2.jpg hardcore1.jpg hardcore3.jpg$ ls|sed -e 's/^\([^0-9]*\).*/\1:&/;h;s/[^0-9]//g;G;s/\n/:/g'|sort -t: -k2,2 -k1,1n|cut -d: -f3- ero1.jpg ero2…

Portable Shell Programming

Autoconf: 10. Portable Shell Programming http://www.gnu.org/software/autoconf/manual/autoconf-2.57/html_chapter/autoconf_10.html#SEC123 obj という名前のディレクトリがあると、BSD make は Makefile を読む前にそこへ cd してしまう。 obj という…

/dev/zero

/dev/zero はどういった経緯で考え出されたのだろう。FreeBSD の man によると 4.4 BSD かららしい。BSD が起源なのだろうか。/usr/share/misc/bsd-family-tree によると 4.4BSD は1993年。割りと新しい。今では Solaris, Linux にもあることを考えると、そ…

コンソール

FreeBSD の /dev 以下にある tty* とかの意味を知らなかったのでちょっと調べてみた。 console, ttyv0 C-A-F1に対応。デフォルトコンソール。 ttyv1 C-A-F2 に対応。 ... ttyv8 C-A-F9 に対応。X が使う。 ttyv1 から ttyv8 までを仮想コンソールという。 tt…

email(1)

Cygwin 上でコマンドラインからメールを送信できる email というプログラムがある。 その使い方のメモ。 echo "hoge" | email -n "parasporospa" -f "xxx@r9.dion.ne.jp" -s "email tes t" bill@microsoft.com -u ユーザ名 -i パス -r SMTPサーバ --attach h…

$BASH_ENV

vim の中の :r! や 'grepprg' でもシェル関数やエイリアスを使いたいので調べてみた。 export BASH_ENV='~/.bashrc'としておくと -c をつけて非対話的に bash を起動したときにも ~/.bashrc を読んでくれる。 これで :r! シェル関数 はできるようになったん…

ディレクトリ再帰 grep について

my fxg。 fxg() { if [ $# -eq 1 ]; then find . -type f -print0 | xargs -0 grep -nH $1 elif [ $# -eq 2 ]; then find . -name "*.$2" -print0 | xargs -0 grep -nH $1 elif [ $# -eq 3 ]; then find "$3" -name "*.$2" -print0 | xargs -0 grep -nH $1 f…

sort --ignorecase

普通 --ignorecase と -i は同じなのに sort だけは -f, --ignore-case fold lower case to upper case characters -i, --ignore-nonprinting 表示可能文字のみを比較して 並び替えとなっている。これは紛らわしい。

よく使うスクリプトは全部 .bashrc に書いちゃった方が持ち運びに便利でいいかもなあ。

function align() { ruby - "$@" <<EOF if ARGV.length > 1 delim = ARGV.shift else delim = nil end lines = readlines().collect {|x| x.chomp} maxlens = {} for l in lines words = l.split(delim) words.each_with_index do |w,i| if not maxlens[i] or w.length > maxlens[</eof>…

/bin/pwd -Lと/bin/pwd -Pの結果が異なるのは

FreeBSDで /bin/pwd -Lと/bin/pwd -Pの結果が異なるのはシンボリックリンクをたどった cdをした後。

my make

メッセージを全てファイル out に書き込みつつ標準エラー出力に出力。 function make() { LANG=C /usr/bin/make "$@" 2>&1 | tee out > /dev/stderr }

xterm プチハック

kterm + uim を使ってるいるとプリエディット文字列が kterm 内の隣のテキストよりわずかに上に表示されるので直した。 static void setSpot(screen, spot_p) TScreen *screen; XPoint *spot_p; { spot_p->x = CursorX(screen, screen->cur_col); spot_p->y …

Compound Text

セレクションや XIM など X アプリケーション間での文字列の通信は コンパウンドテキスト(compound text)というエンコーディングで行われる。 変換例: euc-jp:あいうabcあいう CompoundText:0x1b 0x24 0x28 0x42 0x24 0x22 0x24 0x24 0x24 0x26 0x1b 0x28 0…