2023/08/25

linuxの操作を復習する

はじめに

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 + kctrl + 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)という規格に基づいています。

ディレクトリ役割
/binLinuxシステムの動作に最低限必要な基本的なコマンドが格納されている
/devキーボードなどのハードウェアをファイルとして扱えるように用意された特殊なデバイスファイルを格納されている
/etcシステム全体の設定ファイルが格納されている
/homeユーザーのホームディレクトリが格納されている
/sbin/binと似ているが、管理者ユーザー向けのコマンドが格納されている
/tmp一時的なファイルが格納されている。ディストリビューションの多くは定期的にフォルダ内のファイルを削除するため、永続的な保存先として利用するべきではない
/usrユーザーが利用するアプリケーションやライブラリが格納されている
/varログファイルやメールのデータなど、システムの稼働中に変化するデータが格納されている

ディレクトリに関連する記号

Linuxには、いくつかディレクトリに関連する特殊な記号があります。

記号内容
.カレントディレクトリ
..親ディレクトリ
~ユーザーのホームディレクトリに置き換えられる(チルダ展開)
-直前のディレクトリに置き換えられる(ハイフン展開)
*任意の文字列に置き換えられる(ワイルドカード)
?任意の一文字に置き換えられる(ワイルドカード)

まとめ

今回は、Linuxの基本的な操作について復習してみました。
ディストリビューションやシェルといった単語を改めて確認したり、コマンドラインでの操作や検索についても知らないことがまだまだあったので実務でも使用できそうな知識を多く学習できたかなと思います。
次回は具体的なコマンドについて調査してみたいと思います。