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.


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).


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 .)/..

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.