BASHプログラミング
 Computer >> コンピューター >  >> プログラミング >> BASHプログラミング

5 つの実用的な例を含む Bash スクリプト入門チュートリアル

5 つの実用的な例を含む Bash スクリプト入門チュートリアル進行中の Unix Sed および Unix Awk シリーズと同様に、Bash スクリプトに関するいくつかの記事を投稿します。実用的な例ですべての bash スクリプト テクニックをカバーします。

シェルは、ユーザー コマンドを解釈するプログラムです。コマンドは、ユーザーが直接入力するか、シェル スクリプトと呼ばれるファイルから読み取るかのいずれかです。

ユーザーからの入力を直接読み取る場合、シェルは対話型シェルとして呼び出されます。

シェルは、ファイルからコマンドを読み取って実行するときに、非対話型シェルとして呼び出されます。この場合、シェルはスクリプト ファイルの各行を上から下に読み取り、ユーザーが直接入力したかのように各コマンドを実行します。

組み込みのシェル変数 $- の値を出力して、シェルがインタラクティブか非インタラクティブかを確認します。

# echo $-
himBH

注:シェルがインタラクティブな場合、$- 変数には「i」が含まれます .

Unix にはさまざまなシェルがあります。 Bourne シェル (sh)、Bourne again シェル (bash)、C シェル (csh)、Korn シェル (ksh)、Tenex C シェル (tcsh)。以下に示すように、 which または whereis unix コマンドを使用して、特定のシェルがどこにあるかを調べます。

# which bash
/bin/bash

# whereis bash
bash: /bin/bash /usr/share/man/man1/bash.1.gz

シェル名を入力して、シェルを切り替えることができます。たとえば、csh と入力して C シェルに切り替えます。

<センター>

シェルスクリプトの作成と実行

例 1. Hello World Bash スクリプト

<オール>
  • お気に入りのエディターを使用して、次の 2 行をファイルに入力してスクリプトを作成します。
  • $ cat helloworld.sh
    #!/bin/bash
    echo Hello World
  • ファイルには任意の名前を付けることができます。ファイル名は、Unix 組み込みコマンドと同じであってはなりません。
  • スクリプトは常に、she-bang と呼ばれる 2 文字の「#!」で始まります。これは、ファイルがスクリプトであることを示しており、ファイルの最初の行の残りの部分で指定されたインタープリター (/bin/bash) を使用して実行する必要があります。
  • 以下に示すようにスクリプトを実行します。シェル スクリプトの実行に問題がある場合は、シェル スクリプトの実行に関するチュートリアルを参照してください
  • $ bash helloworld.sh
    Hello World
  • コマンド「bash helloworld.sh」を実行すると、非対話型シェルが起動し、ファイル名が引数として渡されます。
  • 最初の行は、スクリプトを実行するために生成するシェルをオペレーティング システムに指示します。
  • 上記の例では、スクリプトを解釈してコマンドを上から下に 1 つずつ実行する bash インタープリター
  • 次のようにすれば、先頭の「bash」なしでスクリプトを実行することもできます:
    • コマンド「chmod u+x helloworld.sh」を使用して、スクリプトの権限を変更して、あなた (ユーザー) がスクリプトを実行できるようにします。
    • スクリプトを含むディレクトリは、PATH 環境変数に含める必要があります。含まれていない場合は、スクリプトの絶対パスを指定してスクリプトを実行できます。
  • echo は、与えられた引数を単純に出力するコマンドです。また、変数の値を出力するためにも使用されます。
  • Bash スタートアップ ファイル

    .bash_profile および関連ファイルの記事の実行シーケンスで前述したように、bash が対話型シェルとして呼び出されると、最初に /etc/profile からコマンドを読み取って実行します。 /etc/profile が存在しない場合は、~/.bash_profile、~/.bash_login、~/.profile から指定された順序でコマンドを読み取り、実行します。シェルの起動時に –noprofile オプションを使用して、この動作を禁止することができます。

    通常、bash_profile は ~/.bashrc を実行します。必要に応じて、ウェルカム メッセージを表示できます。これは、最初にログインしたときにのみ実行されます。必要に応じて変数をエクスポートできます。また、シェルを開いたときに実行されて使用可能になるエイリアスを設定できます。ログイン シェルが終了すると、Bash はファイル ~/.bash_logout からコマンドを読み取り、実行します。

    例 2. ログイン時にウェルカム メッセージを出力する

    bash_profile ファイルに次の内容を入力します。ファイルが存在しない場合は、以下の内容のファイルを作成してください。

    $ cat ~/.bash_profile
    hname=`hostname`
    echo "Welcome on $hname."

    インタラクティブ シェルにログインすると、次のようなウェルカム メッセージが表示されます。

    login as: root
    root@dev-db's password:
    Welcome on dev-db

    例 3. システム関連情報の印刷

    インタラクティブ シェルにログインすると、サーバーにインストールされているカーネルの名前、bash のバージョン、稼働時間、およびサーバーの時間を表示できます。

    $cat ~/.bash_profile
    hname=`hostname`
    echo "Welcome on $hname."
    
    echo -e "Kernel Details: " `uname -smr`
    echo -e "`bash --version`"
    echo -ne "Uptime: "; uptime
    echo -ne "Server time : "; date

    インタラクティブ シェルを起動すると、次のようなメッセージが出力されます。

    login as: root
    root@dev-db's password:
    Welcome on dev-db
    
    Kernel Information: Linux 2.6.18-128 x86_64
    GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
    Copyright (C) 2005 Free Software Foundation, Inc.
    Uptime: 11:24:01 up 21 days, 13:15, 3 users, load average: 0.08, 0.18, 0.11
    Server time : Tue Feb 22 11:24:01 CET 2010

    例 4. 最後のログインの詳細を表示

    複数のユーザーが同じログインで同じマシンを使用している場合、最後のログインが行われたマシンやログイン時刻などの詳細が最も有用な詳細になります。この例では、対話型シェルの開始時に最後のログインの詳細を出力します。

    $ cat ~/.bash_profile
    hname=`hostname`
    echo "Welcome on $hname."
    
    
    echo -e "Kernel Details: " `uname -smr`
    echo -e "`bash --version`"
    echo -ne "Uptime: "; uptime
    echo -ne "Server time : "; date

    最終ログ | grep "ルート" | awk {'print "前回のログイン:"$3

    print "Last Login Date &Time:",$4,$5,$6,$7,$8,$9;}'
    起動時に、以下のようなメッセージが表示されます。

    login as: root
    root@dev-db's password:
    Welcome on dev-db
    
    
    Kernel Information: Linux 2.6.18-128 x86_64
    GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
    Copyright (C) 2005 Free Software Foundation, Inc.
    Uptime: 11:24:01 up 21 days, 13:15, 3 users, load average: 0.08, 0.18, 0.11
    Server time : Tue Feb 22 11:24:01 CET 2010

    最終ログイン元:sasikala-laptop

    最終ログイン日時:2010 年 2 月 22 日火曜日 11:24:01 +0100

    例 5. 起動時に変数をエクスポートしてエイリアスを設定する

    .bashrc および .bash_profile ファイルで使用する最も一般的なコマンドは、export および alias コマンドです。

    エイリアスは、あるテキストを別のテキストに置き換えるだけです。エイリアスを実行すると、入力した内容がエイリアスと等しいものに置き換えられます。たとえば、ls コマンドのエイリアスを設定してファイル/フォルダーを色付きで一覧表示する場合は、次のようにします。

    alias ls 'ls --color=tty'

    このコマンドを起動ファイルの 1 つに追加すると、ls コマンドを実行できます。このコマンドは、自動的に ls –color=tty コマンドに置き換えられます。

    Export コマンドは、環境変数を設定するために使用されます。システムやその他のアプリケーションでは、さまざまな環境変数が使用されます。これらは、任意のアプリケーション/スクリプトが読み取ることができるパラメーターを設定する方法にすぎません。 export コマンドを使用せずに変数を設定すると、その変数はその特定のプロセスに対してのみ存在します。

    以下の例では、環境変数 HISTSIZE をエクスポートしています。 # で始まる行はコメント行です。

    $ cat /etc/profile
    alias ls 'ls --color=tty'
    
    # Setup some environment variables.
    export HISTSIZE=1000
    
    PATH=$PATH:$HOME/bin:/usr/bin:/bin/usr:/sbin/etc
    
    export PATH
    
    export SVN_SH=${SVN_RSH-ssh}

    1. Bash 変数チュートリアル – 6 つの実用的な Bash グローバル変数とローカル変数の例

      この記事は、進行中の bash チュートリアル シリーズの一部です。他のプログラミング言語と同様に、Bash にも変数が用意されています。 Bash 変数は、プログラムの存続期間中に必要となる情報を一時的に格納します。構文: VARNAME=VALUE 注: 変数の割り当てでは、「=」記号の周りにスペースを入れないでください。 VAR=VALUE を使用すると、シェルは「=」を記号として認識し、コマンドを変数割り当てとして扱います。 VAR =VALUE を使用すると、シェルは VAR がコマンドの名前であると想定し、それを実行しようとします。 シェルは変数の型を気にしません。変数には、

    2. 6 つの実用的な例を含む Bash シェル関数のチュートリアル

      Bash シェル関数は、グループに単一の名前を使用して、後で実行するために複数の UNIX / Linux コマンドをグループ化する方法です。 . Bash シェル関数は、通常の Unix コマンドと同じように実行できます。シェル関数は、それらを解釈するための新しいプロセスを作成することなく、現在のシェル コンテキストで実行されます。bash エイリアスと関数の両方を使用すると、より長い、またはより複雑なコマンドのショートカットを定義できます。ただし、エイリアスは、このチュートリアルで説明されているように、これらの関数が許可する制御フロー、引数、およびその他の巧妙なものを許可しません。 この