Sử dụng command-not-found
hook 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/README
nhữ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-found
gói, (tái) triển khai hàm dựng sẵn Bash command_not_found_handle
để thực hiện xdg-open
nếu $1
là 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_completion
trì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.
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?