はてなキーワード: Pugsとは
実行してみたら出力に変化がなかった。アルェー?
# tree -pugs | perl -e '@line=<>; $max=(sort {$b<=>$a} map {/^(.*?)\[/; length($1)} @line)[0]; map {s/^(.*?)\[/$1 . " "x($max-length($1))."\["/e} @line; print @line'
毎回正規表現考えるのも面倒かなーとかとか。
理想を語ると出力形式指定できれば最強だなーとか妄想してた。
この辺は、ファイルにして ~/bin に放りこんで、自分好みに育て上げる、ってのがエロゲ^H^H^Hギークの楽しみ方かと。
雛型的には↓かなぁ。どうだろ。弾・monger・コーガイ氏が登場したら……滅多切りさるかもw
#!/usr/bin/perl use strict; use warnings; use Getopt::Std; use vars qw($opt_t); # オプション処理 getopts('t'); # $opt_tがセットされていたらタブ処理、ということにする。 # コマンド起動 # 引数処理とかシグナルとか面倒なところは…… open TREE, "tree -pugs ".join(" ",@ARGV,"|") or die; my @line = <TREE>; # 富豪的にいく close TREE; # ここで子プロセスの処理だっけ? # それともwaitするんだっけ? # ツリー表示部分の最大長を求める。 my $max=(sort {$b<=>$a} map {/^(.*?)\[/; length($1)} @line)[0]; # 色々やる時はユーザ名とかグループ名とかファイル名とかの最大長がいるかも foreach (@line) { if ($opt_t) { # タブ(\t)で位置をそろえるとか…… } else { s/^(.*?)\[/$1 . " "x($max-length($1))."\["/e; } print; }
treeへのオプションの与え方とか、それによる出力の変化とか考えると、結構面倒だけど、自分用に決め打ちしとけば何とかなるでしょう。
あと、「[%p<>%u<>%g<>%s]」みたいなのはCPANに転がってたりしそうな気もするので、それを使うとか。
そんなところでなかろうか。
[追記]
http://search.cpan.org/~darren/String-Format-1.14/Format.pm というのがあった。
反応してくれた人がイター!
ちょっと嬉しい。
> 別にrubyでもsedでも良いけど、正規表現で問題なくパース出来るんじゃない?
毎回正規表現考えるのも面倒かなーとかとか。
> 位置あわせでよいのかな?ほかにある?
理想を語ると出力形式指定できれば最強だなーとか妄想してた。
--output-style "[%p<>%u<>%g<>%s] %n"
とすると
| |-- [-rw-r--r--<>hoge<>hoge<>9108] HTTP_BAD_GATEWAY.html.var
みたいな。
別にコマンド的である必要はまったくないっす。
> # tree -pugs | perl -e '@line=<>; $max=(sort map {/(.*?)\[/; length($1)} @line)[0]; map {s/(.*?)\[/$1 . " "x($max-length($1))."\["/e} @line; print @line'
実行してみたら出力に変化がなかった。アルェー?
何にせよPerlじゃね?ってのは超同意。
とかく出力形式を指定できたら便利だなーと。
この手のディレクトリ状況調べて提出してちょ、みたいな要求はちらほらあるのですよ。
付け加えると、CSVで出してちょーみたいな要求の場合はfindとかlsとかgrepとかその辺組み合わせてどうにでもなる感じです。
| |-- [-rw-r--r-- hoge hoge 9108] HTTP_BAD_GATEWAY.html.var
を前提に。
別にrubyでもsedでも良いけど、正規表現で問題なくパース出来るんじゃない?
位置あわせでよいのかな?ほかにある?
なんにせよ、基本的にperlじゃね?って感じで。
# tree -pugs | perl -e '@line=<>; $max=(sort map {/(.*?)\[/; length($1)} @line)[0]; map {s/(.*?)\[/$1 . " "x($max-length($1))."\["/e} @line; print @line'
かな?たぶん。
便利すぐる!とか思ったんだけど、オプション次第では出力がちょっと汚い。
これってうまいこと成形できないかな。かな。
これ。
http://arbolbell.jp/tools/2007/11/linux-tree.html
[root@localhost www]# tree . |-- cgi-bin |-- error | |-- HTTP_BAD_GATEWAY.html.var | |-- HTTP_BAD_REQUEST.html.var | |-- HTTP_FORBIDDEN.html.var | |-- HTTP_GONE.html.var | |-- HTTP_INTERNAL_SERVER_ERROR.html.var | |-- HTTP_LENGTH_REQUIRED.html.var | |-- HTTP_METHOD_NOT_ALLOWED.html.var | |-- HTTP_NOT_FOUND.html.var | |-- HTTP_NOT_IMPLEMENTED.html.var | |-- HTTP_PRECONDITION_FAILED.html.var | |-- HTTP_REQUEST_ENTITY_TOO_LARGE.html.var | |-- HTTP_REQUEST_TIME_OUT.html.var | |-- HTTP_REQUEST_URI_TOO_LARGE.html.var | |-- HTTP_SERVICE_UNAVAILABLE.html.var | |-- HTTP_UNAUTHORIZED.html.var | |-- HTTP_UNSUPPORTED_MEDIA_TYPE.html.var | |-- HTTP_VARIANT_ALSO_VARIES.html.var | |-- README | |-- contact.html.var | |-- include | | |-- bottom.html | | |-- spacer.html | | `-- top.html | `-- noindex.html |-- html (以下略)
こんな感じで出してくれる。超便利。
[root@localhost www]# tree -pugs . |-- [drwxr-xr-x hoge hoge 4096] cgi-bin |-- [drwxr-xr-x hoge hoge 4096] error | |-- [-rw-r--r-- hoge hoge 9108] HTTP_BAD_GATEWAY.html.var | |-- [-rw-r--r-- hoge hoge 6633] HTTP_BAD_REQUEST.html.var | |-- [-rw-r--r-- hoge hoge 11193] HTTP_FORBIDDEN.html.var | |-- [-rw-r--r-- hoge hoge 12700] HTTP_GONE.html.var | |-- [-rw-r--r-- hoge hoge 12846] HTTP_INTERNAL_SERVER_ERROR.html.var | |-- [-rw-r--r-- hoge hoge 7539] HTTP_LENGTH_REQUIRED.html.var | |-- [-rw-r--r-- hoge hoge 6773] HTTP_METHOD_NOT_ALLOWED.html.var | |-- [-rw-r--r-- hoge hoge 13255] HTTP_NOT_FOUND.html.var | |-- [-rw-r--r-- hoge hoge 6336] HTTP_NOT_IMPLEMENTED.html.var | |-- [-rw-r--r-- hoge hoge 6565] HTTP_PRECONDITION_FAILED.html.var | |-- [-rw-r--r-- hoge hoge 7802] HTTP_REQUEST_ENTITY_TOO_LARGE.html.var | |-- [-rw-r--r-- hoge hoge 7099] HTTP_REQUEST_TIME_OUT.html.var | |-- [-rw-r--r-- hoge hoge 7103] HTTP_REQUEST_URI_TOO_LARGE.html.var | |-- [-rw-r--r-- hoge hoge 7822] HTTP_SERVICE_UNAVAILABLE.html.var | |-- [-rw-r--r-- hoge hoge 13035] HTTP_UNAUTHORIZED.html.var | |-- [-rw-r--r-- hoge hoge 6353] HTTP_UNSUPPORTED_MEDIA_TYPE.html.var | |-- [-rw-r--r-- hoge hoge 7009] HTTP_VARIANT_ALSO_VARIES.html.var | |-- [-rw-r--r-- hoge hoge 1979] README | |-- [-rw-r--r-- hoge hoge 4256] contact.html.var | |-- [drwxr-xr-x hoge hoge 4096] include | | |-- [-rw-r--r-- hoge hoge 291] bottom.html | | |-- [-rw-r--r-- hoge hoge 9] spacer.html | | `-- [-rw-r--r-- hoge hoge 969] top.html | `-- [-rw-r--r-- hoge hoge 5043] noindex.html |-- [drwxr-xr-x hoge hoge 4096] html (以下略)
いまいちかっちょわるい。
体裁とか好きなようにいじれたらそのまま書類にできるんだけどなーと。
欲しいものをまとめると
http://anond.hatelabo.jp/20080415182703
てな感じです。
http://anond.hatelabo.jp/20080416071526
雛型をtreetest.plとして保存して動かすとこんな感じになりました。
[root@localhost www]# perl ./treetest.pl . |-- [drwxr-xr-x hoge hoge 4096] cgi-bin |-- [drwxr-xr-x hoge hoge 4096] error | |-- [-rw-r--r-- hoge hoge 9108] HTTP_BAD_GATEWAY.html.var | |-- [-rw-r--r-- hoge hoge 6633] HTTP_BAD_REQUEST.html.var | |-- [-rw-r--r-- hoge hoge 11193] HTTP_FORBIDDEN.html.var | |-- [-rw-r--r-- hoge hoge 12700] HTTP_GONE.html.var | |-- [-rw-r--r-- hoge hoge 12846] HTTP_INTERNAL_SERVER_ERROR.html.var | |-- [-rw-r--r-- hoge hoge 7539] HTTP_LENGTH_REQUIRED.html.var | |-- [-rw-r--r-- hoge hoge 6773] HTTP_METHOD_NOT_ALLOWED.html.var | |-- [-rw-r--r-- hoge hoge 13255] HTTP_NOT_FOUND.html.var | |-- [-rw-r--r-- hoge hoge 6336] HTTP_NOT_IMPLEMENTED.html.var | |-- [-rw-r--r-- hoge hoge 6565] HTTP_PRECONDITION_FAILED.html.var | |-- [-rw-r--r-- hoge hoge 7802] HTTP_REQUEST_ENTITY_TOO_LARGE.html.var | |-- [-rw-r--r-- hoge hoge 7099] HTTP_REQUEST_TIME_OUT.html.var | |-- [-rw-r--r-- hoge hoge 7103] HTTP_REQUEST_URI_TOO_LARGE.html.var | |-- [-rw-r--r-- hoge hoge 7822] HTTP_SERVICE_UNAVAILABLE.html.var | |-- [-rw-r--r-- hoge hoge 13035] HTTP_UNAUTHORIZED.html.var | |-- [-rw-r--r-- hoge hoge 6353] HTTP_UNSUPPORTED_MEDIA_TYPE.html.var | |-- [-rw-r--r-- hoge hoge 7009] HTTP_VARIANT_ALSO_VARIES.html.var | |-- [-rw-r--r-- hoge hoge 1979] README | |-- [-rw-r--r-- hoge hoge 4256] contact.html.var | |-- [drwxr-xr-x hoge hoge 4096] include | | |-- [-rw-r--r-- hoge hoge 291] bottom.html | | |-- [-rw-r--r-- hoge hoge 9] spacer.html | | `-- [-rw-r--r-- hoge hoge 969] top.html | `-- [-rw-r--r-- hoge hoge 5043] noindex.html |-- [drwxr-xr-x hoge hoge 4096] html (以下略)
ステキすぐる。
これを元にいろいろいぢくればcodereposでコミっても怒られないものができそう。
Format.pmもかなり使えそうと言うか僕の要求ずばりですよ。
前回のはこんなかんじ。
http://anond.hatelabo.jp/20070301233810
せっかくトラックバックもらったのにもう元記事きえてたよ。なんか遅くなってごめんなさい。
そんで、時間が結構とんでしまったんだけど、ひとまずasin:4797336021をパラ読み。わかりやすかった。
まだ全然身になってないので、コードを読み、書きしながら、きちんと学んでいこう。
そんでこれからの教材なんだけど、やっぱトラバにある通りなんか公開されてるものがいいよね。
Pugsでも読んで勉強しようかな。なんかいいのありますかね?
参考書としてはhttp://www.sampou.org/cgi-bin/haskell.cgiがいいのかな。
でも前ちょっと見たときは、「やさしい」なのに全然やさしくなくて悲しかったよ(泣
「ふつうの」がちょっと高いけどいいんじゃないかなーと思った。