このサイトの「ターミナル/UNIXコマンド」を読んでいると、cd・ls・pwd・cpのように、やたらと短い名前のコマンドにたくさん出会います。この短さ、UNIXが最初から考えて作ったものではありません。
短いのは、端末が遅かったから
短さの理由自体は単純です。当時の端末は、いまのような画面付きキーボードではなく、紙に印字するテレタイプという装置が主流でした。遅くてうるさい機械で、1文字打つのにも手間がかかる。タイプする文字数を減らすこと自体が、切実な目的だったわけです。
名前そのものは、UNIXより前にあった
問題は「なぜ短いか」ではなく、「なぜその2文字なのか」です。実はこの答えは、UNIXの中にはありません。
『UNIXという1つの土台の上に、いまのiPhone・Mac・Linux・Androidが建っている』で見た通り、UNIXを作ったケン・トンプソンとデニス・リッチーは、UNIXを作る前、ベル研究所でMulticsという別のOSプロジェクトに関わっていました。このMulticsにも、「意味の分かる長い名前」と「打ちやすい短い略称」の両方を持たせる設計が、すでにありました。
そして、UNIXのls・pwd・cpという綴りは、このMulticsの略称とそっくりそのまま一致します。
| UNIXのコマンド | Multicsでの正式名 | Multicsでの略称 |
|---|---|---|
ls(中身を一覧する) |
list |
ls |
pwd(今いる場所を表示する) |
print_wdir |
pwd |
cp(コピーする) |
copy |
cp |
綴りも意味も、Multicsとぴったり重なります。 UNIXが1から考えた名前ではなく、トンプソンとリッチーが使い慣れていた略称を、そのまま持ち帰ったと見るのが自然です。
cdだけは、意味が逆だった
ところが1つだけ、様子の違うコマンドがあります。移動するコマンド、cdです。
Multicsでcdという略称が割り当てられていたのは、「移動する」(change_wdir)ではなく、「ディレクトリを作る」(create_dir)のほうでした。 Multicsで「移動する」の略称は、cwdです。
| Multics | UNIX | |
|---|---|---|
cdの意味 |
ディレクトリを作る(create_dir) |
ディレクトリを移動する(change directory) |
| 「移動する」の略称 | cwd |
cd |
同じ2文字が、2つのシステムで正反対の仕事をしているわけです。なぜUNIXでcdが「作る」ではなく「移動する」のほうに付け直されたのか——理由を明言した記録は見つかっていません。ただ、日常でどちらを多く打つかを考えると、ディレクトリを作る場面より、移動する場面のほうが圧倒的に多いのは確かです。より打つ回数の多いほうに、より短く済む略称を割り当て直したのだとしたら、筋は通ります。
おまけ:pwdのwとprintの謎
ここまで読むと、pwd(print_wdir)にも小さな謎が2つ残ります。
まずwdir。 これはworking directory(作業ディレクトリ)の略です。Multicsの公式ドキュメントでも、この機能はworking_dirという正式名で説明されています。
もう1つはprint。 「今いる場所を表示する」のに、なぜ「印刷する」を意味するprintが使われているのか。理由は先ほどのテレタイプにあります。当時の端末は文字通り紙に印刷する装置だったので、画面に何かを表示する動作は、そのまま「印刷する」でした。紙に印刷していた時代の呼び名が、画面表示の時代になっても、動詞としてそのまま残っているわけです。
まとめ
cd・ls・pwd・cpが短いのは、当時の端末(テレタイプ)が遅く、タイプ量を減らす必要があったから- ただし略称そのものは、UNIXが独自に考えたものではない。UNIXの前身であるMulticsの略称(
list→ls、print_wdir→pwd、copy→cp)が、綴りごとそのまま持ち帰られている cdだけは例外。Multicsでは「作る(create_dir)」の略称で、「移動する」の略称はcwdだった。UNIXで意味が付け替えられたpwdのwはworking(作業)の略、printは当時の端末が紙に印刷する装置だった名残
いつも打っているcdやlsは、UNIXの発明というより、Multicsという前身から引き継がれた遺産でした。次に打つときは、少し違って見えるかもしれません。