ฉันรู้ว่าxdg-open
จะเปิดไฟล์จากเทอร์มินัลในแอปพลิเคชันที่ผู้ใช้ต้องการเช่นนี้:
xdg-open filename
แต่ฉันสงสัยว่าฉันจะเปิดไฟล์จากไดเรกทอรีปัจจุบันในแอปพลิเคชันเริ่มต้นได้อย่างไรโดยการพิมพ์:
filename
ตามมาด้วยEnterแน่นอน ไม่มีอะไรเพิ่มเติม
ฉันรู้ว่าxdg-open
จะเปิดไฟล์จากเทอร์มินัลในแอปพลิเคชันที่ผู้ใช้ต้องการเช่นนี้:
xdg-open filename
แต่ฉันสงสัยว่าฉันจะเปิดไฟล์จากไดเรกทอรีปัจจุบันในแอปพลิเคชันเริ่มต้นได้อย่างไรโดยการพิมพ์:
filename
ตามมาด้วยEnterแน่นอน ไม่มีอะไรเพิ่มเติม
คำตอบ:
ใช้อูบุนตูของcommand-not-found
เบ็ดตามที่ระบุไว้ในคำสั่งไม่พบเมจิก ปัจจุบันใช้เพื่อแนะนำแพ็คเกจที่จะติดตั้ง อ้างถึง/usr/share/doc/command-not-found/README
สิ่งที่ควรติดตั้งในระบบของคุณ
ยังดีกว่าเพราะมันไม่ได้ขึ้นอยู่กับcommand-not-found
แพคเกจ (อีกครั้ง) ใช้ Bash builtin command_not_found_handle
เพื่อทำxdg-open
if $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 ที่น่าเบื่อ - และที่ไม่รวม backspacing มากกว่าความผิดพลาดที่หลีกเลี่ยงไม่ได้
command_not_found_handle()
ฟังก์ชั่นใน/etc/bash.bashrc
การตรวจสอบและ xdg-open ไฟล์ในไดเรกทอรีเดียวกันได้หรือไม่?