Saat saya cd
tautan, jalur saya saat ini diawali dengan jalur tautan, bukan jalur direktori yang tautannya. Misalnya
~/dirlinks/maths$ ls -l logic
lrwxrwxrwx 1 tim tim 71 Jul 27 10:24 logic -> /windows-d/academic discipline/study objects/areas/formal systems/logic
~/dirlinks/maths$ cd logic
~/dirlinks/maths/logic$ pwd
/home/tim/dirlinks/maths/logic
~/dirlinks/maths/logic$ cd ..
~/dirlinks/maths$
Saya ingin agar jalur saya saat ini diubah ke jalur direktori tertaut, sehingga saya dapat bekerja dengan direktori induk dari direktori tertaut juga. Selain ls
tautan untuk mengetahui dir yang ditautkan, dan kemudian cd
ke dalamnya, apa beberapa cara sederhana untuk mencapainya? Misalnya, setelah cd
menjadi tautan, bagaimana Anda mengubah jalur Anda saat ini ke jalur direktori tertaut?
shell
symlink
cd-command
Tim
sumber
sumber
cd -P .
setelah yang aslicd
.Anda dapat menggunakan
readlink
untuk menentukan di mana titik tautan Anda, dan memberikan output ini sebagai target Andacd
.Dalam kasus symlink tambahan yang menunjuk ke symlink,
readlink
cukup akan memberikan target, kecuali jika Anda menentukan salah satu opsi untuk mengikuti symlink ke target file kanonik, misalnyareadlink -f <link>
.sumber
Kerang mirip korn melacak tautan simbolik di jalur ke direktori saat ini (ini dikenal sebagai pelacakan direktori saat ini logis). Jika Anda ingin memperluas semua tautan simbolis, berikan opsi
-P
kecd
builtin (untuk pelacakan direktori aktual fisik):Jika Anda berada di direktori yang telah Anda akses melalui tautan simbolik dan ingin mengalihkan direktori saat ini yang dilacak ke jalur dengan tautan simbolik diperluas, jalankan
Jika Anda ingin mencetak jalur ke direktori saat ini dengan tautan simbolik diperluas, jalankan
pwd -P
. Dalam bash, jika Anda ingin mematikan pelacakan logis, jalankanset -P
; di zsh, jalankanset -w
atausetopt chase_links
.sumber