タグ

programmingとbashに関するrawkranzのブックマーク (6)

  • Stray Penguin - Linux Memo (BASH)

    exp で 1文字を対象にしたいのであれば ?([a-f]) のようにクラスを併用することも可能。必ずしも `|' を使わなければならないわけではない。また、正規表現は ?(bash@(ref)) のように入れ子にすることもできる。 Bashで正規表現(2) ([[ =~ ]]オペレータ) 二重の `[[' を使い比較演算子に `=~' を使うと、右辺は拡張正規表現とみなされる。前項とは異なりこちらは物の正規表現だ。面白いのは、マッチ部分が BASH_REMATCH という配列にアサインされるという点。 VAR=$(LANG=C date +'%c') # VAR='Wed Dec 22 22:51:41 2010' DAYOFWEEK=Wed PATTERN='^'$DAYOFWEEK' ([[:alpha:]]{3}) [[:digit:]]{2} ([0-9:]+)' [[ $VA

    rawkranz
    rawkranz 2012/10/08
    変数の表現だけで色々できる
  • 本を読む シェルスクリプトでテンポラリファイルの後始末

    プログラム中でテンポラリファイルを作ったときには、最後に削除します。シェルスクリプトだとこんな感じです。 tmpfile=$(mktemp /tmp/tmp.XXXXXXXXXX) # ここに処理いろいろ rm "$tmpfile" が、この方法には、「正常終了以外ではテンポラリファイルが削除されない」「シェルスクリプトの終了ステータスが、処理体のものでなく、rm -fのものになる」という2つの弱点があります。 で、シグナル処理とかいろいろなパターンがあるんですが、いまどきだとtrapコマンドで疑似シグナルのEXIT(シグナル0)に後始末処理を入れるのが、正常系でも異常系でも処理できて簡単かと思います。 trap 'rm -f "$tmpfile"' EXIT tmpfile=$(mktemp /tmp/tmp.XXXXXXXXXX) # ここに処理いろいろ 正常終了での終了ステータスは

  • 定石を知りスキルを上げる

    前回に引き続き、今回もOS付属のシェルスクリプトを読んでいく。「当にこれでいいのか?」と思うような読みにくい記述も見つかるが、よく読むとシェルスクリプトならではの流儀を学ぶことができる(編集部) 他人のシェルスクリプトを読んでスキルを上げる 他人の書いたシェルスクリプトを読むことで、これまでまったく知らなかった書き方を知ることができたり、なぜそうした書き方をしているのかに思案を巡らすことができる。シェルスクリプトはガッチリしたプログラミング言語とは性格が異なっている。現場での実際の書き方を知ることが、スキルアップにおいて大切な要素となる。 これまでに引き続き、今回もシェルスクリプトで開発されたFreeBSDのコマンドを読み解いていく。順番に従い、今回は/sbin/resolvconfから参考になる書き方を取り上げて紹介する。 resolvconf(8)は/etc/resolv.confを

    定石を知りスキルを上げる
  • [linux][bash] 日次でデータベースのバックアップを取るよ | バシャログ。

    ホッシーが卒業 しちゃって心にぽっかり穴が開いてしまったような気分の nakamura です。みなさん、こんちには。 バックアップ・・・、それはいざという時の魔法の言葉・・・。でもきちんと取れてなかったり、リストアする時の事まで考えてなかったりすると逆に痛い目見ちゃう事もしばしば。という事で今回は、僕がいつもやってるデータベースのバックアップ方法を晒してみます。 とりあえず貼っつけておく いつも使ってるスクリプトはだいたいこんな感じ。cron で一日一回走らせています。 #!/bin/bash # 認証情報 DBUSER="root"; DBPASSWD="password"; # バックアップ先ディレクトリ /var/backup/example.com/mysql/20120327 みたいな感じになります。 BAKDIR="/var/backup/`hostname -s`/mysql

    [linux][bash] 日次でデータベースのバックアップを取るよ | バシャログ。
  • Ask user to confirm Using read

  • ファイルパスからファイル名や拡張子を自由に取り出す - ザリガニが見ていた...。

    いつも、いざ使う時になって、どうやるんだっけ?と探し回ってしまうので、忘れないようにメモ。(以前の日記でも、所々分散して書いているかもしれないが、ここで総括的に記録することにした) シェルスクリプト $ fpath='/a/b/c.d.e' # ファイル名を取り出す(拡張子あり) $ fname_ext="${fpath##*/}" $ echo $fname_ext c.d.e # ファイル名を取り出す(拡張子なし) $ fname="${fname_ext%.*}" $ echo $fname c.d # 拡張子を取り出す $ fext="${fpath##*.}" $ echo $fext e # ディレクトリを取り出す $ fdir="${fpath%/*}" $ echo $fdir /a/b なるほど! そして、仕組みとしては、以下のルールしたがって変換されているようだ。 ${

    ファイルパスからファイル名や拡張子を自由に取り出す - ザリガニが見ていた...。
    rawkranz
    rawkranz 2010/09/21
    すぐ忘れる。
  • 1