「CD」の目的は何ですか?注文する?

「CD」の目的は何ですか?注文する?

このcdコマンドはディレクトリの変更に使用されることを知っています。例えば

 cd dirname

有効なディレクトリ名には、およびも含まれ.ます..。目的cd ..は明らかです。マンページから:

CDPATHの空のディレクトリには、現在のディレクトリと同じ名前( ".")があります。

しかし、これの目的は何ですかcd .

ベストアンサー1

それがすることは、cd .現在の作業ディレクトリに関する情報でシェルを更新することです。現在のディレクトリ(パス名)がcd

$ pwd
/tmp/shell-bash.OoVntBAM
$ mkdir dir
$ cd dir
$ pwd
/tmp/shell-bash.OoVntBAM/dir

したがって、現在私たちは下のどこかにある/tmpディレクトリにありますdir。現在あるディレクトリの名前を変更します。

$ mv ../dir ../new-dir

では、今どこにいますか?

$ pwd
/tmp/shell-bash.OoVntBAM/dir

本当に?なぜ、それは変です。シェルが私たちが誰であるかを確かに知っておきましょう。

$ cd .
$ pwd
/tmp/shell-bash.OoVntBAM/new-dir

スクリプトでは、cd .ユーザーが現在のディレクトリにまだアクセスできることをテストするために使用できます。

if ! cd . 2>/dev/null; then
    echo lost access to cwd >&2
    exit 1
fi

または逆に、確認する現在のユーザーのアクセス権をキャンセルする一部の操作の後、現在のディレクトリにアクセスできなくなります。

現在のディレクトリへのアクセス権が失われる理由には、ディレクトリの削除または誰かがディレクトリに対する実行権限を削除することが含まれます。


もう1つの例はieを使用しますcd .が、-Pieオプションを使用することですcd -P .。現在のディレクトリがシンボリックリンクを介してアクセスされると、「物理」ディレクトリになります。

$ pwd
/tmp/shell-bash.OoVntBAM
$ mkdir dir
$ ln -s dir link-dir
$ ls -l
total 2
drwxr-xr-x  3 kk  wheel  512 May  8 00:48 dir
lrwxr-xr-x  1 kk  wheel    3 May  8 00:46 link-dir -> dir

これで、ディレクトリdirとそのディレクトリへのシンボリックリンクが作成されました。シンボリックリンクを介してディレクトリに入ります。

$ cd link-dir
$ pwd
/tmp/shell-bash.OoVntBAM/link-dir

それから...

$ cd -P .
$ pwd
/tmp/shell-bash.OoVntBAM/dir

おすすめ記事