Відкриття файлу лише з терміналу, ввівши його ім'я


15

Я знаю, що xdg-openвідкриється з терміналу файл у бажаному додатку користувача, як це:

xdg-open filename

Але мені цікаво, як я можу відкрити файл із поточного каталогу в його програмі за замовчуванням лише ввівши:

filename

далі Enter, звичайно. Нічого більше.


1
Імовірно, ви могли змінити command_not_found_handle()функцію /etc/bash.bashrcдля перевірки та відкриття файлу xdg у тому самому каталозі?
хроніт

1
Я можу зменшити частину вашого ризику, використовуючи псевдонім. псевдонім open = "xdg-open" open - це змінна просто. ви можете зробити це так коротко, як вам захочеться.
rɑːdʒɑ

Відповіді:


20

Використовуйте command-not-foundгачок Ubuntu , як зазначено в Command Not Found Magic . В даний час використовується для пропонування пакетів для встановлення. Дивіться, /usr/share/doc/command-not-found/READMEщо слід встановити у вашій системі.

Ще краще, оскільки це не залежить від command-not-foundпакету, (повторно) реалізуйте вбудований Bash, command_not_found_handleщоб зробити, xdg-openякщо $1це вже існуючий файл, і делегувати всі інші випадки до попередньої реалізації.

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

Хороше запитання, вишукана риса.


Продумавши це ще трохи: функція може вам не сподобатися так сильно, як ви думаєте, якщо ви також не подовжите bash_completionобробник. Уявіть, що хочете відкрити file-with-a-long-name.txt, а потім налаштуйте

alias o='xdg-open'  

зробить (приблизно) чотири натискання клавіш:

o f<Tab><Enter>

Тоді як введення повного імені файлу вимагає втомливих 26 - і це виключає зворотні пробіли через неминучі помилки друку.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.