11/14/2011

FreeBSD と GNU coreutils の yes(1) のコードを読んで

すっごくすっきりしてる FreeBSD の yes(1) の実装と、GNU coreutils のお決まり処理をいろいろやってる GNU coreutils の yes(1) の実装。僕はすっきり実装の FreeBSD のほうが好きだなあ。

今回初めて知ったのは、FreeBSD と GNU coreutils の yes(1) の挙動の違い。

Ubuntu (11.04) で yes a b c を実行すると、
$ yes a b c | head -n1
a b c
 て感じだけど、FreeBSD (8.2-RELEASE) だと
% yes a b c | head -n1
a
になっちゃう。シェルスクリプトとかで yes(1) を使うときでスペース区切りの文字列を扱いたければダブルクォートとかでくくればどっちの場合でも動きそうだ。

ふたたび、Ubuntu (11.04) だと、
$ yes "a b c" | head -n1
a b c
 って感じだし、FreeBSD (8.2-RELEASE) も
% yes "a b c" | head -n1
a b c 
ということで、おんなじ結果になる。よかったよかった。

ところで、yes(1) の使い道についてのヒントは en.wikipedia.org の yes (Unix) の記事に書いてある。へー、(テスト目的とかで?)適当なファイルを作りたい時にも便利なんだねー。

よし、今度は tail(1) に挑戦してみよー。ちょっと難しそうだけど...


0 件のコメント:

コメントを投稿