Вы можете проверить, где установлено устройство, используя команду 'df -h'. Затем вы можете перейти в эту папку и получить доступ к содержимому этого устройства.
xdg-open
предназначен для запуска программы просмотра и ожидания ее завершения. Он не предназначен для работы в фоновом режиме, и, как вы уже выяснили, вряд ли будет работать очень хорошо. У вас была бы та же проблема со старой системой mailcap, которая также запускала программы на переднем плане.
Можно изменить функцию оболочки, чтобы она всегда открывалась в новом терминале, но это, скорее всего, приведет к тому, что у вас будет большое количество бесполезных терминалов. Чтобы сделать вашу функцию более полезной и работать так, как вы хотите, вы могли бы сделать что-то вроде этого:
o () {
for i in "$@"
do
mimetype=$(xdg-mime query filetype "$i")
prog=$(xdg-mime query default "$mimetype")
if grep -qs Terminal=true "/usr/share/applications/$prog"
then
xdg-open "$i"
else
xdg-open "$i" >/dev/null 2>/dev/null &
fi
done
}
Это проверит, требуется ли вашей программе терминал, и если да, вызовет его на переднем плане; в противном случае он будет вызывать его в фоновом режиме. Однако в настоящее время он не обрабатывает URL-адреса или пользовательские приложения, и вам необходимо отредактировать его соответствующим образом, чтобы ваша система обрабатывала это. Тем не менее, это отправная точка, от которой вы можете отталкиваться.