簡略表現と特殊文字
図5の1行目と2行目には「.」と「..」の2つのディレクトリが表示されている。これはどういう意味か?「.」はカレントディレクトリ、「..」は親ディレクトリを意味する。実際に実行すると以下のようになる。
$ pwd ←カレントディレクトリ名を表示
/home/Administrator
$ cd text ←textディレクトリに移動
$ pwd ←カレントディレクトリ名を表示
/home/Administrator/text
$ cp ../aaa.txt . ←親ディレクトリにあるaaa.txtをカレントディレクトリにコピー
$ cd ~ ←ホームディレクトリに移動
pwdコマンドは、Print Working Directoryの略でカレントディレクトリ名を表示する。cdコマンドは、Change Directorの略でディレクトリを移動する。cpコマンドは、Copyの略でファイルやディレクトリをコピーする。ここでは、親ディレクトリ(..)のaaa.txtというファイルをカレントディレクトリ(.)にコピーしている(cpコマンドでは、このように引数の順番に意味がある)。簡略表現は、こういうふうに使うことが多い。そして最後に「~」という簡略表現を使っている。「~」はホームディレクトリを意味する。どこにいても「cd ~」とすれば、ホームディレクトリに移動できる。ここでは、「cd ..」でも同じ動作になる。
次に、覚えておきたいのがワイルドカードである。「*」は、0文字以上の任意の文字を表す。「?」は任意の1文字を表す。これは、同時に複数のファイルを操作したいときに便利なものだ。
$ ls ←すべてのファイルを表示
f0101.eps f0203.eps f0403.eps f08.jpg pic02.png pic13.png
f0102.eps f0204.eps f0404.eps f09.jpg pic03.png pic14.png
f0103.eps f04.eps f05.jpg f10.jpg pic04.png pic15.png
f0201.eps f0401.eps f06.jpg f11.jpg pic11.png pic17.png
f0202.eps f0402.eps f07.jpg pic01.png pic12.png
$ ls *.jpg ←拡張子が「jpg」のファイルのみ表示
f05.jpg f06.jpg f07.jpg f08.jpg f09.jpg f10.jpg f11.jpg
$ ls f*.* ←先頭が「f」で始まるファイルのみ表示
f0101.eps f0201.eps f0204.eps f0402.eps f05.jpg f08.jpg f11.jpg
f0102.eps f0202.eps f04.eps f0403.eps f06.jpg f09.jpg
f0103.eps f0203.eps f0401.eps f0404.eps f07.jpg f10.jpg
$ ls f0?.eps ←先頭が「f0」でさらに1文字あって、拡張子が「eps」のファイルを表示
f04.eps
$
いろいろ試してみるとおもしろい。
重要な2文字コマンド
いくつかのコマンドを紹介してきたが、UNIXでは2文字のコマンドを使う機会が非常に多い。今回紹介しなかったものでは、df、du、ln、mv(Move)、ps(Process)、rm(Remove)、vi(Visual editor)、wc(Word Count)などがある。--helpオプションやmanコマンドを使って、その動作などを調べてみるとよいだろう。
また、インターネット上には、さまざまな形でこれらのコマンド紹介の記事がある。実際に「UNIXコマンド」での検索結果が、図8である。
残念ながら、本連載では、すべてのコマンドを網羅的に紹介することはできない。こういった有志の力を借りたいと思う。ただ、注意すべき点がある。第1回目でふれたように、UNIXにはさまざまな種類が存在する。その違いというべきか、コマンドによっては実装されていなかったりすることもある(逆にCygwinにはないコマンドもある)。オプションもすべて同じとはかぎらない。もし違っていても、これは実装が違うんだ、くらいの寛容な気持ちで臨んでほしい。