Abrir un archivo desde la terminal solo escribiendo su nombre

15

Sé que xdg-opense abrirá desde la terminal un archivo en la aplicación preferida del usuario como esta:

xdg-open filename

Pero me pregunto cómo puedo abrir un archivo desde el directorio actual en su aplicación predeterminada solo escribiendo:

filename

seguido Enter, por supuesto. Nada mas.

Radu Rădeanu
fuente
1
Presumiblemente, ¿podría modificar la command_not_found_handle()función /etc/bash.bashrcpara verificar y abrir xdg un archivo en el mismo directorio?
cronitis
1
Puedo reducir algunos de sus riesgos mediante el uso de alias. alias open = "xdg-open" open es una variable simplemente. puedes hacerlo tan corto como quieras.
rɑːdʒɑ

Respuestas:

20

Use el command-not-foundgancho de Ubuntu , como se especifica en Command Not Found Magic . Actualmente se utiliza para sugerir paquetes para instalar. Consulte /usr/share/doc/command-not-found/READMEcuál debe instalarse en su sistema.

Mejor aún, debido a que no depende del command-not-foundpaquete, (re) implemente el Bash incorporado command_not_found_handlepara hacer un xdg-openif si $1es un archivo existente, y para delegar todos los demás casos a la implementación anterior.

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

Buena pregunta, característica ingeniosa.


Piénselo un poco más: es posible que no le guste la función tanto como cree, a menos que también extienda el bash_completioncontrolador. Imagina querer abrir file-with-a-long-name.txt, luego configurar

alias o='xdg-open'  

bastará (aproximadamente) con cuatro pulsaciones de teclas:

o f<Tab><Enter>

Mientras que escribir el nombre completo del archivo toma un tedioso 26, y eso excluye el retroceso sobre los inevitables errores tipográficos.

zwets
fuente