シェル環境のカスタマイズとシェルスクリプト入門

3 min 51 views
Linux

― はじめての人でも迷わない基礎から実践まで ―

Linuxで作業していると、「もっと効率よくコマンドを使いたい」「よく使う処理を自動化したい」と感じる瞬間がありますよね。
そんな時に役立つのが エイリアス・関数・bash設定ファイル・シェルスクリプト といった仕組みです。

この記事では、これらを はじめての人でも迷わず理解できるように、丁寧に解説していきます。
「なんとなく難しそう…」と感じていた方も、読み終わる頃にはきっと使いこなせるようになります。

 エイリアスとは?

エイリアスとは、既存コマンドに「別名」をつけて短く呼び出せるようにする機能です。
たとえば:

ll → ls -l

といった具合に、省略して実行できてとても便利です。

現在のエイリアス一覧を見る

$ alias

エイリアスを登録する

$ alias greet='echo "Hello!"'

一時的にエイリアスを無効化する

$ \ls

エイリアスを削除したいわけじゃないけど「元コマンドを使いたい」時に便利です。

エイリアスを解除する

$ unalias greet

 関数とは?

ひとまとまりの処理を名前で呼び出せる仕組みです。
エイリアスでは対応しきれない複雑な処理に向いています。

関数の定義

function sample() { echo "Hello"; }

実用例:シンボリックリンクだけを一覧表示

function lssymlink() { ls -l $1 | grep '^l'; }

関数の内容確認

$ declare -f lssymlink

関数の削除

$ unset lssymlink

bashには、起動やログイン時に自動で読み込まれる設定ファイルが複数あります。
これを知っておくと、「どこに設定を書けばいいの?」という迷いがなくなります。

設定ファイル実行のタイミング役割
/etc/profileログイン時全ユーザー共通の設定
~/.bash_profileログイン時個人ユーザー用設定
~/.bash_loginbash_profileがない場合に実行
~/.profile上2つがない場合
~/.bashrcbashを開く度に実行(エイリアス・関数はここ)
~/.bash_logoutログアウト時後片付け

エイリアス・関数は .bashrc に書く と覚えましょう。

 シェルスクリプトとは?

コマンドを順番に書いた「自動実行できるファイル」です。
やりたい作業を全部記述してまとめて実行できます。

例:5回数字を出力するスクリプト

sample.sh

#!/bin/bash
echo '1'
echo '2'
echo '3'
echo '4'
echo '5'

実行方法は4種類

方法
bashで実行bash sample.sh
sourceで実行source sample.sh
. コマンドで実行. sample.sh
実行権限をつけて直接実行chmod +x sample.sh./sample.sh

arguments.sh

#!/bin/bash
echo $1
echo $2
echo $3

実行例:

$ ./arguments.sh Taro Hanako
Taro
Hanako

代表的な変数も覚えておくと便利です。

変数中身
$1〜$nn番目の引数
$0スクリプト名
$#引数の数
$@全引数
$?直前のコマンド結果(0 = 成功)

read.sh

#!/bin/bash
echo -n 'Enter your name:'
read name
echo "Welcome, $name!"

実行:

Welcome, Taro!

 if 文の基本形

if 条件式
then
  処理
else
  それ以外の処理
fi

 よく使う test 条件(重要)

条件意味
-f ファイル存在するファイルか
-d ディレクトリディレクトリ存在
-eファイル/ディレクトリ存在
-r/-w/-x読み・書き・実行可能
-n 文字列空じゃない
-z 文字列
数値比較-eq / -ne / -gt / -lt など

実例

if.sh

#!/bin/bash
if test -f $1
then
 echo 'File exists.'
else
 echo 'File does not exist.'
fi

case.sh

case $str in
 y) echo 'Good luck.' ;;
 n) echo 'Game over.' ;;
 *) echo "Please enter 'y' or 'n'." ;;
esac

メタキャラクタ(*, ?, [])も使えて便利。

 for 文

リストの値をひとつずつ処理します。

for num in 1 2 3
do
  echo $num
done

 seq で数字リストを生成

seq 5 10

→ 5〜10

for.sh

for num in `seq 5 10`
do
 echo $num
done

 while 文

条件を満たす間ずっと繰り返す。

while [ 条件 ]
do
  処理
done

while.sh

while [ $num -ne 0 ]
do
 read num
done

この記事では、以下の内容を一気に学習しました。

  • エイリアスでコマンド短縮
  • bash関数で複雑な処理をひとまとめ
  • 設定ファイルで環境を自動セットアップ
  • シェルスクリプトで一連の処理を自動化
  • 引数 / read / if / case / for / while の基本
  • seq や test を使った便利な表現方法

最初は量が多く感じるかもしれませんが、どれも日常的に使う超重要な基礎です。
「ちょっと使ってみる」「繰り返し手を動かす」ことで、必ず自分のものになっていきます。

関連記事