新Linux入門|Linuxで扱うファイルの種類とその役割

Linuxの大きな特徴のひとつに、「すべてはファイル(Everything is a file)」という設計思想があります。
 これは、テキストファイルやプログラムだけでなく、ディレクトリやデバイスまでもファイルとして扱うという考え方です。
この仕組みにより、Linuxは非常に柔軟で一貫した操作体系を実現しています。

 ここでは、AlmaLinux 9.6 を例に、Linuxで扱われる4種類の主要ファイルタイプと、その役割・使われ方をわかりやすく解説します。

📘ファイルの基本分類

種類主な内容
通常ファイル (Regular File)テキストやバイナリなど、実際のデータを保持する一般的なファイル/etc/passwd, /bin/ls
ディレクトリ (Directory)ファイルや他のディレクトリを格納する「入れ物」/home, /var/log
リンクファイル (Link File)他のファイルを参照するためのファイル(ハードリンク・シンボリックリンク)/lib64/libc.so.6
特殊ファイル (Special File)デバイスやカーネルと通信するための仮想ファイル/dev/null, /dev/sda

💡 ポイント
Linuxでは「拡張子」ではなく、属性情報(ファイルタイプ) でファイルの種類を識別します。
拡張子は単なる目印であり、実際の動作とは関係ありません。

📄 通常ファイル(Regular Files)

 通常ファイルは、もっとも一般的なファイルの種類で、テキスト・画像・プログラムなど、実際のデータを格納します。
構成設定やログファイル、シェルスクリプトなど、ほとんどのファイルはこの「通常ファイル」です。

例:ファイルの作成と内容確認

[suzuki@AlmaLinux ~]$ echo "Welcome to AlmaLinux!" > hello.txt
[suzuki@AlmaLinux ~]$ cat hello.txt
Welcome to AlmaLinux!

💬 解説

  • echo コマンドは指定した文字列を出力します。
  • > はリダイレクト演算子で、出力をファイルに保存します。
  • cat コマンドで内容を確認できます。
コマンド説明主なオプション
cat ファイル名ファイルの内容を標準出力に表示-n:行番号を付ける
less ファイル名長いファイルを1画面ずつ閲覧-N:行番号を表示
head / tailファイルの先頭または末尾を表示-n 行数:指定した行数だけ表示

実行結果

[suzuki@AlmaLinux ~]$ head -n 3 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

💬 ここがポイント!

  • テキストファイル:中身が文字として読める(設定ファイルなど)
  • バイナリファイル:実行プログラムなど、文字化けする内容
    Linuxでは両者を区別せず「ファイル」として扱えます。

📁 ディレクトリ(Directory)

ディレクトリはファイルや他のディレクトリをまとめる「入れ物」です。
Windowsの「フォルダ」に相当しますが、Linuxではこれも特別な種類のファイルとして扱われます。

ディレクトリの作成と確認

[suzuki@AlmaLinux ~]$ mkdir projects
[suzuki@AlmaLinux ~]$ ls -ld projects
drwxr-xr-x. 2 suzuki suzuki 6 10月 31 10:23 projects

💬 出力の意味

  • 先頭の d は「directory(ディレクトリ)」を表します。
  • rwxr-xr-x はアクセス権(読み・書き・実行)を示しています。
  • 所有者とグループが suzuki であることが分かります。
コマンド説明主なオプション
mkdir ディレクトリ名新しいディレクトリを作成-p:階層構造を一度に作成
ls -ld ディレクトリ名ディレクトリの属性を確認なし
rmdir ディレクトリ名空のディレクトリを削除なし

出力例

[suzuki@AlmaLinux ~]$ mkdir -p work/src
[suzuki@AlmaLinux ~]$ ls -R work
work:
src

💬 ここがポイント!

  • Linuxでは「ディレクトリ=特別なファイル」として存在しています。

🔗 リンクファイル(Link Files)

リンクファイルは、他のファイルを参照するためのファイルです。
ファイルをコピーせずに共有したり、別名でアクセスするために使われます。
リンクには2種類あります。

種類特徴作成方法削除しても元は残る?
ハードリンク元ファイルと同じinodeを共有。完全な複製。ln 元ファイル名 リンク名✅ はい
シンボリックリンク(ソフトリンク)元のファイルへの参照情報を保持。ショートカットのようなもの。ln -s 元ファイル名 リンク名❌ いいえ(元が消えるとリンク切れ)

実例:シンボリックリンクの作成

[suzuki@AlmaLinux ~]$ ln -s /etc/passwd passwd_link
[suzuki@AlmaLinux ~]$ ls -l passwd_link
lrwxrwxrwx. 1 suzuki suzuki 11 Oct 28 01:10 passwd_link -> /etc/passwd

💬 出力の見方

  • l(小文字のL)は「リンクファイル」を示します。
  • の右側にリンク先のファイルが表示されます。

ハードリンク例

[suzuki@AlmaLinux ~]$ ln hello.txt copy.txt
[suzuki@AlmaLinux ~]$ ls -li hello.txt copy.txt
123456 -rw-r--r--. 2 suzuki suzuki 22 Oct 28  hello.txt
123456 -rw-r--r--. 2 suzuki suzuki 22 Oct 28  copy.txt

💬 inode番号(最初の数字)が同じであることから、両者は同一ファイルを参照していると分かります。

💽 特殊ファイル(Special Files)

 特殊ファイルは、ハードウェアやシステムリソースと通信するために用意された仮想的なファイルです。
Linuxでは、キーボード・ハードディスク・端末などのデバイスもファイルとして扱います。
これにより、同じコマンドで統一的に操作できます。

主な特殊ファイルの種類

種類概要ファイルタイプ記号
キャラクタデバイス1文字単位でデータを読み書きする/dev/tty, /dev/nullc
ブロックデバイスデータをブロック単位で読み書きする/dev/sda, /dev/loop0b

デバイスファイルを確認

[suzuki@AlmaLinux ~]$ ls -l /dev/sda
brw-rw----. 1 root disk 8, 0 Oct 28 00:55 /dev/sda

💬 出力の意味

  • 先頭の b は「ブロックデバイス」を示しています。
  • 「8, 0」はメジャー番号とマイナー番号で、デバイスドライバを特定します。

キャラクタデバイスの例

[suzuki@AlmaLinux ~]$ ls -l /dev/null
crw-rw-rw-. 1 root root 1, 3 Oct 28 00:55 /dev/null

💬 /dev/null は「データを捨てるための特殊な装置」で、どんな出力も受け取って消してしまいます。
これはテストやエラーログの無効化などによく使われます。

コマンド例説明
echo "test" > /dev/null出力をすべて破棄する(画面にもファイルにも表示されない)
cat /dev/zero > test.bin無限のゼロデータを生成してファイルに書き出す

🧾 ファイルタイプを調べる:fileコマンド

どの種類のファイルかを確認したいときは、file コマンドを使います。

コマンド書式

file ファイル名

使用例

[suzuki@AlmaLinux ~]$ file /bin/ls
/bin/ls: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=215d223c8282b6787e65aed9bef550ece6da6d3c, for GNU/Linux 3.2.0, stripped

💬 「ELF 64-bit executable」と表示されているため、これは実行可能なバイナリファイルだとわかります。

✅ まとめ:ファイルの種類を理解するとLinuxが見えてくる!

Linuxでは、データ・設定・ハードウェアすべてが「ファイル」として統一的に扱われます。
これにより、シンプルかつ強力な操作体系が実現されています。

💬 覚えておきたいポイント

  • 通常ファイル:最も一般的なデータファイル
  • ディレクトリ:ファイルを整理するための入れ物
  • リンクファイル:他のファイルを参照する仕組み
  • 特殊ファイル:デバイスやシステムと通信する仮想ファイル

これらを理解しておくことで、Linuxシステムの構造や管理がよりスムーズになります。