यह कहते हुए कि गूंज क्षेत्र में shell-modeएक कमांड sudo CMDखुल जाती है:
[sudo] password for root:
यह कैसे करना जानता है? AFAIK, यह व्यवहार sudoसामान्य रूप से चलने से नहीं उठ सकता है , क्योंकि readअंतर्निहित इस तरह का संकेत नहीं देता है।
यह कहते हुए कि गूंज क्षेत्र में shell-modeएक कमांड sudo CMDखुल जाती है:
[sudo] password for root:
यह कैसे करना जानता है? AFAIK, यह व्यवहार sudoसामान्य रूप से चलने से नहीं उठ सकता है , क्योंकि readअंतर्निहित इस तरह का संकेत नहीं देता है।
जवाबों:
यह एक प्रक्रिया फ़िल्टर के माध्यम से किया जाता है।
डिफ़ॉल्ट रूप से comint-output-filter-functionsशामिल है comint-watch-for-password-prompt, जो फ़िल्टर फ़ंक्शन है जो इसे संभालता है।
यदि यह पाठ मिलान देखता है comint-password-prompt-regexpतो यह send-invisibleउपयोगकर्ता को पासवर्ड के लिए संकेत देता है।
फ़िल्टर कैसे काम करता है, इसके बारे में अधिक जानकारी के लिए देखें C-hig (elisp)Filter Functions
संपादित करें: एक अनुवर्ती के रूप में, यह भी ध्यान दें कि आप M-x toggle-debug-on-quitऔर फिर सूडो प्रॉम्प्ट प्रकार C-gपर बैकट्रेस प्राप्त कर सकते हैं जो दिखाएगा कि क्या चल रहा है। उदाहरण के लिए:
Debugger entered--Lisp error: (quit)
read-string("[sudo] password for <username>: " nil t nil)
read-passwd("[sudo] password for <username>: ")
send-invisible("[sudo] password for <username>: ")
comint-watch-for-password-prompt("[sudo] password for <username>: ")
run-hook-with-args(comint-watch-for-password-prompt "[sudo] password for <username>: ")
comint-output-filter(#<process shell> "[sudo] password for <username>: ")
बाइट-संकलित कोड के मूल्यांकन के कारण आउटपुट न्यूनतम है, इसलिए इसका विवरण comint-output-filter-functionsखो गया है, लेकिन आप अभी भी सामान्य स्थिति देख सकते हैं। आप M-x load-library RET comint.el RETअसम्बद्ध कोड को लोड करने के लिए भी कर सकते हैं और फिर अधिक विस्तृत बैकट्रेस प्राप्त करने के लिए पूरी प्रक्रिया को दोहरा सकते हैं।