進行中の 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 スクリプト
<オール>$ cat helloworld.sh #!/bin/bash echo Hello World
$ bash helloworld.sh Hello World
- コマンド「chmod u+x helloworld.sh」を使用して、スクリプトの権限を変更して、あなた (ユーザー) がスクリプトを実行できるようにします。
- スクリプトを含むディレクトリは、PATH 環境変数に含める必要があります。含まれていない場合は、スクリプトの絶対パスを指定してスクリプトを実行できます。
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-dbKernel 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}
eSpeak を使用して Ubuntu でテキスト ドキュメントを音声に変換する方法 Cobol Hello World の例:Linux OS で Cobol プログラムを作成、コンパイル、実行する方法Linux