cd / pwd
| 対応: | 全Linux | |
|---|---|---|
| macOS(2001 Cheetah) | ||
| Bash 1.0(1989) |
『cd』はカレントディレクトリを変更するコマンド、『pwd』は現在の作業ディレクトリのパスを表示するコマンドです。ターミナル操作の基本として毎日使うコマンドです。
構文
cd [ディレクトリ] pwd
コマンド一覧
| コマンド / 記法 | 概要 |
|---|---|
| cd ディレクトリ | 指定したディレクトリに移動します。 |
| cd | 引数なしで実行するとホームディレクトリ($HOME)に移動します。 |
| cd ~ | ホームディレクトリに移動します。cd と同じ動作です。 |
| cd - | 直前のディレクトリに戻ります。行き来を繰り返すときに便利です。 |
| cd .. | 親ディレクトリ(1つ上)に移動します。 |
| cd ../.. | 2つ上のディレクトリに移動します。 |
| pwd | 現在の作業ディレクトリの絶対パスを標準出力に表示します。 |
| pwd -L | シンボリックリンクを展開せずに論理パスを表示します(デフォルト)。 |
| pwd -P | シンボリックリンクを解決した物理パスを表示します。 |
サンプルコード
以下のディレクトリ構造を例に説明します。
ホームディレクトリに移動し、現在地を確認します。
cd pwd /home/user
絶対パスで『/var/log』に移動します。
cd /var/log pwd /var/log
1つ上のディレクトリに移動します。
cd .. pwd /var
『$ cd -』で直前のディレクトリに戻ります。2つのディレクトリを行き来するときに便利です。
cd - /var/log cd - /var
ホームディレクトリからの相対パスで移動します。
cd ~/Documents/Projects pwd /home/user/Documents/Projects
2つ上のディレクトリに移動します。
cd ../.. pwd /home/user
よくあるミス
よくあるミス1: スペースを含むパスに cd できない
スペースを含むディレクトリ名をそのまま書くと、空白でパスが分割されてエラーになります。
cd My Documents bash: cd: My: No such file or directory
クォートで囲むか、スペースをバックスラッシュでエスケープします。
cd "My Documents" cd My\ Documents
よくあるミス2: スクリプト内で cd してもカレントディレクトリが変わらない
シェルスクリプト内の cd は子プロセス(スクリプト自身)のカレントディレクトリを変えるだけで、実行元のシェルのディレクトリは変わりません。
#!/bin/bash cd /var/log pwd
修正後は次の通りです。
bash move.sh /var/log pwd /home/user
実行元のシェルのディレクトリも変えたい場合は、スクリプトを source(.)で実行します。
source move.sh pwd /var/log
概要
『$ cd -』は直前にいたディレクトリとカレントディレクトリを交互に切り替えます。作業中に2つのディレクトリを行き来する際に非常に便利です。直前のディレクトリは環境変数『$OLDPWD』に格納されています。
『$ pwd』はシェル組み込みコマンドですが、外部コマンド(/bin/pwd)も存在します。シンボリックリンク配下での挙動が異なる場合があるため、スクリプト内では『$ pwd -P』で物理パスを取得する方法もあります。
移動先のディレクトリ一覧の確認には『ls』を使います。
記事の間違いや著作権の侵害等ございましたらお手数ですがこちらまでご連絡頂ければ幸いです。