Используйте command-not-found
хук Ubuntu , как указано в Command Not Found Magic . В настоящее время он используется для предложения пакетов для установки. Обратитесь к тому, /usr/share/doc/command-not-found/README
который должен быть установлен в вашей системе.
Еще лучше, поскольку он не зависит от command-not-found
пакета, (пере) внедрив встроенную command_not_found_handle
функцию Bash, чтобы сделать существующий файл xdg-open
if $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 - и это исключает возврат по неизбежным опечаткам.
command_not_found_handle()
функцию,/etc/bash.bashrc
чтобы проверить и открыть файл xdg в том же каталоге?