仅通过输入文件名称即可从终端打开文件

仅通过输入文件名称即可从终端打开文件

我知道xdg-open将从终端打开用户首选应用程序中的文件,如下所示:

xdg-open filename

但我想知道如何才能通过键入以下内容在默认应用程序中从当前目录打开文件:

filename

接下来Enter当然是。仅此而已。

答案1

使用 Ubuntu 的command-not-found钩子,如未找到命令魔法。它目前用于建议要安装的软件包。请参阅/usr/share/doc/command-not-found/README应该在您的系统上安装哪些软件包。

更好的是,因为它不依赖于command-not-found包,所以(重新)实现 Bash 内置函数来执行if是现有文件的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 分钟 - 并且这还不包括使用退格键来掩盖不可避免的拼写错误。

相关内容