Я использую оболочку удара и использую много гибких ссылок. Одно незначительное, но раздражающее поведение, которое я наблюдаю, является тем, что я должен поразить вкладку дважды для завершения названия гибкой ссылки на каталог. например.
$ mkdir dir1
$ ln -s dir1 link1
Используя автозавершение, ввод, "CD d" производит "cd dir1 /", но ввод "CD l" производит "cd link1", когда я действительно хотел бы, чтобы это произвело "cd link1 /"
Я думаю, что Вы ищете readline переменные mark-directories
, и mark-symlinked-directories
. Просто добавьте следующее к Вашему ~/.inputrc
файл и перезагрузите его с Ctrl x Ctrl r .
set mark-directories on
set mark-symlinked-directories on
, Чтобы гарантировать, что Ctrl x Ctrl r работает, у Вас должно также быть следующее в Вашем ~/.inputrc
. (См. этот вопрос .)
"\C-x\C-r": re-read-init-file
Кстати, если Вы хотите перечислить текущие настройки Вашего readline переменные, используйте следующую команду: (См. также man bash
для получения дополнительной информации.)
bind -v
Вкладка здесь действует как автоматическое полное, все, что она делает искать соответствующие файлы и каталоги там для завершения команды.
Насколько я знаю в ударе, Вы не можете сказать ему делать другое мудрое, можно попытаться использовать другие оболочки, возможно, они могут.
Однако нет действительно различия. так как обе команды получат Вас к тому же каталогу...
обновление
Согласно здесь Вам может использовать это для CD к каталогу порождения:
Вот способ измениться на цель данной символьной ссылки:
cd -P .
Вот то, как это работает
user@host:~/tmp$ ls @a b user@host:~/tmp$ file a a: symbolic link to `b/c' user@host:~/tmp$ cd a user@host:~/tmp/a$ cd . user@host:~/tmp/a$ cd -P .a user@host:~/tmp/b/c$
Можно исказить его к
cdl='cd -P'
Из руководства удара:
-P опция говорит для использования физической структуры каталогов вместо того, чтобы перейти по символьным ссылкам