タグ

bashに関するabcb2のブックマーク (6)

  • シェルスクリプトのデバッグは typeset または declare を使うと良いかも - よんちゅBlog

    はじめに つい最近知った便利なデバッグ方法 (長年シェルスクリプトを書いているのに知らなかった。これが常識だったら恥ずかしい…) シェルスクリプトのデバッグでは echo で変数の中身を見るという原始的な方法をよく使うかと思います。 いわゆる プリントデバッグ というやつですね。 もう少し詳しいデバッグが必要な場合は、 set -x と set +x でデバッグしたい部分を囲むという方法もあります。 今回は プリントデバッグ で使う echo の代わりに typeset or declare を使うと良いというお話です。 プリントデバッグは typeset or declare を使おう typeset or declare は変数宣言などでよく使うコマンドですが、変数の中身を見るのにも使えます。 echo と比べて何が良いのかというと、変数の中身はもちろん変数名や変数の型も表示してくれ、

    シェルスクリプトのデバッグは typeset または declare を使うと良いかも - よんちゅBlog
  • デーモンの起動・終了にはserviceコマンドを利用しよう

    斎藤です。こんにちは。 今日は、デーモンの起動・終了に際してはserviceコマンドを使った方がいいよ、というお話です。 ※CentOS 6.4 (x86_64) でテストしています。尚、特記がある所を除きます。 デーモンの起動・終了には大きく2手 Linux、特にRedHat, CentOS, Fedora, Ubuntu[1]などでは、デーモンの起動・終了の制御の際に、大きく分けて次の2つの方法を用いる事ができます。 "/etc/init.d/"配下のスクリプト(以下、スクリプト)を直接実行する "service"コマンドを実行する 一見、同じ事をやっているように思えるのですが、実は違う部分があります。それは、起動スクリプトが扱う環境変数が違うのです。次の節で、検証してみます。 扱う環境変数が違う スクリプトを直接実行する場合は、実行時の際の環境変数をそのまま利用します。一方、serv

  • 複数ホストに ssh しながら tail -F するときにはこうしたらどう? - tokuhirom's blog

    いろいろ方法があるとおもうのですが、以下のようなシェルスクリプトですませるのはどうでしょうか? #!/bin/bash function kill_children { # jobs -l | perl -ne 'print "kill $1\n" if /^\S+?\s+(\d+)/' | sh; pkill -P $$; wait; } trap "kill_children" EXIT HOSTS="192.168.1.1 192.168.1.2" for host in $HOSTS do ssh $host tail -F /service/foo/log/main/current & done wait ちょっと箇条書きで解説すると以下のようなことをおこなっています。 & でバックグラウンドジョブをはしらせるwait でそれらの終了を待つtrap 〜 EXIT は atexit

  • Big Sky :: perldocのbash-completionが激しく便利でうれしょん出た。

    タイトルは釣りです。 perlでは一般的にperldocを使って調べ物をする事が殆どですが あれー、あのモジュールなんだっけ...IO:: 忘れた。 とか IO:: の下辺りに似たモジュールあったよなー なんて事が結構あったりするのですが(私だけかも)、今日もSys::SendfileのAuthorから「チミが送ってくれたpatchに対して僕が書いたtestがWindowsで通らないんだけど、何か分かるかい?」とメールが来てて それ、以前ワテがp5pに送ったpatchの件ちゃいますやろか、確かIO:: ...えーっと... ってなってしまった訳です。 なんか良くある事なので解決出来ないかなぁと思っていた所、見つけてしまいました。perldoc-completeを。 ap's perldoc-complete at master - GitHub A bash completion help

    Big Sky :: perldocのbash-completionが激しく便利でうれしょん出た。
  • bashのパス補完で.svnを無視する。 - はぐれギークLv.1

    bashのTabによるパス補完。 もうこれなしでは生きていけないんだけど、たまーに不便に思うときがある。 それはsvnのworking copyをcdで潜っていくときのこと。 /home/shellcat/repos/workspaceにリポジトリをチェックアウトしたとして、 workspace/perl/FooBar/trunk/Foobarという風になったとする。 このとき/home/shellcatから移動しようとすると、mainより下に行くときに Tab補完が.svnのせいでチマチマ止まる。 最初の1文字を入力すれば補完が効くけど次の階層でまた止まる。 これがちょっとしたストレスだったんだけど、ようやく解決法を知ることができた。 ~/.bashrcにて export FIGNORE=${FIGNORE}:.svnPATHのexportと同じ文法でFIGNOREの値に.svnを加える

    bashのパス補完で.svnを無視する。 - はぐれギークLv.1
    abcb2
    abcb2 2011/02/09
    もっと早く知っていればよかった。。
  • http://twitter.com/kjwtnb/status/19616711383

    abcb2
    abcb2 2010/07/27
    覚書
  • 1