ฉันต้องการที่จะสร้างสคริปต์ทุบตีเสร็จสิ้นซึ่งตระหนักถึงข้อโต้แย้งของรูปแบบและ--arg
--some-arg=file
หลังจากอ่านบทช่วยสอนนี้และตัวอย่างบางส่วน/usr/share/bash_completion/completions/
แล้วฉันได้เขียนสคริปต์ต่อไปนี้ (เพื่อประหยัดเวลาในการพิมพ์ค่าสถานะด้วย Chromium):
_chromium()
{
local cur prev opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
# Some interesting options
opts="
--disable-web-security
--easy-off-store-extension-install
--incognito
--load-extension=
--pack-extension=
--pack-extension-key=
--user-data-dir=
"
# Handle --xxxxxx=file
if [[ ${cur} == "--"*"=" ]] ; then
# Removed failures (is my logic OK?)
return 0
fi
# Handle other options
if [[ ${cur} == -* ]] ; then
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
fi
}
complete -F _chromium chromium
ผมบันทึกไว้~/bash_completions/chromium
และสร้าง symlink sudo ln -s ~/bash_completions/chromium /usr/share/bash_completion/completions/chromium
โดยใช้ จากนั้นผมโหลดได้โดยใช้
. /usr/share/bash_completions/completions/chromium
ตอนนี้ฉันประสบปัญหาสองประการ:
chromium --u<TAB>
ขยายออกไปchromium --user-data-dir=<SPACE>
(ฉันไม่ต้องการพื้นที่)- เส้นทาง (ไดเรกทอรีและไฟล์) จะไม่สมบูรณ์อีกต่อไป
ฉันจะแก้ปัญหาเหล่านี้ได้อย่างไร