名前を入力するだけで端末からファイルを開く


15

私はそれxdg-openが端末から次のようなユーザーの好みのアプリケーションでファイルを開くことを知っています:

xdg-open filename

しかし、次のように入力するだけで、既定のアプリケーションの現在のディレクトリからファイルを開くにはどうすればよいのでしょうか。

filename

続いてEnter、もちろん。これ以上何もない。


1
おそらく、同じディレクトリ内のファイルをチェックしてxdg-open するようにcommand_not_found_handle()関数を変更でき/etc/bash.bashrcますか?
慢性炎

1
エイリアスを使用することで、リスクを軽減できます。alias open = "xdg-open" openは単純に変数です。必要なだけ短くすることができます。
rɑːdʒɑ

回答:


20

Command Not Found Magicでcommand-not-found指定されているUbuntuのフックを使用します。現在、インストールするパッケージの提案に使用されています。システムにインストールする必要があるものを参照してください。/usr/share/doc/command-not-found/README

それは依存しないので、いっそのこと、command-not-foundパッケージ、(再)バッシュの組み込み実装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'  

(約)4つのキーを押すだけで十分です。

o f<Tab><Enter>

完全なファイル名を入力するのは面倒な26時間がかかります-そして、それは避けられないタイプミスのバックスペースを除外します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.