cdコマンド(change directory)とは
`cd`コマンドは、
UNIX系オペレーティングシステム(
Linux、macOSなど)において、
シェル(bash、zshなど)上で利用される、現在の作業
ディレクトリ(カレント
ディレクトリ)を変更するためのコマンドです。
基本的な機能
`cd`コマンドは、
ファイルシステム上の
ディレクトリ構造を移動するために使用されます。
ディレクトリは、ファイルを整理・保管するための論理的な区分であり、他の
ディレクトリを内包することができます。
`cd`コマンドを使うことで、サブ
ディレクトリへの移動、親
ディレクトリへの移動、ルート
ディレクトリへの移動、あるいは指定した特定の
ディレクトリへの移動が可能です。
内部コマンドとしての実装
`cd`コマンドは、
シェルの
内部コマンド(ビルトインコマンド)として実装されている点が特徴です。これは、`cd`コマンドが動作するためには、カレント
ディレクトリを変更する権限が
シェル自身に必要であるため、
外部コマンドとして実装することができないためです。
以下に、
ファイルシステムの簡単な例を示します。
~/ (ホーム
ディレクトリ)
├── text.txt
├── games/
├── documents/
└── images/
上記の例では、ユーザのホーム
ディレクトリ(`~`で表される)の中に、`text.txt`というファイルと、`games`、`documents`、`images`という3つのサブ
ディレクトリが存在しています。
もし、カレント
ディレクトリがホーム
ディレクトリ(`~`)の状態で、`cd games`コマンドを実行した場合、カレント
ディレクトリは`~/games`へと移動します。この状態で`ls`コマンドを実行すると、`~/games`
ディレクトリ内のファイルや
ディレクトリが表示されます。
`cd`コマンドの引数
`cd`コマンドは、様々な引数を受け付けることで、様々な
ディレクトリへ移動することができます。
引数なし、または `cd ~`
シェル変数`$HOME`に設定された
ディレクトリ(通常はユーザのホーム
ディレクトリ)に移動します。
`cd ~ユーザ名`
指定したユーザのホーム
ディレクトリに移動します。
指定した
ディレクトリに移動します。
例1:カレントディレクトリが `/user` の状態で `cd bin` と入力すると、`/user/bin` に移動します。
例2:カレント
ディレクトリに関わらず、`cd /bin`と入力すると、`/bin`に移動します。
`cd ..`
ひとつ上の親
ディレクトリに移動します。
例:カレントディレクトリが `/user/bin/temp` の状態で `cd ..` と入力すると、`/user/bin` に移動します。
`cd ../..`
ふたつ上の親ディレクトリに移動します。
例:カレント
ディレクトリが `/user/bin/temp` の状態で `cd ../..` と入力すると、`/user` に移動します。
`cd -`
直前にいた
ディレクトリに移動します。この機能を使うことで、異なる2つの
ディレクトリを交互に移動して作業する際に、
ディレクトリ名を毎回入力する手間を省くことができます。
例:`/user/bin`にいて、`cd /etc`で`/etc`に移動した後、`cd -`を入力すると`/user/bin`に戻り、再度`cd -`を入力すると`/etc`に戻ります。
まとめ
`cd`コマンドは、ターミナル上でディレクトリを移動するための基本であり、効率的なファイル操作に不可欠なコマンドです。このコマンドを使いこなすことで、ファイルシステムをスムーズに操作することができます。
参考
cd(1) man page(SunOS リファレンスマニュアル 1 : ユーザーコマンド) - オラクル