場所の移動cd

ディレクトリをホームディレクトリへ変更するときは、次のように入力します。

cd

さらに、Xterm ウィンドウでそれを試してください。

ホームディレクトリにいるのであれば、何も起こりません。ホームディレクトリ以外の場所に行きたいのであれば、システムに行き先を告げる必要があります。

モールにある商店に行く、あるいは遠くに住んでいる親族を訪問する場合、今いるところから別の場所へ行く方法を知らなければなりません。つまり、辿っていく道を知る必要があります。

たとえば、暮らしの中で、道あるいは道路名は、基本的に 1 つの場所から別の場所へ導いてくれる方向を組み合わせたものです。Linux システムの場合 (DOS/Windows でも同じ)、1 つのディレクトリあるいはファイルから別のディレクトリやファイルへ導いてくれるための道、つまり、パスを記述します。

再度試してみましょう。Xterm ウィンドウを開きます。最初に、pwd コマンドを使用して自分のいる場所を検索します。コマンドを入力すると、ウィンドウは次のようになります。

[newuser@localhost newuser]$ pwd
/home/newuser
[newuser@localhost newuser]$

さて、現在の場所が表示されたので、システムにパスを入力することができます。

あと少しです…

次のように入力してみます。

cd home

どうなりましたか?home と呼ばれるディレクトリがあることが分かっているので、それをパスに入力しました。それなのに、なぜ no such file or directory というメッセージが表示されたのでしょうか?

つまり、入力したパスが不完全であることを示しています。

次のように入力してみます。

cd /home

これでディレクトリの変更に成功し、ログインディレクトリから home と呼ばれるサブディレクトリに移動しました。

Figure 15-2. 絶対パス名はフルパスを記述します

勿論、違いはフォワードスラッシュを加えたことです。

スラッシュを追加したことが違いのすべてとなった理由を、ちょっと考えてみましょう。

/home/newuser と表示された場合、今いる場所がフルパス、つまりルートディレクトリからの絶対パスで表示されています。newuser ディレクトリは、システムの最上位レベルであるルートからディレクトリを 2 つ「下がった」場所に位置しているディレクトリと考えることができます。

したがって、次のように入力した場合、

cd /home

実際には「ルートディレクトリに行き、そこからルートの下にあるディレクトリの 1 つで home と呼ばれるディレクトリ行く」ことを知らせています。home ディレクトリへの絶対パスを指定しました。

ここで、もし、次のように

cd /

と入力すると、プロンプトに次のように表示されて終了します。

[newuser@localhost /]$

このフォワードスラッシュは、現在ルートにいることを意味しています。ルートに到達すると、それ以上システムの上位に行くことはできません (DOS/Windows でもおなじことです)。

ルートディレクトリからログインディレクトリに戻るには、次のような、絶対パスを使用します。

cd /home/newuser

これで、home ディレクトリに移動します。

絶対パスの使用は、移動する 1 つの手段です。1 つの場所から別の場所に行く別の方法は、相対パスです (たとえば、Figure 15-3を参照)。

ルートディレクトリに戻りましょう。

cd /

ここで、相対パスを使用してログインディレクトに戻りましょう。

cd home/newuser

最初の / が無くなっていることに気がつきましたか?その理由は、ルートディレクトリが home ディレクトリのであること、つまり、 home ディレクトリがルートディレクトリから 1 つステップダウンしたディレクトリであることを意味しています。home は、newuser と呼ばれるディレクトリの親であるため、これら 2 つのディレクトリは / で分けられています。

ログインディレクトリにいるのであれば、次のように入力して、1 つ上のディレクトリ、home、に移動することができます。

cd ..

相対パスは、cd したいディレクトリをカレントディレクトリと相対的になるように記述します。

Figure 15-3. 相対パス名はカレントポジションに対して相対的です

cd .. と入力すると、「1 つ上のディレクトリへ」と伝えたことになります。ログインディレクトリの上のディレクトリは、 home です。

親ディレクトリとは?: 他のディレクトリを持つディレクトリを、親ディレクトリと呼ぶことができます。ここでは、homenewuser の親ディレクトリとなります。

cd コマンドで 2 つの点 (..) を使用すると、現行ディレクトリの親ディレクトリに移動することを指定したことになります。試しに点を 1 つにして入力して見ましょう。次のように入力します。

cd .

どうなりましたか?なにも変わりません。1 つの点 (.) を使用していることは、カレント作業ディレクトリを指定しているのと同じことです。

絶対パスと相対パスの違いは、時として小さな点を打つか打たないかの違いといえます。

ショッピングモールとの比較の話に戻ります。絶対パスによって方向を指定するならば、次のように言うことになります。

「車のキーを入手しなさい。車に載りこみなさい。車を始動しなさい。私道からでなさい。角まで運転しなさい…」

…こうして、最終的にはショッピングモールのお気に入りの靴屋の店内に入ることになります。

相対パスを使用する場合は、次のように言うことができます。

「その店はここから 2 〜 3 マイルの所にあのショッピングモール内にあります。」

これはまったくの誇張ですが、次のように考えることができます。行きたい場所と今いる場所の関係が分かっていれば、相対パスを使用することができます。

そのパスは絶対パス? 相対パス?: 最初の文字が / の場合は絶対パスで、それ以外は相対パスです。

現在、ログインディレクトリの親ディレクトリである home ディレクトリにいます。次のように入力します。

cd ..

ルートディレクトリにいることが表示されます。

相対パスを次のように入力して、ログインディレクトリに戻ります。

cd home/newuser

絶対パスと違いがあるとは思えません?home の前にフォワードスラッシュがないことに注目してください。本質的には、「homeディレクトリに行き、その後 home ディレクトリの下にある newuser に行きなさいと伝えています。」

ログインディレクトリへ素早く戻る: ログインディレクトリへ素早く戻りたい場合は、システムのどこにいても cd と入力して[Enter] キーを押します。ログインディレクトリに戻ります。

これだけではデモが十分ではありません。

それより、ログインディレクトリから、次のように入力します。

cd ../../etc/X11

その結果、X Window System に関連する設定ファイルやディレクトリが表示される、ディレクトリ X11 に到達しました。

注意:: [pwd] と入力すれば、常に自分が今ディレクトリツリーのどこにいるかを検索することができます。そして、cd コマンドを使用すればログインディレクトリに戻ることができます。

最後に使用した cd コマンドを見てみましょう。システムに実際に伝えた内容は、「親ディレクトリに進み、それからそのディレクトリの親ディレクトリ (つまり、ルートディレクトリ) に進み、それから etc ディレクトリ、そしてそこから X11 ディレクトリに進め」ということです。

絶対パスを使用してもすぐに X11 に到達します。次のように入力します。

cd /etc/X11

その結果、当該ディレクトリに到達します。

現在位置を知る: 行きたいディレクトリやファイルへの相対パスを記述する前に、自分が現在どの作業ディレクトリにいるかを常に確認してください。ただし、他へのディレクトリやファイルへの絶対パスを記述するときは、ファイルシステムのどこにいるかなどは気に掛ける必要はありません。

これまでで、ディレクトリ変更を理解していると思いますが、root のログインディレクトリへ変更したときに、何が起きるかを見てみましょう。

cd/root

おや… root としてログインしていないので、そのディレクトリへの「アクセスが拒否」されています。

root および他のユーザのアカウント (あるいはログインディレクトリ) へのアクセスを拒否することは、偶発あるいは故意による不正操作から Linux システムを保護する 1 つの方法です。ファイルの「所有権」および許可についての詳細は、この章の後半で説明します。

本当に、root のログインへ変更したいですか?それであれば、su コマンドを使用しなければなりません。次のように、コマンドを連続して入力します。

[newuser@localhost newuser]$ su Password:your root password [root@localhost newuser]#cd /root [root@localhost /root]# 

root のパスワードを入力するとすぐに、新しいスーパーユーザのステータスを示すコマンドプロンプトに変化したことが分かります。プロンプトの先頭に root アカウント、末尾に「#」があります (Figure 15-4を参照)。

Figure 15-4. root になる

今度は、root のログインディレクトリへの cd を入力しても、アクセスが許可されます。

root としての作業が終了したら、プロンプトで [exit] を入力します。

[root@localhost /root]# exit
exit
[newuser@localhost newuser]$

まとめ: 絶対パスを使用してディレクトリを変更するには、[cd /directory/directory] と入力します。相対パスを使用してディレクトリを変更する場合、[cd directory] と入力すると、1 つ下のディレクトリに移動し、[cd directory/directory] と入力すると 2 つ下のディレクトリに移動というようになります。[cd] と入力すれば、ファイルシステムのどこからでもログインディレクトリにジャンプします。今いるディレクトリの親ディレクトリに変更するには、[cd ..]と入力します。現行のディレクトリを参照するには、. を使用します。