Linuxでシェルスクリプトを学ぶ最初の一歩として、「Hello, world!」を表示するプログラムは定番だ。単純なテキスト出力を通じて、スクリプトの基本構造や実行手順に慣れるための練習になる。ここでは、Bash(バッシュ)というシェルを使って簡単なスクリプトを書く方法を紹介する。
ディレクトリの作成と移動:作業の土台を整える
Bashでスクリプトを作成する前に、作業専用のディレクトリを用意しておきたい。まずはホームディレクトリに移動する。cd ~ と入力すると、現在ログインしているユーザーのホームディレクトリに移動できる。たとえば、ユーザー名が taro であれば、/home/taro がホームディレクトリになっている。
cd ~
次に、練習用の新しいディレクトリを作成する。mkdir bash練習 は「bash練習」という名前のディレクトリを作成するコマンドである。ディレクトリ名には日本語も使えるが、後々のコマンド操作を考えると、英数字で統一するのが望ましい。今回はあえて日本語の例を使って、Bashの柔軟性も示している。
mkdir bash練習
ディレクトリを作成したら、cd bash練習 でその中に移動する。このコマンドを実行すると、今後作成するスクリプトやファイルはこのディレクトリ内に保存されることになる。作業環境をきちんと分けることで、ファイルの管理がしやすくなり、誤操作によるファイル削除や上書きを防ぎやすくなる。
cd bash練習
現在地を確認したいときは pwd を使う。これは “print working directory” の略で、今いるディレクトリのパス(絶対パス)を表示する。たとえば
/home/taro/bash練習
と表示されていれば、きちんと目的のディレクトリに移動できていることが確認できる。
このように、Bashでの作業はまずディレクトリの作成と移動から始まるが、後の作業効率やスクリプトの管理に直結する重要なステップである。
スクリプトファイルを作成し、Hello World を出力する
ターミナル上で「Hello, world!」を表示させるには、まずスクリプトファイルを作成し、その中に命令文を書く。
まず、nanoというテキストエディタを使って新しいファイルを作成する。nano hello.shと入力すると、hello.shという名前のファイルが開く。ファイル名の末尾 .sh は「このファイルはシェルスクリプトだ」と伝える役割を果たす。
nano hello.sh
画面が切り替わったら、以下の2行をそのまま入力する。
#!/bin/bash
echo "Hello, world!"
1行目の #!/bin/bash は「このスクリプトは bash を使って実行してね」という指定であり、シバン(shebang)と呼ばれる。この記述がないと、実行時に文法エラーが出るかもしれない。
2行目の echo は「表示せよ」という命令だ。つまり、Hello, world! という文字列を出力せよ、という指示になる。
入力が終わったら、保存して終了する。Ctrl + O を押してから Enter で保存し、Ctrl + X で nano を閉じる。これで hello.sh というファイルが作成された。
Ctrl + O(書き込み=保存)
Enter(ファイル名そのままでOK)
Ctrl + X(終了)
次に、このファイルに「実行可能」という属性を与える。chmod +x hello.sh と入力すれば、システムが「このファイルをプログラムとして実行してもいい」と判断するようになる。
chmod +x hello.sh
いよいよスクリプトを実行する。./hello.sh と打つと、画面に Hello, world! と表示される。
./hello.sh
さらに応用として、環境変数を使った出力にも触れておく。次のように記述すれば、あらかじめ変数に代入した名前を含めて挨拶を表示できる。
#!/bin/bash
USER="Yamada Taro"
echo "Hello, $USER"
このスクリプトを実行すると、「Hello, Yamada Taro」と表示される。$USER という記述は、変数 USER の中身を参照している。Bashではこのように、変数を使った柔軟な出力も可能だ。
chmodコマンドでアクセス権をコントロールする
Linuxでは、すべてのファイルとディレクトリにアクセス権(パーミッション)が設定されている。誰がそのファイルを読めるか、書き込めるか、実行できるかといった情報は、「モード(mode)」という形で保存されている。chmodコマンドは、このモードを変更するための基本かつ重要なツールだ。
chmodは「change mode(モードを変更する)」の略で、ファイルやディレクトリの操作権限を細かく指定できる。たとえば、スクリプトを実行できるようにするには chmod +x hello.sh とする。これは「このファイルに実行権(x)を追加する」という意味で、Bashスクリプトを動かすためには欠かせないステップとなる。
Linuxにおけるアクセス権は3種類に分かれている。読み取り(r)書き込み(w)実行(x)の3つだ。
- Linux ではファイルやディレクトリに「3つの権限」がある
権限 | 意味 |
---|---|
r | 読む(read) |
w | 書く(write) |
x | 実行する(execute) |
さらに、これらの権限は誰に対して設定するかによって分類される。自分(user)を u、同じグループの人を g、その他のすべてのユーザーを o と表記し、すべてを対象にしたいときは a を使う。
対象 | 説明 |
---|---|
u | 自分(user) |
g | グループ(group) |
o | その他の人(others) |
a | 全員(all) |
たとえば、chmod u+x hello.sh は「自分にだけ実行権を追加する」ことを意味し、他のユーザーの権限は変えずに済む。一方で、chmod -x hello.sh は、誰にも実行させたくないときに使う。
また、chmod では数値(オクタル表記)による指定もよく使われる。これは r=4, w=2, x=1 という対応で、権限を合計して1桁の数字に置き換える方法だ。たとえば、chmod 755 hello.sh とすれば、自分は読み・書き・実行ができ、他のユーザーには読み・実行のみ許可する状態になる。
- chmod 755 hello.sh
数字 | 意味 |
---|---|
7 = 4+2+1 | 読み+書き+実行 |
6 = 4+2 | 読み+書き |
5 = 4+1 | 読み+実行 |
4 | 読みだけ |
自分(user)→ 読み書き実行(7)
グループ → 読み+実行(5)
その他の人 → 読み+実行(5)
コマンド例 | 効果 |
---|---|
chmod +x script.sh | 実行できるようにする |
chmod 644 file.txt | 自分は読み書き可能、他人は読み取りのみ |
chmod 600 secret.txt | 自分だけ読み書き可能(他人は何もできない) |
chmodを使えばファイルの安全性と柔軟性を両立できる。Linuxでは、誰に何を許可するかを明確に制御できることは非常に重要であり、chmodはそのための基本操作となる。
catコマンドでファイルを表示・連結・作成する
catは、Linuxで非常によく使われる基本的なコマンドのひとつだ。名前の由来は「concatenate(連結する)」という英単語で、もともとは複数のファイルをつなげて表示するためのツールとして設計されている。現在ではファイルの中身を確認したり、新しいファイルを簡単に作成したりと、さまざまな場面で使われている。
最もよく使われる用途は、ファイルの中身を画面に表示することだ。
スクリプトの中身を確認するときには
cat hello.sh
のように入力する。次のような出力が得られる。
#!/bin/bash
echo "Hello, world!"
このように、catを使えば内容の確認がすぐにできる。
複数のファイルをまとめて表示したいときにも便利だ。たとえば、cat file1.txt file2.txt と入力すると、2つのファイルの内容が上から順番に表示される。これにより、複数のログファイルや設定ファイルをまとめて確認するときに役立つ。
cat file1.txt file2.txt
また、catは新しいファイルを作成する簡易的な方法としても使える。cat > new.txt と入力すると、標準入力からの文字が new.txt に保存される。キーボードから直接内容を入力し、終了するときは Ctrl + D を押す。これはちょっとしたメモやテストファイルを作るときに便利な使い方だ。
cat > new.txt
さらに、catは他のコマンドと組み合わせて使うことも多い。たとえば cat file.txt | grep “keyword” のようにすると、ファイルの中から特定の文字列を検索できる。パイプ(|)を使ってコマンドをつなぐことで、柔軟な処理が可能になる。