シェルスクリプトの基礎
プログラミング言語の人気度
主要なプログラミング言語の人気度は、TIOBEインデックスなどの評価サイトで確認できます。
シェルの定義と役割
シェルはコマンドインタプリタとして機能し、ユーザーとオペレーティングシステムの中間で動作します。ユーザーが入力したコマンドを解釈し、システムに伝達し、その結果をユーザーに表示します。
主要なシェルインタプリタ
cat /etc/shells
/bin/sh # bashへのシンボリックリンク
/bin/bash # 多くのLinuxディストリビューションのデフォルト
/bin/tcsh # cshの拡張版
/bin/csh # Cシェル
nologinシェルはユーザーのログインを防止する特殊なシェルです。
シェルスクリプトの活用事例
- ソフトウェアの自動インストールと設定
- システム管理タスクの自動化
- 定期的なバックアップ処理
- ログ解析とレポート生成
シェルスクリプトの基本構成
#!/bin/bash
# コメント:スクリプトの説明
# 実行可能なコマンド列
echo "スクリプト実行開始"
ls -la
スクリプトの実行方法
# 方法1:実行権限付与
chmod +x script.sh
./script.sh
# 方法2:インタプリタ指定
bash script.sh
# 方法3:sourceコマンド
source script.sh
入出力制御の操作
リダイレクト操作
リダイレクトは、コマンドの入出力をデフォルトのデバイスから指定した場所に変更します。
| 種類 | 演算子 | 説明 |
|---|---|---|
| 入力リダイレクト | < | ファイルから入力を受け取る |
| 出力リダイレクト | > | 出力をファイルに上書き保存 |
| 出力追記 | >> | 出力をファイルに追加保存 |
| エラー出力 | 2> | エラーメッセージをファイル保存 |
| 混合出力 | &> | 標準出力とエラー出力を統合 |
リダイレクトの実例
# ファイルからの入力
passwd --stdin user < password.txt
# 出力の保存
ls -l > filelist.txt
# エラー出力の制御
find / -name "*.conf" 2> /dev/null
パイプライン処理
パイプライン演算子「|」を使用して、あるコマンドの出力を別のコマンドの入力として渡すことができます。
# ユーザー情報の抽出
grep "/bin/bash$" /etc/passwd | cut -d: -f1
# ディスク使用率の確認
df -h | grep "/dev/sda" | awk '{print $5}'
# プロセス数のカウント
ps aux | grep httpd | wc -l
実用的なスクリプト例
#!/bin/bash
# システム情報収集スクリプト
echo "=== システム情報 ==="
date
echo "メモリ使用量:"
free -h | grep Mem
echo "ディスク使用率:"
df -h | grep "/$"