открыть файл, используя 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 
  • Переименовать файл, динамически содержащий пробелы
  • ловушка на выходе команды не работает, если она не используется в функции или под-оболочке
  • Использование cat для модификации ~ / .bash_profile, кажется, удаляет __git_ps1
  • Как печатать имя переменной вместо сценария оболочки значения?
  • Shell показывает, что у меня есть почта, но как я могу ее проверить
  • Найти не хочет найти * .sh на определенном уровне
  • Неверная корневая оболочка в файле / etc / passwd
  • Передача переменных оболочки в оператор SQL
  • Рекурсивно удалять файлы с именем «WIDTHxLENGTH» в имени в каталоге
  • Как работать с float в скрипте Shell?
  • Предоставление некоторым пользователям только SSH и доступа к оболочке с ограниченным использованием ресурсов
  • Linux и Unix - лучшая ОС в мире.