Linuxで利用できるシェルスクリプトの基礎知識と作成・実行方法

Linux

Linuxを自動化する際に利用できるshellscript(シェルスクリプト)と、それを理解するために必要なshell(シェル)について紹介していきます

shell script(シェルスクリプト)とは

Linuxを操作するために利用できる簡易的なプログラミング言語のようなものです。

シェルスクリプトにはシステムの管理ツールや定期的なバックアップなど様々な利用方法があります。

普段実行しているLinuxコマンドなどもシェルスクリプトで記述したファイルを実行するだけでまとめて処理をすることができるようになるため日々の冗長的な作業をスムーズに行うことができます。

shell(シェル)の種類

シェルとはユーザーからのコマンド入力で指示を受けて、その指示に沿って処理を実行するプログラムのことでLinux OSを操作する際には必ずお世話になります。

シェルは大きく分けると下記の二種類に分けられます

Borunシェル系
・bash、sh、ksh、zshなど

Cシェル系
・csh、tcshなど

この後に学ぶシェルスクリプトについても利用しているシェルによって多少書き方が異なる場合があります。

自信が利用しているLinux環境がどのシェルを利用できるのかを事前に確認しておきましょう

利用できるシェルの確認方法

Linux環境にログインしたら下記のコマンドを実行します

cat /etc/shells

実際のコマンド実行結果

ubuntu@sample:~$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/tmux
/usr/bin/screen
※コードの見方
黄・・・入力したコマンド
青・・・ログインユーザー
紫・・・コメント
その他・・・コマンドのレスポンス

利用できるシェルの一覧が取得することができました。

/bin/bashと記載されているものが、現在最も多く利用されているシェルとなりますので、複数表示されていてどれを学べばよいかわからない方はとりあえずbashを勉強しましょう

異なる部分があったとしてもほとんどは流用できる知識になるのでどれを学ぶべきかはあまり深く悩まなくても問題ありません。

シェルスクリプトの作成と実行方法

シェルスクリプトの作成方法(書き方)と実行のやり方について紹介していきます

ファイルの作成方法
viコマンドを利用してファイルを作成していきます

vi ファイル名.sh

シェルスクリプトを記述するファイルには拡張子に.shを指定します。

使用例

ubuntu@sample:~$ vi dog.sh

コマンドを実行するとそのままエディタが開きます。

エディターが開いたらまずはキーボードのiキーを押してください。

そうするとコマンドモードから挿入モードに切り替わり文字入力ができるようになります。

画面左下に『挿入』または『insert』と表示されていればOK

今回はプログラミング言語で最も有名なHello Worldを出力していきたいと思います。

#! /bin/bash

echo 'hello world'

exit 0


-- 挿入 --

解説

#! /bin/bash
前述の利用できるシェルの確認方法で表示したシェルの場所を記述します。シェルスクリプトを記述する際には1行目に必ず記述する必要があります。

今回はbashを利用するので前述した/bin/bashを指定しています。

echo ‘hello world’
Linuxコマンドで指定した文字列を表示させるechoコマンドを利用します。

引数に‘hello world’を指定することでターミナルに表示させることができます。

exit 0
処理の終了を意味しています。こちらも1行目同様にシェルスクリプト終了時には必ず記述する定型文です

処理の記述が終わったら

Escキーを押して挿入モードを終了します。そのまま:wq + Enterキーでファイルを保存してエディターを閉じます。

シェルスクリプトの実行

作成したシェルスクリプトを実行していきます

ファイルに実行権限を付与する

構文

chmod 755 ファイル名

使用例

ubuntu@sample:~$ chmod 755 dog.sh

シェルスクリプトを実行する

構文

./ファイル名

実行結果

ubuntu@sample:~$ ./dog.sh
hello world

無事にhello worldと出力されました

タイトルとURLをコピーしました