Tôi đã thử nghiệm optcomplete
làm việc với mô-đun optparse
. Ví dụ của nó là một tệp đơn giản để tôi có thể làm việc đó. Tôi cũng đã thử nghiệm nó bằng cách sử dụng mô-đun argparse
vì mô-đun trước không được dùng nữa. Nhưng tôi thực sự không hiểu làm thế nào và bởi ai mà chương trình python được gọi trên máy ép tab. Tôi nghi ngờ bash
cùng với đường dây shebang
và mô-đun argparse
(hoặc optparse
) có liên quan theo một cách nào đó. Tôi đã cố gắng để tìm ra điều này (bây giờ sẽ đọc mã nguồn).Làm thế nào để argparse (và phản đối không được chấp nhận) trả lời 'tab' nhấn phím sau tên chương trình python, trong bash?
Tôi có cấu trúc chương trình phức tạp hơn một chút, bao gồm một trình bao bọc xung quanh đoạn mã xử lý đối số. argparse.ArgumentParser()
instantiation của nó và các cuộc gọi đến add_argument()
- được superclassed vào một mô-đun trung gian để tránh trùng lặp mã, và wrapper xung quanh đó đang được gọi là - là bên trong một chức năng.
Tôi muốn hiểu cách hoàn thành tab này hoạt động giữa bash và python (hoặc cho vấn đề đó bất kỳ người giải thích nào khác như perl
).
LƯU Ý: Tôi có một sự hiểu biết công bằng về hoàn thành bash (mà tôi vừa học được), và tôi nghĩ rằng tôi hiểu hoàn thành tùy chỉnh bash (chỉ).
LƯU Ý: Tôi đã đọc tương tự khác SO câu hỏi, và không ai thực sự trả lời Q. này
Edit: Here là chức năng bash.
tôi đã hiểu cách các mô-đun python được biết về những lời gõ vào dòng lệnh, bằng cách đọc os.environ
giá trị của biến
$COMP_WORDS
$COMP_CWORD
$COMP_LINE
$COMP_POINT
$COMPREPLY
Các biến này có giá trị duy nhất trên tab báo chí. Câu hỏi của tôi là mô-đun python được kích hoạt như thế nào?
Tài liệu 'optcomplet' nói:" Bạn cũng cần mã nguồn hàm Bash và sau đó yêu cầu Bash kích hoạt hoàn thành không hoàn thành cho các chương trình cụ thể sử dụng nó: ". Nếu bạn đã làm điều đó, tại sao bạn vẫn hỏi làm thế nào nó hoạt động? Nó sẽ được rõ ràng bạn chỉ cần nói với bash những gì chương trình để gọi nếu hoàn thành được yêu cầu. –
Xin lỗi, tôi hiểu lầm những gì tôi đọc. Tôi sẽ thêm một câu trả lời cho điều đó. –