Ouvrir un fichier à partir du terminal uniquement en tapant son nom

15

Je sais que xdg-openva ouvrir depuis le terminal un fichier dans l'application préférée de l'utilisateur comme ceci:

xdg-open filename

Mais je me demande comment puis-je ouvrir un fichier du répertoire actuel dans son application par défaut uniquement en tapant:

filename

suivi Enter, bien sûr. Rien de plus.

Radu Rădeanu
la source
1
Vraisemblablement, vous pouvez modifier la command_not_found_handle()fonction /etc/bash.bashrcpour vérifier et ouvrir xdg un fichier dans le même répertoire?
chronite
1
Je peux réduire certains de vos risques en utilisant un alias. alias open = "xdg-open" open est une variable simplement. vous pouvez le rendre aussi court que vous le souhaitez.
rɑːdʒɑ

Réponses:

20

Utilisez le command-not-foundcrochet d'Ubuntu , comme spécifié dans Command Not Found Magic . Il est actuellement utilisé pour suggérer des packages à installer. Reportez-vous à celui /usr/share/doc/command-not-found/READMEqui doit être installé sur votre système.

Mieux encore, car cela ne dépend pas du command-not-foundpackage, (re) implémentez le Bash command_not_found_handlepour faire un xdg-openif $1est un fichier existant, et pour déléguer tous les autres cas à l'implémentation précédente.

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

Bonne question, fonctionnalité astucieuse.


En y réfléchissant un peu plus: vous n'aimerez peut-être pas la fonctionnalité autant que vous le pensez, sauf si vous étendez également le bash_completiongestionnaire. Imaginez vouloir ouvrir file-with-a-long-name.txt, puis définir

alias o='xdg-open'  

suffira (environ) de quatre touches:

o f<Tab><Enter>

Tandis que la saisie du nom de fichier complet prend un fastidieux 26 - et cela exclut le retour arrière sur les fautes de frappe inévitables.

zwets
la source