Mengubah direktori induk (../) dengan symlinks

32

Saya memiliki symlink

~/link -> ~/a/really/long/path

Kapan saya melakukannya

cd ~/link
cd ..    

itu membawaku ke

~

tapi saya ingin pergi ke

~/a/really/long

Apakah ada cara untuk melakukan ini?

Saya menggunakan bash.

Xodarap
sumber
1
Maksud Anda cd ~/a/really/long/pathkemudian cd ..menempatkan Anda ~pada saat ini? Saya tidak bisa mereproduksi itu.
Mikel
1
@Mikel: Tidak, pertama buat symlink untuk ~/a/really/long/pathkemudian cd ke yang kemudian ke ... Anda harus kembali lagi ~ (dengan asumsi di situlah Anda memulai).
Xodarap
Apakah hasil edit saya akurat? Saya tidak bisa mengerti pertanyaan sebelumnya.
Mikel

Jawaban:

38

Direktori track Bash (dan juga ksh, zsh, dan bahkan ash) berubah sehingga cd /foo/bar && cd ..selalu membawa Anda ke /foomeskipun barada symlink. Berikan -Popsi untuk cdmengabaikan perubahan yang terlacak dan ikuti struktur direktori "fisik":

cd -P ..

Lihat help cdatau man builtinsuntuk dokumentasi tentang bash builtin cd. Jika Anda benar-benar tidak menyukai fitur pelacakan direktori, Anda dapat mematikannya dengan set -Pdi bash ( set -o no_chase_linkin zsh).

Gilles 'SANGAT berhenti menjadi jahat'
sumber
1
Cara saya membaca pertanyaan, OP telah -Patau -o physicalsudah ditetapkan?
Mikel
+1, tetapi sarankan tautan ke halaman manual.
Faheem Mitha
@Mikel: Tidak, pertanyaannya mengatakan bahwa dia mengikuti tautan simbolik, bukan struktur direktori fisik.
Faheem Mitha
Maaf, saya sebenarnya tidak mencoba mengedit posting Anda. Edit yang disarankan diajukan sekarang.
Faheem Mitha
4

Anda juga dapat menggunakan readlink untuk menemukan jalur fisik ke direktori ini, lalu pergi satu direktori lebih tinggi:

cd $(readlink -f .)/..
dhasenan
sumber
3

Salah satu metode yang bisa Anda gunakan adalah menggunakan alias alih-alih symlink untuk membawa Anda ke ~ / a / really / long / path. Itulah metode yang saya gunakan, sejak itu saya cukup mengetik perintah surat sederhana 1/2 / et cetera alih-alih cd symlink

Wipqozn
sumber