タグ

ブックマーク / d.hatena.ne.jp/lurker (26)

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

    システム管理とかしてると、特定のディレクトリ以下のファイルの更新を 調べたいときとかっていうのはわりとある。 どんなファイルが更新されてどういった内容に変化したのかを見える化。 またしても 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

    sunaoka
    sunaoka 2007/03/01
  • zshのzptyを使って端末が必要な処理を自動化する - 技術メモ帳

    zsh のモジュールに zpty というのがあるのを最近発見した。 どうもコレを利用すれば指定したコマンドを 仮想端末上で実行することが出来るらしい。 具体的にどういったことが出来るようになるのかというと、 端末が必要なプログラムを自動化することが出来る。 たとえば、パスワード入力処理などだ。 パスワード文字列を標準入力から読み込ませようとしても、 大抵のプログラムでは入力できない。 なぜかというと、多くのプログラムにおいてパスワード入力処理は 端末から読み込むように作られているからだ。 zpty を利用すればそういったたぐいのものをすべて自動化できる。 いわゆる、expect というコマンドで実現していたことが zsh だけで出来るのだ。 今回は、簡単に試すことが出来るサンプルとして、 su コマンドのパスワード入力を zpty を使って自動化してみる。 まず、zsh に標準添付されてい

    sunaoka
    sunaoka 2007/02/20
  • mysql -Xでクエリーの結果をXMLで取得 - 技術メモ帳

    mysql -X でクエリーの結果がXMLで取得できるらしい。 興味深いのでやってみた。 なんか適当にテーブルを作成する。 とりあえず、4つのカラムを持つtというテーブル作った。 mysql> create table t(id int not null, name varchar(255), body text, updated_at datetime); mysql> insert into t values(1, 'name', 'body', current_timestamp); mysql> insert into t values(2, 'name2', 'body2', current_timestamp); とりあえず、普通にSELECTで表示してみる。 # mysql -e 'SQL' で任意のSQLを実行可能。ワンライナーに使えます。 $ mysql -e 'sele

    sunaoka
    sunaoka 2007/02/20
  • 漢の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という文

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

    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

    sunaoka
    sunaoka 2007/01/25
  • えきから時刻表の印刷用ページから広告を消すGreasemonkeyスクリプト - 技術メモ帳

    各駅の時刻表を提供してくれているというすごくありがたい 「えきから時刻表」 というサービスがある。 http://ekikara.jp/ で、その印刷用ページには、当然のように広告が表示されているわけなのだが、 すごく私的かつエゴイズムの極みにより 広告を除去するGreasemonkeyスクリプトとStylish用CSSを作った。 以下のページでテスト。 http://ekikara.jp/newdata/line/2301011/13101011/down-1_1p.htm? ekikara_kesu_ad.user.js // ==UserScript== // @name ekikara.jp kesu AD // @namespace http:// // @description ekikara.jp kesu AD // @include http://ekikara.jp/n

    sunaoka
    sunaoka 2007/01/23
  • Listen.jpをFirefoxで試聴できるようにするGreasemonkeyスクリプト - 技術メモ帳

    Listen.jp というサイトを今日というかさっき知ったのだが どうも、Firefoxでは試聴できないらしい。 alertbox ではじかれてしまった。 現代社会に置いてマイノリティは常に脆弱なのである。 http://listen.jp/store/ だが、責めるわけにはいかない。 この判断は企業として非常に妥当であるからだ。 対応機種が増えるとそれだけ検証作業が増加し、費用がかかる。 その費用は売り上げから減算されてしまうのだ。 したがって、これはマイノリティの側が努力すべき課題なのである。 前置きが長くなった。 というわけで、Greasemonkeyユーザースクリプトを作った。 とりあえず、以下のURLで動作確認した。 no title no title まず、chkBrowserという関数でブラウザを判断しているようで、 この関数の戻り値が常にtrueになるように改造。 次に、"

  • 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

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

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

    sunaoka
    sunaoka 2007/01/04
  • 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

    sunaoka
    sunaoka 2006/12/19
    SunSSH にはない
  • シェルスクリプトを書いていてハマった事 - 技術メモ帳

    さて、今日シェルスクリプトを書いていてハマった事を書く。 改行がついていないとその行は読み込まれないってこと。 たとえば、以下のようなスクリプト test.sh があったする。 while read line do echo $line done 動作は簡単、標準入力をそのまま出力するだけ。 $ echo aiueo > ./data.txt $ cat ./data.txt aiueo $ sh test.sh < ./data.txt aiueo ここまでは普通なんだけど、 次のような改行が含まれていない行は読み込まれない。 僕は小一時間ハマってしまった... $ echo -n aiueo > ./data.txt $ sh test.sh < ./data.txt # 何も出力されない。

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

    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

    入力履歴からの予測による自動補完機能 - 技術メモ帳
    sunaoka
    sunaoka 2006/12/05
  • 画面を復元するコマンド altscreenコマンド作った - 技術メモ帳

    引数に指定されたコマンドが終了したときに、 そのコマンドを起動したときの画面に 復元するコマンド(関数)作った。 # for zsh && terminfo function altscreen() { { tput smcup; $@; } always { tput rmcup; } } termcapを使用している環境では smcup を ti、rmcup を te にそれぞれ置き換える必要があります。 使い方のサンプル altscreen zsh altscreen cat .zshrc altscreen ssh -l user@host

    sunaoka
    sunaoka 2006/11/28
  • 技術メモ帳: [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

    sunaoka
    sunaoka 2006/11/20
    alias zmv='noglob zmv' zmv -W *.html *.htm
  • ディレクトリに名前を付けて簡単に移動できるようにする - 技術メモ帳

    Named Directory という機能があるらしい。 やり方は簡単で、 hash コマンドの -d オプションを利用する。 hash -d 名前=ディレクトリパス 以後、cd ~名前 で移動できるようになる。 たとえば以下のようにすると、 % hash -d test=/usr/local/src こんな感じで移動できるようになる。 % cd ~test ~test% # ここはプロンプトの設定にもよる ~test% pwd /usr/local/src ちなみに、 setopt auto_cd としておくと、 もっと簡単に移動できる。 % ~test ~test% 追記: どうも、hash -d でなくともよく 実際には任意の変数に cd ~変数 とすることでその変数の文字列が指すパスに 移動することが出来るようだ。 したがって、変数なら何でも良いので % src=/usr/loca

    sunaoka
    sunaoka 2006/11/08
    % src=/usr/local/src; cd ~src
  • 技術メモ帳 - Be stiq メモ

    非常に面白そうな、 任意のページに付箋をはれるWEBサービス Be stiq というのをさっき知った。 (すごく既出っぽい感じはしている) http://be.stiq.net/ http://be.stiq.net/url/http://www.hatena.ne.jp/ どんなサービスかを簡単に言うと、Lingr の 付箋バージョン。 付箋型掲示板と称した方が良いかもしれない。 以下のページを見るとなんだかすごく面白そうな感じ。 http://be.stiq.net/url/http://r.gnavi.co.jp/g877000/#2311 しっかり tag 機能も http://be.stiq.net/tags/%E3%82%B0%E3%83%AB%E3%83%A1 すごく面白そうだったので、 Greasemonkey スクリプトを作るためにちょっと調べてみた。 とりあえず、下記U

    sunaoka
    sunaoka 2006/10/22
    任意のページに付箋をはれるWEBサービス
  • 直前に入力したコマンドの最後の引数を補完 - 技術メモ帳

    Esc + ドット(.) と入力すると、 直前に入力したコマンドの最後の引数を補完してくれる。 複数回入力する事によって、 過去にどんどんさかのぼっていく。 追記: ブックマークコメントにも書かれてますが、 Esc は、正確には Meta キーです。 さらに追記: 他にも、色々あるようで、 id:hiboma さんの以下のページに非常に詳しく書かれています。 http://d.hatena.ne.jp/hiboma/20061005/1160015116

    sunaoka
    sunaoka 2006/10/05
    ESC-.
  • カーソル位置までをエスケープする - 技術メモ帳

    すごい便利なのを見つけてしまった。 これはいい。 ESC + " と入力する事で、 カーソル位置までをエスケープする事が出来るみたいだ。 たとえば、以下のように文字列を入力した状態で、 $ hello world hello の o の次の位置で ESC + " と入力すると $ 'hello' world とシングルクォートで囲ってくれる。 複数回入力する事で、 $ ''\''hello'\''' world どんどんエスケープしていく。 ESC + $ でこの逆を行う。 $ 'test test' $ test test

    sunaoka
    sunaoka 2006/10/05
    ESC-"
  • プロセスツリーを可視化 - 技術メモ帳

    $ pstree -ah ah とオプションを付加する事によって、 PID も一緒表示したりする事が出来る。 $ ps -f でも同様の事が可能。 追記: もっとわかりやすい記事を 書いてくださっているヒトが。。 http://cl.pocari.org/2006-09-30-1.html

    sunaoka
    sunaoka 2006/09/30
    pstree - ftp://ftp.thp.uni-duisburg.de/pub/source/