открыть файл, используя CDPATH и символическую ссылку

Чтобы быстро перемещаться, я добавил путь к CDPATH, который содержит символические ссылки в разных местах. Я сделал это, добавив следующую строку в .bashrc:

export CDPATH=~/symlinks 

При работе с каталогами все в порядке, и я могу получить доступ к символическим папкам со всего мира.

Например, если я это сделаю:

 $ ln -s ~/path/to/folder ~/symlinks/folder 

Тогда я могу просто написать:

 $ cd folder 

чтобы войти в символическую папку, независимо от моего текущего каталога.

Тем не менее, когда я создаю символическую ссылку на файл, а затем пытаюсь открыть ее с помощью редактора, я получаю пустой файл, если я не в директории symlink.

Например, если я это сделаю:

 $ ln -s ~/path/to/file/filename ~/symlinks/filename 

а затем напишите:

 $ kwrite filename 

Я получаю пустой файл, если я не в папке symlink.

Я хочу получить доступ к файлу из любого места, хотя, как я могу это достичь?

  • Как создать вопрос подтверждения в Linux?
  • Первая строка сценария
  • сценарий оболочки для самоубийства
  • Есть ли оболочка JavaScript?
  • Другие альтернативы команды столбца
  • Ошибка недействительного идентификатора при выполнении сценария оболочки
  • После небольшого изменения кода «awk» печатает заголовок и пустые строки (не повторяется заголовок)
  • Почему «$ sudo echo 'yo» работает, хотя эхо - это встроенная в оболочку функция?
  • 2 Solutions collect form web for “открыть файл, используя CDPATH и символическую ссылку”

    Простой ответ заключается в том, что вы не можете.

    Что делает CDPATH, так это то, что если вы наберете «папку cd», сначала проверьте, существует ли «папка» в вашем CDPATH; если нет, он будет проверять папку, в которой вы сейчас находитесь. Но это характерно для изменений каталога; kwrite не проверяет CDPATH и AFAIK, нет возможности настройки, чтобы он выглядел в любом конкретном каталоге.

    Вы можете сделать небольшой скрипт оболочки, который заменяет kwrite, например:

     #!/bin/sh FILE=$1 if [ -f "$HOME/symlinks/$FILE" ] then kwrite "HOME/symlinks/$FILE" else kwrite "$FILE" fi 

    Затем запустите сценарий (который вы можете назвать, например, «akwrite») вместо прямого запуска kwrite.

    Вы не можете.

    Что вы можете сделать, так это определить ярлыки как переменные оболочки.

     fn=~/path/to/file/filename kwrite $fn 

    В zsh вы можете избежать столкновений имен с переменными оболочки вместо использования хешей каталогов. Это псевдонимы для имен файлов, которые расширяются после ~ (например, имен пользователей). Несмотря на их имена, эти псевдонимы не должны указывать на каталог, они могут быть расширены до произвольного текста.

     hash -d fn=~/path/to/file/filename kwrite ~fn 
    Interesting Posts

    Почему ssh -nq -t не может видеть переменную окружения?

    Самый легкий способ запуска GUI-приложений в Linux?

    Как использовать –auth-nocache с правильным TUN / TAP в openvpn?

    Функциональность Dead key с компоновкой US-Intl в Fedora 23

    Сохранение изменений в файле resolv.conf при перезагрузке с помощью resolvconf

    Почему эта зависимость ИЛИ не работает, как я ожидал

    не может создать специальный файл / dev / pts / 0

    GUI-библиотека или диспетчер окон с использованием HTML

    Сделать yaourt не переустановить, если он уже установлен

    Команда перенаправления неожиданна

    Как использовать поиск soundex в поиске файлов?

    Команда, чтобы увидеть, находится ли слово в списке файлов и выводит, сколько файлов оно находится в

    cp SOMEFILE .. копирует в другой каталог после cd'ing через символическую ссылку

    В чем разница между различными режимами черепицы в KWin и как их использовать?

    Lvextend не находит свободного места

    Linux и Unix - лучшая ОС в мире.