Нет. Но вы можете создать оболочку libreoffice, которая будет принимать каждый аргумент, являющийся символической ссылкой, и превращать его в $(readlink -f $the_symlink)
. Затем вы можете настроить файловый менеджер на открытие файлов libreoffice через эту оболочку.
лоурэпер:
#!/bin/bash -e
args=()
for a; do
case $a in
-*) args+=("$a");; #skip flags (your file names don't start with -, right?)
*) if ! [ -L "$a" ]; then #not a link
args+=("$a")
else #link => target
args+=( "$( readlink -f "$a")" )
fi
;;
esac
done
libreoffice "${args[@]}"
Теперь, если вы chmod +x lowrapper
поместите его в какой-либо каталог вашего PATH, а затем измените программу-обработчик ваших файлов libreoffice с libreoffice
на lowrapper
, тогда libreoffice будет открывать цели ссылок вместо ссылок..
Это ответ о zsh в целом. Не знаю о -мой -зш.
По умолчанию zsh раскрывает псевдонимы перед попыткой завершения. Обычно это правильно. Как следствие, связывание функции завершения с именем псевдонима имеет эффект только в том случае, если вы игнорируете псевдоним, например, после\foo
Tab .
Вы можете отключить это поведение с помощьюsetopt complete_aliases
. Но вы потеряете завершение для всех псевдонимов, для которых вы не настроили завершение явно.
Если вы хотите иметь особый случай для foo
, лучше всего вместо этого сделать его функцией.
function foo {
path/to/my/program "$@"
}
Это не объясняет, почему печатается _foo
. Может быть, какая-то о -моя -зш странность.