cd (Change Directory)とは?

カテゴリ: コマンドラインツール

cd(シーディー)は "Change Directory" の略で、コマンドラインインターフェース(CLI)において「カレントディレクトリ(現在作業している場所)」を変更するための最も基本的なコマンドです。

基本的な使い方

  • `cd /var/log`: 絶対パスで指定した場所に移動します。
  • `cd logs`: カレントディレクトリの下にある `logs` ディレクトリ(相対パス)へ移動します。
  • `cd ..`: 一つ上の階層(親ディレクトリ)へ移動します。
  • `cd ~` (または単に `cd`): ユーザーのホームディレクトリへ移動します。
  • `cd -`: 直前にいたディレクトリに戻ります。非常に便利です。

「シェル組み込みコマンド」である理由

Linux初心者の方が疑問に思うことの一つに、「`ls` や `mkdir` は `/bin/` にあるのに、なぜ `cd` は `/bin/cd` として存在しないのか?」という点があります。

これは、`cd` が **シェル組み込みコマンド (Shell Builtin)** だからです。シェル(Bashなど)は一つのプロセスとして動作しています。もし `/bin/cd` という外部コマンドがあったとして、それを実行すると「新しい子プロセス」が立ち上がり、その子プロセスの中でディレクトリ移動が行われます。しかし、子プロセスが終了すると、親プロセス(シェル)は元の場所のままです。つまり、外部コマンドでは現在のシェルの場所を変更できないのです。そのため、`cd` はシェル自身の機能として実装されています。

最新トレンド:cdの代替ツール

ディレクトリ移動を効率化するために、現代的なCLIツールが登場しています。

  • zoxide: `cd` の完全な代替を目指したRust製の高速なツール。`z log` と打つだけで、過去の履歴から学習して `/var/log` に移動してくれるなど、曖昧検索が強力です。
  • autojump / z: ディレクトリの訪問頻度を学習し、短いコマンドでジャンプできるようにするツール群です。

AI開発におけるディレクトリ移動

AIモデルの学習や推論を行う際、ディレクトリ構造は深く複雑になりがちです(例: `projects/ai-model/experiments/2025-01-23/logs/tensorboard/`)。
このような深い階層を行き来する際、通常の `cd` コマンドだけで移動するのは非効率です。私は `zoxide` を導入して、プロジェクト名の一部を入力するだけで瞬時にディレクトリを切り替えられるようにしており、開発効率が劇的に向上しました。シェル操作のスピードは、AIエンジニアの生産性に直結します。

よくあるトラブル

「No such file or directory」
最も一般的なエラーです。タイプミスや、ディレクトリが存在しない場合に発生します。タブキーによる補完機能を活用することで、タイプミスを防ぐことができます。

「Permission denied」
移動先のディレクトリに対する「実行権限(x)」がない場合に発生します。ディレクトリの中身を見るには読み取り権限(r)が必要ですが、そのディレクトリに「入る(cdする)」には実行権限が必要です。