タグ

シェルに関するmittsun1979のブックマーク (9)

  • 使いやすいシェルスクリプトを書く

    できればシェルスクリプトなんて書きたくないんだけど,まだまだ書く機会は多い.シェル芸やワンライナーのような凝ったことではなく,他のひとが使いやすいシェルスクリプトを書くために自分が実践していることをまとめておく. ヘルプメッセージ 書いてるシェルスクリプトが使い捨てではなく何度も使うものである場合は,体を書き始める前に,そのスクリプトの使い方を表示するusage関数を書いてしまう. これを書いておくと,後々チームへ共有がしやすくなる.とりあえずusage見てくださいと言える.また,あらかじめ書くことで,単なるシェルスクリプトであっても自分の中で動作を整理してから書き始めることができる.関数として書くのは,usageを表示してあげるとよい場面がいくつかあり,使い回すことができるため. 以下のように書く. function usage { cat <<EOF $(basename ${0})

  • 変数を使用する | UNIX & Linux コマンド・シェルスクリプト リファレンス

    → 他のプログラミング言語と同様に = を使用する。 シェルスクリプトでも C言語などと同様に = を使用することで変数に値を設定することができる。ただし、C言語とは違い = の前後にスペースがあってはいけない。 また、変数名の大文字と小文字は区別されるため変数 VAR と変数 var は別物として扱われる。さらにシェル変数に「型」は存在しないので、文字列や数値を区別なく設定できる。 ポイントをまとめると以下のとおりとなる。 = を使う 値の設定時は変数名の先頭に $ を付けない ($ は参照時のみ) = の前後にスペースを入れない (前後にスペースがあるとエラー) 型は存在しない (declare コマンドや typeset コマンドで似たようなことができるが推奨はしない) 変数名の大文字・小文字は区別される (VAR と var は別物) 特に「2」は初心者が犯しがちなミスなので注意す

    変数を使用する | UNIX & Linux コマンド・シェルスクリプト リファレンス
    mittsun1979
    mittsun1979 2016/11/29
     変数の使い方。
  • Snap Note 開発記 from ソフトウェアデザイン館 Sage Plaisir 21:Linux のシェルである bash のデバッグ機能を使った bashlib - livedoor Blog(ブログ)

    Sage Plaisir 21 で開発しているツールの開発状況を公開するページです。試行錯誤している様子が伺えるかも。 bash で動くシェル・スクリプトをデバッグするためのデバッガーは、ありませんが、bash にあるデバッグ機能を利用すれば、gdb のようなライン・デバッガーでできることを使うことができます。 trap 'read -p "$LINENO: $BASH_COMMAND" key' DEBUG このコマンドをシェル・スクリプトに記述すると、その行より先に実行するコマンドは、1行ずつ画面に表示されて待ち状態になります。 つまり、ステップ実行(ステップ・オーバー)ができます。 trap で、read ではなく echo にすれば、すべての行に1行ずつprintf を埋め込むことになり、問題がある内部の printf を実行している部分をすぐに見つけることができます。 他のデバッ

    mittsun1979
    mittsun1979 2014/01/23
    シェルスクリプトのデバッグ
  • シェルスクリプトの基礎

    シェルスクリプトは運用・管理で利活用すると非常に便利ですが、その反面root権限で誤ったシェルスクリプトを走らせてしまうと、システムを破壊してしまう恐れもあります。ここで紹介している一切の構文・サンプル文は自己責任でご参考下さい。 ・はじめに ・クオーテーション ・標準入出力 ・シェルスクリプト中の変数定義 ・制御文の構造 ・制御文の条件 ・シェルスクリプトでループ ・コマンドの連結 ・エイリアス と関数 ・Perlとの連動 ・シェルスクリプト構文集 ・戻る UNIXはMS-Windowsと違い拡張子でファイル形式を判別しません。ファイルの中身の先頭部分で判断します。つまりシェルスクリプトであると認識させるためにはファイルの先頭に、/bin/shと記述します。perlと認識されるには、/usr/bin/perlと記述します。これらはWindowsファイルの.txt(ド

  • Linux/UNIX 上でコマンドの実行履歴を残す方法

    最近、セキュリティ関連の話が多いが身の回りで多いのですが、今回は、Linux / UNIX 系で誰がいつどのコマンドを実行したかってのをログにとる方法のお話しです。 「@IT:止められないUNIXサーバの管理対策 第6回 - Page2」にも参考になるロギングの話が掲載されていますが、実行コマンドのログをとる方法は以下の5つが考えられます。 sudo を使って実行ログをとる .bash_history を定期的にバックアップして実行ログとして保存する script コマンドを使うことで実行ログ(画面出力のコピー)をとる システムアカウンティング機能(psacct)を有効にして実行ログをとる 実行シェルを改造し、ログを保存するようにする 僕が考えつくところで、セキュリティ的に最も強固であるのはシェルの改造と思います。但し、その OS 上で使える Shell をその改造 Shell のみに限定

  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • awkでシェル変数を使う方法

    こちらに解説がありました。 シェルの引数を変数として使う http://www.wakhok.ac.jp/~maruyama/Unix92/awk/section2.1.11.html シングルクォートの外側にあるものは全てシェルの変数としてみてくれるのがポイント。つまり、

    awkでシェル変数を使う方法
    mittsun1979
    mittsun1979 2009/12/22
     awkでシェル変数を使う方法
  • AWK $B$GF~NOA4BN$r=87W$9$k (B

    $B9TC10L$N=hM}$r8+$F$-$^$7$?$,!"$?$H$($P!V$3$l$i$NJ88K$rA4ItGc$C$?$i!"$$ (B $B$/$i$K$J$k$N$@$m$&!)!W$H$$$&5?Ld$K$O!"3F9T$K$"$k2A3J$NAmOB$r5a$a$J$1$l (B $B$P$J$j$^$;$s$+$i9TC10L$N=hM}$@$1$G$O$9$_$^$;$s!#$=$3$G!" (BBEGIN $B$H (BEND $B$H$$$&%Q%?! % gawk 'BEGIN { $B=hM} (B1} { $B9TC10L$N=hM} (B} END { $B=hM} (B2}' miyabe.new $B$N7A AWK $B$O!" (B1 $B9TL\$r=hM}$9$kA0$K$^$: (B $B=hM} (B1 $B$r9T$$!"

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

    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

    mittsun1979
    mittsun1979 2007/12/06
     uniq -d で重複、uniq -uでユニーク行を抽出する。知らなかった。
  • 1