cd コマンドは「移動するだけ」じゃない。覚えておきたい書き方とオプション
ディレクトリを移動する cd コマンド。cd -、cd だけでホームに戻る、cd ../..、Tab補完、シンボリックリンクを扱う -P / -L まで、実務で手が自然に動くように覚えておきたい書き方をまとめました。
cd は「移動するだけ」のコマンド?
こんにちは、コマンド学習道場を運営しているこすけです。
今回は、ディレクトリを移動するコマンド cd の話。
cd(change directory)は、Linux を触り始めて最初に覚えるコマンドのひとつです。
cd /var/log のように行き先を指定すれば、そこへ移動できる。
使い方としては、それでほぼ十分かもしれません。
ただ、実務で作業していると、同じディレクトリを何度も行き来したり、深い階層を上がったり下がったりする場面がとても多いんです。
そんなとき、ちょっとした書き方やオプションを知っているかどうかで、作業のしやすさがかなり変わってきます。
覚えておきたい cd の書き方
まずは、実務でよく使う書き方をまとめて見てみましょう。
$ cd /etc/nginx # 絶対パスで移動する
$ cd conf.d # 今いる場所からの相対パスで移動する
$ cd .. # 1つ上のディレクトリへ
$ cd ../.. # 2つ上のディレクトリへ
$ cd # 何も付けなければホームディレクトリへ
$ cd ~ # ~ もホームディレクトリを表す
$ cd - # 直前にいたディレクトリへ戻る
どれも難しいものではありません。
でも、迷わず指が動くレベルまで覚えておくことが、作業のテンポにつながります。
相対パスで使う .. は「1つ上」、. は「今いる場所」という意味。
cd ../.. のように重ねれば、何階層でも一気に上がれるわけです。
なかでも、cd を何も付けずに打つとホームディレクトリに戻れる、というのは意外と知られていないポイント。
深い階層で作業していて、いったん自分のホームに戻りたいときにすぐ使えます。
もうひとつ、cd と一緒に使いたいのが Tab補完(Tab キーを押すと、ファイル名やディレクトリ名の続きを自動で入力してくれる機能)。
cd /etc/ng まで打って Tab キーを押せば、/etc/nginx/ まで自動で埋まります。
長いパスを手で全部打たないことは、打ち間違いを防ぐうえでも効果的ですよ。
行き来が多いときは cd -
個人的に一番便利だと思っているのが、cd - です。
$ cd /etc/nginx/conf.d
$ cd /var/log/nginx
$ cd -
/etc/nginx/conf.d # 直前のディレクトリに戻り、移動先が表示される
$ cd -
/var/log/nginx
設定ファイルを直して、ログを確認して、また設定ファイルに戻って……。
そんなふうに2つのディレクトリを行き来する作業では、cd - を打つだけで切り替えられます。
長いパスを毎回打ち直す必要はありません。
しかも cd - は、移動した先のパスを表示してくれます。
どこに戻ったのかがその場でわかるのも、うれしいところですね。
ただし、何度も行き来していると「今どっちにいるんだっけ?」となりがち。
以前のコラム「運用保守の現場で pwd を何度も打つ理由」でも書いたとおり、迷ったら pwd で確認するクセをつけておくと安心です。
オプション -P と -L も知っておく
cd にはオプションもあります。
よく出てくるのが、シンボリックリンクの扱いを決める -P と -L。
シンボリックリンク(別の場所にあるファイルやディレクトリを指す「ショートカット」のようなもの)経由で移動したとき、どちらのパスを「今いる場所」とするかが変わります。
$ ls -ld /opt/app/current
lrwxrwxrwx 1 root root 22 Oct 31 10:00 /opt/app/current -> /opt/app/releases/v2.1
$ cd -L /opt/app/current && pwd # リンクのパスのまま扱う(何も付けないときと同じ)
/opt/app/current
$ cd -P /opt/app/current && pwd # リンクの先の実体のパスへ移動する
/opt/app/releases/v2.1
何も付けないときは -L と同じ動きなので、普段はあまり意識しなくても大丈夫です。
ただ、リンクの先の実体がどこにあるのかを確かめたいときは cd -P。
覚えておくと、いざというときに役立ちます。
手を動かして体に覚えさせる
cd は簡単なコマンドだからこそ、知識として知っているだけで終わりがちです。
でも実務では、考えなくても自然に手が動くことのほうがずっと大事。
cd - で行き来する、cd だけでホームに戻る、cd ../.. で一気に上がる。
どれも、実際に何度か打ってみるとすぐに身につきます。
本物のサーバーで試すのが不安な方は、練習用ターミナルでぜひ試してみてください。
移動するたびに pwd で確認しながら練習すると、ディレクトリ構造のイメージもつかみやすくなりますよ。