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

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

  • Сценарий оболочки для чтения вывода команды
  • Время вилки против поточной системы
  • Пуленепробиваемый метод для работы с повторяющимися тиражами
  • Как я могу sudo su и сменить каталог сразу после?
  • stderr над ssh -t
  • cp с единственным аргументом, содержащим подстановочные знаки
  • Получите внешний IP-адрес в оболочке без выкопания в 2016 году?
  • Возможность легко переключаться между каталогами в разных областях
  • 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

    Выполнить скрипт bash так, чтобы каждая команда была индивидуально доступна в истории команд оболочки

    Поиск файлов внутри нескольких подкаталогов и zip-каталогов

    Включение службы systemd с предварительным

    Как предотвратить использование HID-устройства на некоторых USB-портах

    Запретить yum проверять наличие обновлений при установке нового пакета

    Есть ли какое-либо преимущество в использовании аргумента -j2 при создании Linux-систем в VirtualBox?

    гость владеет NIC, хостом и другими гостями через NAT

    brctl Не работает нормально с мостом eth0 и at0

    Каковы эти строки памяти? Что они делают?

    Пиннинг Debian – используйте стабильную, но при необходимости установите из теста / нестабильно | Также установите отступы из стабильных, backports, когда они доступны

    Отключить цвет в bash для журналов

    RHEL5 / 6/7: Если NM_CONTROLLED не установлен, что является значением по умолчанию?

    Где должен быть установлен grub, MBR или корень? рабочий стол по умолчанию для настольных компьютеров

    Почему существует множество способов измерения использования диска?

    Команда для печати использования ЦП / ОЗУ в течение продолжительности другой команды / сценария

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