第1章 Linuxとは
まずは「Linuxとは何か」という全体像から押さえていきましょう。難しい言葉は最初にまとめて説明するので、ここで一度に覚える必要はありません。
OS・カーネル・ディストリビューション
Linuxは、コンピューターのハードウェアとソフトウェアを橋渡しするOS(オペレーティングシステム)の一種です。ただし正確には、Linuxという名前が指すのは「カーネル」と呼ばれるOSの中核部分だけです。カーネルはメモリやCPU、ファイルの管理といった基本機能を担っていますが、それだけでは私たちが普段使うような環境にはなりません。
そこでカーネルに、コマンドを実行するためのシェル、各種ソフトウェア、設定ファイルなどをひとまとめにして配布したものがディストリビューション(distro)です。「Linuxを使う」というときは、実際にはこのディストリビューションのどれかを使うことになります。
| ディストリビューション | 系統 | 特徴 |
|---|---|---|
Ubuntu | Debian系 | 初心者に人気。デスクトップ・サーバーの両方で広く使われる。 |
Debian | Debian系 | Ubuntuの元になった、安定性重視のディストリビューション。 |
Rocky Linux / AlmaLinux | Red Hat系 | 企業のサーバー用途で使われることが多い。 |
Fedora | Red Hat系 | 新しい技術をいち早く取り入れる開発者向け。 |
Arch Linux | 独立系 | 必要なものを自分で組み立てる、上級者向け。 |
「系統」という言葉が出てきましたが、これはディストリビューション同士の親戚関係のようなものです。同じ系統のディストリビューションは、ソフトウェアを配布・インストールする仕組み(パッケージ管理システム)が共通しているため、一度使い方を覚えると同系統の他のディストリビューションでもほぼそのまま知識を使い回せます。Debian系はapt、Red Hat系はdnf(旧yum)という管理コマンドを使います。この違いは第9章で詳しく扱います。
Linuxカーネルは1991年、当時フィンランドの大学生だったリーナス・トーバルズ氏が、趣味のプロジェクトとして開発を始めたのがきっかけです。本人も当初は「趣味で作っているだけで、大きく本格的なものにはならない」と発言していましたが、インターネットを通じて世界中の開発者が改良に参加した結果、現在ではサーバーからスマートフォン、スーパーコンピューターまで、あらゆる場所で使われる基盤技術に成長しました。
「Linux」という呼び方について
初心者のうちは気にしなくてよい話題ですが、豆知識として触れておきます。Linuxカーネル単体で動くわけではなく、実際にはGNUプロジェクトが開発した多くのコマンド群(bashやls、gccなど)と組み合わさって初めて使える環境になります。そのため、一部のコミュニティでは「GNU/Linux」と呼ぶべきだという主張もあります。とはいえ、世間一般では単に「Linux」と呼ぶのが定着しているので、このサイトでもLinuxと表記します。
CUIとGUI、そしてなぜコマンドを学ぶのか
マウスでアイコンをクリックして操作する画面をGUI(グラフィカルユーザーインターフェース)、文字のコマンドを入力して操作する画面をCUI(キャラクターユーザーインターフェース)と呼びます。Linuxのサーバーの多くはGUIを持たず、CUIだけで運用されています。
コマンド操作には、同じ作業を何度も正確に繰り返せる、遠隔のサーバーを操作できる、細かい設定まで自動化できるといった利点があります。最初は覚えることが多く感じられますが、基本のコマンドは数十個程度で、パターンさえ覚えてしまえば応用が利きます。
特に「同じ作業を何度も正確に繰り返せる」という点は実務では非常に重要です。GUIでの操作はマウスの操作手順を人間が毎回正確に再現する必要がありますが、コマンドは一度書いてしまえばファイルとして保存でき、あとで何度でも同じ内容を実行できます。これがのちの章で学ぶ「シェルスクリプト」による自動化の土台になります。
オープンソースという考え方
Linuxカーネルおよびその多くのディストリビューションはオープンソースソフトウェアとして開発されています。これは、プログラムの設計図であるソースコードが公開されており、誰でも自由に閲覧・改変・再配布できるという考え方です。世界中の企業や個人がインターネット上で協力して開発を進めており、不具合が見つかれば多くの目によって早期に修正されやすいという利点があります。
Linuxの多くのディストリビューションは無料で利用でき、ライセンス費用を気にせず何台のサーバーにも導入できます。この「自由に使える・改変できる・再配布できる」という性質が、Linuxがサーバーやクラウド、組み込み機器で広く使われている大きな理由のひとつです。
「無料だから品質が低いのでは」と思われるかもしれませんが、実際には逆です。Linuxカーネルの開発には、GoogleやIBM、Intel、Red Hatといった大手IT企業のエンジニアも数多く参加しており、非営利団体であるLinux Foundationがプロジェクト全体の運営を支えています。企業がビジネスとして本気で開発に関わっているからこそ、品質や更新頻度が保たれているのです。ソースコードのライセンス(利用条件)にはGPLなどいくつかの種類がありますが、初心者のうちは「無料で使え、改変も再配布も自由」という点だけ押さえておけば十分です。
シェル・ターミナル・プロンプト
コマンドを受け取ってカーネルに伝える役割のプログラムをシェルと呼びます(代表的なものに bash や zsh があります)。そのシェルを画面上で操作するためのアプリケーションがターミナルです。ターミナルを開くと、コマンド入力を待つ記号が表示されますが、これをプロンプトと呼びます。
user@linux-study:~$ ← ここにコマンドを入力する
Linuxが活躍している場所
普段パソコンのデスクトップ用OSとしてLinuxを意識する機会は少ないかもしれませんが、実は私たちの身近なところで数多く使われています。
| 分野 | 具体例 |
|---|---|
| Webサーバー | 世界中の多くのWebサイトが、裏側ではLinuxサーバー上で動いている。 |
| クラウド | AWSやGoogle Cloudなどのクラウド基盤の仮想マシンの多くがLinuxベース。 |
| スマートフォン | Androidのカーネルは、実はLinuxカーネルをもとにしている。 |
| 組み込み機器 | ルーターやテレビ、車載機器など、専用機器の制御にも広く採用されている。 |
| スーパーコンピューター | 世界の高性能スーパーコンピューターの大部分がLinuxで稼働している。 |
「サーバーやインフラの仕事に就きたい」「クラウドを扱いたい」という方にとって、Linuxの基礎知識はほぼ必須のスキルだといえます。
実際の現場では、普段Windowsのパソコンで作業しているエンジニアでも、本番環境のサーバーにログインする瞬間だけはLinuxのCUI操作に切り替わる、という場面が頻繁にあります。SSHで遠隔のサーバーに接続し、コマンドでログを確認したり設定ファイルを編集したりする作業は、Webエンジニア・インフラエンジニア・データサイエンティストなど職種を問わず求められる基礎スキルになっています。逆にいえば、このサイトで学ぶ内容は特定の職種だけでなく、IT業界で働くうえで幅広く役立つ土台になるということです。
困ったときは man / help で調べる
コマンドの使い方を忘れたときは、いちいち検索サイトを開かなくても、ターミナルの中で調べる方法があります。man コマンド名 と入力すると、そのコマンドのマニュアル(説明書)が表示されます(manはmanualの略です)。練習用ターミナルでも、簡易的な man と help コマンドが使えます。
$ man ls # lsコマンドのマニュアルを表示
ls - ディレクトリの内容を一覧表示します。-l で詳細表示、パスを省略すると現在地を表示します。
$ help # 練習用ターミナルで使えるコマンドの一覧を表示
利用できる主なコマンド:
pwd, ls [-l|-a], cd <dir>, cat <file...>, echo <text>
mkdir [-p] <dir>, rmdir <dir>, touch <file>, rm [-r] <file|dir>
...(このほか、grep・chmod・findなど対応コマンドが続く)
この行のこの値に注目: 練習用ターミナルのmanは本物のマニュアルページではなく要点を1行にまとめた簡易版、helpはこのシミュレーターで使えるコマンドの一覧です。どちらも学習用に簡略化された挙動であり、実機のLinuxとは表示形式が異なる点に注意してください。
実機のLinux環境では、man で開いたマニュアルは less と同じ操作でページ送りできます(Spaceで次ページ、qで終了)。マニュアルは英語で書かれていることが多く最初はとっつきにくく感じますが、「NAME(名前)」「SYNOPSIS(書式)」「DESCRIPTION(説明)」「OPTIONS(オプション一覧)」という決まった構成になっているため、慣れると必要な部分だけを素早く拾い読みできるようになります。
実際のLinux環境でのman lsの出力例(抜粋、Ubuntu 24.04 LTS / GNU coreutils 9.4の場合)
LS(1) User Commands LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
DESCRIPTION
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is speci‐
fied.
-a, --all
do not ignore entries starting with .
-l use a long listing format
-h, --human-readable
with -l and -s, print sizes like 1K 234M 2G etc.
...(GNU coreutilsのオプション一覧が続く)
この行のこの値に注目: 冒頭の「LS(1)」はマニュアルのセクション番号(1は一般ユーザー向けコマンド)を示します。NAME・SYNOPSIS・DESCRIPTIONの各見出しの下に、それぞれコマンド名の要約・書式・詳しい説明が続き、その後にオプションの説明が並びます。オプションは量が多いため、まず知りたいオプション名(この例では-aや-l)を把握してから、該当箇所だけを拾い読みするのが効率的です。Rocky Linux 9(GNU coreutils 8.32)でもほぼ同じ構成ですが、coreutilsのバージョン差によりオプションの説明文が若干異なる場合があります。
もう一つ覚えておくと便利なのが、多くのコマンドに用意されている --help オプションです。コマンド名 --helpと入力すると、そのコマンドで使える主要なオプションが簡潔な一覧で表示されます。manが「詳しいマニュアル」だとすれば、--helpは「オプションだけをさっと確認したいとき」に向いています。両方の調べ方を知っておくと、状況に応じて使い分けられるようになります。
LSやCdのように打ってしまうと「コマンドが見つかりません」というエラーになります。エラーメッセージが出たら、まず綴りと大文字・小文字を確認する癖をつけましょう。
はじめて触るならどのディストリビューションが良いか
本サイトで学ぶコマンドの多くは、どのディストリビューションでもほぼ共通して使えます。もし今から実際に手元でLinuxを触ってみたいという場合は、情報量が多く初心者向けの解説記事も豊富なUbuntuから始めるのが定番です。仮想マシンやクラウドの無料枠を使えば、自分のパソコンの環境を汚さずに気軽に試せます。まずは「習うより慣れよ」で、実際にコマンドを打ってみることを優先しましょう。
手を動かす小課題
練習用ターミナルを開いて、次の課題を実際に試してみましょう。答えは見出しをクリックすると表示されます。
課題1: helpで、練習用ターミナルで使えるコマンドの一覧を確認してみましょう。
答え: helpとだけ入力してEnterを押します。pwdやlsなど、このサイトのターミナルで使えるコマンドの一覧が表示されます。分からなくなったら、まずここに戻ってくる習慣をつけましょう。
課題2: man lsで、lsコマンドの簡易マニュアルを表示してみましょう。
答え: man lsと入力します。lsコマンドの概要と、-lや-aといった主なオプションの説明が1行で表示されます。他のコマンドでもman コマンド名で同じように調べられます。
課題3: pwdで、今シェルがどこにいるかを確認してみましょう。
答え: pwdと入力します。現在のディレクトリの絶対パスが表示されます。次章から本格的に使うコマンドなので、ここで一度動作を確認しておきましょう。
この章のまとめ
ここまでの内容を整理すると、Linuxという言葉は本来カーネルを指すこと、実際に使うのはカーネルと周辺ソフトをまとめたディストリビューションであること、CUI操作には再現性・自動化・遠隔操作という利点があること、そしてオープンソースという開発スタイルがLinuxの普及を支えてきたこと、の4点です。次章からは、いよいよLinuxの世界観の核となる「ファイルシステム」について学んでいきます。