Bashとは?Linux初心者でもわかるシェルの基本と魅力
Webサイトを制作していると、サーバーの操作などで「黒い画面」ことターミナル(CUI)に触れる機会がやってきます。デザイナーやコーダーの方の中には、「なんだか難しそう…」「できれば避けたい…」と感じる方も多いのではないでしょうか。しかし、この黒い画面で使われる対話形式のプログラム、Bash(バッシュ)を少しでも知っていると、作業効率が劇的に向上し、Web制作の世界がぐっと広がります。
この記事では、Linuxやサーバー操作の初心者の方でも「なるほど!」と思えるように、Bashの正体とその基本的な使い方を、親しみやすい言葉で解説します。サーバーを操作する上で避けては通れないファイルの操作や、退屈な定型作業を自動化する初歩的なテクニックなど、コピペするだけで「動く」を体験できるサンプルをたくさん用意しました。黒い画面への恐怖心を、新しい武器を手に入れるワクワク感に変えていきましょう!
そもそもシェルとは?Bashとは?
Bashの話をする前に、まずはその親分である「シェル」について理解しましょう。
シェル:OSとあなたを繋ぐ「通訳」
コンピューターの心臓部にはカーネルという、ハードウェアの管理などOSの最も基本的な機能を受け持つプログラムがいます。これを王様に例えましょう。私たちは王様(カーネル)に直接命令することはできません。
そこで登場するのがシェルです。シェルは、私たちの言葉(コマンド)を王様が理解できる言葉に翻訳してくれる「通訳」や「秘書官」のような存在です。私たちがキーボードでコマンドを打ち込むと、シェルがそれを受け取り、解釈し、カーネルに伝えて命令を実行させてくれるのです。このシェルが動いているのが、あの「黒い画面」なのです。
Bash:最もポピュラーな「通訳」さん
通訳さんにも色々な人がいるように、シェルにも様々な種類(zsh, fish, cshなど)があります。その中で、現在LinuxやmacOSで最も広く標準的に使われているのがBash (Bourne-Again SHell)です。特別な理由がなければ、あなたがサーバーで触るシェルは、ほぼBashだと考えてよいでしょう。つまり、Bashの使い方を覚えること = Linuxの基本的なコマンド操作を覚えること、と捉えて問題ありません。
まずは触ってみよう!基本的なBashコマンド
百聞は一見に如かず。早速、基本的なコマンドをいくつか試してみましょう。macOSなら「ターミナル.app」、WindowsならWSLやGit Bashなどのターミナル環境を開いて、以下のコマンドをコピー&ペーストしてEnterキーを押してみてください。
pwd - 今いる場所を確認する
pwd (Print Working Directory) は、「今、自分はどのフォルダ(ディレクトリ)にいるのか?」を教えてくれるコマンドです。迷子になったら、まずこれを打ちましょう。
$ pwd
/Users/yourname/Documents
ls - 中にあるファイルやフォルダを一覧表示する
ls (List) は、今いるディレクトリの中にあるファイルやフォルダの一覧を表示します。
$ ls
ProjectA ProjectB memo.txt
-lオプションを付けると、ファイルのパーミッション(権限)や更新日時など、より詳細な情報を見ることができます。
$ ls -l
total 8
drwxr-xr-x 3 yourname staff 96 7 5 10:00 ProjectA
drwxr-xr-x 5 yourname staff 160 7 5 10:01 ProjectB
-rw-r--r-- 1 yourname staff 512 7 5 10:02 memo.txt
cd - 別のフォルダへ移動する
cd (Change Directory) は、別のディレクトリへ移動するためのコマンドです。RPGで街から街へ移動する感覚ですね。
$ cd ProjectA
..(ドット2つ)を指定すると、一つ上の階層のディレクトリへ戻ることができます。
$ cd ..
ファイルとフォルダの作成・削除
コマンド操作の基本は、ファイルやフォルダを作ったり、移動したり、削除したりすることです。これもBashを使えば一瞬です。
mkdir - 新しいフォルダを作成する
mkdir (Make Directory) で、新しい空のフォルダを作成します。
$ mkdir new-website
touch - 新しい空のファイルを作成する
touchコマンドで、中身が空のファイルを作成できます。HTMLファイルやCSSファイルの雛形を作るのに便利です。
$ touch index.html
echo と > - ファイルにテキストを書き込む
echoは、指定した文字列を画面に出力するコマンドです。そして、>(リダイレクション)という記号と組み合わせることで、出力先を画面からファイルに変更し、内容を書き込むことができます。
$ echo "<h1>Hello, Bash!</h1>" > index.html
注意: >はファイルを上書きします。もしファイルに追記したい場合は>>を使いましょう。
cat - ファイルの中身を表示する
catコマンドを使うと、ファイルの中身をターミナル上に表示できます。先ほど書き込んだ内容を確認してみましょう。
$ cat index.html
<h1>Hello, Bash!</h1>
rm - ファイルやフォルダを削除する
rm (Remove) はファイルやフォルダを削除するコマンドです。このコマンドは非常に強力で、ゴミ箱を経由せず即座に完全に削除され、元に戻せません。使うときは、本当に削除して良いか、必ずpwdやlsで確認しましょう。
$ rm index.html
フォルダを中身ごと削除する場合は、-r (Recursive) オプションが必要です。
$ rm -r old-website
Bashの真骨頂!コマンドを繋げるパイプ
Bashの強力な機能の一つがパイプ | です。これは、あるコマンドの実行結果を、次のコマンドの入力として「繋げる」機能です。工場のベルトコンベアのように、次々と処理を渡していくイメージです。
例えば、「ファイル一覧を詳細表示し(ls -l)、その中から"index"という文字が含まれる行だけを表示したい(grep index)」という場合、以下のように繋げます。
$ ls -l | grep "index"
-rw-r--r-- 1 yourname staff 23 7 5 10:30 index.html
-rw-r--r-- 1 yourname staff 1024 7 5 10:31 index.php
このように、単純なコマンドを組み合わせることで、複雑な処理を一行で実現できるのがBashの魅力です。
作業を自動化するBashスクリプト入門
毎回同じようなコマンドの組み合わせを打つのは面倒ですよね。そんなときは、一連のコマンドをファイルにまとめて保存し、一発で実行できるようにしましょう。これがBashスクリプトです。
例えば、新しいWebサイトのプロジェクトを開始するときに、いつも同じ構成のフォルダ(css, js, images)と `index.html` を作成するとします。この作業を自動化するスクリプト `create_project.sh` を作ってみましょう。
#!/bin/bash
# 実行時に指定された名前でプロジェクトフォルダを作成
PROJECT_NAME=$1
mkdir $PROJECT_NAME
cd $PROJECT_NAME
# 各種サブフォルダを作成
mkdir css js images
# 空のHTMLとCSSファイルを作成
touch index.html css/style.css
echo "Project '$PROJECT_NAME' created successfully!"
この内容で `create_project.sh` という名前のファイルを作成し、`chmod +x` コマンドで実行権限を与えます。
$ chmod +x create_project.sh
あとは、 `./create_project.sh プロジェクト名` のように実行するだけで、定型作業が一瞬で完了します。
$ ./create_project.sh my-new-dream-site
Project 'my-new-dream-site' created successfully!
まとめ
お疲れ様でした!今回は、黒い画面の正体であるシェルと、その代表格であるBashの基本的な概念と使い方について学びました。最初はとっつきにくいかもしれませんが、今回紹介したコマンドを実際にいくつか試してみるだけで、その便利さとパワフルさの一端を体感できたのではないでしょうか。
pwd,ls,cdで現在地を確認し、自由に移動する。mkdir,touch,rmでファイルやフォルダを自在に操る。- パイプ
|でコマンドを繋ぎ、複雑な処理をシンプルに実現する。 - 定型作業はBashスクリプトにまとめて、賢く自動化する。
Bashは、Webクリエイターにとって、デザインツールやコードエディタと同じくらい強力な武器になり得ます。ぜひ、これからも少しずつコマンドを覚えて、日々の作業に活かしてみてください。
「でも、自分のWindowsパソコンにはBashが入っていない…」という方もご安心ください。次回の記事では、Windows上でBashを簡単に使えるようにする「WSL (Windows Subsystem for Linux)」の導入方法を、画像付きで分かりやすく解説します!