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.


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.