Tôi đang cố gắng thiết lập tự động hoàn thành cho một lệnh, chỉ mất một tham số, tên thư mục,
Trong /secure/kernel_builds/
, tôi có ba thư mục con sau:
3.5.6/ 3.6.2/ source/
Bây giờ tôi muốn hoàn thành tự động, liệt kê tất cả tên thư mục con có thể, nhưng không phải tên được đặt source
, ngay bây giờ tôi đang sử dụng một cách khá ngu ngốc để làm điều đó, bằng cách kiểm tra xem từ hoàn thành có được bắt đầu bằng một số không,
_avail_kernel_builds()
{
case $COMP_CWORD in
1)
if [[ "${COMP_WORDS[COMP_CWORD]}" =~ ^[0-9] ]];then
COMPREPLY=( /secure/kernel_builds/"${COMP_WORDS[COMP_CWORD]}"* )
else
COMPREPLY=( /secure/kernel_builds/"${COMP_WORDS[COMP_CWORD]}"[0-9]*/ )
fi
COMPREPLY=( "${COMPREPLY[@]#/secure/kernel_builds/}" )
COMPREPLY=( "${COMPREPLY[@]%/}" )
;;
esac
}
Có cách nào tốt hơn để làm như vậy?