はじめに
WEBエンジニアにとってLinuxの操作は避けては通れない基本操作の一つです。
情報系の学校を卒業していたり、新卒でエンジニアになった場合は研修等で身につける機会があると思いますが、私のように専門の違う学校を卒業し、他業種からの転職でエンジニアになった場合は実務の中で覚えていく場合も多いかと思います。
今回は、休暇中に改めてLinuxについて学習してみたのでその内容を学習メモとして残しておきたいと思います。
Linux環境の準備
まずはLinux操作を手を動かしながら覚えていくために環境を準備します。
この段階で必要となる知識として、ディストリビューションというものがあります。
本来、Linux
という単語はLinuxカーネル
を指す言葉です。このLinuxカーネル
は、OSの中核を担うもので、コンピュータのハードウェア制御を行うソフトウェアを指します。ユーザーが使用するツールやアプリケーションはここには含まれません。ただ、これでは不便なので基本的なコマンド群やアプリケーションなどを含めて、ユーザーがそのまま利用できるようにパッケージされたものが提供されており、これを広義のLinux
と呼びます。この広義のLinux
をディストリビューション
と呼びます。
ディストリビューション
には、大きく分けて2種類の系統があり、Red Hat系とDebian系と呼ばれます。
今回は環境を汚さずに安全にいろんなコマンドを実行したいため、Dockerを使用してDebian系のLinuxディストリビューションを使用します。
公式で用意されているイメージをそのまま使用するため、compose.yamlファイルを作成します。
version: '3'
services:
debian-bullseye:
container_name: bullseye
image: debian:bullseye
volumes:
- ./data:/data
command: tail -f /dev/null
bullseye
というのは、Debianの各バージョンにつけられている開発用コード名で、「トイストーリー」の登場人物の名前に基づいています。
シェルとは
業務を行っていると、シャルという単語をよく耳にします。
Linuxを操作する際には基本的にシェルを操作することになるのですが、改めて復習してみます。
WindowsやMac OSの場合はマウスを使用してさまざまな操作を行いますが、Linuxの場合は基本的にキーボードを用いて操作を行います。
このときにユーザーとLinux OSの橋渡しをしてくれるのがシェルです。
Linuxカーネルは直接人間が操作できるわけではないので、シェルというカーネルのインターフェースとなるソフトウェアを用いて操作します。
どうしてLinuxカーネルとシェルが分かれているかについては、参考文献に以下のような記載があります。
- Linuxカーネルには手を入れずに、シェルだけを自分好みのものに変更することができる
- Linux以外のOS(FreeBSDやNetBSD、Solarisなど)を利用する際も、シェルが移植されていれば操作を同様に行うことができる
- シェルがエラーや高負荷状態に なってクラッシュしたとしても、OS本体であるLinuxカーネルへの影響を最小限に抑えることができる
三宅 英明,大角 祐介. 新しいLinuxの教科書 (Japanese Edition) (p.64). Kindle 版.
このような設計にも「1つのプログラムには1つのことだけをやらせる」UNIX哲学の一端を感じることができます。
今回は基本的にbashを前提として操作を進めます。
先程のcompose.yamlを用意して、docker compose up -d
を実行し、docker compose exec -it debian-bullseye bash
でbashを立ち上げます。
コマンドラインの操作
コマンドは、プロンプト記号$
の後ろに入力します。このとき、$
ではなく#
の場合はルート権限をもつスーパーユーザーとして実行していることを意味します。
実際の命令文の前に、コマンドラインの操作から復習します。
カーソルの移動
コマンドをタイプミスしたり、直前に入力したコマンドを編集したい場合に使用するコマンドをいくつか挙げます。
コマンド | 操作内容 | 覚え方 |
---|---|---|
ctrl + b | 一文字戻る | Bは「Backward」 |
ctrl + f | 一文字進む | Fは「Forward」 |
ctrl + a | 行頭に移動 | Aは「Ahead」 |
ctrl + e | 行末に移動 | Eは「End」 |
もちろん矢印でも操作できます。ホームポジションを崩さずに入力したい場合はこれらのコマンドを使用するようにしましょう。
文字の削除
コマンド | 操作内容 |
---|---|
BackSpace、またctrl + h | カーソルの一つ前の一文字削除 |
Delete、またはctrl + d | カーソルの一つ後ろの一文字削除 |
ctrl + w | スペース区切りでカーソルの一つ前の単語を削除 |
カットとヤンク
コマンド | 操作内容 |
---|---|
ctrl + k | カーソル位置から行末までを削除する |
ctrl + u | カーソル位置から行頭までを削除する |
ctrl + y | 最後に削除した内容を挿入する |
ctrl + k
やctrl + u
での削除はシェルに内容が記録されている、いわゆる切り取り
操作であるため、ctrl + y
で貼り付けることができ、この操作をペースト
ではなくヤンク
といいます。
その他
コマンド | 操作内容 |
---|---|
tab | 入力途中のコマンドの補完 |
ctrl + l | 画面をクリアする |
ctrl + c | 現在のコマンドを中断する |
ヒストリー
Linuxを使用していると、以前に実行したコマンドを再度実行したい、あるいはコマンドを少しだけ編集して再度実行したいというケースがあります。
bashは、一度入力したコマンドラインの内容を自動的に記録しています。
この履歴を使用してコマンドを入力する場合に以下のような操作を覚えておくと便利です
コマンド | 操作内容 |
---|---|
ctrl + p、または↑キー | 直前のコマンドを表示する |
ctrl + n、または↓キー | 直後のコマンドを表示する |
以下は検索に関連する操作です。
コマンド | 操作内容 |
---|---|
ctrl + r | コマンドの履歴を検索する |
文字の入力 | 検索語を追加して検索 |
Enter | 現在の検索結果をそのまま実行 |
Esc | 現在の検索結果を表示したまま、コマンドラインに戻る |
ctrl + g | 検索を終了する |
ファイル操作
ここからは、Linux上でのファイルやディレクトリの操作について復習します。
ちなみにカレントディレクトリとは、現在自分が位置しているディレクトリのことです。
コマンド | 機能 |
---|---|
pwd | カレントディレクトリを表示する |
cd | カレントディレクトリを変更する |
ls | ディレクトリ内のファイルを変更する |
Linuxにおける各ディレクトリの役割
上記のコマンドを使用するとLinuxにはいろんなディレクトリがあることがわかりますが、重要なものについてまとめてみます。
Linuxのディレクトリ構成は、FHS(Filesystem Hierarchy Standard)という規格に基づいています。
ディレクトリ | 役割 |
---|---|
/bin | Linuxシステムの動作に最低限必要な基本的なコマンドが格納されている |
/dev | キーボードなどのハードウェアをファイルとして扱えるように用意された特殊なデバイスファイルを格納されている |
/etc | システム全体の設定ファイルが格納されている |
/home | ユーザーのホームディレクトリが格納されている |
/sbin | /binと似ているが、管理者ユーザー向けのコマンドが格納されている |
/tmp | 一時的なファイルが格納されている。ディストリビューションの多くは定期的にフォルダ内のファイルを削除するため、永続的な保存先として利用するべきではない |
/usr | ユーザーが利用するアプリケーションやライブラリが格納されている |
/var | ログファイルやメールのデータなど、システムの稼働中に変化するデータが格納されている |
ディレクトリに関連する記号
Linuxには、いくつかディレクトリに関連する特殊な記号があります。
記号 | 内容 |
---|---|
. | カレントディレクトリ |
.. | 親ディレクトリ |
~ | ユーザーのホームディレクトリに置き換えられる(チルダ展開) |
- | 直前のディレクトリに置き換えられる(ハイフン展開) |
* | 任意の文字列に置き換えられる(ワイルドカード) |
? | 任意の一文字に置き換えられる(ワイルドカード) |
まとめ
今回は、Linuxの基本的な操作について復習してみました。
ディストリビューションやシェルといった単語を改めて確認したり、コマンドラインでの操作や検索についても知らないことがまだまだあったので実務でも使用できそうな知識を多く学習できたかなと思います。
次回は具体的なコマンドについて調査してみたいと思います。