Use o command-not-found
hook do Ubuntu, conforme especificado em Command Not Found Magic . Atualmente é usado para sugerir pacotes para instalação. Consulte /usr/share/doc/command-not-found/README
, que deve estar instalado no seu sistema.
Melhor ainda, porque não depende do pacote command-not-found
, (re) implementar o Bash incorporado em command_not_found_handle
para fazer um xdg-open
if é um arquivo existente e para delegar todos os outros casos para a implementação anterior.
# 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 ": command not found" 1>&2
return 127
}
# Define the new implementation, delegating to prev_handler.
command_not_found_handle () {
if [ -f "" ]; then
xdg-open ""
else
prev_command_not_found_handle "$@"
fi
}
Boa pergunta, excelente recurso.
Pensando mais: você pode não gostar do recurso tanto quanto você pensa, a menos que você também estenda o manipulador bash_completion
. Imagine querer abrir file-with-a-long-name.txt
e, em seguida, definir
alias o='xdg-open'
fará com que cerca de quatro pressionamentos de tecla sejam suficientes:
o f<Tab><Enter>
Considerando que digitar o nome completo do arquivo requer um tedioso 26 - e isso exclui o retrocesso sobre os erros inevitáveis.