Użyj command-not-found
haka Ubuntu , jak określono w Command Command Found Magic . Obecnie służy do sugerowania pakietów do zainstalowania. Sprawdź, /usr/share/doc/command-not-found/README
które powinny być zainstalowane w twoim systemie.
Jeszcze lepiej, ponieważ nie zależy to od command-not-found
pakietu, (ponownie) zaimplementuj wbudowane Bash, command_not_found_handle
aby wykonać xdg-open
if $1
jest istniejącym plikiem i przekazać wszystkie pozostałe przypadki do poprzedniej implementacji.
# 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
}
Dobre pytanie, fajna funkcja.
Zastanówmy się nad tym: może ci się nie podobać tak, jak myślisz, chyba że rozszerzysz również bash_completion
program obsługi. Wyobraź sobie, że chcesz otworzyć file-with-a-long-name.txt
, a następnie ustawić
alias o='xdg-open'
wystarczą (około) cztery naciśnięcia klawiszy:
o f<Tab><Enter>
Podczas gdy wpisywanie pełnej nazwy pliku zajmuje nużące 26 - i wyklucza to odstępy wsteczne w stosunku do nieuniknionych literówek.
command_not_found_handle()
funkcję w/etc/bash.bashrc
celu sprawdzenia i xdg-otwórz plik w tym samym katalogu?