открыть файл, используя 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 
  • md5 Строка и файл разные
  • Как проверить, содержит ли строка подстроку в тире или золе?
  • Какой метод использует оболочка входа для чтения / etc / profile?
  • cp, запущенный из результатов кода, не может stat '/ tmp / somedir' работает в оболочке
  • Как использовать awk для печати только строк, содержащих 5 столбцов
  • Как отобразить все символы между двумя конкретными строками?
  • Разрешение php shell_exec () на Linux Ubuntu
  • Открытие файла PDF путем ввода его имени
  • cp или rsync, действительно ли CP это стоит?
  • Как запустить gnome javascript extensions (gjs) из терминала
  • Удаление всех изображений, сделанных с помощью конкретной камеры.
  • gunzip несколько сжатых файлов в другой каталог, не удаляя файлы .gz
  • Interesting Posts

    Отправка сигнала в системуd, чтобы остановить появление сообщений на консоли

    Обнаруживать, если переменная пуста

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

    Правильное имя хоста не изменяется во всей системе

    Как отключить правило в судерах?

    Как проверить значение Base64 для целого числа?

    Как заменить это регулярное выражение на пустое, используя sed

    резервное копирование: какие исправления для резервного копирования перед обновлением / переустановкой

    Как подсчитать количество слов каждого предложения в файле с помощью команды оболочки?

    Как сделать diff распечатать полный diff файла, если файл не существует?

    Настройка субдомена на сервере lighttpd

    Как установить разрешение в текстовых консолях (устранение неполадок при сбое каких-либо `vga = …`)

    Не удается найти пакет, находящийся в репозитории

    Установка libconfig без root

    Поймите, почему сценарий bash не выполняет основной?

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