Chỉ mở một tệp từ thiết bị đầu cuối bằng cách nhập tên của nó


15

Tôi biết rằng xdg-opensẽ mở từ thiết bị đầu cuối một tệp trong ứng dụng ưa thích của người dùng như thế này:

xdg-open filename

Nhưng tôi tự hỏi làm thế nào tôi có thể mở một tệp từ thư mục hiện tại trong ứng dụng mặc định của nó chỉ bằng cách gõ:

filename

tiếp theo Enter, tất nhiên. Chỉ có bấy nhiêu thôi.


1
Có lẽ bạn có thể sửa đổi command_not_found_handle()hàm trong /etc/bash.bashrcđể kiểm tra và xdg-mở một tệp trong cùng thư mục?
viêm chron

1
Tôi có thể giảm một số rủi ro của bạn bằng cách sử dụng bí danh. bí danh open = "xdg-open" là một biến đơn giản. bạn có thể làm cho nó ngắn như bạn muốn.
rdʒɑ

Câu trả lời:


20

Sử dụng command-not-foundhook của Ubuntu , như được chỉ định trong Command Not Found Magic . Nó hiện đang được sử dụng để đề xuất các gói để cài đặt. Tham khảo /usr/share/doc/command-not-found/READMEnhững gì nên được cài đặt trên hệ thống của bạn.

Tốt hơn nữa, vì nó không phụ thuộc vào command-not-foundgói, (tái) triển khai hàm dựng sẵn Bash command_not_found_handleđể thực hiện xdg-opennếu $1là một tệp hiện có và ủy thác tất cả các trường hợp khác cho việc triển khai trước đó.

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

Câu hỏi hay, tính năng tiện lợi.


Suy nghĩ về nó nhiều hơn: bạn có thể không thích tính năng nhiều như bạn nghĩ, trừ khi bạn cũng mở rộng bash_completiontrình xử lý. Tưởng tượng muốn mở file-with-a-long-name.txt, sau đó thiết lập

alias o='xdg-open'  

sẽ làm (khoảng) bốn lần nhấn phím đủ:

o f<Tab><Enter>

Trong khi đó, việc gõ tên tệp đầy đủ sẽ mất 26 - và loại trừ khoảng cách trên các lỗi chính tả không thể tránh khỏi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.