(シーディー、change directory)は、シェル等の(プロセスの)現在のワーキングディレクトリ(カレントディレクトリ)を変更するコマンドである。UNIX系(UNIXやLinuxなど)のターミナルで入力して使う。
概要 原理的に外部コマンドとして実装することが不可能であり、かならずシェル等の内部コマンド(ビルトインコマンド、:en:Shell builtin)として実装される。
ディレクトリはファイルシステム中の論理的な区分であり、ファイルを保持するために使われる。ディレクトリは他のディレクトリをも含めることができる。コマンドはサブディレクトリ(子ディレクトリ)に移動したり、親ディレクトリに移動したり、ルートディレクトリ(すべてのディレクトリの根にあたるディレクトリ)に一気に移動したり、ある与えられたディレクトリに移動したりすることができる。
次の図は何らかのファイルシステムの一部分を示している。1つのファイル ("text.txt")と3つのサブディレクトリを含むユーザのホームディレクトリ(で表している'~' をユーザのホームディレクトリが設定されている変数 $HOME として解釈するか否かはシェルの実装に依存する。)が示されている。
center|framed
もしカレントディレクトリがホームディレクトリ(~)であれば、「」というコマンドを実行した後で「」と実行すると、例えば次のような結果が得られる。 me@host:~$ ls workreports games encyclopedia text.txt me@host:~$ cd games me@host:games$
ユーザはこの時点で""ディレクトリにいる。
引数 引数なし、あるいは cd ~ シェル変数 $HOME に設定されたディレクトリ(※)に移動する。 cd ~ユーザ名 ユーザ名のホームディレクトリに移動 cd ディレクトリ名 サブディレクトリに移動。たとえば今カレントディレクトリが /user の状態で「cd bin」と入力しenterキーを押すと /user/bin に移動する。一方、「cd /bin」と入力しenterキーを押すと /bin に移動する。 cd .. ひとつ上のディレクトリに移動。たとえばいま仮に /user/bin/temp にいる状態で「cd ..」と入力しenterキーを押すと、/user/binに移動する。 cd ../.. ふたつ上のディレクトリに移動。たとえばいま仮に /user/bin/temp にいる状態で「cd ../..」と入力しenterキーを押すと /user に移動する。 cd - 直前にいたディレクトリに移動。たとえばある時 /user/bin にいて、次に「cd /etc」と入力しenterキーを押し /etcに移動した状態で元の /user/binに戻りたかったら「cd -」と入力してenterキーを押せばよい。そこで何か作業をしてまた /etc に戻りたかったら「cd -」と入力すれば良い。つまり「cd - 」を使えば、ユーザは2つのディレクトリに交互に移動して作業する場合に毎回ディレクトリ名を入力する手間が省ける。
注
外部リンク cd(1) man page(SunOS リファレンスマニュアル 1 : ユーザーコマンド) - オラクル