Membuka file dari terminal hanya dengan mengetik namanya

15

Saya tahu bahwa xdg-openakan membuka dari terminal file di aplikasi pilihan pengguna seperti ini:

xdg-open filename

Tapi saya bertanya-tanya bagaimana saya bisa membuka file dari direktori saat ini di aplikasi standarnya hanya dengan mengetik:

filename

diikuti oleh Enter, tentu saja. Tidak ada lagi.

Radu Rădeanu
sumber
1
Mungkin Anda dapat memodifikasi command_not_found_handle()fungsi /etc/bash.bashrcuntuk memeriksa dan membuka xdg file di direktori yang sama?
chronitis
1
Saya dapat mengurangi sebagian risiko Anda dengan menggunakan alias. alias open = "xdg-open" open adalah variabel sederhana. Anda dapat membuatnya sesingkat yang Anda inginkan.
rɑːdʒɑ

Jawaban:

20

Gunakan command-not-foundkait Ubuntu , seperti yang ditentukan dalam Command Not Found Magic . Saat ini digunakan untuk menyarankan paket untuk diinstal. Lihat /usr/share/doc/command-not-found/READMEyang harus diinstal pada sistem Anda.

Lebih baik lagi, karena tidak tergantung pada command-not-foundpaket, (kembali) mengimplementasikan Bash builtin command_not_found_handleuntuk melakukan xdg-openif $1adalah file yang ada, dan untuk mendelegasikan semua kasus lain ke implementasi sebelumnya.

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

Pertanyaan bagus, fitur bagus.


Memikirkannya lagi: Anda mungkin tidak suka fitur sebanyak yang Anda pikirkan, kecuali jika Anda juga memperpanjang bash_completionpawang. Bayangkan ingin membuka file-with-a-long-name.txt, lalu mengatur

alias o='xdg-open'  

akan membuat (sekitar) empat penekanan tombol sudah cukup:

o f<Tab><Enter>

Sedangkan mengetik nama file lengkap mengambil 26 membosankan - dan itu tidak termasuk backspacing atas kesalahan ketik yang tak terhindarkan.

zwets
sumber