Если в ударе, я делаю"set -P
"затем удар следует за "физической структурой каталогов" при выполнении"pwd
"и"cd ..
"и т.д., а не "логическая единица", которая могла бы быть определена через символьные ссылки. К сожалению, удар все еще не повинуется физической структуре каталогов для завершения имени файла. Как я могу заставить удар уважать мои полномочия по этой проблеме?
Спасибо!
|> ouglas
P.S. К сожалению, та же проблема теперь сокрушила Emacs для вводных файлов и т.д. Если кто-либо также знает, как также сказать Emacs уважать мою физическую структуру каталогов, то я также хотел бы знать ответ на это.
P.P.S. Я не знаю, кто решил, что наличие некоторых программ пытается понять Вашу "логическую структуру каталогов", была хорошая идея, но это не! Не, если Вы не можете убедить каждую программу в мире делать вещи, этот путь, начиная с наличия некоторых программ используют Вашу физическую структуру каталогов и наличие другого использования, Ваша логическая структура каталогов является рецептом для беспорядка и раздражения.
Спасибо за предыдущие ответы. Но, на самом деле, как оказалось,"set -P
"делает задание очень хорошо совершенно отдельно, мятежник мой исходный запрос по проблеме.
Когда я первоначально испытывал это, я, должно быть, так или иначе получил удар в запутанное состояние, где завершение имени файла не уважало"set -P
"установка. Но теперь с новым ударом, это все хорошо работает".set -P
"кажется, помещает удар в "физическую структуру каталогов" режим последовательно всюду по удару.
Это могло бы получить Вас часть пути там.
Использовать type -a _expand
и сравните его вывод с функцией ниже. Существующая функция должна соответствовать части, которая это после первого else
ниже. В противном случае можно перенести то, что Вы имеете во внешнем if...else
поскольку Вы видите его здесь.
Вставьте его при подсказке Bash для тестирования. Затем если Вы удовлетворены, вставьте его Ваш ~/.bashrc
файл для переопределения функционального определения в /etc/bash_completion
(вместо того, чтобы редактировать его непосредственно).
_expand ()
{
if [[ $- == *P* && -L "$cur" && -d "$cur" ]]; then
cd "$cur";
eval cur="$PWD";
cd - > /dev/null;
else
if [[ "$cur" == \~*/* ]]; then
eval cur=$cur;
else
if [[ "$cur" == \~* ]]; then
cur=${cur#\~};
COMPREPLY=($( compgen -P '~' -u $cur ));
[ ${#COMPREPLY[@]} -eq 1 ] && eval COMPREPLY[0]=${COMPREPLY[0]};
return ${#COMPREPLY[@]};
fi;
fi;
fi
}
Это осуществляет контрейлерные перевозки на функции расширения тильды заполнения клавишей Tab Bash.
Теперь можно сделать
ls -l symdir<TAB>
и Вы будете видеть
ls -l /dest/dir<CURSOR>