Linux入門:コマンド操作のきほん
Linuxの「すべてはファイル」という考え方
このレッスンで分かること
- Linux はファイル・デバイス・プロセス・ネットワークまで
/から始まるパスで扱いますls -l先頭の 1 文字でファイル種別が判別できます (-dlcbsp)/proc/sysは仮想ファイル (カーネルがその場で内容を生成)
Linuxの「すべてはファイル」という考え方 とは
Linuxの重要な概念「すべてはファイル」について解説します。ファイルシステムの理解を深めましょう。本レッスンでは、Linuxの「すべてはファイル」という考え方 の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。
なぜ重要か
Linuxを使いこなす上で最初に押さえておきたい思想が「Everything is a file」、つまりあらゆるリソースがファイルとして見えるという考え方です。ディスク上のデータだけでなく、キーボードやディスプレイなどのデバイス、プロセス情報、メモリ、さらにはネットワーク接続まで、ほとんどすべてが/から始まるパスでアクセスできます。
この設計のおかげで、私たちはcatやecho、grepといった少数のコマンドを覚えるだけで、ファイル・デバイス・プロセスをまったく同じやり方で操作できるようになります。新しい技術が出てきても「ファイルとして読み書きする」という共通言語があるため、Webサーバー、コンテナ、IoTデバイスまで一貫した感覚で扱えるのです。実務でも、サーバーの状態を cat /proc/loadavg で確認したり、不要な出力を /dev/null に捨てたり、設定ファイルを cat /etc/... で読むなど、この発想はあらゆる場面で顔を出します。
「Everything is a file」のイメージは、デバイスもプロセスもネットワークも全部
/から始まるパスで読み書きできる、と考えると分かりやすくなります。
主要なディレクトリ構造
Linuxのファイルシステムはルート/を起点としたツリー構造です。代表的なディレクトリは下記のとおりです。
| ディレクトリ | 役割 |
|---|---|
/ | ルート(最上位) |
/bin | 一般ユーザー向けコマンド |
/sbin | 管理者向けコマンド |
/etc | システム設定ファイル |
/home | ユーザーのホーム |
/var | ログやキャッシュなど可変データ |
/tmp | 一時ファイル(再起動で消える想定) |
/usr | ユーザー向けプログラム本体 |
/proc | プロセスやカーネル情報の仮想ファイル |
/sys | カーネルが公開する設定インターフェース |
/dev | デバイスファイル |
/opt | サードパーティ製ソフトウェア |
ファイルとして見えるもの
通常のデータファイル以外にも、次のような「ファイルのように振る舞う」対象が存在します。
ターミナル
# プロセス情報を読む(PID 1 の情報)
cat /proc/1/status | head -5ターミナル
# 乱数を 16 バイトだけ取り出す
head -c 16 /dev/urandom | xxdターミナル
# /dev/null は捨て場
command_that_logs > /dev/null 2>&1動作の図解
図のツリーを箇条書きで整理すると、次の通りです。
/(ルート) を頂点とするツリー構造/bin/etc/home/varは実ファイル系/devの下にデバイス (nullurandom等) が並ぶ/procの下にプロセス情報 (1/status等) が並ぶ- すべて同じ「ファイル」として
catechoで読み書きできる
ファイル種別の確認
ls -l の先頭1文字でファイル種別が分かります。
| 記号 | 種別 | 例 |
|---|---|---|
- | 通常ファイル | /etc/hostname |
d | ディレクトリ | /etc |
l | シンボリックリンク | /usr/bin/vi |
c | キャラクタデバイス | /dev/null |
b | ブロックデバイス | /dev/sda |
s | ソケット | /var/run/docker.sock |
p | 名前付きパイプ | アプリ間通信用 |
ターミナル
$ ls -l /dev/null /etc/hostname /tmp
crw-rw-rw- 1 root root 1, 3 May 19 10:00 /dev/null
-rw-r--r-- 1 root root 12 May 19 10:00 /etc/hostname
drwxrwxrwt 6 root root 4096 May 19 10:00 /tmpファイルとデバイスを同じ口で扱う実例
音声データをスピーカーに送ったり、シリアルポートにデータを書いたりするときも、書き込む先がファイルパスである点は変わりません。たとえば組込み機器では echo 1 > /sys/class/gpio/gpio17/value のように GPIO 出力を切り替える場面があります。ここで使っているのも > という「ファイルへの書き込み」記法です。
ターミナル
# 文字列を /dev/stdout に書く = 標準出力に書く
echo hello > /dev/stdoutターミナル
# /dev/stderr に書けば標準エラー出力に流れる
echo oops > /dev/stderr
/procや/sysのファイルは実際のディスクには存在しません。アクセスした瞬間にカーネルがその場で内容を返す仮想ファイルです。サイズが 0 と表示されても中身は読めます。
標準的な道具で多くのことを表現するため、UNIXは「シンプルなインターフェースを共有する」設計を選びました。それがファイルというメタファーです。
よくある誤解
- 拡張子
.txt.sh.pngなどはあくまで人間向けの目印で、Linuxはファイル種別を中身から判断します(fileコマンドで確認) - ディレクトリも「中身に他のファイル名のリストを持つ特別なファイル」です。
lsは実はその中身を読んでいるだけ - 隠しファイル(ドット始まり)は仕組みではなく
lsの慣習で、.bashrcなどはただ名前の先頭にドットがあるだけ - パーティションが違ってもツリーは1つに繋がっています(マウントポイントで連結される)
やってみよう
演習エディタで ls -l / や file /etc/hostname を実行し、ファイル種別の表示と file の判定結果を見比べてみましょう。仮想ファイル /proc/cpuinfo を cat で読むのもおすすめです。同じ環境変数を cat /proc/$$/environ | tr '\0' '\n' | head で覗くと、自分のシェルプロセスの情報がファイルとして読めることが実感できます。
ここまでの要点
Linux はあらゆるリソースをファイルとして扱う。ls -l 先頭で種別判定。/proc /sys はディスクではなくカーネルが生成する仮想ファイル。
まとめ
- Linuxでは通常ファイル・デバイス・プロセス・パイプなどがすべてファイルとして表現される
- ルート
/を頂点としたツリー構造で、/etc/home/varなどに役割が決まっている ls -lの先頭1文字でファイル種別が分かる- 拡張子は飾りで、本当の種別は
fileコマンドやstatで調べる /proc/sysは仮想ファイルで、ディスクではなくカーネルが内容を生成する
次のレッスン
次は ディレクトリの移動と確認 で、Linuxの重要な概念「すべてはファイル」について解説します を学びます。
事前確認 — 進む前に次の 3 つができることを確認しましょう。
- すべてはファイル の要点を自分の言葉で説明できる
- このレッスンの最小コード (または操作手順) を見ずに書ける
- 練習問題やクイズで間違えた箇所を読み直して理解した
理解度チェック (30 秒)
Q. すべてはファイル とは何か、1 文で説明してください。
A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。
関連レッスン