bashの使い方あれこれ。
bash tips(環境編)
参考資料。
ホームディレクトリに置かれる隠しファイル
これらの隠しファイルに環境設定用のコマンドなり記述しておけば、自動的に設定が行われる。
- .bashrc
- シェルが起動したときに実行される
- .bash_profile
- ログインする時に実行される
- .bash_logout
- ログアウトする時に実行される
- .bash_history
- コマンドの履歴が保存されるファイル
コマンドプロンプトの表示を変える
環境変数のPS1を変更すると、コマンドプロンプトに表示されるテキストを変更することができる。 .bashrcの適当なところに、以下のような一行を追加する。
\uには現在のユーザー名、\tは時刻、\!はコマンドの番号、\wはカレントディレクトリを表す。 \$はrootなら#、それ以外のユーザーなら$に置き換わる。 例えば上記の例だと、下記のように表示される。
一定時間操作が無い場合に、自動的にログアウトさせる
環境変数のTMOUTを設定する。 .bashrcの適当なところに、以下のような一行を追加する。
この例だと600秒、つまり10分間操作がない場合は、自動的にログアウトする。
bash tips(シェルスクリプト編)
参考になる資料。
- シェルスクリプト(Bash)
- シェルスクリプトの基礎
- bash
- BASHスクリプト
- Shell: script (Japanese)
- 最低限 UNIX / Linux [III] 【シェルスクリプト】
- Manpage of BASH
全体的なこと
- シェルスクリプトの最初の行は、「#!/bin/sh」
- シェルスクリプトの最後には、「exit 0」を書いてエラーコードを返すようにする(必須ではないけど)
- 変数への代入のときは$を付けない、参照するときは$を付ける
- 代入文では等号の前後に空白を入れてはいけない
- #(シャープ)で始まる行はコメント行になる
配列
filesを配列として宣言する。 ただし、別にこれが無くても配列として使える。
代入と参照。
ファイルの列挙
コマンドの結果を利用する場合。 .txtという拡張子を持つファイルを列挙する。
もっと簡単に。
応用、ファイルを列挙して配列に格納する。
ファイルの内容を一行ずつ処理する
例えばこのような内容のテキストファイル(test.txt)を用意しておく。
このファイルの内容を一行ずつ処理したい。
このシェルスクリプトを実行すると、このように表示される。
このファイルをCSVファイルと見立てて、3カラム目だけを抽出したい場合、次のようにcutコマンドを使用した処理に書き換える。
実行すると下記の通りになる。 区切り文字は-dオプションの次で指定する。 今回はCSVとして扱いたかったので「,」を指定したが、ここをかえれば別の文字列で区切ることも可能。
範囲を指定して文字を切り出す
cutコマンドの-cオプションを使用して、n文字目からm文字目までを切り出して変数に格納する。 次の例は1文字目から4文字目までを切り出す。
次の例は、dateコマンドにてyyyymmdd形式で得られる日付から、年月日をそれぞれ変数に格納する。