タグ

bashに関するiwwのブックマーク (278)

  • bash

    Linux においての「コマンド」とは、シェルによって実行ファイルが実行されていることを意味します。 たとえば ls コマンドをユーザが入力した際、その入力はシェルにとっての入力でしかありません。シェルはユーザから入力された ls という文字列を「ls という実行ファイルを実行する」と解釈し、カーネルに伝えます。 ls という実行ファイルを実行した結果がシェルによってユーザに伝えられ、あたかもユーザは ls という実行ファイルを直接実行したように感じることができます。 このように「実行したように」というのがユーザインタフェースとしてのシェルの役目です。 しかし、今回はスクリプト言語としての bash をメインに扱うので、この章は軽く流していただいて結構です。 ご存じのように bash はプログラミング言語(シェルスクリプト)のひとつとして動作します。 プログラミング言語として、最低限備わっ

  • bashで数値チェック - OKWAVE

    手元にunixが無いので検証できてませんが、 X=`expr "$PARM" : '\([0-9][0-9]*\)'` if test "$PARM" = "$X" then num=true else num=false fi 最初のexprでは、先頭から数字が続いた部分がXにセットされます。数字以外のものが含まれていれば、元の文字列と不一致になるはずです。 あと、桁数に上限があれば、これのほうがわかりやすいかな。 case "$PARM" in [0-9]) num=true ;; [0-9][0-9]) num=true ;; [0-9][0-9][0-9]) num=true ;; [0-9][0-9][0-9][0-9]) num=true ;; *) num=false ;; esac

    bashで数値チェック - OKWAVE
    iww
    iww 2008/11/26
  • .bash_profileと.bashrcの違いは

    ユーザーのホームディレクトリには、.bash_profileや.bashrcといったファイルがある。どんなファイルがあるかは、-aオプション付きでlsコマンドを実行すると表示される。 $ ls -a ./          .bash_history  .bashrc  .emacs           .rpmmacros  rpm/ ../         .bash_logout   .canna   .emacs-color.el  .screenrc   tmp/ .Xdefaults  .bash_profile  .cshrc   .emacs.el        .xemacs.el この中の.bash_profileと.bashrcは、共にログインしたときに実行される設定用のシェルスクリプトだが、両者にはもちろん違いがある。 .bash_profileは、ログイン時だけに

    iww
    iww 2008/11/07
  • らぷたぁのまったり日記:2006年04月 - livedoor Blog(ブログ)

  • ファイルの文字列置換 - odz buffer

    ref:某日記(中期) 複数のファイルの特定文字列を一括変換したい場合、 for i in *; do cat < "$i" | sed 's/AAA/BBB/' > "$i"; doneとすると良さそうに見えるけど、これってポータブルなのかねぇ。 tee を使って標準出力は /dev/null に捨てるとか。 for i in *; do sed 's/AAA/BBB/' < "$i" | tee "$i > /dev/null; done と思ったけど、良く考えるとこれも質的なところでは変わらない。 Linux だと cat の変わりに perl -ne 'print; sleep 1' とかにしてみると良く分からない挙動になるので*1、まあ、やめておいたほうがよさげ。 GNU の sed だと for i in *; do sed -i -e 's/AAA/BBB/' "$i";

    ファイルの文字列置換 - odz buffer
  • シェルリファレンス

    【標準入力】 read ---------------------------------------------------------------------- #!/bin/sh read timeofday echo $timeofday exit 0 ---------------------------------------------------------------------- 【条件】 test([ ])コマンド ---------------------------------------------------------------------- ファイル hoge の存在を確認する ex1) if test -f hoge then ... fi ex2) if [ -f hoge ] then ... fi ex3) if [ -f hoge ]; the

  • 2008-04-05

    シェル スクリプト コマンドで汎用的に使える"引数を処理するための"シェル スクリプトを作成した。 別にシェルスクリプトに限らないが、プログラムを作る時に引数の処理は大体、後回しになってしまう。そうするとプログラムを書いている途中では定数(や特定の値を代入した変数)を使ってハードコーディングしてしまって、後で直すのが なお更面倒になってしまう。そこで次のような組み込み用のシェルスクリプトを考えた。 オプションや引数の値をそれぞれ対応するシェル変数に取り込んでくれる オプションや引数を出来る限りシンプルに定義でき、直ぐに変更できる シェルスクリプト体で行なう作業は最小限にできる(出来る限り自動化する) 定義に従ってUsageメッセージも自動生成して、定義を変更してもプログラムを変更しなくて済む 設定によっては色々と柔軟な付加機能を持つ Linux(Fedora 8)の標準機能だけで実現する

    2008-04-05
    iww
    iww 2008/04/05
    getoptより便利なのかあとで見る
  • さくらインターネットのレンタルサーバーにscreenをインストールしてみる - SIGSEGV

    screenインストール記録です。ソースから入れました。 $ fetch "ftp://ftp.uni-erlangen.de/pub/utilities/screen/screen-4.0.2.tar.gz" $ tar xvzf screen-4.0.2.tar.gz $ cd screen-4.0.2 $ ./configure --prefix=/home/自アカ/ $ make $ make installscreenのインストールはこれで終わりなんですけど、使用するとなると、.screenrcが重要になってきます。私の使っている.screenrcはとても簡単にこれだけです。 startup_message off term xterm termcapinfo xterm* Z0=\E[?3h:Z1=\E[?3l:is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4

    さくらインターネットのレンタルサーバーにscreenをインストールしてみる - SIGSEGV
    iww
    iww 2008/02/28
    .bash_profile で screen -R
  • BASH Programming - Introduction HOW-TO: 参照テーブル

    次のページ 前のページ 目次へ 11. 参照テーブル 11.1 文字列比較演算子 (1) s1 = s2 s1 と s2 が同一 (2) s1 != s2 s1 と s2 が同一でない (3) s1 < s2 作成中 (4) s1 > s2 作成中 (5) -n s1 s1 が null でない(一文字以上を含んでいる) (6) -z s1 s1 が null である 11.2 文字列比較の実例 ふたつの文字列を比較する #!/bin/bash S1='string' S2='String' if [ $S1=$S2 ]; then echo "S1('$S1') is not equal to S2('$S2')" fi if [ $S1=$S1 ]; then echo "S1('$S1') is equal to S1('$S1')" fi ここで、上記の if [ $1 =

    iww
    iww 2007/12/07
  • プログラミングと開発者のためのCodeZine:コマンドの出力をtop風に表示させるtopless(シェルスクリプト, Unix, サーバー管理)

    はじめに この記事ではUNIXサーバ管理という側面からのシェルスクリプトプログラミングを取り上げます。またシェルスクリプトを自作するときのポイントも解説します。 UNIXサーバを管理するときは、道具としてのシェルスクリプトが重宝します。常時ログを監視するにしても、入力するコマンドをまとめるにしても、UNIXに用意されているコマンドを有効活用するにはシェルスクリプトが効果的です。 シェルスクリプトは、コマンドを入力する作業の延長線でプログラミングができるという容易な側面を持っていますが、正しく理解しようとすると多くのルールやコマンドを覚えなければならないというやっかいな側面も持っています。 シェルスクリプトを習得する方法はいくつかあります。じっくり時間がとれるならどの学習方法でもよいのですが、入社後にUNIXサーバを管理することになり、緊急に使えるようにならなければならないという逼迫

  • 条件,ステートメントブロックとif文 - ファイヤープロジェクト

    BASHスクリプトでの条件式とステートメントブロックについて説明し,それをもとにif文の書き方を説明する. 条件 ステートメントブロック testと[ ] if文 条件部の応用 if文を実行するためには,条件をチェックするための仕組みが必要である.先にスクリプトはexit文で終りたいと書いたのは,その仕組みのためである.以下はcommad1が成功した場合はcommand2を実行するものである. command1 && command2 以下は逆にcommand1が成功した後にcommand2を実行するものである. command1 || command2 演算子&&や||がある場合,システムはcommand1の返り値(終了コード)をみてcomman2を実行するかどうかを決める.そしてその返り値はexit文のパラメータである. UNIXの思想の一つにシンプルで小さいものを作るという思想がある

  • 展開/置換の例

  • シェルスクリプト(Bash)

    シェルスクリプトとはコマンドやシェルの組み込みコマンドなどをファイルに記述し、実行できるようにしたものである。 またプログラムの制御構造なども使用でき、柔軟な処理が可能であり、/etc/rc.d/initd/ディレクトリ内の起動スクリプトなどはシェルスクリプトである。 シェルスクリプトを実行するには実行権限および読み込み権限が必要です。 またシェルスクリプトファイルの1行目にはシェルスクリプトを実行するシェルのパスを記述します。 スクリプトファイル内でも、シェル変数を定義することができる。またその変数を参照する場合は変数名の前に" $ "を 付けることで参照できる。変数名に使用できる文字は英数字および" _ "(アンダーバー)であり先頭は英字を使用しなくてはならない。

    iww
    iww 2007/03/30
    すごくわかりやすかったのに死んだ
  • 2006-10-13

    やすみだー WindowsのDLLまわりは、Advanced Windowsを読むとよいらしいです。(はてぶコメントより。情報どうもありがとうございます) ちらっと立ち読み。したけど、あんまり覚えてないのだった。買うべきか。最近書いすぎ。読まない。積みすぎ。 と、思ったけど、衝撃の事実。シェルスクリプトの$0にはフルパスが入ってる! #!/bin/sh echo $0みんなもこのぷろぐらむをぱすのとおるところにおいてじっけんしてみよう! firefoxのしくみ。 firefoxはバイナリ(firefox-bin)を起動するんだけど、このとき、firefox-binが置いてあるディレクトリの.soをロードしないといけないので、LD_LIBRARY_PATHをなんとかしないといけない。 というような話を書こうと思ったという話なのでした。$0をdirnameとかbasenameとかすれば終わる

    2006-10-13
    iww
    iww 2006/10/17
  • 複数のファイル拡張子を一括で変更するには

    複数のファイル拡張子を一括変更するには、bashのコマンドを使うのが簡単だ。例えば、*.tiffというファイルを*.tifに一括変更するには、以下のように行う。 $ ls 01.tiff  02.tiff  03.tiff  04.tiff  05.tiff ←拡張子はすべて.tiff $ for fname in *.tiff; do ←拡張子がtiffのファイルが存在する限り、以下の命令を繰り返す > mv $fname ${fname%.tiff}.tif; > done $ ls 01.tif  02.tif  03.tif  04.tif  05.tif

  • 処理系コレクション:Linux:bash

    算術式展開 $((算術式)) 例 #!/bin/bash #二つの引数を計算するスクリプト #引数1, 引数3 非演算子 #引数2 演算子 echo "$1 $2 $3 = $(($1 $2 $3))" shift shift 位置パラメータを左に一つシフトする。 例: $1 = hoge, $2 = age, $3 = sage の時 shift を実行すると $1 = age, $2 = sage になる。

  • リモートホストとdiffる - (ひ)メモ

    bashの「Process Substitution」という機能で、コマンドの実行結果を名前つきパイプから読めます。(thx かつみくん) $ cat -n <(date; echo foo) 1 Wed Jan 18 21:38:30 JST 2006 2 fooこれを使って、リモートホストのファイルとdiffを取るシェル関数を作ってみました。 こんな感じで使えます。 $ rdiff -u ~/s.txt REMOTE_HOST:~/d.txtまた-Rオプションで、rsyncの-R, --relativeオプションの様にローカルホストのパスをリモートホストの相対パスとして指定できます。たとえば、ローカルホストの/very/very/long/path/t.txtとリモートホストの同じパスのファイルをdiffるときには次のようにしてリモートホスト側のパス指定を略記することができます。 $

    リモートホストとdiffる - (ひ)メモ
  • BASH Programming - Introduction HOW-TO: for, while, until によるループ

    次のページ 前のページ 目次へ 7. for, while, until によるループ この章では、for, while, そして util によるルー プについて述べます。 bash の for は、他の言語での使い方と若干異なります。基的に は、ある文字列内の単語をあたまから順に反復処理するものです。 while は、制御式が真の間はコードを実行していて、偽になったとき (あるいは実行コード内に break が明示されている場合)にのみ停止します。 until ループは、制御式が偽と評価されている間はコードが実行される という点を除くと、while ループとほぼ同じです。while と until が似ていると思ったなら、それは正しい考えです。 7.1 For のサンプル #!/bin/bash for i in $( ls ); do echo item: $i done 二行

    iww
    iww 2006/05/25