タグ

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

  • my inputrc - 技術メモ帳

    $HOME/.inputrc を適切に設定すると、 Readlineに対応したすべてのアプリの設定を変える事が出来ます。 たとえば、gdb, irb, mysql, pgsql とかもコレにあたります。 # viキーバインド set editing-mode vi # チルダをTabにより展開 set expand-tilde on # 日語関係 set input-meta on set convert-meta off set output-meta on # 大文字小文字無視 set completion-ignore-case on # 画面自動スクロール set horizontal-scroll-mode off # 補完 "\C-p": history-search-backward "\C-n": history-search-forward

    raimon49
    raimon49 2012/10/23
    これに加えてset match-hidden-files offあたりを入れておくとzshっぽくなる、かな?
  • 技術メモ帳: [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

    raimon49
    raimon49 2012/02/02
    パイプをつなぐアレコレの代替コマンド。file-renameやzmv
  • zshのzptyを使って端末が必要な処理を自動化する - 技術メモ帳

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

  • 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に指定するオプション名に 好きなだけアンダーバーをつける事が出来

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

    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

  • 技術メモ帳 - pgrep, pkill を使用してプロセスを殺す

    最近、会社でシェルの操作方法について教えているのだが、 pgrep / pkill / skill / pidof といった 便利なプロセス操作系コマンドを知らない人が実に多い。 プロセスを殺すというのは、よくある作業なので 今回はコレについて書いてみる。 たとえば、これらのコマンドを知らない人が、 指定した名前のプロセスを kill する手順はだいたい 以下のようなものになることだろう。 $ ps aux | grep プロセス名 | grep -v 'grep' # コマンドの出力結果から pid を目で確認 12345 ... .. hoge .. .. $ kill 12345 この作業は非常に面倒で退屈だ。 もし殺さなければならないプロセスがたくさんあったときは どうするのだろうか。 おまけに、grep コマンド自身が候補に含まれてしまう事があるのだが、 grep -v grep

    raimon49
    raimon49 2010/06/30
    コメント欄も。ps aux | grep 'プロセス名' | grep -v 'grep' するよりも pgrep -f 'プロセス名'にオプションを付けてuidで絞り込んだりするのが簡単という話。
  • 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

    raimon49
    raimon49 2010/06/15
    ssh-copy-id username@hostname.example.jp <---> $ cat ./.ssh/id_rsa.pub | ssh user@remote_host "cat >> ./.ssh/authorized_keys"
  • 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

  • Greasemonkeyで永続的に外部スクリプトを利用する - 技術メモ帳

    GM_setValue / GM_getValue + unsafeWindow.eval を使って 永続的に外部スクリプトを利用する方法を考えてみた。 わざわざ DOM で script要素 を毎回注入するよりも 速いんじゃないかと思う。 Greasemonkeyには、GM_setValue / GM_getValue というのがあって、 GM_setValue("キー", "値") 上記のように入力してあげる事によって、たとえ、 Firefoxを終了させたとしても消えないデータを作成する事が出来る。 そして、それを利用して、 初回のみ XmlHttpRequest で外部スクリプトデータを取得して、 GM_setValue でスクリプトデータを永続化しておき、 二回目以降は、それを GM_getValue して eval するようにした。 以下は、永続的に prototype.js を

    raimon49
    raimon49 2008/06/29
    初回実行時だけXHRで外部ライブラリを読み込んで、取得したresponseTextをGM_setValueでローカルキャッシュしておく。
  • 漢の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という文

    raimon49
    raimon49 2008/05/29
    履歴まわり
  • Firebugの便利な組み込み関数 - 技術メモ帳

    id:brazil さんのブックマークで知ったのだが、 Firebugには、便利な組み込み関数が定義されているようだ。 一通りさわってみたのだが、 $x() で 任意のXPath要素が取得できるのとかに感動した。 そして、やっぱりちゃんとドキュメント読むべきだなぁと思った。 XPathから要素を取得する。 $x("/html/body/h1"); -> 要素の配列が返ってくる。 selector名から要素を取得する。(getElementsByTagName) $$("h1") -> 要素の配列 所要時間測定 console#time, console#timeEnd time ~ timeEnd で囲んだ部分の所要時間を 計測することが出来るみたいで、 以下のような関数にまとめると良さそうだ。 function bench( callback ) { var uniq_id = Date

    raimon49
    raimon49 2008/03/06
    >inspectモードで要素選択 -> $0 で参照 / ぎゃあ。知らなかった。これ便利過ぎる。
  • 1