Есть ли способ заставить трейлинг '/' появляться при использовании cd с каталогом символьных ссылок?
Я использую оболочку bash и использую множество мягких ссылок. Я наблюдаю одно незначительное, но раздражающее поведение: мне нужно дважды нажать на вкладку, чтобы завершить имя мягкой ссылки на каталог. например
$ mkdir dir1
$ ln -s dir1 link1
Используя автозаполнение, введя "cd d", вы получите "cd dir1/", но, введя "cd l", вы получите "cd link1", когда мне действительно хотелось бы, чтобы "cd link1/"
2 ответа
Я думаю, что вы ищете переменные readline mark-directories
, а также mark-symlinked-directories
, Просто добавьте следующее к вашему ~/.inputrc
файл и перезагрузите его с помощью CtrlxCtrlr.
set mark-directories on
set mark-symlinked-directories on
Чтобы убедиться, что CtrlxCtrlr работает, вы также должны иметь следующее ~/.inputrc
, (См. Этот вопрос.)
"\C-x\C-r": re-read-init-file
Кстати, если вы хотите отобразить текущие настройки переменных readline, используйте следующую команду: (См. Также man bash
Больше подробностей.)
bind -v
Вкладка здесь действует как автозаполнение, все, что она делает, - это поиск соответствующих файлов и каталогов для завершения вашей команды.
Насколько я знаю, в Bash вы не можете сказать это делать по-другому, вы можете попробовать использовать другие оболочки, возможно, они могут.
Однако на самом деле нет разницы. поскольку обе команды доставят вас в один и тот же каталог...
Обновить
В соответствии с здесь вы можете использовать это, чтобы перейти к каталогу родителей:
Вот способ перехода к цели данной символической ссылки:
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'
Из руководства по bash:
Опция -P говорит об использовании физической структуры каталогов вместо следующих символических ссылок