UNIX/Linuxの部屋 コマンド:cd


※空白区切りで AND 検索 (例:「ファイル 削除」)

コマンド cd カレントディレクトリを変更する。シェルの内部コマンド。

最終更新


cd コマンドは、カレントディレクトリを変更するコマンドである。なおカレントディレクトリとは、「今 自分がいるディレクトリ」のこと。
cd コマンドは、あらゆる UNIX/Linux で使用可能である。


cd コマンドの基本的な使い方
cd コマンドに移動したいディレクトリを引数で指定すると、そのディレクトリに移動する。
% pwd
/home/hogehoge
⇒ 現在のカレントディレクトリは /home/hogehoge
% cd /usr
⇒ カレントディレクトリを /usr に変更 (/usr に移動)
% pwd
/usr
⇒ pwd 結果も変わった
% cd local
⇒ さらにカレントディレクトリを /usr/local に変更
% pwd
/usr/local
cd コマンドを引数なしで起動するとホームディレクトリに移動する。
% cd
% pwd
/home/hogehoge
⇒ 引数を省略して cd を実行すると、ホームディレクトリへ移動
% cd ..
% pwd
/home
⇒ 「..」は「一つ上のディレクトリ」を意味する

cd - で一つ前のディレクトリに戻る
引数に「-」を指定すると、一つ前のディレクトリに戻る (これが機能するかどうかはシェルによる)。ただし、2個以上前のディレクトリまでさかのぼって移動することはできない。
% cd /dir1
% cd /dir2
% pwd
/dir2
% cd -
% pwd
/dir1
⇒ ひとつ前のカレントディレクトリに戻った
% cd -
% pwd
/dir2
⇒ 連続して cd - すると、/dir1 と /dir2 を行き来することになる

カレントディレクトリはプロセス固有の情報
カレントディレクトリは各プロセス固有の情報である。シェルからあるコマンドを実行し、その中でカレントディレクトリを変更しても、シェル自体のカレントディレクトリは移動しない。つまり、
#!/bin/sh
cd /
というスクリプトをシェル上から実行しても、シェル自体のカレントディレクトリは変わらない。この特性があるために、cd コマンドは /bin/cd などの外部コマンドではなく、tcsh や bash などシェルの内部コマンドになっている。

どうしても外部コマンドの結果によりシェルのカレントディレクトリを変更したい場合は、
#!/bin/sh
echo cd /
として、
% eval `hoge.sh` (バッククォートで囲む)
とすればよい。

また、カレントディレクトリは各プロセス固有の情報であるということを利用して、
% (cd /foo; tar zcf archive.tgz .)
などとすると、シェルのカレントディレクトリを変えずに /foo 以下のアーカイブを作成することが
できる。カッコで括った部分は別のシェル (子プロセス) として実行されるので、カッコ内でどれだけカレントディレクトリを変更しても、現在のシェルには影響がない。

なお、これは
% pushd /foo; tar zcf archive.tgz . ; popd
% cd /foo; tar zcf archive.tgz . ; cd -
と等価である。

読み方 cd (UNIXコマンド) [しー・でぃー]

"Change Directory" の略。


頑張って書いたおすすめコンテンツ!