Это похоже на ответ @ignis, но я уменьшил шаги. Он работает только, если файл является символической ссылкой на другую. Вы можете легко получить исходный путь к файлу, если на нем есть тысячи символических ссылок. [ ! d0]
symlnk -> symlnk -> symlnk -> symlnk -> symlnk -> symlnk -> symlnk -> symlnk -> symlnk -> symlnk -> symlnk -> symlnk -> symlnk -> symlnk -> symlnk -> symlnk -> symlnk -> .................--> исходный файл
$ which vi
/usr/bin/vi
$ ls -l $(which vi)
lrwxrwxrwx 1 root root 20 Feb 22 20:14 /usr/bin/vi -> /etc/alternatives/vi # So /usr/bin/vi is an symlink to /etc/alternatives/vi
$ dpkg -S $(readlink -f $(which vi))
vim-tiny: /usr/bin/vim.tiny
Итак, vi принадлежит к пакету vim-tiny.
readlink -f дает вам канонический путь к файлу (исходный путь к файлу).