ইন shell-mode
, sudo CMD
ইকো অঞ্চলে একটি কমান্ডের মতো একটি প্রম্পট খোলে:
[sudo] password for root:
এটি কিভাবে করতে জানে? আফাইক, এই আচরণটি sudo
যথারীতি চলমান হয়ে উঠতে পারে না , কারণ read
বিল্টিন এমন প্রম্পট তৈরি করে না।
ইন shell-mode
, sudo CMD
ইকো অঞ্চলে একটি কমান্ডের মতো একটি প্রম্পট খোলে:
[sudo] password for root:
এটি কিভাবে করতে জানে? আফাইক, এই আচরণটি 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
এবং তারপরে sudo প্রম্পটে টাইপ 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
হারিয়ে গেছে, তবে আপনি এখনও অবিলম্বে সাধারণ পরিস্থিতি দেখতে পারবেন see আপনি M-x load-library
RET comint.el
RETবিহীন কোড লোড করতে এবং তারপরে আরও বিস্তারিত ব্যাকট্রিজ পেতে পুরো প্রক্রিয়াটি পুনরাবৃত্তি করতে পারেন।