FreeStyleWikiの調査用に作成したシェルスクリプト
基本的に難解なコマンドなんて書きません(=知りません)。
やりたいようにできればOKです。
シェルスクリプトの使用例
「data_dir」という項目の出現ソースを調べるために、すべてのソースファイルに対し「data_dir」をgrepする。
$ ./allgrep data_dir ./lib/Wiki.pm:# my $data_dir = $wiki->config('data_dir'); ./lib/Wiki.pm:# # 設定を$data_dirで上書き ./lib/Wiki.pm:# $wiki->config('data_dir',$data_dir); ./lib/Wiki.pm: mkpath($self->config('data_dir' )."/$child") or die $!; ./lib/Wiki.pm: my $template = $self->config('data_dir')."/template"; ./lib/Wiki.pm: copy($template."/$entry",$self->config('data_dir')."/$child/$entry"); ./lib/Wiki.pm: rmtree($self->config('data_dir' ).$path) or die $!; ./lib/Wiki.pm: and -d $self->config('data_dir')."/$child"); ./lib/Wiki/DefaultStorage.pm: my $dir = $self->{wiki}->config('data_dir'); ./lib/Wiki/DefaultStorage.pm: my $wikifile = &Util::make_filename($wiki->config('data_dir'),&Util::url_encode($page),"wiki"); ./lib/Wiki/DefaultStorage.pm: opendir(DIR, $wiki->config('data_dir')) or die $!; ./lib/Wiki/DefaultStorage.pm: my @status = stat(&Util::make_filename($self->{wiki}->config('data_dir'),&Util::url_encode($page),"wiki")); ./lib/Wiki/DefaultStorage.pm: my $dir = $self->{wiki}->config('data_dir'); ./wiki.cgi: unless($path_info =~ m<^(/[A-Za-z0-9]+)*/?$> and -d $wiki->config('data_dir').$path_info){ ./wiki.cgi: $wiki->config('data_dir' , $wiki->config('data_dir' ).$path_info);
実行結果の左側はソース名、右側は「data_dir」を含む行の内容です。
後は、各ソースの中身を一つ一つ調べていくだけの簡単なお仕事です。