Use el command-not-found
gancho de Ubuntu , como se especifica en Command Not Found Magic . Actualmente se utiliza para sugerir paquetes para instalar. Consulte /usr/share/doc/command-not-found/README
cuál debe instalarse en su sistema.
Mejor aún, debido a que no depende del command-not-found
paquete, (re) implemente el Bash incorporado command_not_found_handle
para hacer un xdg-open
if si $1
es un archivo existente, y para delegar todos los demás casos a la implementación 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
}
Buena pregunta, característica ingeniosa.
Piénselo un poco más: es posible que no le guste la función tanto como cree, a menos que también extienda el bash_completion
controlador. Imagina querer abrir file-with-a-long-name.txt
, luego configurar
alias o='xdg-open'
bastará (aproximadamente) con cuatro pulsaciones de teclas:
o f<Tab><Enter>
Mientras que escribir el nombre completo del archivo toma un tedioso 26, y eso excluye el retroceso sobre los inevitables errores tipográficos.
command_not_found_handle()
función/etc/bash.bashrc
para verificar y abrir xdg un archivo en el mismo directorio?