Öffnen einer Datei vom Terminal aus nur durch Eingabe ihres Namens

15

Ich weiß, dass xdg-openvom Terminal eine Datei in der bevorzugten Anwendung des Benutzers wie folgt geöffnet wird:

xdg-open filename

Ich frage mich jedoch, wie ich eine Datei aus dem aktuellen Verzeichnis in ihrer Standardanwendung nur durch Eingabe von öffnen kann:

filename

gefolgt von Enternatürlich. Nichts mehr.

Radu Rădeanu
quelle
1
Möglicherweise könnten Sie die command_not_found_handle()Funktion ändern /etc/bash.bashrc, um eine Datei im selben Verzeichnis zu suchen und mit xdg zu öffnen?
Chronitis
1
Ich kann Ihr Risiko durch die Verwendung von Alias ​​verringern. alias open = "xdg-open" open ist einfach eine Variable. Sie können es so kurz machen, wie Sie möchten.
Donnerstag,

Antworten:

20

Verwenden Sie Ubuntus command-not-foundHook, wie in Command Not Found Magic angegeben . Es wird derzeit verwendet, um zu installierende Pakete vorzuschlagen. Informieren Sie sich, /usr/share/doc/command-not-found/READMEwelche auf Ihrem System installiert werden sollen.

Besser noch, da es nicht vom command-not-foundPaket abhängt , (re) implementieren Sie die integrierte Bash command_not_found_handle, um eine vorhandene xdg-openif- $1Datei zu erstellen und alle anderen Fälle an die vorherige Implementierung zu delegieren.

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

Gute Frage, nette Funktion.


Überlegen Sie es sich etwas genauer: Möglicherweise gefällt Ihnen die Funktion nicht so gut, wie Sie denken, es sei denn, Sie erweitern auch den bash_completionHandler. Stellen Sie sich vor, Sie möchten öffnen file-with-a-long-name.txtund dann einstellen

alias o='xdg-open'  

wird (ungefähr) vier Tastendrücke ausreichen:

o f<Tab><Enter>

Während das Eingeben des vollständigen Dateinamens mühsam ist - und das schließt ein Zurücksetzen gegenüber den unvermeidlichen Tippfehlern aus.

zwets
quelle