全8296文字
PR

Linuxを使いこなす上で、絶対にマスターしておきたいのが「コマンドライン操作」だ。この特集では、コマンドライン操作に苦手意識を持つ人に向けて、「シェル」や「端末」などの根本的な仕組みからコマンド操作の基本や活用方法までを解説する。

 連続したコマンド処理を何度も実行したい場合、「シェルスクリプト」を作って使うと便利です。このPart5では、シェルスクリプトの基本を徹底解説します。効率良く作成するのに役立つVisual Studio Codeの活用法も紹介します。

 Part4までで見てきたように、ファイルの名前を変えたり、いらないファイルを削除したり、ファイル内に記載された内容を昇順に並び替えたりといった、一つの作業をするだけであれば、その都度コマンドを実行してもさほど苦にならないでしょう。しかし、複数のコマンド実行を組み合わせたり、同じような処理を定期的に実行したりする必要がある場合、いちいち手で入力するのは面倒で苦痛となります。

 このような場合に役立つのが「シェルスクリプト」です。シェルスクリプトとは、実行したいコマンドなど一連の処理を記述したテキストファイルです。名前の通り、シェルがスクリプトに書かれている内容を解釈して実行します。シェルスクリプトには、繰り返しや条件分岐などの命令も記述できるため、多数のファイルを一括処理したり、利用環境やシステムの状態によって異なる処理をさせたりすることも可能です。

 シェルスクリプトはLinux OS内の至る所で利用されています。例えば、Linuxの起動や終了時に各種処理をするために呼び出される「rcファイル*1」の実体はシェルスクリプトです。自分で作るかどうかはさておき、Linuxを使いこなす上で、シェルスクリプトを扱うための知識はぜひ持っておくことをお勧めします。そこでこのPart5では、シェルスクリプト作成の基本について解説します。人気のコードエディタ「Visual Studio Code」(以下、VSCode)を使ってシェルスクリプトを効率的に開発する“今どきの方法”も併せて紹介します。

*1 Ubuntuの場合は、/etc/rc数字.d/などのディレクトリー内に格納されているファイル。例えば、/etc/rc5.d/以下のファイルは、グラフィカル環境を利用する際にLinux起動時に呼び出すファイルが格納されています。

簡単なスクリプトを作ってみる

 シェルスクリプトを理解する早道は、実際に作ってみることです。まずは簡単なシェルスクリプトを作って動かしてみましょう。シェルスクリプトはテキスト形式のファイルなので、テキストエディタを使って作成できます。ここでは、Ubuntuが標準搭載するテキストエディタを使って作成します。アプリケーション一覧から「テキストエディター」を起動してください。

 最初に作るのは、「ファイルを作成して挨拶文を書き込む」シェルスクリプトです。図1の通り入力してください。「こんにちは」の部分を除き、文字はすべて半角で入力します。

図1 ファイルを作成して挨拶文を書き込むシェルスクリプト「hello.sh」
図1 ファイルを作成して挨拶文を書き込むシェルスクリプト「hello.sh」
[画像のクリックで拡大表示]

 1行目の「#!」で始まる行は「シバン(shebang)」と呼び、スクリプトを解釈して実行するのに利用するインタープリタを指定します*2。シェルスクリプトの場合にはシェルが該当し、Part1で紹介したようにshやbash、csh、zshなどさまざまなシェルが利用できますが、通常はshまたはbashを使えばよいでしょう。bashの場合は「#!/bin/bash」、shの場合は「#!/bin/sh」とインタープリタの実行ファイル(パス)を記述します。本特集では以下、原則としてbashを指定します。

*2 シェルスクリプト以外にも、例えば「#!/usr/bin/python」のように記述すればPyhton向けのスクリプトとなります。

 2行目の空白行は見やすくしているだけなので、詰めても構いません。3行目の「TARGETFILE」は変数で、イコール(=)の後に指定した文字列などを格納できます。変数に値を代入する際には、変数名、イコール、値の間にスペースを入れてはいけないので注意が必要です。ここではユーザーnikkeiのホームディレクトリーにあるファイル「hello.txt」のパスを入れています。

 4行目の「touch」は、指定したファイルを作成できるコマンドです。コマンドの引数として変数の内容を利用したい場合は「${変数名}」と記述します*3。ここでは3行目で定義した変数TARGETFILEを指定しています。最後にechoコマンドを使ってTARGETFILEに「こんにちは」と書き込んでスクリプトは終了します。

*3 「$TARGETFILE」のように{}で変数名をくくらなくても構いません。しかし、変数「MYNAME」と文字列「DONE」をつなげて記述すると、「$MYNAMEDONE」のように変数と文字列の区切りが判別できなくなります。この場合は「${MYNAME}DONE」のように{}を使うことで正しく変数を判別できます。

 シェルスクリプトを作成したら、ファイルに保存しておきましょう。その際、シェルスクリプトであることを分かりやすくするために、「hello.sh」のように拡張子「.sh」を付けるのが一般的です。また、保存する際には文字コードが「UTF-8」、改行コードが「LF」になっていることを確認してください(図2*4

図2 ファイルを保存する際は文字コードと改行コードを確認する
図2 ファイルを保存する際は文字コードと改行コードを確認する
[画像のクリックで拡大表示]
*4 ファイル共有を使ってWindows上のテキストエディタを利用して編集する場合は、改行コードが「CRLF」になっていることがあるので注意しましょう。

 作成したシェルスクリプトを実行してみましょう。次のようにbash(やsh)コマンドの引数としてシェルスクリプトを指定することで実行できます*5

*5 これ以外に、「source hello.sh」のようにsourceコマンドを使う方法もあります。
[画像のクリックで拡大表示]