Aprire un file dal terminale solo digitandone il nome


15

So che xdg-openaprirà dal terminale un file nell'applicazione preferita dell'utente in questo modo:

xdg-open filename

Ma mi chiedo come posso aprire un file dalla directory corrente nella sua applicazione predefinita solo digitando:

filename

seguito Enter, ovviamente. Niente di più.


1
Presumibilmente potresti modificare la command_not_found_handle()funzione /etc/bash.bashrcper verificare e aprire un file nella stessa directory?
cronite,

1
Posso ridurre alcuni dei tuoi rischi usando l'alias. alias open = "xdg-open" open è semplicemente una variabile. puoi renderlo più corto che vuoi.
1313

Risposte:


20

Usa l' command-not-foundhook di Ubuntu , come specificato in Command Not Found Magic . Attualmente è usato per suggerire pacchetti da installare. Fare riferimento a /usr/share/doc/command-not-found/READMEquale dovrebbe essere installato sul proprio sistema.

Meglio ancora, poiché non dipende dal command-not-foundpacchetto, (ri) implementare il built-in di Bash command_not_found_handleper fare un xdg-openif se $1è un file esistente e delegare tutti gli altri casi all'implementazione precedente.

# 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
}

Bella domanda, bella funzionalità.


Pensandoci un po 'di più: la funzionalità potrebbe non piacerti tanto quanto pensi, a meno che non estenda anche il bash_completiongestore. Immagina di voler aprire file-with-a-long-name.txt, quindi impostare

alias o='xdg-open'  

renderà (circa) quattro le pressioni dei tasti sufficienti:

o f<Tab><Enter>

Considerando che digitare il nome completo del file richiede un noioso 26 - e questo esclude il backspacing sugli inevitabili errori di battitura.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.