第1章 シェルスクリプト概要
1.1 シェルの概念
シェルはオペレーティングシステムの最外層で動作するコマンドインタプリタです。ユーザー入力を受け取り、OSが処理可能な形式に変換し、実行結果をユーザーに返します。この対話はインタラクティブまたは非インタラクティブで行われます。
1.2 シェルの役割
シェルはユーザーとLinuxカーネルを仲介する特殊アプリケーションです。主要なシェルインタプリタの種類はシステムによって異なり、/etc/shellsファイルで確認できます。
$ cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/tcsh
bash (/bin/bash) が多くのLinuxディストリビューションのデフォルトシェルです。
1.3 スクリプトの構成要素
シェルスクリプトの基本構成:
- シバン (例: #!/bin/bash)
- コメント行 (# で始まる)
- 実行可能なコマンド群
スクリプト作成手順
- コマンドを含むファイル作成
- 実行権限付与 (chmod +x)
- 構文チェック
- 実行
実践例: システム情報取得
#!/bin/bash
# システム情報表示スクリプト
cd /tmp
echo "現在のディレクトリ:"
pwd
echo "拡張子が.logのファイル:"
ls -lh *.log
第2章 入出力制御
2.1 標準入出力デバイス
| 種類 | デバイス | FD |
|---|---|---|
| 標準入力 | /dev/stdin | 0 |
| 標準出力 | /dev/stdout | 1 |
| 標準エラー | /dev/stderr | 2 |
2.2 リダイレクト操作
| 操作 | 演算子 | 機能 |
|---|---|---|
| 入力 | < | ファイルからの入力 |
| 出力(上書き) | > | ファイルへの出力 |
| 出力(追加) | >> | ファイル末尾に追加 |
| エラー出力 | 2> | エラーファイル出力 |
出力リダイレクト例
$ uname -m
x86_64
$ uname -m > arch.txt
$ cat arch.txt
x86_64
入力リダイレクト例
$ echo "password123" > pass.txt
$ passwd --stdin taro < pass.txt
2.3 パイプライン処理
複数コマンドを連携させるパイプ(|)演算子:
$ grep "/bin/bash$" /etc/passwd | awk -F: '{print $1,$7}'
root /bin/bash
user1 /bin/bash
パイプラインは左側のコマンド出力を右側の入力として処理します。