Linux

Linux入門

コマンドを入力し、表示された結果を読みながらLinuxの基本を身につけましょう。

Ubuntu/DebianとRHEL系の両方を扱います。

01

Linuxとは

LinuxはOSの中心部分であるLinuxカーネルと、その周辺ソフトウェアを組み合わせて使うOSです。Webサーバー、クラウド、組み込み機器、開発環境などで利用されています。

最初に区別する言葉
  • カーネル:CPU、メモリ、機器などを管理する中心部分
  • ディストリビューション:カーネル、コマンド、パッケージ管理などをまとめた配布形態
  • シェル:入力したコマンドを解釈するプログラム。例では主にBashを使用
  • ターミナル:シェルを操作するための画面
カーネル情報COMMAND
uname -sr
表示例OUTPUT
Linux 6.8.0-52-generic

バージョン番号は環境によって異なります。表示が例と違っても異常ではありません。

02

ディストリビューションと系統の違い

基本的なファイル操作は多くのLinuxで共通ですが、パッケージ形式、管理コマンド、設定ファイル名などが異なります。

系統代表例パッケージ主な管理コマンド
Debian系Debian、Ubuntu、Linux Mint.debapt、低水準はdpkg
Red Hat系RHEL、Fedora、Rocky Linux、AlmaLinux.rpmdnf、低水準はrpm
SUSE系SLES、openSUSE.rpmzypper
Arch系Arch Linux、Manjaro.pkg.tar.zstpacman

同じ系統でも版や設定によって差があります。まず自分の環境を確認します。

ディストリビューションを確認COMMAND
cat /etc/os-release
Ubuntuでの表示例OUTPUT
NAME="Ubuntu"
VERSION="24.04.1 LTS (Noble Numbat)"
ID=ubuntu
ID_LIKE=debian

IDはそのOS、ID_LIKEは近い系統を判断する手掛かりです。名前だけを見て別系統用のコマンドを実行しないようにします。

03

安全な練習環境を用意する

実機へ直接インストールしなくても、WindowsのWSL、仮想マシン、不要なコンテナなどで練習できます。以下では一般ユーザーでログイン済みとします。

練習の原則 本番サーバーや大切なデータのある環境を使わないでください。意味の分からないコマンドへsudoを付けず、削除前はpwdlsで対象を確認します。
練習場所を作るCOMMAND
mkdir -p ~/linux-practice
cd ~/linux-practice
pwd
表示例OUTPUT
/home/mity/linux-practice

~は現在のユーザーのホームディレクトリです。以降の作成・削除例はこの練習場所で実行します。

04

コマンドの形とヘルプ

多くのコマンドは「コマンド名 オプション 引数」の順です。空白が区切りになります。

長い形式で一覧表示COMMAND
ls -l /etc/hostname
表示例OUTPUT
-rw-r--r-- 1 root root 8 Aug 29 09:00 /etc/hostname

lsがコマンド、-lが表示方法を変えるオプション、/etc/hostnameが対象です。使い方は推測せずヘルプを読みます。

ヘルプを確認COMMAND
ls --help
man ls
manの操作 Spaceで次へ、bで前へ、/wordで検索、qで終了します。最小構成ではmanページが未導入の場合があります。
05

現在地とファイル一覧

確認と移動COMMAND
pwd
ls -la
cd /tmp
pwd
cd -
表示例OUTPUT
/home/mity/linux-practice
total 8
drwxr-xr-x 2 mity mity 4096 Aug 29 10:00 .
drwx------ 8 mity mity 4096 Aug 29 09:50 ..
/tmp
/home/mity/linux-practice

.は現在地、..は一つ上、cd -は直前の場所です。ls -aは名前がドットで始まる隠しファイルも表示します。

06

ファイルとディレクトリを操作する

練習用ファイルを操作COMMAND
cd ~/linux-practice
mkdir reports
touch reports/today.txt
cp reports/today.txt reports/backup.txt
mv reports/backup.txt reports/yesterday.txt
ls reports
実行結果OUTPUT
today.txt  yesterday.txt

mkdirはディレクトリ作成、touchは空ファイル作成、cpはコピー、mvは移動または改名です。

上書きと削除 cp -imv -iなら上書き前に確認できます。rmの削除は通常ごみ箱へ入らず、rm -rは中身ごと削除します。対象をlsで確認してから使ってください。

パス、ワイルドカード、リンク、削除の安全策はファイルとディレクトリで詳しく扱います。

07

ファイルの内容を見る

作成して表示COMMAND
printf 'apple\norange\ngrape\n' > fruits.txt
cat fruits.txt
head -n 2 fruits.txt
tail -n 1 fruits.txt
実行結果OUTPUT
apple
orange
grape
apple
orange
grape

>は出力先を新規作成または上書きし、>>は末尾へ追記します。長いファイルはless fruits.txtでスクロールできます。

09

ユーザーと権限

自分と権限を確認COMMAND
whoami
id
ls -l fruits.txt
表示例OUTPUT
mity
uid=1000(mity) gid=1000(mity) groups=1000(mity),27(sudo)
-rw-r--r-- 1 mity mity 19 Aug 29 10:10 fruits.txt

rw-r--r--は所有者・グループ・その他の読み書き実行権限です。実行用スクリプトにはchmod u+x script.shのように必要な権限だけを追加します。

sudoは必要な一回だけ sudoは管理者権限でコマンドを実行します。エラーを消すために闇雲に使わず、対象と影響を確認してください。chmod 777は誰でも書き込めるため、安易な解決策にしません。

数値表記、所有者、sudoはユーザーと権限で学びます。

10

パッケージを管理する

ここが系統による代表的な違いです。curlを例にすると、対話操作では次のようになります。

操作Debian/UbuntuRHEL/Fedora/Rocky/Alma
情報更新sudo apt updatesudo dnf makecache
検索apt search curldnf search curl
インストールsudo apt install curlsudo dnf install curl
全体更新sudo apt upgradesudo dnf upgrade
削除sudo apt remove curlsudo dnf remove curl
導入後の確認COMMAND
curl --version | head -n 1
表示例OUTPUT
curl 8.5.0 (x86_64-pc-linux-gnu) ...

版は環境で異なります。apt updateはソフト本体の更新ではなく「入手可能な一覧」の更新です。詳しくはディストリビューションとパッケージ管理で比較します。

11

プロセスとサービス

自分のシェルを確認COMMAND
ps -p $$ -o pid,comm
表示例OUTPUT
    PID COMMAND
   2451 bash

実行中のプログラムをプロセスと呼び、番号がPIDです。多くの現在のディストリビューションでは常駐サービスをsystemctlで確認します。

SSHサービスの状態例COMMAND
systemctl status ssh --no-pager
サービス名の差 Debian/Ubuntuではssh、RHEL系ではsshdのように名前が異なる場合があります。systemctl list-unit-files --type=serviceで確認します。
12

ネットワークを確認する

アドレスと接続待受COMMAND
ip -brief address
ss -lnt
表示例OUTPUT
lo               UNKNOWN        127.0.0.1/8 ::1/128
eth0             UP             192.0.2.10/24
State  Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0      4096         127.0.0.1:8000      0.0.0.0:*

127.0.0.1は自分自身、ss -lntはTCPの待受ポートを名前解決せず表示します。IPアドレスや待受ポートは環境ごとに異なります。詳しくはプロセス・サービス・ネットワークで学びます。

PRACTICE

練習問題

問題1:ログ用ディレクトリを作る

~/linux-practicelogsを作り、app.logへ「started」を保存して表示してください。

解答例COMMAND
cd ~/linux-practice
mkdir -p logs
printf 'started\n' > logs/app.log
cat logs/app.log
実行結果OUTPUT
started
問題2:OSの系統を調べる

/etc/os-releaseからIDID_LIKEを表示してください。

解答例COMMAND
grep -E '^(ID|ID_LIKE)=' /etc/os-release
Ubuntuでの表示例OUTPUT
ID=ubuntu
ID_LIKE=debian
NEXT

次に学ぶこと

本編は左から順に進みます。

学習中に参照する