การเปลี่ยนไดเรกทอรีหลัก (../) ด้วย symlink


32

ฉันมี symlink

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

เมื่อฉันทำ

cd ~/link
cd ..    

มันพาฉันไปที่

~

แต่ฉันต้องการไป

~/a/really/long

มีวิธีทำเช่นนี้หรือไม่?

ฉันกำลังใช้ทุบตี


1
คุณหมายถึงcd ~/a/really/long/pathแล้วcd ..ทำให้คุณอยู่ใน~ตอนนี้? ฉันทำซ้ำไม่ได้
Mikel

1
@Mikel: ไม่มีแรกสร้าง symlink ไป~/a/really/long/pathแล้ว cd ..ที่แล้ว คุณควรกลับมาอีกครั้งใน ~ (สมมติว่าเป็นจุดเริ่มต้นของคุณ)
Xodarap

การแก้ไขของฉันถูกต้องหรือไม่ ก่อนหน้านี้ฉันไม่เข้าใจคำถาม
มิเคล

คำตอบ:


38

Bash (เช่นเดียวกับ ksh, zsh และแม้กระทั่ง ash) การติดตามไดเรกทอรีการเปลี่ยนแปลงเพื่อที่cd /foo/bar && cd ..จะนำคุณไป/fooยังแม้ว่าbarจะเป็น symlink ผ่าน-Pตัวเลือกไปยังcdเพื่อละเว้นการเปลี่ยนแปลงที่ติดตามและทำตามโครงสร้างไดเรกทอรี“ กายภาพ”:

cd -P ..

ดูhelp cdหรือman builtinsเอกสารเกี่ยวกับ cdbuiltin หากคุณไม่ชอบคุณสมบัติการติดตามไดเรกทอรีคุณสามารถปิดได้ด้วยการset -Pทุบตี (เป็นset -o no_chase_linkzsh)


1
วิธีที่ฉันอ่านคำถาม OP ได้-Pหรือ-o physicalตั้งค่าแล้ว
Mikel

+1 แต่แนะนำลิงค์ไปยังหน้า man
Faheem Mitha

@ Mikel: ไม่คำถามบอกว่าเขากำลังติดตามลิงก์สัญลักษณ์ไม่ใช่โครงสร้างไดเรกทอรีทางกายภาพ
Faheem Mitha

ขออภัยฉันไม่ได้พยายามแก้ไขโพสต์ของคุณ ส่งการแก้ไขที่แนะนำแล้ว
Faheem Mitha

4

คุณยังสามารถใช้ readlink เพื่อค้นหาพา ธ ฟิสิคัลไปยังไดเร็กทอรีนี้จากนั้นไปหนึ่งไดเร็กทอรีที่สูงกว่า:

cd $(readlink -f .)/..

3

วิธีหนึ่งที่คุณสามารถใช้คือใช้นามแฝงแทน symlink เพื่อพาคุณไปยัง ~ / a / real / long / path นั่นเป็นวิธีที่ฉันใช้ตั้งแต่นั้นฉันก็สามารถพิมพ์คำสั่งตัวอักษร 1/2 / et cetera อย่างง่ายแทน cd symlink

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.