Use o command-not-found
gancho do Ubuntu , conforme especificado em Command Not Found Magic . Atualmente, é usado para sugerir pacotes para instalação. Consulte o /usr/share/doc/command-not-found/README
que deve ser instalado no seu sistema.
Melhor ainda, porque não depende do command-not-found
pacote, (re) implemente o Bash interno command_not_found_handle
para fazer um xdg-open
if se $1
for um arquivo existente e delegar todos os outros casos à 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 "$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
}
Boa pergunta, característica bacana.
Pensando um pouco mais: você pode não gostar tanto do recurso quanto pensa, a menos que também estenda o bash_completion
manipulador. Imagine querer abrir file-with-a-long-name.txt
e depois definir
alias o='xdg-open'
fará (aproximadamente) quatro pressionamentos de tecla suficientes:
o f<Tab><Enter>
Considerando que digitar o nome completo do arquivo leva um 26 tedioso - e isso exclui o retrocesso nos erros inevitáveis.
command_not_found_handle()
função/etc/bash.bashrc
para verificar e abrir xdg-arquivo no mesmo diretório?