lesson 04

階層構造に慣れる

前回のレッスンでカレントディレクトリにディレクトリを3つ作って、その中の1つ(test01/)にcd コマンドを使って入ってみました。

自分が今いるところがカレントディレクトリですから、その場所でpwd コマンドを打つと、スラッシュ"/" で区切られた文字列が返ってきます。今回の例では、/home/hiro/first_dir/test01 が返ってきて、その文字列は階層構造を表している。っていうお話をしました。

一番右にあるtest01が今いるところ、つまりカレントディレクトリです。

また、階層構造のことを”入れ子構造”っていうヒトもいます。ディレクトリの中にディレクトリがあって、そのまたディレクトリのなかにディレクトリがある・・・・。っていうイメージです。

これまでなにげにサラッと使ってきた”階層構造”っていう単語ですが、これはLinuxを学ぶうえでけっこう大事な概念です。

どうしてか?っていうと。大事なデータを置いておく場所を示すルールだからです。

こんなふうに書くとなにやら堅苦しく感じてしまいますが、まぁ慣れですから。

ドンドン使って、手を動かして覚えちゃいましょう。

さて、前回、cd を紹介して、test01/ というディレクトリの中に入ってみました。

では、そこから1つ上の階層に登る(元いた場所に戻る)にはどうしたらいいでしょう?

ディレクトリ間の移動ですから、もちろんcd を使います。問題はcd に渡す引数(行き先)です。

答えを先に明かしてしまいますが。次のようにターミナルに入力してみてください。

ディレクトリを1つ上に登る
cd ../

どうです?元いた場所に戻りましたか?

写真のコマンド入力は、少し過去に遡ってスタートしています。cd ../ という操作は緑色の矢印のところからです。

さて、cd の引数に渡した ../ というのは一体何なんでしょうか?

その答えを今ここで詳しく説明してしまうと、ものすごく話が長くなりそうなので、今のところは保留させてください(笑)。

でも、なんとなく感覚的に、ドット、ドット、スラッシュで”一つ上に上がる”っていう雰囲気はわかってもらえるかな?と思います。

とりあえず今は慣れることです。../ (ドット、ドット、スラッシュ)で階層を1つ上に登ることができました。その調子で../../ のように2回繰り返すと2つ上へ、../../../ と3回繰り返せば3つ上の階層に登ることができます。

../../../../ なら4つ上です。

ここでpwd の出力結果が、ディレクトリ名をスラッシュで区切った文字列だったことを思い出してください。するとcd に渡す ../../../ という指示(引数)も、それに従った書式であることがわかると思います。

ドット、ドットをスラッシュで区切っていますよね?

階層構造も補完してみる

さてさて、ここでまた補完機能を使ってみましょう。

階層構造をたどるときもtab キーを使って補完することができますよ。たとえば次の写真のように。

cd ../ と入力したところで、tab キーを押すと、一つ上の階層にあるディレクトリを行き先の候補として表示してくれます。

写真ではそのまま cd ../ をenter で確定して一つ上に登っていますが、tab キーで表示してくれたディレクトリ名をたとえば、 cd ../test02 のように指定すれば、”一つ上の階層にあるtest02/ ディレクトリに移動できます。

それでは、cd、pwd、を使ってディレクトリ間を行ったり来たり試してみてください。

mkdir を使ってさらにディレクトリを作ってみて、階層構造をもっと深くしてみてもいいでしょう。

たとえばtest01/ の中にもう一つdir_02/ というディレクトリをmkdir で作ってみます。

そして、first_dir まで戻ってから、tree というコマンドを入力してみましょう。

mkdir dir_02
cd ../

tree コマンドはもしかすると貴方の環境にまだインストールされていないかもしれませんので、もしlinux が、Command 'tree' not found, ・・・ のようなメッセージを返してくるようでしたら、ターミナルに以下のように入力して、tree コマンドをインストールしてください。

tree コマンドをインストール
sudo apt install tree

tree コマンドで階層構造をみやすく

tree コマンドはその名のとおり、ディレクトリやファイルをツリー状に表示するコマンドです。現在の階層構造を視覚的にわかりやすく表示してくれます。

ちなみに階層構造のことをツリー構造と言うヒトもいます。どちらも同じ意味です。

先ほど新規に作成したdir_02/ ディレクトリが、test01/ ディレクトリから枝分かれしたように表示されているのがわかるでしょう。