タグ

2007年3月31日のブックマーク (36件)

  • 意外と知られていないファイル探索方法(grep --include) - 技術メモ帳

    書こう書こう書こうと思っていたら先に書かれてしまった。 404 Not Found この行き場の無い感情をどうにかボクの中から排除しなければならない。 そう考えたときに独り言のようにこのブログロに記述すれば良いじゃないかという 結論にたどり着いたのはもはや必然とも言える。 find | xargs による探索だが、それが簡単なものであれば 実は grep コマンドだけでうまくいく。 GNU grep、BSD 系の grep コマンドでは include、exclude オプションで再帰検索時に検索対象とするファイルを絞り込む事が出来るのだ。 --include=pattern --exclude=pattern たとえば、カレントディレクトリ以下の *.rb から test という文字列を 含むファイルを探索したい場合は次のようにすれば良い。 fgrep -r --include='*.r

  • 実行ファイルを実行できる形で圧縮する - 技術メモ帳

    忘れてたのでメモ。gzexe コマンド。 gzexe - compress executable files in place http://www.linux.or.jp/JM/html/GNU_gzip/man1/gzexe.1.html echoするだけのshell scriptを圧縮してから実行してみる。 $ cat ./test.sh #!/bin/sh echo aiueo $ gzexe ./test.sh ./test.sh: -9.1% # 損してる!! $ chmod u+x ./test.sh $ ./test.sh aiueo 仕組みは簡単で、 ファイルの末尾に圧縮したデータを入れていて、 それを展開して実行するコードが上の方に記述されている。 バイナリが含まれるので cat -v させていただいた。 $ cat -v ./test.sh #!/bin/sh ski

  • システム管理に使えるファイル更新監視テク - 技術メモ帳

    システム管理とかしてると、特定のディレクトリ以下のファイルの更新を 調べたいときとかっていうのはわりとある。 どんなファイルが更新されてどういった内容に変化したのかを見える化。 またしても Linux / watch ネタだ。FreeBSDはportsで、mac osx(darwin)は どこかで公開されてたdmgを使ってる。 中毒性があるので未成年の使用は禁止されている。 カレントディレクトリ内のファイルを 最近更新があったファイルを上の方に表示し、 最終行2行を表示し続けるもの。 $ watch -n2 'tail -n2 `ls -t`' Every 2s: tail -n2 `ls -t` Wed Feb 28 01:04:40 2007 ==> test2.txt <== unko ==> test4.txt <== aiueoadfsaf ==> test1.txt <== e

  • zshとSIGHUPとその設定 - 技術メモ帳

    shell と SIGHUP - odz buffer 関連: 一度 tty から起動したプロセス (csh/ksh 版) - にぽたん研究所 なるほど。zshではデフォルトだと 終了時にSIGHUPが送信されるらしい。 手元のbash2.0で試してみたら終了時にSIGHUPが送信されなかった。 zshで終了時に警告を出さないようにするには、 setopt nocheckjobs とすればよいようだ。 あと、zshにはいきなりdisownの状態(job tableに加わらない状態)で バックグラウンド実行する &! という記法がある。 SIGHUP送られない。 % perl nohup.pl &! % exit % pgrep -fl nohup.pl 524 perl nohup.pl -- 余談だが、zshではsetoptに指定するオプション名に 好きなだけアンダーバーをつける事が出来

  • 漢のzshに乗り換えた時にアッーってなるコト - 技術メモ帳

    男のbashユーザーが、バラ色の紳士こと漢のzshに乗り換えたときに アッーってなるコト事を先ほどいくつか思いついたので共有する。 !!とかの履歴実行はrコマンドで zshには、r というシェル組み込みコマンドがあって 履歴からの実行が簡単に行える。 たとえば、一番最後に実行したviコマンドを実行したいときなどだ。 bashなんかだと !vi で出来るのだが、 rコマンドだったら % r vi でよい。 直前に実行したコマンドを再び実行したいとき、 bashなんかだと !! というやり方になるが、 rコマンドでは、 % r とするだけでよい。 また、文字列を置き換えてからの履歴実行はどうだろう。 たとえば次のようなbashの例だ。 $ vi .zshrc $ !vi:s/zsh/bash/ これは、最後に実行したviコマンドの引数文字列を ":s/zsh/bash/" によりzshという文

  • 技術メモ帳 - 単語抽出するちょっとしたテクニック

    shell のちょっとしたテクニック - odz buffer odzさんのところで単語の出現頻度を調べるためのワンライナーが紹介されている。 単語抽出についてはいくつかやり方があるので紹介する。 特に egrep -o は非常に実用的。 もちろん、この話はリンク先において主題ではない。 俺のただの自己満足。 tr -cs で単語抽出 $ tr -cs 'a-zA-Z' '\n' < ./.zshrc 上記コマンドで、a-zA-Zのみで構成される文字列を抽出できる。 -c オプションで、'a-zA-Z' の補集合(以外)を '\n' に変換し、 -s オプションで、最後の引数で指定される要素の重複を除去している。すなわち '\n' の連続を除去している。 grep -o で単語抽出 grepには、( -o、--only-matching ) オプションというのがある。 これは、指定された正

  • 技術メモ帳 - 二つのファイルに共通する行をエレガントに抽出

    id:parasporospa さんの uniq -d と uniq -u についての記事を見た。 それぞれ、重複する行、ユニークな行を抽出するオプションなのだが、 それらを利用したおもろいTipsが紹介されている。 uniq の -d と -u - メモ帳 # a, b に共通な行を抜き出す cat a b | sort | uniq -d > common # a にだけ含まれる行を抜き出す cat a b | sort | uniq > all cat a all | sort | uniq -u >only_in_a (中略) 存在意義がわからなかったオプションの使い道を見つけたときは妙に感動する。 僕が、uniq のこれらのオプションを知ったのは、 無能上司に教えてもらったときだ。懐かしい。 uniq -c に鳥肌が立ったのが昨日のように思い出される。 通称アルファギークの Da

  • xargsコマンドを使って指定したコマンドを並列実行させる - 技術メモ帳

    あまり知られていないが、GNUのxargsコマンドには、 プロセスの最大数を設定できるオプションというのが用意されている。 コレを使って、プロセスを並列実行させてみよう。 xargs --max-procs=MAX-PROCS -P MAX-PROCS command MAX-PROCSに数字を指定すると、 最大で、その数だけ command プロセスを生成する。 デフォルトは、1プロセスだけになっている。 いくつか例を交えて説明する。 サンプルとして、以下のようにURLが行ごとに記述されたファイルを元に curlをxargsで並列実行して、HTMLデータを取得してみよう。 $ cat ./url_list.txt http://www.google.co.jp/ http://www.yahoo.co.jp/ http://b.hatena.ne.jp/ まず、普通にxargsを使ってc

  • zshのzargsコマンドの使い方 - 技術メモ帳

    zsh には、zargsコマンド(組み込み関数) というのが用意されている。 これは、拡張グロブ用の xargs コマンドと言っても良いだろう。 マニュアルを見ると、xargs コマンドとオプションは、完全に互換しているらしい。 autoload zargs とする事で利用可能だ。 使い方だが、xargs というと、標準入力から読み込んだ要素、行に対して 特定のコマンドを実行するというものだが zargs の場合は、引数に指定した 拡張グロブ に対してこれらの処理を行う。 % zargs OPTIONS -- 拡張グロブ -- 実行したいコマンド たとえば、xargs で一番利用されると思われる ファイル数が ARG_MAX を越えてしまっているディレクトリ内のファイルを まとめて削除したい場合などは、次のようなコマンドを入力すれば良い。 % zargs -- ./* -- rm これだけ

  • 複数のファイルの名前をまとめて変更する on zsh - 技術メモ帳

    最も簡単なやり方を紹介するのを忘れていた。 for file (*.html) mv $file $file:r.htm

  • zshのurl-quote-magicでURL文字列を自動エスケープ - 技術メモ帳

    URL文字列を自動的にエスケープしてくれる url-quote-magic が非常に "良さげ" である。 たぶん、http:// という文字列で始まる文字列を入力しようとしたときに適用される。 autoload -U url-quote-magic zle -N self-insert url-quote-magic ちょっと試しにやってみよう。 たとえば、以下のURLをコピーしておく。 http://www.google.co.jp/search?hl=ja&q=%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A 通常の状態でペーストしてみると、 案の定おかしな事になる。誰もが期待する結果だ。 john ~[12979]% echo http://www.google.co.jp/search?hl=ja&q=%E3%81%82%E3%81%84

  • ssh-copy-idコマンドで公開鍵をリモートホストに登録する - 技術メモ帳

    http://www.t-dori.net/k-way/?date=20061218 こんなコマンドがあったのか。常識? ssh-copy-id username@hostname.example.jp か。パスワード認証のパスワードが求められる。 あああ、こんな便利なコマンドあったのか。 いわゆる authorized_keys に登録する処理が簡単に行える。 ただ、ほとんどの環境に入ってない。 最近のOpenSSHだと入ってるのかな。 ちなみにいつもはこうやってる。 $ cat ./.ssh/id_rsa.pub | ssh user@remote_host "cat >> ./.ssh/authorized_keys" 参考: http://www.delafond.org/traducmanfr/man/man1/ssh-copy-id.1.html http://takkan-m

  • 入力履歴からの予測による自動補完機能 - 技術メモ帳

    zshには、過去の入力履歴から予測し、 リアルタイムに自動補完してくれるという機能というのがあるようだ。 predict-on というのが該当する。 例えば以下の画像は、 この機能を有効にした状態で 'h' とだけ入力した状態だ。 Enter キーを押すだけでただちに実行できる。 なんだか、結構便利だったので 以下のような設定で使用する事にした。 % autoload predict-on % zle -N predict-on % zle -N predict-off % bindkey '^X^Z' predict-on % bindkey '^Z' predict-off % zstyle ':predict' verbose true zsh の man で載っているキーバインドに設定してみた。 Ctrl+X Ctrl+Z で predictモードが ON になり、 Ctrl+Z

    入力履歴からの予測による自動補完機能 - 技術メモ帳
  • 引数文字列の最大バイト数取得する - 技術メモ帳

    $ getconf ARG_MAX 262144

  • 技術メモ帳 - zsh/filesで引数の最大バイト数を回避する

    zshmodules の zsh/files を利用すると、 chgrp, chown, ln, mkdir, mv, rm, rmdir, sync といったコマンドが、 zsh組み込みの関数に置換えられる。 メリットとしては、 移植性が高くなる、 引数文字列の最大バイト数の制限を受けなくなる ということが挙げられるだろう。 このうち、特に僕が便利だなと思っているのが、 引数文字列の最大バイト数の制限を受けなくなるということだ。 簡単に説明すると、 通常、コマンドを実行するときに 引数文字列のバイト数が一定の値を越えると 以下のようにエラーを出して処理をしてくれない。 % mv ./* ../dir zsh: argument list too long: mv そして最悪な事にコレは、 グロブなどを展開した後の文字列のバイト数であるため、 zsh の extended_glob とは非

  • dankogaiさんのアプリのXSS - 技術メモ帳

    真のモヒカンの高木さんのブックマークで http://b.hatena.ne.jp/entry/http://blog.livedoor.jp/dankogai/archives/50689915.html HTTPレスポンス分割攻撃の疑いがあると書かれていた。 ためしにやって見ようとしたら、 エラーメッセージを出力するときに HTMLエスケープがされてなかった。副作用副作用。 http://blog.livedoor.jp/dankogai/archives/50689915.html IE / Safari で確認 http://u.dan.co.jp/r.cgi/<script>alert('easy%20xss');</script> Enjoy!! Dan the XSS programmer

  • topコマンドの出力をカラフルにする - 技術メモ帳

    ずっと知らなかった。。 こういったずっと前から知ってるコマンドが カラフルになると感動する。DDI。 やり方は、起動中にzコマンドを入力するだけ。 他にもどこをハイライトするか、など詳細に設定できる。 $ top # 起動中にzと入力 設定し終わったら、W と大文字で入力する事で $HOME/.toprc に現在の設定が保存される。 Linux とかにはいってる procps パッケージの top コマンドだけです。 参考: http://www.linux.or.jp/JM/html/procps/man1/top.1.html

  • 技術メモ帳: [unix]複数のファイルの名前をまとめて変更する

    複数のファイルの名前を変更する際に、 便利なコマンドというものがある。 いくつかご紹介させていただこう。 カレントディレクトリにあるファイルの名前を、 たとえば、*.html を *.htm と名前を変更するという課題に対し どのぐらいエレガントに書けるかというのを比較してみる。 まず、普通にやったらどうだろう。 おそらく、for文 をつかうことだろう。 for file in *.html do base=`basename $file .html` mv $base.html $base.htm; done; zshだともうちょっとスマートにかけて、 for file in *.html do mv $file:r.html $file:r.html; done; こんな具合。 for文 が嫌いなネット右翼のために、 xargs を使ってこの問題を解いてみよう。 ls -1 *.htm

  • コマンドラインスタックにコマンドを追加 - 技術メモ帳

    zsh の builtin print コマンドを使うと、 任意のコマンドをコマンドラインスタックに追加出来る。 (いわゆる Esc+q 押したときに追加されるスタック) print -z "コマンド文字列" たとえばこんな感じにしておくと、 ENTER押すたびに次にやるべきコマンドが出現 % print -z "make install"; print -z "make"; print -z "./configure"; % ./configure % make % make install エイリアスとか貼っとくと良いかもしれない。 % alias C='print -z "make install"; print -z "make"; print -z "./configure";' % C % ./configure % make % make install 注意すべきなのは、ス

  • nlコマンドでseqコマンドのエミュレート - 技術メモ帳

    どさにっきで非常に詳細にやっていただいた http://ya.maya.st/d/200611b.html#s20061112_2 のだが、実は nl コマンドを使ったら楽なんじゃないかな と思ったのでやってみた。 利点として、いろんな環境に nl コマンドは入ってる。 とりあえず、Linux, cygwin, Darwin, FreeBSDには入ってる susv3に定義されてる http://www.opengroup.org/onlinepubs/009695399/utilities/nl.html ゼロ埋めは、-w パッディング数 と -nrz という 左寄せゼロ埋めオプションの組み合わせで可能 $ yes '' | nl -ba -nrz -w3 | head 001 002 003 004 005 006 007 008 009 010 インクリメント数の指定は、-i 数値 で

  • 指定した最終更新日時のファイルを探す - 技術メモ帳

    GNU find find . -type f -printf "%h%f %AY/%Am/%Ad\n" | egrep '2006/09/30$' zsh + zsh/stat zmodload zsh/stat stat -F "%Y/%m/%d" +mtime ./**/*(.) | egrep '2006/09/30$'

  • seq コマンド for BSD - 技術メモ帳

    いつも参考にさせていただいてる id:parasporospa さんの bashrc を読んでいて思ったのだが、 BSD系OS(MacOSXも当然入る) には seq コマンドというのが入っていない。 http://d.hatena.ne.jp/parasporospa/20061108/p7 代わりに、ものすごく高機能な jot コマンドというのが入っているので それを使って seq を実装してみた。 function seq(){ jot $2 $1 $2 } 追記: $1 が 1 以外だとまともに動かない事が判明。 あとで直す ありがとうございます。> id:odz さん

  • カーソルの下にある数値文字列をインクリメント - 技術メモ帳

    vim にある Ctrl+A の zsh 版。 zle の incarg 関数 % autoload incarg % zle -N incarg % bindkey '^A' incarg % 100 # press Ctrl+A % 101 # press Ctrl+A % 102 # press Ctrl+A % 103

  • 変数にcdで移動できるようにする - 技術メモ帳

    もっと簡単な方法があったのか。 zsh % setopt cdablevars % var=/usr/local/src % cd var ~var% pwd /usr/local/src

  • zshで複数行編集 - 技術メモ帳

    Esc + Enter で複数行編集できる % ps aux<ESC><ENTER> ls -al

  • 技術メモ帳 - 拡張子ごとにコマンドを対応づける

    拡張子ごとにコマンドを対応づける事が出来る Suffix Alias という機能が zsh 4.2系から実装されていたらしい。 知らなかった。 どんな事が出来るのかというと たとえば、 alias -s txt=cat とした場合、 以下のようにするだけで、 % ./file.txt 先ほど設定したコマンドが自動で実行されるようになる。 % cat ./file.txt あとはもうアイデアしだいだが、 拡張子が *.log のときは、tail -f するなんて事も出来る。 alias -s log='tail -f' 参考: http://zshwiki.org/home/examples/aliassuffix http://slashdot.jp/articles/04/03/27/2333234.shtml?topic=80 http://zsh.dotsrc.org/Doc/Rel

  • SQL::Abstract を勝手に拡張

    DBIx::Simple を使っていて、SQL::Abstract が、"GROUP BY" 句 に対応していないので、勝手にプラグインっぽいの作って、対応させたのだが、、、いいのだろうか、、、; "SQL/Abstract/Plugin/Groupby.pm" っての勝手に作って、以下のようなコードを書いたのだけど、、ほとんど、SQL::Abstract の "order by" の実装をパクッただけ、、、orz ちなみに、赤な部分以外はオリジナルを持ってきた、、、。 package SQL::Abstract::Plugin::Groupby; use Carp; use strict; our $VERSION = '0.01'; sub puke (@); sub where { my $self = shift; my $where = shift; my $order = sh

  • FireFox CPAN 検索プラグイン

    環境を移行して入れなおしたので、メモ。 "C:\Program Files\Mozilla Firefox\searchplugins" に下記の設定ファイルを追加。 cpan.xml<?xml version="1.0" encoding="UTF-8"?> <SearchPlugin xmlns="http://www.mozilla.org/2006/browser/search/"> <ShortName>CPAN</ShortName> <Description>CPAN Search</Description> <InputEncoding>UTF-8</InputEncoding> <Image width="16" height="16">data:image/x-icon;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJ

  • svk コマンドの補完 @zsh

    ■ svk コマンドの補完 @zsh そろそろ svk コマンドでも使いはじめてみようかと思い立ったのでちょこちょこ遊んでみました。 でもって普通のオプションすら補完されないのが不便過ぎて死にそうなので調べてみた所、結構便利な形で補完機能が使えるような事がわかったのですが、情報が全然無くてすぐには出来なかったので、手順を書いておきます。 といってもチョー簡単ですけど。 まずは次の URL から _svk と svk-complete.pl をゲット。 https://intrigeri.boum.org/svn/pub/_svk/ svk-complete.pl をどこか PATH の通ったディレクトリに配置。とりあえず /usr/local/bin あたり。 _svk は zsh の補完用のファイルを読み込むところに配置。$fpath で定義されているディレクトリ*1に置けば良いらしい。

    cooldaemon
    cooldaemon 2007/03/31
    echo $fpath
  • 吹き出しバリデータと TMT Validator を組み合わせてみた

    ■ 吹き出しバリデータと TMT Validator を組み合わせてみた TMT Validator っていうフォームの入力値チェック用のライブラリがありまして、これって結構見た目とか簡単にカスタマイズ出来て、何気にすごい便利なライブラリなんで、この前紹介した 吹き出しバリデータ でやってるのと似た方法でエラーを表示するコールバック用のコードを書いてみました。 実際の動作サンプル この TMT Validator は、吹き出しバリデータと違ってエラーメッセージも簡単にカスタマイズ出来たりとか、かゆい所に手が届く感じなので、そういう柔軟性を求めてる上に吹き出し表示が気に入ってる方はこっちを使ってみて下さい。 オリジナルの配布ファイルに、以下のファイルを追加すれば使えるようになります。CSS と画像ファイルは 吹き出しバリデータ のやつと同じものです。 baloon_validator.js

  • フォームの入力エラーを吹き出しで教えてくれる JavaScript

    ■ フォームの入力エラーを吹き出しで教えてくれる JavaScript フォームの validation 関連のライブラリはいくつかありますが、私は以下に紹介するやつをずっと使ってまして、これがかなり気に入ってます。ただ、オレナイズされたコードが随所に含まれていたから紹介する事が出来ないでいたのですが、今回やっと書き直したのでお目見えです。 AJAX を使ってサーバサイドと連携、とかそういう事も全くやってなくて、普通に JavaScript のみで入力のチェックをしてるだけなんで、真新しい事はないんですが。 実際の動作サンプル とりあえず submit ボタンを押せば、全て理解出来るかと思います。 今回は CSS のファイルと画像のファイルといっぱい出来てきてしまっていて、いつもの「読み込ませるだけ」とはちょっと毛色も違い、使うのには事前の準備が必要で面倒です。 いつもの JavaScri

  • vimで色付けして表示するグローバルエイリアスがイイ

    vimで色付けして表示するグローバルエイリアスがイイ zsh: diffの結果をvimで色付けして表示するグローバルエイリアス コマンドラインの最後に V を付けると vim で開くと言うナイスアイディア。これは便利。 どうやら読み込み専用モードで開けば一時ファイルを使わなくても良さそうです。 alias -g V="| vim -R" alias -g V="| vim -R -" colordiff っていうツールもあるみたいだけど、V の方は svn diff とか他のツールでも使えるし、新しい使い方みたいなの覚えなくて良い点で優れているかと思います。.zshrc に書いとくだけなのもお手軽だし。 * 追記 ああ、colordiff もパイプで渡すツールなんだ。V と使い方も一緒じゃん。まぁ、VIM 好きだから、いいや。 * 追記2 コピペミスってました。修正。

  • svn merge -c

    subversion 1.4.0 から merge / diff の時のリビジョン指定オプションに『-c』というのが追加になってるんですが、意外に使われてないような気が(するのは気のせいなのか、それともまだ皆1.4.x 使ってないのかしら…?)。。。 1.4.0 以前で『revision 100 の変更を merge する』っていうのをやりたいとき、

  • システム上のユーザのアイドル時間を調べる - bkブログ

    システム上のユーザのアイドル時間を調べる デーモンや cron から何か重い処理を走らせたいときに、作業中のユーザに迷惑をかけないよう、システムにログインして作業しているユーザがいるか確認したいときがあります。ここでは、GNU/Linux システムでつかえる方法をいくつか検討してみたいと思います。 ロードアベレージを調べる ロードアベレージは/proc/loadavg から調べられます。ロードアベレージが 1を超えるような状況では重い処理は走らせないほうがいいでしょう。 この方法の欠点は、システム全体の忙しさはわかっても、ユーザがログインして作業しているかどうかはわからない点にあります。たとえば、ユーザがテキストエディタなどで軽い作業を行っていた場合、ロードアベレージは低い数字になります。 端末のアイドル時間を調べる w コマンドを実行すると IDLE という欄に各端末のアイドル時間が表示

  • いやなブログ - スクリプト言語用のデバッガの使い方 - Ruby, Python, Perl

    スクリプト言語用のデバッガの使い方 - Ruby, Python, Perl スクリプト言語用の CUIのデバッガの使い方を簡単にまとめました。対象言語は Ruby, Python, Perl です。 私は C, C++ でプログラムを書いているときはデバッガ (主に GNU/Linux 上の gdb) を頻繁に利用します。しかし、スクリプト言語ではそれほどでもありません。これはおそらく次のような理由によります。 ビルドが不要なので printf デバッグが容易 (ある程度大きい C++ のプログラムではビルド時間が長いので printf の挿入はしんどい) 異常終了時にスタックトレースが表示される (Ruby, Python なら自動、Perl の場合は use Carp; $SIG{__DIE__} = \&Carp::confess; など) オブジェクトのインスペクトが簡単 (Ru

  • SpiderMonkeyをthreadsafeでビルドする - 日向夏特殊応援部隊

    はじめに とりあえず僕の環境であるFC6で試してます。 Install SpiderMonkey checkout まずは適当なディレクトリに行ってcvsからcheckoutしてきましょう。 # cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot login # cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/nsprpub mozilla/js/src NSPRのビルド threadsafeにするにはNSPRが必要なようです。 # cd mozilla # sh nsprpub/configure --enable-optimize --disable-debug # make # cd pr/tests # make SpiderMo

    SpiderMonkeyをthreadsafeでビルドする - 日向夏特殊応援部隊