1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

なぜLinuxコマンドのオプションはバラバラ?歴史とOSS文化を紐解く

Last updated at Posted at 2025-09-19

最近、LinuC の勉強を始めていて、Linuxコマンドを触る中で気になったことがあります。
それは「同じことをするコマンドなのに、オプションの書き方がバラバラ」という点です。
今まで意識していなかったけど、覚えることが多すぎて、ふと疑問に思ってしまいました。

例えば、

  • ps aux のようにハイフンなし
  • ps -ef のようにハイフン付き
  • ls --all のように長いオプション

と、複数のスタイルが混在しています。

「なぜ統一されていないのか?」「どれを使えばいいのか?」
疑問に思ったので、歴史的背景を調べて整理してみました。
この記事ではその結果をまとめます。

用語の補足:AT&T、BSD、GNU、POSIX

まず、この記事で出てくる主要な用語を整理します。

略称 正式名称 概要
AT&T American Telephone and Telegraph 商用Unixの開発元。1970年代のSystem V UNIXを作成。短いハイフン付きオプション文化の源流。
BSD Berkeley Software Distribution カリフォルニア大学バークレー校で開発されたUnix派生。便利さ重視でハイフンなしオプションを多用。
GNU GNU’s Not UNIX! 1983年開始のフリーソフトウェアプロジェクト。Unix互換のコマンド群を開発し、長いオプション --long-option を追加。
POSIX Portable Operating System Interface IEEEが策定したUnix互換OS標準仕様。ハイフン付き短いオプション形式を標準化。

1. Unix黎明期:ハイフンのないオプション

1970年代、UNIXの最初期には オプションにハイフンを付ける文化はまだなかった

例:

  • ls l(リストをロング形式で表示)
  • ps aux(BSDで広まった形式)

この頃はコマンド数も少なく、ユーザー数も限られていたため、曖昧さのリスクよりも 打鍵数の短さ が重視されていました。

2. AT&T系 System V と「-」の定着

1970年代後半〜1980年代に商用化された AT&T Unix (System V系) では、
オプションと引数を明確に区別するために - が付けられるようになった。

例:

  • ps -ef
  • ls -l -a

これは後に POSIX標準 に組み込まれ、現在の「ハイフン付き短いオプション」の基本形になりました。

3. BSD系の流れ:ps aux 文化

一方、BSD (Berkeley Software Distribution) は、
従来の ハイフンなし文化 を強く引き継ぎました。

例:

  • ps aux
  • tar cvf

この結果、AT&T系(System V)とBSD系でオプション表記にズレが生じます。

4. GNUとロングオプションの登場

1983年に始まった GNU (GNU’s Not UNIX!) プロジェクトは、フリーソフトウェアとしてUnix互換環境を作ろうとしました。

GNUコマンドの特徴のひとつが --long-option 形式

例:

  • ls --all
  • ls --human-readable

特徴:

  • 可読性が高い
  • スクリプトに書いたときの意味が明確
  • オプション数が増えても衝突しにくい

Linuxで一般的に普及しました。

5. POSIX標準化と互換性の混乱

POSIX (Portable Operating System Interface) は、Unix系OSの互換性を保つための標準仕様です。

  • 短いハイフン付きオプションを標準化
  • ただし、既存の BSD / System V / GNU の文化が広まっていたため、完全統一は不可能
  • 結果として現代Linuxでは 複数のスタイルが共存 しています

6. 代表的なコマンドでの違い

ps

  • BSDスタイル: ps aux
  • System V / POSIXスタイル: ps -ef
  • Linuxの ps両方サポート(互換性維持のため)

tar

  • BSDスタイル: tar cvf archive.tar files...
  • POSIXスタイル: tar -cvf archive.tar files...
  • GNU tar: 両方サポート + --gzip など長いオプションも追加

7. まとめ表

系統 オプション表記の特徴
初期Unix ハイフンなし (ps aux)
AT&T System V ハイフン付き短いオプション
BSD Unix ハイフンなしを継承
POSIX ハイフン付き短いオプション
GNU/Linux -- 長いオプション追加

8. LinuxがOSSだからこそ複数文化が共存している

商用UNIXではベンダーごとに仕様が決められていましたが、Linuxは OSS として開発され、多様な開発者や文化が参加しました。

その結果、

  • BSD流(ハイフンなし)の便利さ
  • System V / POSIX流(短いオプション)の標準性
  • GNU流(長いオプション)の可読性

すべて残って共存 しています。

OSS開発では「既存ユーザーを壊さないこと」が重視されるため、

  • 古い表記法も残す
  • 新しい表記法も追加する

という形になり、Linuxでは 3スタイルが同時に使える状態 が続いています。

9. 実務的Tips

  • スクリプトでは長いオプション推奨 → 意味が明確で環境差異に強い
  • 対話的操作では短いオプションが便利 → ls -l, ps aux など
  • 混在に注意 → ps auxps -ef は出力形式が違うため、解析スクリプトでは統一

10. まとめ

  • オプション指定の揺れは、Unixの系統ごとの歴史的背景 に由来する
  • BSDはハイフンなし、System Vはハイフン付き、GNUは長いオプションを追加
  • LinuxがOSSであるため、これら異なる流儀をすべて受け入れて共存している
  • 実務では
    • スクリプト: 長いオプション
    • 手作業: 短いオプション
      が現実的な使い分け

11. 最後に

Linuxコマンドのオプションって、歴史や文化を知ると面白いけど、正直「どれ使えばいいの?」って迷いますよね。
BSD式、System V式、GNU式…みなさんはどれが好きですか?
これ、全部使いこなせてる人っているのかな...

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?