こんにちは、フルスタックエンジニアのryuです。
今回の記事では、Linuxのcdコマンドの使い方を解説します。cdコマンドとは、カレントディレクトリを移動するためのコマンドです。
cdコマンドをどのように使えば良いのか、具体例を交えながら解説します。基本の書式からcd ..やcd -などの省略記法、エラーが出たときの対処法まで、この記事で一通り身につけていきましょう。
【Linux】cdコマンドの使い方解説¶
cdコマンドとは?¶
cdコマンドは、ターミナルでカレントディレクトリを変更するために使用されます。cdという名前は、change directory(ディレクトリを変更する)の頭文字から来ています。
カレントディレクトリとは、現在作業しているディレクトリのことです。ターミナルの中での自分の現在地、とイメージすると分かりやすいですね。
Linuxのターミナルでは、マウスでフォルダをダブルクリックして開くという操作ができません。その代わりに、cdコマンドで現在地を切り替えながら作業を進めていきます。
ファイル一覧の表示もファイルの編集も、多くの操作はカレントディレクトリが基準になります。だからこそ、cdコマンドはLinuxで最初に覚えるべきコマンドの1つなんです。
前提知識としてディレクトリの種類を整理しよう¶
cdコマンドの説明には、いくつかのディレクトリの呼び名が登場します。先に次の3つを整理しておくと、この後の内容がすっと頭に入ってきますよ。
| 名前 | 意味 |
|---|---|
| カレントディレクトリ | 現在作業しているディレクトリ(自分の現在地) |
| ルートディレクトリ | /で表される、階層構造の頂点にあるディレクトリ |
| ホームディレクトリ | ユーザーごとに用意された、ログイン直後の定位置 |
Linuxのディレクトリは、ルートディレクトリを頂点とした木のような階層構造になっています。cdコマンドは、この木の中を枝から枝へ移動するためのコマンドという位置づけです。
なお、多くの環境ではプロンプトにカレントディレクトリ名が表示されています。今どこにいるのか分からなくなったら、まずプロンプトを見る癖を付けましょう。
cdコマンドの基本的な使い方¶
cdコマンドは以下のように使用します。
cd [移動したいディレクトリ]
例えば、/etcディレクトリにカレントディレクトリを移動したい場合は、以下のようにコマンドを入力します。移動できたかどうかは、pwdコマンドで確認しましょう。
cd /etc
pwd
→ /etcと表示
pwdコマンドとは、カレントディレクトリを表示するコマンドです。cdで移動してpwdで現在地を確かめる流れは定番なので、pwdコマンドの使い方もあわせて読んでみてください。
移動した先に何があるのかを知りたいときは、lsコマンドの出番です。ファイルやディレクトリの一覧表示については、lsコマンドの使い方で詳しく解説しています。
相対パスと絶対パスのどちらでも指定できる¶
cdコマンドで指定するディレクトリは、相対パスや絶対パスのどちらで指定しても問題ありません。
cd /etcのように/から書き始めれば、絶対パスでの指定になります。一方、カレントディレクトリが/home/ryuのときにcd documentsと打てば、相対パスで/home/ryu/documentsへ移動できます。
遠くのディレクトリへ一気に飛ぶなら絶対パス、すぐ近くへ移動するなら相対パスが打ちやすいです。2つのパスの考え方や使い分けは、相対パスと絶対パスの違いで丁寧に解説しています。
パスの理解は、そのままcdコマンドの理解に直結します。あいまいなまま進めるとつまずきやすいポイントなので、自信がない方は先にパスの記事から読むのがおすすめです。
cdコマンドのテクニック(省略記法で素早く移動)¶
cdコマンドを使いこなすためのテクニックをご紹介します。よく使う移動先には短い書き方が用意されていて、毎回長いパスを打つ必要はありません。
まずは、代表的な省略記法を一覧にまとめます。
| 書き方 | 移動先 |
|---|---|
cd .. |
1つ上の階層(親ディレクトリ) |
cd ../.. |
2つ上の階層 |
cd ~(またはcdのみ) |
自分のホームディレクトリ |
cd - |
直前にいたディレクトリ |
cd . |
現在のディレクトリ(移動しない) |
cd ~ユーザー名 |
指定したユーザーのホームディレクトリ |
この中でも特に出番が多いのは、cd ..とcd ~とcd -の3つです。順番に見ていきましょう。
1つ上の階層に移動する(cd ..)¶
Linuxでは、..という記号が1つ上の階層、つまり親ディレクトリを表します。深い階層から浅い階層へ戻るときは、この書き方が最短です。
pwd
→ /home/ryu/documentsと表示
cd ..
pwd
→ /home/ryuと表示
cd ../..のようにスラッシュでつなげると、2つ上へまとめて戻れます。実務でも学習でも一番よく打つ形なので、指が勝手に動くくらい練習しておきましょう。
ちなみに、.は現在のディレクトリ自身を表す記号です。cd .を単体で使う場面はほぼありませんが、.という記号自体はコピー先の指定など、さまざまな場面で登場します。
ホームディレクトリに戻る(cd ~)¶
ユーザーのホームディレクトリに戻る場合は、~(チルダ)を指定してcd ~と入力します。実は引数を何も付けずにcdとだけ打っても、同じようにホームディレクトリへ戻れます。
例えば、rootユーザーの場合は、ホームディレクトリである/rootに移動します。一般ユーザーの場合は/home/[ユーザー名]といった設定してあるホームディレクトリがカレントディレクトリになります。
また、~ユーザー名と書くと、そのユーザーのホームディレクトリを指定できます。cd ~ryuと打てば、ryuユーザーのホームディレクトリへ直行できるわけです。
深い階層で迷子になったら、いったんcdでホームに戻って仕切り直す。この習慣を付けておくと、ターミナル操作で慌てることが少なくなりますよ。
前のカレントディレクトリに戻る(cd -)¶
前のカレントディレクトリに戻る場合は、-(ハイフン)を指定します。
cd /
cd /etc
cd -
pwd
→ /と表示
例えば、カレントディレクトリが/から/etcに移動したのち、cd -を入力すると、カレントディレクトリは/に戻ります。設定ファイルの場所と作業場所を行ったり来たりするときに、抜群に便利な書き方です。
この動きは、シェルが直前のディレクトリを環境変数OLDPWDに記録しているおかげで実現しています。環境変数の仕組みが気になる方は、exportコマンドで環境変数を設定する方法ものぞいてみてください。
cdコマンドのオプション(-Lと-P)¶
実は、cdコマンドにはオプションがほとんどありません。覚えておく価値があるのは、シンボリックリンクの扱いを決める-Lと-Pの2つです。
| オプション | 動作 |
|---|---|
-L |
シンボリックリンクをそのままたどって移動する(デフォルト) |
-P |
シンボリックリンクを解決して、実体のディレクトリへ移動する |
シンボリックリンクとは、別の場所にあるディレクトリやファイルを指し示す、ショートカットのような仕組みのことです。リンク経由で移動したとき、見かけ上のパスと実体のパスのどちらを現在地として扱うかが、この2つの違いになります。
例えば、多くのディストリビューションで/var/runは/runへのシンボリックリンクです。cd /var/runの後にpwdを実行すると/var/runと表示されますが、cd -P /var/runなら実体の/runが表示されます。
普段の操作は、デフォルトの-Lの動作のままでまったく問題ありません。シェルスクリプトなどで正確な実体パスが必要になったときに、-Pを思い出せれば十分です。
cdコマンドでエラーが出た場合¶
cdコマンドはシンプルなコマンドですが、それでもエラーに出会うことはあります。ここでは、初心者がつまずきやすい4つのパターンと対処法を解説します。
エラー文は原因をはっきり教えてくれるので、落ち着いて読めば怖くありません。1つずつ見ていきましょう。
No such file or directoryのエラーが表示された場合¶
cdコマンドを入力すると、cd: [ディレクトリ名]: No such file or directoryというエラーが出る場合があります。これは、移動する先のディレクトリが見つからない場合に発生するエラーです。
この場合、指定したパスが正しいかどうか、ディレクトリが存在しているのかを確認しましょう。タイプミスや、相対パスと絶対パスの取り違えが原因になっていることも多いです。
そもそも目的のディレクトリがまだ存在しないなら、先に作成する必要があります。ディレクトリの作り方は、mkdirコマンドの使い方を参考にしてください。
Permission deniedのエラーが表示された場合¶
次は、cd: [ディレクトリ名]: Permission deniedというエラーが出た場合について解説します。これは、ディレクトリへの権限が不足している場合に表示されます。
まずls -laコマンドを実行してディレクトリの権限を確認してから、chmodコマンドで権限を変更してみましょう。ディレクトリの中に入るには、実行権限(x)が必要という点がポイントです。
管理者だけが入れるディレクトリなら、権限のあるユーザーへの切り替えが必要になります。ユーザーの切り替え方法は、suコマンドの使い方で解説しています。
Not a directoryのエラーが表示された場合¶
cd: [名前]: Not a directoryは、ディレクトリではなくファイルを指定したときに出るエラーです。cdコマンドで移動できるのはディレクトリだけで、ファイルの中に入ることはできません。
指定した名前の正体は、ls -lで確認できます。表示された行の先頭がdならディレクトリ、-なら通常のファイルです。
スペースを含むディレクトリ名に移動できない場合¶
cd My Documentsのように、スペースを含む名前をそのまま指定すると正しく移動できません。シェルがスペースを区切りとみなして、2つの別々の引数として解釈してしまうからです。
この場合は、cd "My Documents"のように引用符で囲むか、cd My\ Documentsのようにバックスラッシュを付けて指定します。後述するTabキーの補完を使えば、この記号も自動で入力されるので楽ですよ。
cdコマンドをもっと便利に使うコツ¶
基本の使い方とエラー対処をおさえたら、あとは日々の移動をどれだけ楽にできるかです。ここでは、実務でも役立つ時短のコツを紹介します。
サーバーの運用では、設定ファイルのある/etcやログのある/var/logなどを何度も行き来します。移動が速くなるほど、作業全体のスピードも上がっていきますよ。
Tabキーの補完でタイプミスを防ぐ¶
ディレクトリ名を途中まで入力してTabキーを押すと、シェルが名前の続きを自動で補完してくれます。長いディレクトリ名を、最後まで手で打つ必要はありません。
補完で入力すれば、タイプミスも起こりません。つまり、No such file or directoryエラーの予防策にもなるということです。
候補が複数あるときは、Tabキーを2回押すと一覧が表示されます。cdコマンドとTabキーはセットで使う、と体に覚えさせてしまいましょう。
CDPATHで移動の起点を増やす¶
環境変数CDPATHに親ディレクトリを登録しておくと、相対パスで指定した名前をそこからも探してくれます。
例えばexport CDPATH=.:$HOME/projectsと設定したとします。すると、どこで作業していてもcd myappと打つだけで、ホームディレクトリ配下のprojects/myappへ移動できるようになります。
決まったディレクトリを頻繁に行き来する人には、かなりの時短になる設定です。ただし挙動に癖もあるので、仕組みを理解したうえで使うのがおすすめです。
pushdやzoxideなどの移動支援もある¶
もっと効率化したい方向けに、cdコマンドの仲間や代替ツールも紹介しておきます。
pushdコマンドを使うと、現在地を記憶してから別のディレクトリへ移動できます。popdコマンドを打てば、記憶しておいた場所へ一発で帰って来られる仕組みです。
また、近年はzoxideというツールも人気を集めています。過去の移動履歴を学習して、名前の一部を打つだけで頻繁に使うディレクトリへジャンプできる便利なツールです。
とはいえ、どのツールもcdコマンドの理解があってこそ活きてきます。まずは素のcdコマンドと省略記法を、しっかり手になじませていきましょう。
cdコマンドに関するよくある疑問¶
最後に、cdコマンドについて初心者の方からよく聞かれる疑問に答えていきます。同じ疑問を持っていた方は、ここですっきり解消していってください。
cdコマンドとmvコマンドの違いは?¶
どちらも移動という言葉で説明されるため、混同しやすいポイントです。cdコマンドが移動させるのは自分の現在地であって、ファイルは一切動きません。
一方のmvコマンドは、ファイルやディレクトリそのものを別の場所へ動かします。ファイルを移動したい場合は、mvコマンドの使い方を参考にしてください。
cdコマンドのマニュアルはどこで見られる?¶
cdコマンドは独立したプログラムではなく、シェルに組み込まれたビルトインコマンドです。bashを使っている場合は、help cdと入力するとオプションを含む説明が表示されます。
type cdと実行すると、cdがシェルビルトインであることを自分の目で確かめられます。気になる方は試してみてください。
WindowsやMacでもcdコマンドは使える?¶
はい、どちらの環境にもcdコマンドはあります。Macのターミナルの操作感はLinuxとほぼ同じなので、この記事の内容がそのまま役立ちます。
Windowsのコマンドプロンプトにも、同じ名前のcdコマンドが用意されています。ただし、パスの区切り文字が\だったりドライブの概念があったりと、細かな違いには注意が必要です。
ディレクトリ名の大文字と小文字は区別される?¶
区別されます。Linuxでは、Documentsとdocumentsは完全に別のディレクトリとして扱われます。
正しい名前を打ったつもりでもNo such file or directoryが出るときは、大文字小文字の違いも疑ってみてください。Tabキーの補完を使えば、この間違いも自然に防げます。
cdコマンドなどLinuxのコマンドを身につけたい方¶
Linuxの実践的な内容を学習したい、コマンドを打ちながらLinuxを学習したい。そのようなご要望にお応えして、Linuxやネットワークが学習できるサイト「InfraAcademy」をリリースしました!
ブラウザ上で実際にコマンドを打ちながら学べるので、環境構築なしで今日からcdコマンドの練習を始められます。入門から中級まで、初心者でもわかりやすく学習を進めることができます。
cdコマンドの理解に役立つ講座は、次のとおりです。
| 講座 | 内容 |
|---|---|
| 【Linux入門講座1】ディレクトリと相対パス、絶対パス | cdコマンドとパス指定の基本 |
| 【Linux入門講座2】ファイルの操作方法 | ファイルの作成・コピー・移動 |
| 【Linux入門講座3】ファイルのアクセス権限 | Permission deniedの理解につながる権限の仕組み |
| 【Linux入門講座4】ファイルの編集\~vimの使い方をマスターする\~ | vimによるファイル編集 |
| 【Linux入門講座5】ユーザーとグループ | ユーザー管理とホームディレクトリ |
| 【Linux入門講座6】ネットワーク | ネットワークの基礎 |
↓InfraAcademyの講座の一部です。
上記以外にも、DNSサーバーの構築方法や、Dockerの設定方法などさまざまな講座があります。インフラエンジニアに必要な知識が学習できます。
参考:Linuxのコマンド練習用サイトのInfraAcademyを作成しました。【Linuxのコマンドをブラウザで練習しよう】
まとめ¶
今回は、Linuxのcdコマンドの使い方について解説しました。
cdコマンドは、カレントディレクトリを移動するための基本コマンドでしたね。cd ..で1つ上へ、cd ~でホームへ、cd -で直前の場所へ戻れることも紹介しました。
エラーが出ても、メッセージを読めば原因は必ず突き止められます。No such file or directoryならパスの確認、Permission deniedなら権限の確認と、対処の型を覚えておきましょう。
コマンドは、記事を読むだけではなかなか身につきません。ぜひターミナルを開いて、今日紹介した省略記法を一通り打ってみてください。
移動が自由にできるようになると、Linuxの学習は一気に楽しくなります。cdコマンドを足がかりに、1つずつ使えるコマンドを増やしていきましょう!
