トップ > Linuxらしい使い方を覚える >
ディレクトリツリーの概要および探索方法について

  

ディレクトリツリーについて

前の記事では、端末の開き方と閉じ方について解説しました。 この記事では、端末で作業する上で絶対に知っておかなければならない "ディレクトリツリー" と呼ばれるものについて解説します。

ディレクトリツリー(の一部)
ディレクトリツリー(の一部)

上図のようにUNIX系OSのディレクトリは階層構造になっています。 このように階層構造になったディレクトリ群を "ディレクトリツリー" といいます。

  
上の例はあくまでも一部のみの抜粋です。
  
最上位ディレクトリ "/" のことを "ルートディレクトリ" と呼びます。

上の例では、ルートディレクトリの下には、

  1. etc
  2. bin
  3. usr
  4. tmp
  5. home

という5つのディレクトリがあります。 さらに usr ディレクトリの下には、

  1. bin
  2. lib
  3. local

という2階層目のディレクトリがあります。 同じように home ディレクトリの下にも、

  1. taro

という2階層目のディレクトリがあります。 また、usr の下の local ディレクトリの下には3階層目となる、

  1. bin
  2. lib

があります。

ルートディレクトリは1つ

Windowsでは、

  1. Cドライブ(C:)
  2. Dドライブ(D:)
  3. Gドライブ(G:)

のように最上位フォルダが複数存在します。 みなさんのWindows PCでも、Windowsがインストールされているドライブが C: で、光学ドライブが D: で、USBフラッシュメモリが G: のようになっていることでしょう。

一方、UNIX系OSではルートディレクトリは1つです。 つまり、ディレクトリツリーは1つしかありません

ディレクトリツリーが1つだけで大丈夫なの?

ディレクトリツリーが1つだけで大丈夫なの?、と思った方も多いことでしょう。 USBフラッシュメモリを挿したり、外付けハードディスクを接続したらどうなるんだヨ、と。

大丈夫、心配はありません。 UNIX系OSでは、USBフラッシュメモリや外付けハードディスクといった記録媒体が接続されると、ディレクトリツリーの一部として連結されます。 だから、ディレクトリツリーは1つで足りるのです。

  
PCに接続された記録媒体をディレクトリ構造の一部として連結することを "マウント" と呼びます。 また、連結解除することはアンマウントといいます。
  
Windowsの代用 > USBフラッシュメモリを介した他のPCとのデータのやりとりの記事ではUSBフラッシュメモリを "/media/taro/YAMADA_4G" で参照することができましたが、これはUSBフラッシュメモリが "/media/taro" にマウントされたためです。

各ディレクトリの役割

ほとんどのUNIX系OSのディレクトリツリーは、FHS(Filesystem Hierarchy Standard : ファイルシステム階層標準)と呼ばれる規格に準拠しています。 今回インストールしたLinux Mintのディレクトリツリーも、もちろん FHS に準拠しています。

FHSによって定められているディレクトリツリーの構造および各ディレクトリの役割については以下を参照ください。

  1. Linux Foundation : Filesystem Hierarchy Standard
  2. ウィキペディア : Filesystem Hierarchy Standard

ディレクトリツリー内の探索方法を学ぶ

ディレクトリツリーの概要については理解できたと思います。 ここからは、ディレクトリツリー内の探索について解説します。

端末でもディレクトリツリー内を移動しながら作業する

Windowsの代用 > ファイルマネージャの使い方の基礎の記事では、ファイルマネージャの基本的な使い方について解説しました。 また、Windowsの代用 > USBフラッシュメモリを介した他のPCとのデータのやりとりの記事では、ファイルマネージャを利用してUSBフラッシュメモリの文書を "ドキュメント" ディレクトリに移動しました。

それらの記事で学んだように、ファイルマネージャではディレクトリを移動しながら作業を行います。 任意のディレクトリのアイコンをダブルクリックしてそのディレクトリに移動したり、[←戻る]ボタンを押して元のディレクトリに戻る、という具合です。

端末での作業でも、同じようにディレクトリを移動しながら作業を行う必要があります

ディレクトリツリー内を探索してみよう

では、実際にディレクトリツリー内を探索してみましょう。 まずは、端末を開いてください

1. $_のアイコンをクリックする
1. $_のアイコンをクリックする

上図のように画面下部のパネルの左側にある $_ のアイコンをマウスの左ボタン(マウスの左ボタン)でクリックします。

2. 端末が開く
2. 端末が開く

上図のように端末が開きます。 では、この端末を使って色々と学んでいきましょう。

最初に覚えるべきは、現在のディレクトリがどこであるかを確認する方法です。 つまり、今いる場所の確認方法です。

  
現在のディレクトリのことを "カレントディレクトリ" または "ワーキングディレクトリ" といいます。 本ウェブサイトでは、これ以降 "カレントディレクトリ" と表記します。

カレントディレクトリを表示するためのコマンドは pwd コマンドです。 先ほど開いた端末でキーボードから pwd と入力して、Enterキーを押してください。


pwd

 
  
"Print Working Directory" から連想して覚えましょう。

以下のようにカレントディレクトリが表示されます。 今回の例では、"/home/taro" がカレントディレクトリです。

taro@myhostname:~$ pwd
/home/taro
taro@myhostname:~$

以前の記事で説明したように、各ユーザにはそれぞれ自分専用のディレクトリである "ホームディレクトリ" が割り当てられます。

標準ユーザでは、ルートディレクトリの下の "home" ディレクトリの下にそれぞれのホームディレクトリが用意されます。 ホームディレクトリの名称はユーザIDと同じになるため、ユーザIDが "taro" でれば "/home/taro" がホームディレクトリになります。

  
管理者ユーザのホームディレクトリは、"/root" です。

つまり、現時点ではカレントディレクトリはホームディレクトリと一致しているということです

このように、端末を開いた直後はホームディレクトリがカレントディレクトリになります


では続いて、カレントディレクトリにあるファイルやディレクトリを表示させてみましょう。

ファイルマネージャでは常にカレントディレクトリにあるファイルやディレクトリが表示されていますが、端末での作業ではそうはいきません。 明示的にコマンドを実行して表示させる必要があります。

カレントディレクトリにあるファイルやディレクトリを表示するためのコマンドは ls コマンドです。 キーボードから ls と入力して、Enterキーを押してください。


ls

 
  
"LiSt" から連想して覚えましょう。

以下のようにカレントディレクトリにあるファイルやディレクトリが表示されます。

taro@myhostname:~$ ls
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
taro@myhostname:~$

今回の例では、

  1. Desktop
  2. Documents
  3. Downloads
  4. Music
  5. Pictures
  6. Public
  7. Templates
  8. Videos

の8つのディレクトリが表示されています。 なお、これらがファイルなのかディレクトリなのかは見た目では判断できません。 ファイルなのかディレクトリなのかを判断するため詳細表示させてみましょう

詳細表示させるには、ls コマンドに -l を付けて実行します。 キーボードから ls -l と入力して、Enterキーを押してください。


ls -l

 
  
コマンドの後ろに付与する文字のことを 引数(ひきすう) ひきすう 引数(ひきすう) と呼びます。 コマンドと引数の間には1つ以上の空白を入れる必要があります。
  
引数には様々な種類がありますが -l のように -(ハイフン) で始まるものはオプションと呼ばれます。

以下のようにカレントディレクトリにある8つのディレクトリの情報が詳細表示されます。

taro@myhostname:~$ ls -l
合計 32
drwxr-xr-x 2 taro taro 4096  6月 10 13:11 Desktop
drwxr-xr-x 2 taro taro 4096  6月 10 13:11 Documents
drwxr-xr-x 2 taro taro 4096  6月 10 13:11 Downloads
drwxr-xr-x 2 taro taro 4096  6月 10 13:11 Music
drwxr-xr-x 2 taro taro 4096  6月 10 13:11 Pictures
drwxr-xr-x 2 taro taro 4096  6月 10 13:11 Public
drwxr-xr-x 2 taro taro 4096  6月 10 13:11 Templates
drwxr-xr-x 2 taro taro 4096  6月 10 13:11 Videos
taro@myhostname:~$

なお、新たに増えた各列の意味は以下の通りです。

d ファイル種別

-意味-
d:ディレクトリ
-:ファイル
rwxr-xr-x パーミッション
※パーミッションとはアクセス権限のこと
パーミッションについては別の記事で紹介
2 ハードリンク数
ハードリンクについては別の記事で紹介
taro taro 所有者 / 所有グループ
4096 ファイルサイズ
5月22 12:48 最終変更日時

今回の例では、8行ともに先頭が "d" になっていることから全てディレクトリであることがわかります。

このように ls コマンドに -l オプションを付加することでファイルやディレクトリを詳細表示させることができます。

  
-l は "Long" から連想して覚えましょう。

では次に、隠しファイル・隠しディレクトリも表示させてみましょう

  
以前の記事で解説したように、UNIX系OSでは .(ピリオド) で始まるファイルやディレクトリは "隠しファイル" や "隠しディレクトリ" と呼ばれます。

ls コマンドで隠しファイル・隠しディレクトリを表示させるにはどうすればいいのでしょうか。 ls コマンドのマニュアルで調べることにしましょう。 UNIX系OSには、マニュアルを表示するための man コマンドが用意されています。

  
正確には "マニュアルページ" と呼ばれます。

なお、man コマンドには必ず引数を渡す必要があります。 引数には参照したいコマンドの名前を渡します。 キーボードから man ls と入力して、Enterキーを押してください。


man ls

 

以下のように ls コマンドのマニュアルページが表示されます。 ls コマンドの使い方が英語で説明されていることがわかります。

LS(1)                            User Commands                           LS(1)

NAME
       ls - list directory contents

SYNOPSIS
       ls [OPTION]... [FILE]...

DESCRIPTION
       List  information  about  the FILEs (the current directory by default).
       Sort entries alphabetically if none of -cftuvSUX nor --sort  is  speci‐
       fied.

       Mandatory  arguments  to  long  options are mandatory for short options
       too.

       -a, --all
              do not ignore entries starting with .

       -A, --almost-all
              do not list implied . and ..

       --author
 Manual page ls(1) line 1 (press h for help or q to quit)

なお、ls コマンドのマニュアルページは長いため全ては表示されていません。 また、man コマンドはまだ終了していません。 man コマンドは対話型のコマンドであり、あなたが何か入力するのを待っています。

キーボードのqを押すことで man コマンドを終了することが、fを押すことで画面をスクロールすることができます。

キー入力 説明
q
※Quit
man コマンドを終了する
f
※Forward
(または)
スペースキー
1画面分下にスクロールする
※進む
b
※Backward
1画面分上にスクロールする
※戻る
h
※Help
ヘルプを表示する

マニュアルページを見ると、

       -a, --all
              do not ignore entries starting with .

と記述されています。 ls コマンドに -a を付けて実行することで隠しファイル・隠しディレクトリも表示されることがわかりました。

  
-a の代わりに --all と記述することもできます。

では、キーボードのqを押してマニュアルページを閉じましょう。

マニュアルページを閉じたら、さっそく隠しファイル・隠しディレクトリの表示を行ってみましょう。 キーボードから ls -l -a と入力して、Enterキーを押してください。


ls -l -a

 

以下のようにカレントディレクトリにある全てのファイルやディレクトリの情報が詳細表示されます。

taro@myhostname:~$ ls -l -a
合計 112
drwxr-x--- 15 taro taro 4096  6月  6 11:44 .
drwxr-xr-x  3 root root 4096  4月 17 09:44 ..
-rw-------  1 taro taro   55  6月  6 10:34 .Xauthority
-rw-------  1 taro taro  191  6月  5 18:39 .bash_history
-rw-r--r--  1 taro taro  220  4月 17 09:44 .bash_logout
-rw-r--r--  1 taro taro 3771  4月 17 09:44 .bashrc
drwxr-xr-x 17 taro taro 4096  6月  4 19:18 .cache
drwxr-xr-x 19 taro taro 4096  5月 22 12:49 .config
-rw-r--r--  1 taro taro   23  5月 18 18:22 .dmrc
-rw-r--r--  1 taro taro   58  5月 18 16:56 .gtkrc-2.0
-rw-r--r--  1 taro taro  516  4月 17 09:44 .gtkrc-xfce
-rw-------  1 taro taro   34  6月  6 11:44 .lesshst
drwxrwxr-x  4 taro taro 4096  5月 18 15:57 .linuxmint
drwxrwxr-x  3 taro taro 4096  5月 18 15:40 .local
drwx------  4 taro taro 4096  5月 18 18:18 .mozilla
-rw-r--r--  1 taro taro  807  4月 17 09:44 .profile
-rw-r--r--  1 taro taro    0  5月 18 15:59 .sudo_as_admin_successful
-rw-------  1 taro taro 5406  6月  6 10:35 .xsession-errors
-rw-------  1 taro taro 7360  6月  5 22:40 .xsession-errors.old
drwxr-xr-x  2 taro taro 4096  6月 10 13:11 Desktop
drwxr-xr-x  2 taro taro 4096  6月 10 13:11 Documents
drwxr-xr-x  2 taro taro 4096  6月 10 13:11 Downloads
drwxr-xr-x  2 taro taro 4096  6月 10 13:11 Music
drwxr-xr-x  2 taro taro 4096  6月 10 13:11 Pictures
drwxr-xr-x  2 taro taro 4096  6月 10 13:11 Public
drwxr-xr-x  2 taro taro 4096  6月 10 13:11 Templates
drwxr-xr-x  2 taro taro 4096  6月 10 13:11 Videos
taro@myhostname:~$

狙い通りに隠しファイル・隠しディレクトリも表示させることができました。 このように ls コマンドに -a オプションを付加することで隠しファイル・隠しディレクトリも表示させることができます。

なお、オプションの -l と -a をまとめて -la と記述することもできます。 試してみましょう。

キーボードから ls -la と入力して、Enterキーを押してください。


ls -la

 

以下のように ls -l -a を実行した場合と同じ結果になります。

taro@myhostname:~$ ls -la
合計 112
drwxr-x--- 15 taro taro 4096  6月  6 11:44 .
drwxr-xr-x  3 root root 4096  4月 17 09:44 ..
-rw-------  1 taro taro   55  6月  6 10:34 .Xauthority
-rw-------  1 taro taro  191  6月  5 18:39 .bash_history
-rw-r--r--  1 taro taro  220  4月 17 09:44 .bash_logout
-rw-r--r--  1 taro taro 3771  4月 17 09:44 .bashrc
drwxr-xr-x 17 taro taro 4096  6月  4 19:18 .cache
drwxr-xr-x 19 taro taro 4096  5月 22 12:49 .config
-rw-r--r--  1 taro taro   23  5月 18 18:22 .dmrc
-rw-r--r--  1 taro taro   58  5月 18 16:56 .gtkrc-2.0
-rw-r--r--  1 taro taro  516  4月 17 09:44 .gtkrc-xfce
-rw-------  1 taro taro   34  6月  6 11:44 .lesshst
drwxrwxr-x  4 taro taro 4096  5月 18 15:57 .linuxmint
drwxrwxr-x  3 taro taro 4096  5月 18 15:40 .local
drwx------  4 taro taro 4096  5月 18 18:18 .mozilla
-rw-r--r--  1 taro taro  807  4月 17 09:44 .profile
-rw-r--r--  1 taro taro    0  5月 18 15:59 .sudo_as_admin_successful
-rw-------  1 taro taro 5406  6月  6 10:35 .xsession-errors
-rw-------  1 taro taro 7360  6月  5 22:40 .xsession-errors.old
drwxr-xr-x  2 taro taro 4096  6月 10 13:11 Desktop
drwxr-xr-x  2 taro taro 4096  6月 10 13:11 Documents
drwxr-xr-x  2 taro taro 4096  6月 10 13:11 Downloads
drwxr-xr-x  2 taro taro 4096  6月 10 13:11 Music
drwxr-xr-x  2 taro taro 4096  6月 10 13:11 Pictures
drwxr-xr-x  2 taro taro 4096  6月 10 13:11 Public
drwxr-xr-x  2 taro taro 4096  6月 10 13:11 Templates
drwxr-xr-x  2 taro taro 4096  6月 10 13:11 Videos
taro@myhostname:~$

このようにオプションはまとめて表記することができます。


ここからは、ディレクトリツリー内の移動についての解説に入ります。 ディレクトリを移動するためのコマンドは cd コマンドです。 移動先のディレクトリを引数として渡します。

今回はルートディレクトリ(/)に移動してみましょう。 キーボードから cd / と入力して、Enterキーを押してください。


cd /

 
  
"Change Directory" から連想して覚えましょう。

以下のように何も起こっていないように見えます

taro@myhostname:~$ cd /
taro@myhostname:/$

しかし、よく見るとシェルプロンプトが、

taro@myhostname:~$

から、

taro@myhostname:/$

に変化しています。 シェルプロンプトの後ろから2文字目が ~(チルダ) から /(スラッシュ) に変化していることがわかります。

以前の記事でも解説したように、シェルプロンプトの文字は以下の意味を持ちます。

文字 意味
taro@myhostname ユーザID : taro
ホスト名 : myhostname
: 単なる区切り
~ カレントディレクトリ
※~(チルダ)はホームディレクトリを表す
$ $→標準ユーザ
#→管理者ユーザ

今回の例では、カレントディレクトリが ~ から / に変化していることがわかります。 ~ はホームディレクトリを表し、/ はルートディレクトリのことです。

つまり、カレントディレクトリがホームディレクトリからルートディレクトリに移動したことを示しています。

わかりやすく表現すると、今いる場所はルートディレクトリである、ということです。 ルートディレクトリへの移動に成功したってことですね。

一応、pwd コマンドで確かめてみましょう。 キーボードから pwd と入力して、Enterキーを押してください。


pwd

 

以下のようにルートディレクトリにいることが確認できます。

taro@myhostname:/$ pwd
/
taro@myhostname:/$

このように cd コマンドでディレクトリを移動することができます。

ではここで、ルートディレクトリからは離れずにホームディレクトリにあるファイルやディレクトリの一覧を表示してみましょう。 キーボードから ls /home/taro と入力して、Enterキーを押してください。


ls /home/taro

 
  
ls コマンドにカレントディレクトリ以外のディレクトリの内容を表示させる場合は、対象のディレクトリを引数として渡します。

以下のようにホームディレクトリにある8つのディレクトリが表示されます。

taro@myhostname:/$ ls /home/taro
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
taro@myhostname:/$

このように、ls コマンドはカレントディレクトリ以外のディレクトリの内容を表示することもできます。

では次に、cd コマンドを引数無しで実行してみましょう。 キーボードから cd と入力して、Enterキーを押してください。


cd

 

以下のように何も起こっていないように見えます

taro@myhostname:/$ cd
taro@myhostname:~$

でも、よーく見るとシェルプロンプトのカレントディレクトリの表示が、

/

から、

~

に変化していることがわかります。 そうです、ホームディレクトリに戻っています

cd コマンドを引数無しで実行するとホームディレクトリに戻ることができます

cd コマンドには別の便利な使い方もありますのでここで紹介しておきます。 キーボードから cd - と入力して、Enterキーを押してください。


cd -

 

以下のようにルートディレクトリに移動します

taro@myhostname:~$ cd -
/
taro@myhostname:/$

このように、引数に - オプションを渡すことでルートディレクトリに移動しました。 ただし、- オプションは "ルートディレクトリに移動せよ" という意味ではありません"1つ前にいたディレクトリに移動しろ" という意味です。

では、再度 cd コマンドに - オプションを渡して実行してみましょう。 キーボードから cd - と入力して、Enterキーを押してください。


cd -

 

以下のようにホームディレクトリに移動します

taro@myhostname:/$ cd -
/home/taro
taro@myhostname:~$

このように、引数に - オプションを渡して cd コマンドを実行することで、2つのディレクトリを行き来することができます。

ではここで、ちょっと変わった操作で前のディレクトリであるルートディレクトリへ戻ってみましょう。 キーボードのカーソルキーの上()をチョンと押してください。

以下のように前回実行したコマンドが再表示されます

taro@myhostname:~$ cd - 

では、Enterキーを押してください。

以下のようにコマンドが実行され、ルートディレクトリに移動します

taro@myhostname:~$ cd -
/
taro@myhostname:/$

このように、キーボードのカーソルキーの上()を押すことで過去に実行したコマンドを呼び出すことができます。 なお、これはシェルの機能です

  
CTRL+Pキーでも過去のコマンドを呼び出すことができます。
  
キーボードのカーソルキーの下()を押すことで逆に進む(戻る)こともできます。 こちらの操作はCTRL+Nキーで代用することができます。

ここで一度ホームディレクトリに戻ってみましょう。 キーボードから cd ~ と入力して、Enterキーを押してください。

  
~(チルダ) は、SHIFT+ ひらがなの"へ"の刻印のあるキーで入力することができます。

cd ~

 

以下のようにホームディレクトリに戻ることができます

taro@myhostname:/$ cd ~
taro@myhostname:~$

何度も説明しているように ~(チルダ) はホームディレクトリを表します。 そのため、cd ~ と実行することでもホームディレクトリに戻ることができました。

続いて紹介するのは上位ディレクトリ、つまり親ディレクトリへの移動方法です。 現在はホームディレクトリである /home/taro にいますので、親ディレクトリは /home ということになります。

では、親ディレクトリである /home に移動してみましょう。 ただし、cd /home とは実行しません。 キーボードから cd .. と入力して、Enterキーを押してください。


cd ..

 

以下のように/homeに移動します

taro@myhostname:~$ cd ..
taro@myhostname:/home$

このように .. は親ディレクトリを表します。 なお、cd ../ と実行しても同じ結果になります。

  
.. は親ディレクトリを表しますが . はカレントディレクトリを表します。 つまり、ls と ls . は同じ結果になります。

では、ホームディレクトリに戻りましょう。 ただし、cd とは実行しませんし、cd - とも cd ~ とも実行しません。 キーボードから cd taro と入力して、Enterキーを押してください。


cd taro

 

以下のようにホームディレクトリに戻ります

taro@myhostname:/home$ cd taro
taro@myhostname:~$

このように cd コマンドにディレクトリ名を渡すことで、カレントディレクトリから相対的に移動することができます。

では次に、ドキュメントディレクトリに移動してみましょう。 ホームディレクトリの下の "Documents" がドキュメントディレクトリです。

ただし、cd Documents とは実行しません。 キーボードから cd ./Documents と入力して、Enterキーを押してください。


cd ./Documents

 

以下のようにドキュメントディレクトリに移動することができます

taro@myhostname:~$ cd ./Documents
taro@myhostname:~/Documents$

このように ./ を先頭に付加したディレクトリ名を渡すことでも、カレントディレクトリから相対的に移動することができます。

なぜなら、先ほど説明したように . はカレントディレクトリを表すためです。 つまり ./Documents は、カレントディレクトリの下の "Documents" ディレクトリという意味になります。

続いては、久しぶりにルートディレクトリへ移動してみましょう。 ただし、cd / とは実行しません。 キーボードから cd ../../.. と入力して、Enterキーを押してください。


cd ../../..

 

以下のようにルートディレクトリに移動します

taro@myhostname:~/Documents$ cd ../../..
taro@myhostname:/$

このように ../../.. と記述することで3階層上のディレクトリを表すことができます。 なお、cd ../../../ と実行しても同じ結果になります。

では最後に、ホームディレクトリへと戻りましょう。 キーボードから cd /home/taro と入力して、Enterキーを押してください。


cd /home/taro

 

以下のようにホームディレクトリに戻ります

taro@myhostname:/$ cd /home/taro
taro@myhostname:~$

このように /home/taro と記述することでもホームディレクトリを表現することができます。 ルートディレクトリの下の "home" ディレクトリの下の "taro" ディレクトリという意味になります。

組み込みコマンド(ビルトインコマンド)の使用方法の調べ方

前の記事で説明したように、シェルに組み込まれているコマンドを "組み込みコマンド" または "ビルトインコマンド" と呼びますが、これらのコマンドの使用方法はマニュアルページには掲載されていません。 例えば cd コマンドであれば、


man cd

 

と実行すると、以下のようにマニュアルページはないと言われます。

taro@myhostname:~$ man cd
cd というマニュアルはありません
taro@myhostname:~$

組み込みコマンド(ビルトインコマンド)の使用方法は、man コマンドではなく help コマンドで調べる必要があります。 例えば cd コマンドの使用方法を参照したい場合には、


help cd

 

と実行することで、以下のように使用方法が表示されます。

taro@myhostname:~$ help cd
cd: cd [-L|[-P [-e]] [-@]] [dir]
    Change the shell working directory.

    Change the current directory to DIR.  The default DIR is the value of the
    HOME shell variable.

    The variable CDPATH defines the search path for the directory containing
    DIR.  Alternative directory names in CDPATH are separated by a colon (:).
    A null directory name is the same as the current directory.  If DIR begins
    with a slash (/), then CDPATH is not used.

    If the directory is not found, and the shell option `cdable_vars' is set,
    the word is assumed to be  a variable name.  If that variable has a value,
    its value is used for DIR.

    Options:
      -L    force symbolic links to be followed: resolve symbolic
            links in DIR after processing instances of `..'
      -P    use the physical directory structure without following
            symbolic links: resolve symbolic links in DIR before
            processing instances of `..'
      -e    if the -P option is supplied, and the current working
            directory cannot be determined successfully, exit with
            a non-zero status
      -@    on systems that support it, present a file with extended
            attributes as a directory containing the file attributes

    The default is to follow symbolic links, as if `-L' were specified.
    `..' is processed by removing the immediately previous pathname component
    back to a slash or the beginning of DIR.

    Exit Status:
    Returns 0 if the directory is changed, and if $PWD is set successfully when
    -P is used; non-zero otherwise.
taro@myhostname:~$

まずは、man コマンドでマニュアルページを探し、存在しなければ help コマンドを試しましょう。

画面に収まらない場合は less コマンドを使おう

先ほど紹介した man コマンドでは、マニュアルページの内容を対話的に参照することができました。 キーボードのfスペースキーを押すことで画面を進めたり、qを押すことで終了させることができました。 また、キーボードのbを押すことで画面を戻すこともできました。

一方、help コマンドでは、表示内容が長い場合でも表示が一時停止することはありません。 最終行を表示し終えるまで止まることなくスクロールしてしまいます。 では、画面を止めたり・進めたり・戻したりすることはできないのでしょうか。

大丈夫、できます。 less コマンドと組み合わせることで man コマンドのように対話的に使用することができます。 具体的には、

help cd | less

のように実行することで、以下のように man コマンドと同等の操作で画面を制御することができます。

  
|(パイプ) は、SHIFT+ "¥"の刻印のあるキーで入力することができます。
キー入力 説明
q
※Quit
終了する
f
※Forward
(または)
スペースキー
1画面分下にスクロールする
※進む
b
※Backward
1画面分上にスクロールする
※戻る
h
※Help
ヘルプを表示する

なお、

help cd | less

という記述は、

help cd

の画面出力を less コマンドに渡すという意味になります。 コマンドを |(パイプ) でつなぐことで、前のコマンドの標準出力を後ろのコマンドの標準入力に渡すことができます。

  
これは "パイプライン" と呼ばれるシェルの機能です。 パイプラインについては別の記事で後ほど紹介します

less コマンドは、標準入力から渡された内容をページ単位で進めたり・戻したりするためのコマンドです。 今回の例では help コマンドと組み合わせましたが、それ以外のコマンドと組み合わせることもできます。 例えば、

ls -la | less

とすることもできます。 標準出力に何か出力するコマンドであれば、どんなコマンドとも組み合わせることができます。

  

ディレクトリパスには絶対パスと相対パスがある

ディレクトリを指し示すテキストのことを "ディレクトリパス" といいます。 例えば、

cd /home/taro

というコマンドであれば、

/home/taro

の部分がディレクトリパスです。 上の例では、ルートディレクトリの下の "home" ディレクトリの下の "taro" ディレクトリを表します。

上の例のように / から始まるディレクトリパスを絶対パスといいます。 ルートディレクトリからたどってディレクトリの場所を指定する記述です。

- 絶対パスの例 -
ディレクトリの記述例
cd /
cd /home
cd /home/taro
cd /usr/local/bin

一方、

cd ./Documents

という記述は、カレントディレクトリの下の "Documents" ディレクトリを指します。 このようにカレントディレクトリからたどる記述は相対パスといいます。

- 相対パスの例 -
ディレクトリの記述例
cd ..
cd ../jiro
cd ./Documents
cd Documents
  

まとめ

UNIX系OSでは、ディレクトリは階層構造になっています。 階層構造になったディレクトリ群を "ディレクトリツリー" といい、最上位ディレクトリは "ルートディレクトリ" と呼ばれます。

なお、ディレクトリツリーは、FHS(Filesystem Hierarchy Standard : ファイルシステム階層標準)と呼ばれる規格に準拠しています。

UNIX系OSのルートディレクトリは1つしかありません。 つまり、ディレクトリツリーは1つだけですが問題はありません。 USBフラッシュメモリや外付けハードディスクといった記録媒体が接続されると、ディレクトリツリーの一部としてマウント(連結)されます。

ディレクトリツリー内の探索には、pwd コマンド、cd コマンド、ls コマンドを利用します。 pwd コマンドでカレントディレクトリの位置を確認し、ls コマンドでカレントディレクトリの内容を表示し、cd コマンドで他のディレクトリに移動します。

操作/コマンド 説明
pwd カレントディレクトリを表示する
ls カレントディレクトリの内容を表示する
cd 他のディレクトリに移動する

なお、~(チルダ) はホームディレクトリを表し . はカレントディレクトリを .. は親ディレクトリを表します。

ディレクトリを指し示すテキストのことを "ディレクトリパス" といい、絶対パスと相対パスの2通りの記述方法があります。

ディレクトリの記述例 区分
cd / 絶対パス
cd /home 絶対パス
cd /home/taro 絶対パス
cd /usr/local/bin 絶対パス
cd .. 相対パス
cd ../jiro 相対パス
cd ./Documents 相対パス
cd Documents 相対パス

キーボードのカーソルキーの上()を押すことで過去に実行したコマンドを呼び出すことができます。 CTRL+Pキーで代用することもできます。

キーボードのカーソルキーの下()を押すと逆方向へ進みます。 こちらはCTRL+Nキーで代用することもできます。

操作/コマンド 説明
カーソルキーの上()
(または)
CTRL+Pキー
1つ前に実行したコマンドを呼び出す
カーソルキーの下()
(または)
CTRL+Nキー
1つ先に実行したコマンドを呼び出す

各コマンドの使い方はマニュアルページに掲載されています。 マニュアルページは man コマンドで参照することができます。 マニュアルページに掲載されていない場合は help コマンドを試しましょう。

操作/コマンド 説明
man マニュアルページを表示する
help ヘルプを表示する

画面に収まりきらないテキストはページ単位で進む・戻すという操作を行いましょう。 パイプラインで less コマンドに渡すことで、ページ単位で画面を制御することができます。

操作/コマンド 説明
less 標準入力に渡された内容をページ単位で制御する
メニュー