« 2009年3月 | トップページ | 2009年6月 »

2009年5月

2009年5月23日 (土)

Mac OSの ls -l に現れる "@" の謎

Mac OSでは、ls -l に謎の "@" が現れることがあって気持ち悪かった:

% ls -l '/Users/takesi/Movies/opening flip.mov'
-rw-r--r--@ 1 takesi  takesi  445493 Mar 20 06:06 /Users/takesi/Movies/opening flip.mov

man ls しても Appleは教えてくれない。 他にやることもあって忙しかったので、さっそく調べてみた。

結論から書くと、これは Exntended File Attributesの存在をあらわしてるのだった。 どんな属性がついているかは、-@というこれまた 隠しオプションで見ることができる:

% ls -l@ '/Users/takesi/Movies/opening flip.mov'
-rw-r--r--@ 1 takesi  takesi  445493 Mar 20 06:06 /Users/takesi/Movies/opening flip.mov
	com.apple.ResourceFork	   286 

ここら辺のことは、Darwinの file_cmdsから lsの ソースを見て発見しました。 printlong 関数あたりを見てみると linkxattr(2) を呼び出してるのが見えます。

ただ、Extended file attributesだということがわかっても、 それがどういう風に使われるのかまったくよく分かってないんですが。 少なくとも HFS+ の拡張機能だと分かっただけで、糞Jobs がつけた はんかくさい機能かと安心することができます。

と、ここまで書いてさっさと忘れて仕事に戻ります。おしまい。

| | コメント (0) | トラックバック (0)

2009年5月15日 (金)

shell-mode を outline-minor-mode として使う

非常に小ネタです。 emacsで shell-modeを outline-minor-modeと組み合わせて使うと そこそこ便利だったと言う話です。

やりかた

shellのpromptの加工
prompt の頭に "*" をいれます。 それの場合は tcshなんで、.cshrc に
  set prompt="*[%T]%m:%c<%h> "
とかいれてます。bashやzshの方はそれなりにどうぞ。
shell-modeを outline化
.emacs.el とかにしたのを入れます:
(add-hook 'shell-mode-hook
	  'outline-minor-mode)

これで shell-modeを立ち上げれば outline-minor-modeの各種機能が 使えます。

使い方

C-c C-o C-t (hide-body)とかで history風にコマンド履歴が見られるし、 結果を見たいコマンドまでいって C-c C-o C-e (show-entry) と すれば結果を開けます。 あと、コマンドの出力がながくて先頭を見たいときも C-c C-o C-p(outline-previous-visible-heading) で サクッともどれます。

所詮 outline-modeなので、他にも outline-modeで使える技が色々使えるわけです。 まあ、flatだったものにちょっと構造を入れてみたら便利だったってねたで。

でもこうすると、コマンド出力その物も構造化したいとか思っちゃったり。 すべてが S式だったらなあ。

| | コメント (0) | トラックバック (0)

« 2009年3月 | トップページ | 2009年6月 »