Следующее, адаптированное из unix stackexchange (в этом случае нам не нужно заменять '+' на ''), будет работать с любой оболочкой POSIX, а не только с bash (например, dash):
current_nautilus_path=$(echo "$NAUTILUS_SCRIPT_CURRENT_URI" | sed -e 's/%/\\x/g' -e 's_^file://__' | xargs -0 printf "%b")
В качестве альтернативы, если bashisms в порядке, но вы не хотите вызывать какие-либо внешние программы, небольшое изменение решения Джестера / Денниса Уильямсона даст вам путь безпрефикс "file:":
percent_decoded_uri=$(printf "${NAUTILUS_SCRIPT_CURRENT_URI//%/\\x}")
current_nautilus_path=${percent_decoded_uri#file://}
Наконец, если вызов python из скрипта не беспокоит вас, я настоятельно рекомендую решение из askubuntu , предложенное Glutanimate, так как онообеспечивает поддержку произвольных протоколов gvfs (например, sftp) бесплатно:
current_nautilus_path=$(python -c 'import gio,sys; print(gio.File(sys.argv[1]).get_path())' "$NAUTILUS_SCRIPT_CURRENT_URI")