Intereting Posts
мне нужно установить драйверы материнских плат и графических карт ..? если да, то как ..? Что происходит, когда приостановлено? Как узнать, что мои системные обновления заслуживают доверия? Сделайте порт USB, притворяясь USB-накопителем Воспроизведение звука через два или более выходов / устройств Как заблокировать определенную версию пакета для установки aptitude (или apt-get)? почему kdialog не отправляет уведомление правильно? Как получить этот рабочий стол GNOME в Ubuntu 16.04? Одновременно просматривать два текстовых файла Недостающее ПО графического интерфейса процессора? Как установить драйверы для Intel 82915G / GV / 910GL? SSH доступен только в локальной сети Как исправить рендеринг шрифтов (без сглаживания) в глобальном меню Unity и поиске? Как проверить установленную версию программы? Как сделать доступным доступ к LAMP-серверу из Интернета?

Открытие файла с терминала только путем ввода его имени

Я знаю, что xdg-open откроет из терминала файл в предпочтительном приложении пользователя, например:

 xdg-open filename 

Но мне интересно, как я могу открыть файл из текущего каталога в приложении по умолчанию, только набрав:

 filename 

а затем Enter , конечно. Больше ничего.

Используйте Ubuntu command-not-found крючок, как указано в Command Not Found Magic . В настоящее время он используется, чтобы предлагать пакеты для установки. См. /usr/share/doc/command-not-found/README которые должны быть установлены в вашей системе.

Еще лучше, потому что он не зависит от command-not-found пакета, (re) реализует Bash builtin command_not_found_handle чтобы сделать xdg-open если $1 является существующим файлом и делегировать все остальные случаи предыдущей реализации.

 # Save the existing code for the handler as prev_command_not_found_handle. # Bit of a hack, as we need to work around bash's lack of lexical closure, # and cover the case when it is not defined at all. eval "prev_$(declare -f command_not_found_handle)" >& /dev/null \ || prev_command_not_found_handle () { echo "$1: command not found" 1>&2 return 127 } # Define the new implementation, delegating to prev_handler. command_not_found_handle () { if [ -f "$1" ]; then xdg-open "$1" else prev_command_not_found_handle "$@" fi } 

Хороший вопрос, отличная особенность.


Подумайте над этим: вам может не понравиться эта функция так сильно, как вы думаете, если вы также не расширите обработчик bash_completion . Представьте, что вы хотите открыть file-with-a-long-name.txt , а затем установить

 alias o='xdg-open' 

будет делать (около) четыре нажатия клавиш достаточно:

 o f<Tab><Enter> 

В то время как ввод полного имени файла занимает утомительное 26 – и это исключает возможность возврата по неизбежным опечаткам.