cdは、作業ディレクトリを変更するシェルコマンドです。多くのシェルや、作業ディレクトリを管理する他のアプリケーションで使用できます。状況によっては、このコマンドはディレクトリの変更以外の操作も実行できます。一部の環境では、ディレクトリの変更機能は、などの別のコマンド名で提供されています。chdir
一般的に、階層型ファイルシステムへのアクセスを提供するコンピュータシステムは、作業ディレクトリを設定するための「change directory」コマンドを提供します。これはほとんどのオペレーティングシステムシェルに当てはまるため、UnixおよびUnixライクな(つまりLinux)シェル、そしてコマンドプロンプトやPowerShellなどのMicrosoftシェルを含むほとんどのシェルが「change directory」コマンドをサポートしています。
このコマンドをサポートするシェルを備えた他のオペレーティングシステムには、OS /2 [ 1 ] TRIPOS [ 2 ] AmigaOS [ 3 ] (入力パスに対してコマンドが暗黙的に実行される)、ReactOS [ 4 ] DOSBox、およびUEFI [ 5 ]が あります。
cdとchdir[ 7 ]の両方として含まれています。chdir[ 8 ]ですchange_current_dir[ 9 ]です。多くのシェルコマンドは独立したアプリケーションとして実装されていますが、change directory コマンドはシェルの状態に影響を与えるため、シェルに組み込まれていることがよくあります。他のコマンドはシェルの外部でシステムの状態を変更します。このコマンドが独立したアプリケーションとして実装されている場合、子プロセスは親プロセスの状態を変更する必要がありますが、これは安全上の理由から通常は防止されています。このコマンドは、ほとんどの Unix シェル ( Bourne、tcsh、Bashなど)、WindowsコマンドプロンプトおよびPowerShell、MS-DOS COMMAND.COMに組み込まれています。
シェルでは、change directory コマンドは通常システムコールによって実装され、Unix および Unix ライクなシステムでは通常POSIX でchdir()あり、Windows ではWindows APIにあります。
このコマンドは、シェル以外の多くのプログラムでも提供されています。ファイル転送プロトコルでは、制御ストリームコマンドは ですCWDが、この機能はcdほとんどのコマンドラインクライアントで として利用可能であり、一部ではローカル作業ディレクトリとリモート設定を変更する機能も提供しています。数値lcd計算環境のMATLABとGNU Octave には、 としてディレクトリ変更コマンドが含まれています。[ 10 ] [ 11 ]cd
コマンドの使用方法は状況によって異なりますが、各バリアント間には多くの共通点があります。以下の例は、主にUnixおよびUnixライクなシェル、PowerShell、コマンドプロンプトに適用されます。
パス内のディレクトリ名を区切るために、プログラムはコマンドライン構文(例えば、名前の間に区切り文字を挿入するなど)を使用します。この区切り文字はプログラムによって異なります。具体的には、UnixおよびUnixライクなシェルではスラッシュ(/)が使用され/、コマンドプロンプトではバックスラッシュ(/)が使用され\、PowerShellではどちらでも使用できます。ここでは、分かりやすくするために、パスをスラッシュで区切って表示します。
一般的に、ドット 1 つは作業ディレクトリの略記法であり、ドット 2 つはその親ディレクトリの略記法です。たとえば、作業ディレクトリ がある場合/user/bin/tmp、.は を指し、..は を指します/user/bin。親ディレクトリの表記法は、階層構造の上下両方へのパスを指定する相対パスを作成するためによく使用されます。たとえば、 から始まる は/usr/bin/tmpパスcd ../../localを指定します/usr/local。
ディレクトリ変更コマンドに共通する機能:
cd path/to/dir相対パス(先頭にスラッシュがない場合)の場合、パスは作業ディレクトリパスに追加され、コンテキストがディレクトリツリー階層のより深い位置に移動します。たとえば、作業ディレクトリが の場合/usr、 はcd bin作業ディレクトリを に変更します。/usr/bincd /path/to/dir絶対パス(先頭にスラッシュ)の場合、作業ディレクトリは指定されたパスに置き換えられます。たとえば、cd /bin作業ディレクトリを次のように設定します。/bincd ..ディレクトリツリーのコンテキストを1つ上のディレクトリに移動します。たとえば、 から開始すると/usr/bin/tmp、cd ..作業ディレクトリが に変更されます。/usr/bincd .作業ディレクトリは変更しませんが、別のプロセスによってディレクトリが再作成された後に復旧するのに役立ちます。cd引数なしの場合、コマンドは作業ディレクトリをユーザーのホームディレクトリに変更します。例外: コマンドプロンプトは作業ディレクトリのパスを報告しますUnixベースのシェルとPowerShellは、一般的に以下の機能を共有しています。
cd ~作業ディレクトリをユーザーのホームディレクトリに変更します。cd ~username作業ディレクトリを、指定したユーザーのホームディレクトリに変更します。cd -作業ディレクトリを前のディレクトリに変更します。たとえば、 から開始し/usr/bin/tmp、 を実行してcd /etcからを実行するとcd -、 に戻ります。これにより、pushd や popd を/usr/bin/tmp使用せずに 2 つのディレクトリを切り替えることができます。DOS は、文字が割り当てられたドライブごとに個別の作業ディレクトリを保持し、現在の作業ドライブという概念も持っています。このcdコマンドは、作業ドライブまたは別の文字が割り当てられたドライブの作業ディレクトリを変更するために使用できます。ドライブ文字をコマンドとして単独で入力すると、作業ドライブが変更されます (例: C:)。あるいは、スイッチを使用するcdと、作業ドライブとそのドライブの作業ディレクトリを一度に変更できます。最新バージョンの Windows は、 CMD.EXE/dの下で下位互換性のためにこの動作をシミュレートします。[ 12 ]

~)と、ファイル1つとサブディレクトリ3つが表示されている。作業ディレクトリをユーザーのホームディレクトリ(~)に設定して開始し、コマンドlsに続いてを実行すると、cd games次の結果が生成される場合があります。
user@wikipedia:~$ ls workreports games encyclopedia text.txt user@wikipedia:~$ cd games user@wikipedia:~/games$コマンドプロンプトでの同様のセッションは次のようになります。
C:\> dir 作業報告 <DIR> 10月9日(水) 9:01 ゲーム <DIR> 10月8日(火) 14:32 百科事典 <DIR> 10月1日(月) 10:05 テキスト txt 1903 木 10月10日 12:43 C:\> CDゲーム C:\games>