すべてのファイルを表示する
前回レッスンではオプションの使用例として ls コマンドの -l オプションについて学びました。
-l オプションを付与することで、Lesson 1 〜 Lesson 7 で使ってきた素のままのls コマンドとは違う出力結果を表示できることがわかりました。
そして、なかでもファイルタイプ(- か d か)、ファイルの所有者とそのグループ、タイムスタンプについて説明しました。
Lesson 9 では引き続きls コマンドのオプションについてお話します。使うオプションは -a です。
さっそく作業ディレクトリ(first_dir)でオプション -a を試してみましょう。
ls -a

オプション -a はすべてのファイルを表示します。a はご想像どおりall の頭文字です。
ところで、作業ディレクトリは自分で作ったディレクトリですし、中にあるファイルもtouch を使って自分で作ったファイルです。
なので「すべてのファイル??全部知ってるよ」って感じですよね?(笑)
でも、出力結果は素のままのls と、ちょっと違っているの気が付きましたか?
写真のピンクの四角で囲った部分。そこが違います。
.(ドット) と..(ドット、ドット) の2つのファイルが表示されました。
表示されたのはいわゆる「隠しファイル」です。隠しファイルも含めてすべてのファイルを目で確認できるのがオプション -a なのです。
作った覚えもないし、本当に.(ドット) と..(ドット、ドット) もファイルなの??って思うかも知れません。
Lesson 5 「ディレクトリもファイル!?」のところでお話したようにLinux の世界はすべてファイルでできていますから、. も .. ももちろんファイルです。
では、覚えたばかりのオプションを駆使して、それを確認してみましょう。
オプション -a に続けて、-l を入力してみてください。
複数のオプションを付与して実行
ls -a -l
オプションはこんなふうに複数指定することも出来ます。指定する順番もとくに気にしなくて大丈夫。
ls -l -a としても結果は同じです。
さて、どんな出力結果が得られましたか?

ピンクで囲った部分をチェックしてみるとたしかに . と .. も表示されました。
ファイルのタイプは d ですから、ディレクトリということがわかります。
でも・・・。こんなディレクトリいつ誰が作ったんだろう・・・?
その答えはLesson 3 でやったmkdir にあります。
Lesson 3 で mkdir は空のディレクトリを作る。と説明しましたが、実は正確にいうと空ではなく、. と .. というディレクトリも同時に作ります。
そして、. と .. はすべてのディレクトリのなかに必ず存在するのです。
さてさて、ディレクトリですからちょっと中に入ってみたいですよね?
cd を使って、さっそくやってみましょう。まずは . から試してみます。
cd .
cd . と入力したら、いつものようにpwd や ls で移動できたか確認してください。
どうなりましたか??

あれ??。移動できてません・・・・・。元の場所つまりカレントディレクトリにいます。
pwd で確認した写真の①と②は同じ場所です。
なので、ls で確認したファイル群は、. というディレクトリの中にあるクローンではなく、まったく中にも入れず移動もしなかったということになります。
. ドットはたしかにファイルですが、少し変わっているのはそれがリンク(ショートカット)であるという点です。
つまり、. は自分自身(カレントディレクトリ)に向けたリンクなのです。
. はカレントディレクトリ、.. は上位ディレクトリ
では、次は.. へ移動してみましょう。
感のいいヒトはなんとなくもうわかったカモしれませんね(笑)。
cd .. でどこに移動するでしょうか? 実際にやってみましょう。
cd ..
ハイ。Lesson 4 でやりましたよね?。1つ上のディレクトリに移動したハズです。
.. は階層構造のひとつ上にあるディレクトリのリンクなのです。
2つディレクトリを登るには、../../ 、3つなら ../../../ でしたね。
2つ登るのに、.... とドットを4つ並べたらダメですよ。スラッシュで..を区切ってくださいね。
これで、各階層に.. が必ず存在する理由がわかると思います。
興味があったらmkdir で自作したディレクトリの中を ls -a で覗いてみてください。必ず . と .. があるハズです。
カレントディレクトリにmv
さて、先ほどの cd . と入力して、カレントディレクトリからカレントディレクトリに移動。なんてバカみたいですよね?(笑)
.. は1つ上に移動できたけど、じゃあ . はなんの役に立つのでしょうか?
たとえば遠くの階層にあるファイルを今いる場所に移動またはコピーしたいとき。なんてどうでしょう?
今、作業ディレクトリはこんな感じだと思います。tree でみてみると。

地味ですがピンクで囲ったところに注目してください。tree コマンドもちゃんと . を表示してカレントディレクトリであることを示しています。
では、一番深いところにあるdirectory_02 をカレントディレクトリにmv を使って移動させてみます。
カレントディレクトリを . (ドット)で指定
mv test01/test02/directory_02/ .
こんなふうに移動先にカレントディレクトリを指定するとき、. を使います。
移動後はこんな感じになっているハズです。tree にもオプションがありますので、ここでは-d を使ってディレクトリのみ表示させてみました。
tree のオプションに興味がありましたら、man でチェックしてみてください。
