Следующая функция добавляет $PWD/
к любому относительному пути, прежде чем передать его в _files
, что является обычной функцией завершения для файлов.
_absolute_files () {
local expansion=$PREFIX$SUFFIX; expansion=${(e)expansion}
if [[ "${expansion%%/#}" != "${expansion:a}" ]]; then
PREFIX="\$PWD/$PREFIX"
fi
_files "$@";
}
Это работает во многих распространенных случаях, включая распознавание путей, начинающихся с ~/
и таких как абсолютные, а также путей, выраженных с помощью переменной. Я не думал обо всех возможных взаимодействиях с расширением (, например. подстановочных знаков )и с встраиванием.