открыть файл, используя 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.

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

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 
  • Как выполнить скрипт bash в нескольких каталогах?
  • сеанс .ksh зависает после того, как он неактивен
  • Альтернативные способы отображения файлов, исполняемых всеми
  • Почему команда ls медленно прерывает работу в каталоге NFS с большим количеством файлов?
  • Можно ли использовать shebang для самого источника файла в текущей среде bash?
  • Список сведений о файлах / каталогах с пробелами
  • Как удалить значения $ VAR2 из $ VAR1 и вывести оставшиеся значения в $ VAR3?
  • Что такое оболочка по умолчанию для .sh в AIX?
  • Ошибка захвата LS в файл
  • Как получить записи таблицы psql в сценарии оболочки?
  • Запись в интерактивную подсказку
  • Interesting Posts

    Безопасно ли запускать инструменты GPG в x11?

    SSH-туннель через MySQL Workbench

    У экземпляра Debian два ядра после установки драйверов Intel PCIe SSD – один с черным экраном

    Какие строки следует искать в /var/log/auth.log?

    xdg-open открывает другое приложение, указанное в запросе xdg-mime

    Вывод данных напрямую в хранилище MTP / FTP?

    Почему «bind ~ / .inputrc» приводит к тому, что мой правый ключ косой черты ('/') отключается до повторного входа?

    OOM – убивает процесс от пользователя с наибольшим потреблением памяти?

    Как быстро процесс чтения / записи виртуальной памяти?

    Невозможно запустить Steam игры с помощью optirun (Bumblebee)

    Что делает переменная среды рабочего стола Enlightenment (E17) «PANTS = ON»?

    Сравнение первого столбца в разных файлах

    Разрешение экрана изменилось и не может вернуться в Linux Mint

    Есть ли способ связать TAB так, чтобы он выводил 2 пробела?

    Раскройте файлы, когда rsync'in

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