こんにちは!はづきです
文系から一部上場IT企業に就職し、エンジニアをやっています
この記事ではLinuxのcdコマンドについて解説します!
cdコマンドはカレントディレクトリを移動する際に使用するコマンドです
そもそもカレントディレクトリがわからない人でも理解できるよう、前提知識から説明します。また、cdコマンドのオプションについても書いていきます。ぜひご参考ください
※この記事は初心者向けに平易に解説しています。正確な理解をしたい人は専門書・専門家をあたっていただければと思います。また、この記事の情報におけるCPの動作結果については自己責任でお願いします。
※本サイトにはプロモーション・広告が含まれています(はづきのブログより)
cd:ディレクトリ移動のコマンド
cdコマンドはカレントディレクトリの移動に使われるコマンドです。「change directory」の略称らしいです
カレントディレクトリを知らない方もいると思うので、まずはそこから確認していきます
カレントディレクトリとは
Linuxはディレクトリを移動しながら作業を進めていきます
上の図はworkディレクトリにユーザが位置していることを表しています。ここでファイルやディレクトリの作成を行うと基本的にworkディレクトリ配下に作成されます
※workディレクトリからworkディレクトリ以外のディレクトリ配下に作成する方法もありますが、いったん割愛します
このように現在作業の起点としているディレクトリを「カレントディレクトリ」と呼びます
カレントディレクトリはpwdコマンドで確認することができます
cdコマンドの基本操作
cdコマンドの実行例を見てみましょう。以下のように移動したいディレクトリへのパスを指定して実行します
cd <移動したいディレクトリへのパス>
上の図に描いたように、workがカレントディレクトリになっている状態でdir1に移動する流れをみてみましょう
hazuki@hazukiBlog:~/work$ pwd #カレントディレクトリは「work」
/home/hazuki/work
hazuki@hazukiBlog:~/work$ cd dir1 #「work」配下の「dir1」に移動する
hazuki@hazukiBlog:~/work/dir1$ pwd #カレントディレクトリが「dir1」に変わる
/home/hazuki/work/dir1
移動したいパスの指定方法はいくつかパターンがあります。以下ではその指定方法について詳しく解説していきます
ディレクトリの指定方法
cdコマンドでディレクトリを指定するやり方にはいくつか種類があります
先ほどはカレントディレクトリ配下のディレクトリに直接移動する方法を紹介しましたが、以下では階層が2つ以上異なるディレクトリに一発で移動する方法も紹介していきます
絶対パスでディレクトリを指定する
cdコマンドで絶対パスを指定することで、どのディレクトリに位置していても任意のディレクトリに移動することができます
絶対パスは、ディレクトリ構成のうち一番上の階層から表したパスのことです。したがって、下の階層になるほどパスは長くなります(上記図参考)
以下では絶対パスを使った実行例を紹介します
#ホームディレクトリからdir1へ絶対パスで移動する
hazuki@hazukiBlog:~$ pwd #カレントディレクトリはホームディレクトリ
/home/hazuki
hazuki@hazukiBlog:~$ cd /home/hazuki/work/dir1 #dir1に移動
hazuki@hazukiBlog:~/work/dir1$ pwd #カレントディレクトリはdir1
/home/hazuki/work/dir1
#ホームディレクトリからdir3へ絶対パスで移動する
hazuki@hazukiBlog:~$ pwd #カレントディレクトリはホームディレクトリ
/home/hazuki
hazuki@hazukiBlog:~$ cd /home/hazuki/storage/dir3 #dir3に移動
hazuki@hazukiBlog:~/storage/dir3$ pwd #カレントディレクトリはdir3
/home/hazuki/storage/dir3
相対パスでディレクトリを指定する
cdコマンドでは相対パスを指定することもできます
相対パスとは、カレントディレクトリを起点としたパスです。上記の画像では、workディレクトリを起点とした相対パスを表しています
workディレクトリからdir3ディレクトリに移動したい場合は、以下の3つの移動を行う必要があります
- workディレクトリからhazukiディレクトリに移動する(cd ../)
- hazukiディレクトリからstorageディレクトリに移動する(cd storage)
- storageディレクトリからdir3ディレクトリに移動する(cd dir3)
これらの3つの移動を合わせて、「cd ../storage/dir3」と実行すればdir3に移動することができます
以下では相対パスを使った実行例を紹介します
hazuki@hazukiBlog:~/work$ pwd #カレントディレクトリはwork
/home/hazuki/work
hazuki@hazukiBlog:~/work$ cd ../storage/dir3 #相対パスを使ってdir3に移動
hazuki@hazukiBlog:~/storage/dir3$ pwd #カレントディレクトリはdir3
/home/hazuki/storage/dir3
ホームディレクトリを指定する
ホームディレクトリはhome配下にあるユーザ名のディレクトリです
新規ユーザーを作成した際にホームディレクトリが作成されます
cdコマンドでホームディレクトリに移動する場合は、「~」を指定します。どのディレクトリに位置していてもホームディレクトリに戻ることができます
以下ではdir1ディレクトリからホームディレクトリに移動する実行例を紹介します
#ホームディレクトリへの移動方法①
hazuki@hazukiBlog:~/work/dir1$ pwd #カレントディレクトリはdir1
/home/hazuki/work/dir1
hazuki@hazukiBlog:~/work/dir1$ cd ~ #ホームディレクトリに移動
hazuki@hazukiBlog:~$ pwd #カレントディレクトリはホームディレクトリ
/home/hazuki
#ホームディレクトリへの移動方法②
#ディレクトリに何も指定しないとホームディレクトリに移動する
hazuki@hazukiBlog:~/work/dir1$ pwd #カレントディレクトリはdir1
/home/hazuki/work/dir1
hazuki@hazukiBlog:~/work/dir1$ cd #ホームディレクトリに移動
hazuki@hazukiBlog:~$ pwd #カレントディレクトリはホームディレクトリ
/home/hazuki
#ホームディレクトリを使った移動の応用
#ホームディレクトリを起点にdir3に移動する
hazuki@hazukiBlog:~/work/dir1$ pwd #カレントディレクトリはdir1
/home/hazuki/work/dir1
hazuki@hazukiBlog:~/work/dir1$ cd ~/storage/dir3 #dir3に移動
hazuki@hazukiBlog:~/storage/dir3$ pwd #カレントディレクトリはdir3
/home/hazuki/storage/dir3
上の階層のディレクトリを指定する
カレントディレクトリの上の階層のディレクトリに移動する場合は「../」を指定します
1階層上なら「../」、2階層上なら「../」、3階層上なら「../../../」。。。といった具合です
以下では、dir1ディレクトリからworkディレクトリ、ホームディレクトリ(hazuki)に移動する実行例を紹介します
#1階層上のディレクトリに移動する
hazuki@hazukiBlog:~/work/dir1$ pwd #カレントディレクトリはdir1
/home/hazuki/work/dir1
hazuki@hazukiBlog:~/work/dir1$ cd ../ #1階層上に移動
hazuki@hazukiBlog:~/work$ pwd #カレントディレクトリはwork
/home/hazuki/work
#2階層上のディレクトリに移動する
hazuki@hazukiBlog:~/work/dir1$ pwd #カレントディレクトリはdir1
/home/hazuki/work/dir1
hazuki@hazukiBlog:~/work/dir1$ cd ../../ #2階層上に移動
hazuki@hazukiBlog:~$ pwd #カレントディレクトリはhazuki
/home/hazuki
その他
最後にcdコマンドで指定できるその他のディレクトリのショートカット記号を紹介します
/ | ルートディレクトリを表す。 |
. | カレントディレクトリを表す。 |
- | 直前にいたディレクトリを表す。 |
指定方法は、ホームディレクトリ(~)や上位階層のディレクトリ(..)と同じです
以下で実行例を紹介します
hazuki@hazukiBlog:~/storage/dir3$ pwd #カレントディレクトリはdir3
/home/hazuki/storage/dir3
hazuki@hazukiBlog:~/storage/dir3$ cd ../../ #2階層上に移動する
hazuki@hazukiBlog:~$ pwd
/home/hazuki
hazuki@hazukiBlog:~$ cd - #直前にいたディレクトリ(-)に移動する※dir3へ
/home/hazuki/storage/dir3
hazuki@hazukiBlog:~/storage/dir3$ pwd #カレントディレクトリはdir3
/home/hazuki/storage/dir3
hazuki@hazukiBlog:~/storage/dir3$ cd . #カレントディレクトリ(.)に移動する
hazuki@hazukiBlog:~/storage/dir3$ pwd #カレントディレクトリはdir3
/home/hazuki/storage/dir3
hazuki@hazukiBlog:~/storage/dir3$ cd / #ルートディレクトリ(/)に移動する
hazuki@hazukiBlog:/$ pwd #カレントディレクトリはルートディレクトリ(/)
/
cdコマンドのオプション
cdコマンドにはシンボリックリンクに関する2つのコマンドがあります
それが「L」オプションと「P」オプションです。「L」は「logical(論理的)」、「P」は「physical(物理的)」を表します
ここでいう論理的とは、シンボリックリンクのリンク先のディレクトリを指します(上記の図中のstorage2)。一方で、物理的とは、シンボリックリンクのリンク元のディレクトリを指します(上記の図中のstorage)
シンボリックリンクについて詳しく知りたい方は以下をご参考ください
-L:論理的なディレクトリに移動する
-Lオプションは、シンボリックリンクの論理的なディレクトリに移動するオプションです
しかし、使い方は「cd -L <論理的なディレクトリ>」になるため挙動としては「-L」を付けても付けなくても結果は変わりません
シンボリックリンクに関わるディレクトリに対して、論理的なディレクトリに移動させていることを明示的にしたいときに使います(他者にコマンドを読ませるときに物理的なディレクトリに移動していると誤解させないため)
以下ではstorage2が論理的なディレクトリ、storageが物理的なディレクトリとして作成しています。これを用いて-Lオプションの実行例を紹介します
hazuki@hazukiBlog:~/work$ ls -la
#<一部省略>
lrwxrwxrwx 1 hazuki hazuki 11 Jun 13 13:21 storage2 -> ../storage/
hazuki@hazukiBlog:~/work$ cd -L storage2 #論理的なディレクトリに移動する
hazuki@hazukiBlog:~/work/storage2$ pwd
/home/hazuki/work/storage2
-P:物理的なディレクトリに移動する
-Pオプションは、シンボリックリンクの物理的なディレクトリに移動するオプションです
使い方は「cd -P <論理的なディレクトリ>」と指定します。このとき、指定した論理的なディレクトリのリンク元である物理的なディレクトリに移動します
以下ではstorage2が論理的なディレクトリ、storageが物理的なディレクトリとして作成しています。これを用いて-Pオプションの実行例を紹介します
hazuki@hazukiBlog:~/work$ ls -la
#<一部省略>
lrwxrwxrwx 1 hazuki hazuki 11 Jun 13 13:21 storage2 -> ../storage/
hazuki@hazukiBlog:~/work$ cd -P storage2 #物理的なディレクトリに移動する
hazuki@hazukiBlog:~/storage$ pwd
/home/hazuki/storage
今回はcdコマンドについてまとめてみました
みなさんのお役に立てば幸いです。最後まで読んでいただきありがとうございました
おしまい
コメント