Перехід у каталог, пов'язаний посиланням


12

Коли я cdпосилаю, мій поточний шлях має префікс шлях до посилання, а не шлях до каталогу, на який посилання посилається. Напр

~/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$

Я хотів би, щоб мій поточний шлях змінився на шлях пов'язаного режиму, щоб я міг також працювати з батьківськими dir зв'язаного dir. Окрім lsпосилання, щоб дізнатись про зв’язаний режисер, а потім cdу нього, які ще простіші способи досягти цього? Наприклад, після cdпереходу на посилання, як ви змінюєте свій поточний шлях на шлях пов'язаного режиму?

Відповіді:


22

З оболонкою POSIX ви можете використовувати -Pопцію вбудованого компакт-диска :

cd -P <link>

З bash, від man bash:

Опція -P говорить використовувати фізичну структуру каталогів замість наступних символьних посилань (див. Також опцію -P до встановленої вбудованої команди)


7
Це можна зробити cd -P .після оригіналу cd.
ctrl-alt-delor

5

Ви можете використовувати, readlinkщоб визначити, куди посилаються ваші посилання, і вказати цей вихід як ціль вашого cd.

cd "$(readlink <link>)"

У разі додаткових посилань, що вказують на символьні посилання, readlinkбуде просто вказано ціль, якщо ви не вкажете один із його варіантів, наприклад, слідувати посиланнями на цілі канонічного файлу readlink -f <link>.

readlink - значення друку символічного посилання або канонічного імені файлу

-f, --моніалізувати канонізувати, слідуючи
за кожним символьним посиланням у кожному компоненті даної назви рекурсивно; всі, крім останнього компонента, повинні існувати

-e, --канонізувати існуючу
канонізацію, дотримуючись кожне символьне посилання в кожному компоненті даної назви рекурсивно, всі компоненти повинні існувати

-m, --канонізувати відсутні файли
, дотримуючись кожне символьне посилання у кожному компоненті даного імені рекурсивно, без вимог щодо існування компонентів


5

Оболонки, подібні до Korn, відслідковують символічні посилання на шляху до поточного каталогу (це відоме як логічне відстеження поточного каталогу). Якщо ви хочете , щоб розгорнути всі символічні посилання, передати параметр -Pдо cdвбудованої команді (для фізичної поточного відстеження каталогів):

cd -P logic

Якщо ви знаходитесь в каталозі, до якого ви зверталися через символічне посилання, і хочете переключити поточний каталог відслідковується на шлях із розширеними символічними посиланнями, запустіть

cd -P .

Якщо ви хочете роздрукувати шлях до поточного каталогу із розширеними символічними посиланнями, запустіть pwd -P. Якщо ви хочете вимкнути логічне відстеження, запустіть set -P; в zsh, бігти set -wабо setopt chase_links.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.