タグ

ProgrammingとUnixに関するagwのブックマーク (247)

  • 無精で短気で傲慢なプログラマ find には sh!

    ウノウラボ Unoh Labs: コマンドラインで作業する上で知っておくといいテクニック% find . -name '*~' -exec rm {} \; 404 Blog Not Found:勝手に添削 - find(1)% find . -type f -name '*~' | xargs rm % find . -type f -name '*~' | perl -nle unlink わたしなら% find . -type f -name '*~' | sed 's/^/rm /'で確認し、OK なら% find . -type f -name '*~' | sed 's/^/rm /' | shで消します。 いまどき fork/exec rm のオーバーヘッドがどれほどのものか。 xargs を使うとき、rm が 1回だけ実行されるときと、ARG_MAX を超えたときに rm

  • あわてるな ディスクはそんなに 速くない : 404 Blog Not Found

    2007年03月30日04:30 カテゴリiTech あわてるな ディスクはそんなに 速くない 誤差の範囲かどうかは、ファイル数による。 無精で短気で傲慢なプログラマ | find には sh! いまどき fork/exec rm のオーバーヘッドがどれほどのものか。 xargs を使うとき、rm が 1回だけ実行されるときと、ARG_MAX を超えたときに rm が複数回実行されるときの違いにどれほどの差があると言うのか。 誤差の範囲である。 ファイル数が数百ぐらいなら大差はないが、それが数万、数十万ともなると話は違ってくる。なにしろ相手はCPUではなくHDD。こちらはCPUほど高速ではないのだ。 実際、ベンチマークを取ってみると、結構な差があることがわかる。特に-execは遅い。そして、shをカジュアルにpipeで使うのはワイルドカードが恐ろしい。 よくきたはてダ - また添削してくれ

    あわてるな ディスクはそんなに 速くない : 404 Blog Not Found
  • --も忘れずに - odz buffer

    ref:void GraphicWizardsLair( void ); // いまどきfindとxargsを使う時は-print0と-0を忘れずに まったく同感。 あと、find ならディレクトリ名を含むことになるから問題ないと思うけど*1、ファイル名が0x2d(-)から始まっていたりするとはまる罠。 例。 % ls -z % cat * cat: invalid option -- z Try `cat --help' for more information.こういう場合は、こうする % cat -- *まぁ、POSIX で規定されているわけではないけどね。でもそれを言うと -print0 も -0 も POSIX に規定されていなかったりして。 *1:いや検索対象のパス自体に問題があるとアウトだけど

    --も忘れずに - odz buffer
    agw
    agw 2007/04/11
    「find ならディレクトリ名を含むことになるから問題ないと思うけど*1、ファイル名が0x2d(-)から始まっていたりするとはまる罠。」
  • また添削してくれた!! - elf's blog

    まずはこちら。 $ find . -type f | fgrep index.html (snip) $ find . -name '*~' と同じなのだが、なんで上記の例でfgrepを使っているか不明。 あっはっはっは. 不明といわれても仕方がないですね.仰るとおりです(痛 普段find&lgrepはよく使ってるんですが,退職手続きと最後の会議群をしつつ書いているといい例が思いつかなくてギリギリ書いた感じでした. はい100%クオリティの言い訳です(痛 ここからが番。 $ find . -name '*~' -exec rm {} \; この-exec、かつては有用だったがxargsやperlがある昨今ではあまり使わない。 はい.id:odzたんとこでもコメントしたんですが,xargsは好きではないのであえてなるべく使っていません. xargsが有用かつfindの-execな対象があま

    また添削してくれた!! - elf's blog
  • 気をつけろ - odz buffer

    ref:ウノウラボ Unoh Labs: コマンドラインで作業する上で知っておくといいテクニック いわゆる指定された文字列を出力するコマンドですね. 知らない人も多いみたいですが,echoも実はいくつかのオプションを受け付けます. 気をつけろ。いまどきの echo は大抵 shell の組み込みコマンドだ。bash/zsh では echo(1) と同じ挙動を示すが、tcsh は違う。 % tcsh % set echo_style=none; echo -n hello -n hello % set echo_style=bsd; echo -n hello hello % set echo_style=sysv; echo -n hello -n hello % set echo_style=both; echo -n hello hellosedは通常行指向でテキストの置換などを行うと

    気をつけろ - odz buffer
  • シェル・スクリプト・リファレンス・ランキング

    Linuxで一連の処理を行う際には,シェル・スクリプトが役立ちます。シェル・スクリプトは,シェル上で同じような操作を続けるときや複雑な操作を行いたいときに,その操作手順をテキスト形式で記述しておき,任意に実行できるファイルです。定型的な処理を繰り返し実行するときに便利ですが,シェル・スクリプトを作成するには,記述のルールなどを知っておく必要があります。 日経LinuxのWebサイトでは,シェル・スクリプトの使い方について紹介した「シェル・スクリプト・リファレンス」を公開しています。シェル・スクリプトの基的な知識から,変数の扱い方,繰り返しや条件分岐などの記述方法,シェル・スクリプトで便利に利用できるコマンドなどを紹介しています。 日経Linuxは2006年3月1日に,シェル・スクリプト・リファレンスをITproに公開しました。公開後1年が経過したのを契機に,過去1年間によく閲覧された項目

    シェル・スクリプト・リファレンス・ランキング
  • リダイレクトの奥義 - メモ帳

    exec 3>&1; grep yyy xxx 2>&1 1>&3 3>&- | sed s/file/foobar/ 1>&2 3>&- grep: xxx: No such foobar or directorydevice=/dev/rmt8 dd_noise='^[0-9]+\+[0-9]+ records (in|out)$' exec 3>&1 status=`((dd if=$device ibs=64k 2>&1 1>&3 3>&- 4>&-; echo $? >&4) | egrep -v "$dd_noise" 1>&2 3>&- 4>&-) 4>&1` exit $status;http://www.kiso.tsukuba.ac.jp/~makimura/text/node239.html 標準出力とエラー出力を別々のファイルに書き出し、画面にも表示したい。 htt

    リダイレクトの奥義 - メモ帳
  • NULL文字区切りに対応しているコマンド - 技術メモ帳

    http://ya.maya.st/d/200703c.html#s20070330_1 出力の順番をいじりたいからといって find | sort | xargs とかやってしまうと -print0 は使えない。ああ困ったねぇ。どうしようもないねぇ。 sort -z なんてオプションがあって、NULL文字も受け付けてくれますよ。 GNUのみっぽいですが。 find . -print0 | sort -z | xargs -0 cmd -- 他にも、ちょっと意味合いが違いますが grep -Z なんてものもあるみたいですね。 出力時にNULL区切りするという。

  • pgrepについて - 技術メモ帳

    no title なんだか grep のところに間違った記述がされているような気がします。 egrep,fgrep,pgrepはそれぞれ-E,-F,-Pが指定されたときと等価の処理を行う pgrep は、grep -P と等価な処理ではありません。 まったく別のコマンドでプロセスを検索するためのコマンドだと思います。 すくなくとも Linux系ディストリビューション においては。 そういえば、pgrep といえばボクの書いたウルトラわかりやすい記事が! pgrep, pkill を使用してプロセスを殺す - 技術メモ帳

  • 特定の所有者のファイルだけ所有者を変更 - 技術メモ帳

    今まで find と組み合わせてたのだけれども、 GNU chown だと --from というオプションがあることにさっき気づいた。 以下はカレントディレクトリ以下のファイルで 所有者が from_user:from_group なファイルのみ所有者を変更するためのコマンド。 -c オプションを付けて処理の様子を画面に出した方が良いかも。 $ chown -R --from=from_user:from_group to_user:to_group ./ 今までのやり方だと、だいたい以下のような感じ。 オプションとかは適当なのでおそらく動作しない。 最近マスコミで流行ってる、画面はイメージです メソッドを使用した。 $ find . -type f -user from_user:from_group | xargs chown to_user:to_group 実にどうでも良いが、マス

  • ウノウラボ Unoh Labs: コマンドラインで作業する上で知っておくといいテクニック

    GT Nitro: Car Game Drag Raceは、典型的なカーゲームではありません。これはスピード、パワー、スキル全開のカーレースゲームです。ブレーキは忘れて、これはドラッグレース、ベイビー!古典的なクラシックから未来的なビーストまで、最もクールで速い車とカーレースできます。スティックシフトをマスターし、ニトロを賢く使って競争を打ち破る必要があります。このカーレースゲームはそのリアルな物理学と素晴らしいグラフィックスであなたの心を爆発させます。これまでプレイしたことのないようなものです。 GT Nitroは、リフレックスとタイミングを試すカーレースゲームです。正しい瞬間にギアをシフトし、ガスを思い切り踏む必要があります。また、大物たちと競いつつ、車のチューニングとアップグレードも行わなければなりません。世界中で最高のドライバーと車とカーレースに挑むことになり、ドラッグレースの王冠

    ウノウラボ Unoh Labs: コマンドラインで作業する上で知っておくといいテクニック
  • 勝手に添削 - find(1) : 404 Blog Not Found

    2007年03月30日00:15 カテゴリ一日一行野郎Lightweight Languages 勝手に添削 - find(1) 「ウノウラボ Unoh Labs: コマンドラインで作業する上で知っておくといいテクニック」の用法に首を傾げたので。 まずはこちら。 $ find . -type f | fgrep index.html これは % find . -type f -name index.html でOK。パイプ不要。.htmlだけ見つけたい時も % find . -type f -name \*.html でOK。findはシェルのワイルドカードを受け付ける。ただしシェルにそれを展開して欲しくないので、\でエスケープしている。要は $ find . -name '*~' と同じなのだが、なんで上記の例でfgrepを使っているか不明。 ここからが番。 $ find . -nam

    勝手に添削 - find(1) : 404 Blog Not Found
  • 標準出力の複製 - odz buffer

    「パイプの途中経過を観察するのために、標準出力を標準エラー出力にコピーしたいんだけどいい方法知っている?」と聞かれたので、 % seq 10 | tee /dev/stderr | cat -n > outみたいな方法を紹介してみたわけだが、これってどれくらいの可搬性があるんだろう。まぁ、確実なのは % seq 10 | perl -ne 'print STDERR; print' | cat -n > outか。でも普通はファイルに出して tail -f だよな。

    標準出力の複製 - odz buffer
  • prefork サーバーと thundering herd 問題 - naoyaのはてなダイアリー

    Catalyst を POE で動かす Engine の Catalyst::Engine::HTTP::POE という実装が CPAN にあります。"Single-threaded multi-tasking Catalyst engine " だそうです。"Single-threaded" と言いつつも実装を覗いてみると環境変数 CATALYST_POE_MAX_PROC を 1 よりも大きく設定することで prefork する実装になってます。POEシングルスレッドではアプリケーション内で発生するブロックを避けることが難しいのでそのための実装じゃないかなと思います。 ところでこの Catalyst POE エンジン、prefork の実装はどのように行っているかというと POE から prefork と名の付いたイベントが発生するとおもむろに子プロセスを生成する、というのもの。複数の

    prefork サーバーと thundering herd 問題 - naoyaのはてなダイアリー
  • find + grep - odz buffer

    ref:J - grep -r を使う罪悪感 いやいや、こうですよ。 find . -type d \( -name .svn -o -name CVS -o -name RCS \ -o -name _darcs -o -name blib \) -prune \ -o -type f -print | perl -ne 'chomp; print $_, "\0" if -T' | xargs -0 -e grep -nH -e "pattern" /dev/nullというネタを自分の過去記事からひっぱって来てみる。 まぁ、ふつうはここまでやらないだろうけど、せめて find . -type f | xargs grep xxxxというかもう少し真面目には find . -type f -print0 | xargs -0 -e grep -e xxxx /dev/nullだな。GNU

    find + grep - odz buffer
  • ssh - メモ帳

    1.鍵作成。 ssh-keygen -t rsaこのときパスフレーズを空文字列にすると、ログイン時にパスフレーズを聞かれなくなる。 2.秘密鍵 id_rsa をクライアント(接続元)の ~/.ssh に保存。 (手順1をクライアントで実行した場合は、デフォルトでここに保存されるのでなにもしなくてよい) 3.公開鍵をホスト(接続先)の authorized_keys に追加。 cat id_rsa.pub >> ~/.ssh/authorized_keys4.クライアントから接続 初回のみ確認メッセージが表示される。yes と答えると、そのホストが known_hosts に追加される。 ~/.ssh 以下のファイル identity SSHプロトコル Ver.1の秘密鍵 identity.pub SSHプロトコル Ver.1の公開鍵 id_dsa SSHプロトコル Ver.2(DSA)の秘

    ssh - メモ帳
  • tail -fしているファイルをmvしてもそのまま読み込み続ける事が出来るのはなぜか - 技術メモ帳

    せっかく教えていただいたので tail -f しているファイルをmvしても そのまま読み込み続ける事が出来るのはなぜなのかを調べてみた。 『詳解UNIXプログラミング(Advanced Programming in UNIX Environment)』 の CHAPTER.4 の 4.14 ファイルシステム に この件に関連する情報が記載されている。 コレを参考にボクの解釈した結果をまとめてみた。 間違っている箇所がありましたら 気軽にご指摘していただけますようよろしくお願い致します。 まず、事の発端から。 ボクのこの一文。 http://d.hatena.ne.jp/lurker/20070228/1172595016 そうそう、tail で思い出したが、GNUのtailはデフォルトで (たぶん/詳しくは知らない)inode番号を見ているため tail -f した状態で そのログファイル

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

    忘れてたのでメモ。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

  • unix - permissionあれこれ : 404 Blog Not Found

    2007年03月03日06:30 カテゴリTips unix - permissionあれこれ う〜ん。これ、理解があやふやだと危ないのでまとめとっか。 ウノウラボ Unoh Labs: ウェブ開発の共同作業でパーミッションを有効活用する 複数人でウェブコンテンツを作成運用管理する場合,特に番サーバーのファイルのパーミッションで悩んでいる人をよく見かけます.あまりパーミッションを積極的に有効活用できない人は挙句に誰でも読み書きできる(いわゆる0666や0777)ザルにすることが多いでしょう.いや待ってください.もうちょっと丁寧に設定してみませんか? というお話です. 早見表 by JavaScript Readable Writable Executable SUID/SGID User r w x s Group r w x s Others r w x t Octal: ls -l

    unix - permissionあれこれ : 404 Blog Not Found
  • rename, unlink されたファイルを読み続ける - odz buffer

    前にも言及した tail のネタなんだけど、冷静に考えると inode まで見てるんじゃなくて、単に open して file descriptor を取得してしまえば rename しようが、unlink しようが読み続けられるってだけの話では。 たとえば、こんなスクリプト slowcat.pl を用意すると確認できる。 #!/usr/bin/env perl use strict; use warnings; while (<>) { sleep 1; print; } で、 % seq 1000 > /tmp/seq % perl slowcat.pl /tmp/seq 1 2とでもしておいて、別の端末から % mv /tmp/seq /tmp/sepもしくは % rm /tmp/seqを実行する。slowcat.pl が何事もなかったかのように出力を続けるのが確認できるはず。ついで

    rename, unlink されたファイルを読み続ける - odz buffer