タグ

シェルスクリプトとlinuxに関するtutaka777のブックマーク (7)

  • シェルスクリプトの基本テクニックを盗め!

    4. extract(1) - メインの処理 for, case シェルスクリプトの場合、最終的に実行される処理はファイルの後方に記述されていることが多くなります。このシェルスクリプトのメイン処理部分はリスト4.1です。ソースコードを読む場合、まずその処理の質部分を探し当てて、何をしているか把握することが大切となります。枝葉末節は後から調べれば問題ありません。 リスト4.1の処理は、for構文で引数に指定されたアーカイブに対して順次処理を適用するというものです。適応する処理は、拡張子を判定基準にしてcase構文で分岐させています。この例では、「tar+GNU zip」「tar+bzip2」「GNU zip」「ZIP」「LHa」をそれぞれ拡張子から判別して展開処理を行っています。 for target do WORKDIR=$(mktemp -d "$EXTRACTHOMEDIR"/XXX

    シェルスクリプトの基本テクニックを盗め!
  • sh:whileでCSVファイルを読むときには

    シェルを使ってファイルから1行ずつよみこみ、カンマで区切って処理をしたーい。 なんて時に、 while read LINE do // ここでsplitをつかってごにょごにょと・・・・ done < input.txt ってな感じで、1行を切り分けていた。 ここでごにょごにょと書いたのも、いつもこの部分を忘れてしまい、 あー昔書いたやつをさがして・・・ と見つからず、いろいろと探していたら、もっといいやり方を知った。 まあ、たまにブラウズもいいものだと・・・ では、 while IFS=, read f1 f2 f3 do echo "$f1は1つ目のフィールド" echo "$f2は2つ目のフィールド" done < input.txt というように、カンマで分割した形で変数にセットしてくれるので、楽だ・・・・ ちなみに、IFSとはInternal field separator

  • linuxディレクトリ中のファイルサイズ合計値を バイト表示

    Landscape トップページ | < 前の日 2004-05-25 2004-05-26 次の日 2004-05-27 > Landscape - エンジニアのメモ 2004-05-26 ディレクトリ中のファイルサイズ合計値を バイト表示 当サイト内を Google 検索できます * ディレクトリ中のファイルサイズ合計値を バイト表示この記事の直リンクURL: Permlink | この記事が属するカテゴリ: [シェルスクリプト] [unix] Windows では、ディレクトリのアイコンを右クリックしてプロパティを表示させると、そのディレクトリ以下のファイルのサイズの合計値がバイト単位で表示される。併せて、ファイル数やクラスタギャップを含めたディスク上のサイズも表示される。ちなみに、プロパティは ALT + ディレクトリアイコンのダブルクリックでも表示される。 Linux や Uni

  • grepの正規表現 - satospo

    grepの正規表現でIPv4アドレスにマッチさせる例。 [root]# grep -e "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" secure 一致した部分だけ抜き出すには?「-o」を付けると、パターンにマッチした部分のみを表示してくれる。 [root]# grep -o -e "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" secure 192.168.1.50 192.168.1.50 SSHでパスワード間違いしたホストIPアドレスを一覧するパターンの例。(CentOS 5) [root]# grep -E "Failed|Invalid" /var/log/secure | grep -o -e "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+" SSHでパスワード間違いしたホストIPアドレスを一覧し

  • xargs を使ってカジュアルに並列処理 - たごもりすメモ

    シェルからでも重い処理というのはちょこちょこあって、例えば超デカいログファイルを移動して圧縮したりというお仕事は世界中のあらゆる場所で毎日行われていたりする。コマンドラインからでも大量の圧縮済みログファイルをいっぺんに展開したい、とか。 あるディレクトリ以下に存在するたくさんのファイルを(圧縮済みのものを除いて)全部 bzip2 圧縮したい!と思ったら、とりあえずさくっと次のようにコマンドラインで叩けばいい。 $ find . -not -name '*.bz2' | xargs bzip2 これで、まあそんなに問題なく効率的にbzip2圧縮ができる。だがしかし。 最近は複数コアのCPUが普通に転がってるし、あまつさえHyperThreadingが有効になってたりしてOSから見える論理CPU数がハンパない。普通に8とかある。その一方で複数コアを使用してくれるコマンドというのはあんまりなくて

    xargs を使ってカジュアルに並列処理 - たごもりすメモ
  • シェルの変数に慣れる

    ユーザー定義変数の使い方 変数は、シェルの世界、とくに英語のドキュメントでは「パラメータ」と呼ばれていますが、日語でパラメータというとどうも違う意味にとられがちなので、ここでは「変数」と呼ことにしたいと思います。ではシェルスクリプトにおける「変数」の取扱と特徴について見ていくことにしましょう。 シェルやシェルスクリプトで変数を定義する場合は、 のように記述します。とくに前もって変数を宣言したりする必要はありません(宣言することもできますが)。‘=’の両側にスペースをあけたりしてはいけません。C言語などの変数代入などの際にスペースをあける癖のある方は気をつけてください。 格納された値を参照する場合は、変数の先頭に‘$’をつけます。ためしにechoを使って標準出力に変数を表示してみます。

    シェルの変数に慣れる
  • guro_chanの日記 » シェルスクリプトのfor文で指定した回数だけ繰り返し処理を行う

    シェルスクリプトで繰り返し処理を行うとき必要になることが多いが、ググるさんにたずねてみても案外すぐに見つからないので記録しておくものである。1から100まで1ずつ増加させながら繰り返す場合はこんな感じ。 for i in `seq 1 1 100` do // do something done ワンライナーで書くならこうなる。 $ for i in `seq 1 1 100`; do // do something; done 1 2 (snip) 99 100 2ずつ増加させるなら`seq 1 2 100`にすれば良い。 なおwhile文でも同様のことはできるが長くなるし複雑で分かりにくい。 i=1 while [ $i -le 100 ]; do // do something i=`expr $i + 1` done ワンライナーだと見た目の複雑さがさらに増す。 $ i=1; w

  • 1