この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 .
が、-P
ieオプションを使用することです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
答え2
正しい見積もりは次cd ..
のとおりです。
'..' は、前のパス名コンポーネントをスラッシュまたは DIR の先頭に戻すことによって処理されます。
そしてそうです。cd .
現在のディレクトリは変更されてはならず、変更されません。
ただし、現在のディレクトリの名前が変更された可能性があります。
$ mkdir thisdir
$ cd thisdir
$ cd .
$ pwd
/home/isaac/thisdir
$ mv ../thisdir ../xxxx
$ cd .
$ pwd
/home/isaac/xxxx
現在のディレクトリにシンボリックリンクが含まれているか、実際のディレクトリ名が変更されました。
$ cd ~/ttt
$ pwd
/home/isaac/ttt
$ cd -P .
$ pwd
/home/isaac/me/init/basicdirs.d/ttt
したがって、cd .
他のように使用するとに変更されcd DIR
ます。同じディレクトリのように見えますが、同じディレクトリでもDIRの名前またはパスが異なる場合があります。pwd
DIR