Dance with Agents

毎日打っている`cd`や`ls`という名前は、UNIXが独自に考えたものではなかった

このサイトの「ターミナル/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という前身から引き継がれた遺産でした。次に打つときは、少し違って見えるかもしれません。

ターミナル / UNIXコマンドの記事

ターミナル / UNIXコマンドのページへ →