UNIXの部屋 コマンド: cd


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

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

カレントディレクトリとは、「今 自分がいるディレクトリ」のこと。

移動したいディレクトリを引数で指定すると、そのディレクトリに移動する。
% pwd
/home/hogehoge
⇒ 現在のカレントディレクトリは /home/hogehoge
% cd lib
% pwd
/home/hogehoge/lib
% cd /usr/local
% pwd
/usr/local
引数なしで起動するとホームディレクトリに移動する。
% cd
% pwd
/home/hogehoge
⇒ 引数を省略して cd を実行すると、ホームディレクトリへ移動
% cd ..
% pwd
/home
⇒ 「..」は「一つ上のディレクトリ」を意味する

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

カレントディレクトリは各プロセス固有の情報である。シェルからあるコマンドを実行し、その中でカレントディレクトリを変更しても、シェル自体のカレントディレクトリは移動しない。つまり、
#!/bin/sh
cd /
というスクリプトをシェル上から実行しても、シェル自体のカレントディレクトリは変わらないということ。どうしてもというなら、
#!/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" の略。


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