लिनक्स में एक शेल / टर्मिनल पर एक गलत अदृश्य पासवर्ड को साफ़ / मिटा दें


75

एक चीज जो मुझे लिनक्स के टर्मिनल का उपयोग करने की घोषणा करती है, वह है जब मुझे एक अदृश्य पासवर्ड टाइप करना होता है, जैसे कि जब आप ssh चलाते हैं । कभी-कभी मैं एक या एक से अधिक अक्षरों को गलत करता हूं और फिर मुझे यह सुनिश्चित करने के लिए बैकस्पेस कुंजी को कुछ बार दबाना पड़ता है कि मैंने फिर से शुरू करने के लिए सब कुछ मिटा दिया।

मुझे पता है कि यह कोई बड़ी बात नहीं है, लेकिन दूसरे दिन के बाद से मुझे पता चला कि CTRL + L को क्लियर करने के लिए टर्मिनल मैं "सोच रहा था", अगर वहाँ बैकस्पेस पर निर्भर किए बिना अदृश्य पासवर्ड को क्लियर / एरेस करने का कोई तरीका है, तो एंटर की को दबाएं पुनः प्रयास करें।

जवाबों:


70

आपको बस ctrl+ टाइप करना है u

आनंद लें =)


उसके बारे में कभी नहीं पता था। आमतौर पर मैं सिर्फ अवांछित कमांड मिड टाइपिंग से ctrl + C निकालता हूं।
Spidey

10
यदि आप जानना चाहते हैं कि अन्य उत्तर में मेरा स्पष्टीकरण देखें।
जिम पेरिस

मैं इसके साथ Ctrl + W और सुंदर ओके का उपयोग कर रहा हूं।
शबून

108

मुझे पता है कि यह पहले से ही उत्तर दिया गया था, लेकिन जवाब यह नहीं समझाता है कि क्या चल रहा है।

Ctrl+ जैसे वर्ण अनुप्रयोगL द्वारा नियंत्रित किए जाते हैं । शेल में इनपुट दर्ज करने के मामले में, जैसे bash, यह स्क्रीन को साफ करता है। कुछ एप्लिकेशन, जैसे emacs, इसका उपयोग स्क्रीन को फिर से शुरू करने और / या कर्सर को पुन: प्रस्तुत करने के लिए करते हैं।

एक पासवर्ड प्रॉम्प्ट पर Ctrl+ जैसे अक्षर TTY लाइन अनुशासनU द्वारा नियंत्रित किए जाते हैं । वे किसी भी समय काम करेंगे इनपुट टर्मिनल "कैनोनिकल" लाइन-संपादन मोड में है, जो एक पासवर्ड दर्ज करते समय आपके प्रोग्राम किस मोड पर हैं। इस मोड में, यह लिनक्स कर्नेल ही है जो इन वर्णों की व्याख्या कर रहा है। आप यह देख सकते हैं कि किन कार्यों के लिए कौन से कार्य सौंपे गए हैं :stty -a

speed 38400 baud; rows 45; columns 128; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S;
susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

यहां, आप देख सकते हैं कि Ctrl+ Uको बांधा गया है kill, जो ( स्टेंट मैन पेज के अनुसार ) "वर्तमान रेखा को मिटा देगा"। आप sttyइस मैपिंग को बदलने के लिए भी उपयोग कर सकते हैं :

stty kill ^E   # make ctrl-e erase the line

यदि आप रुचि रखते हैं तो इस पृष्ठ में TTY परत के बारे में बहुत सारी जानकारी है।


तो चीजें काफी भ्रमित नहीं थे: जब एक इंटरैक्टिव की प्रॉम्प्ट पर bash, आप वास्तव में कर रहे हैं नहीं "प्रामाणिक" लाइन संपादन मोड में। इसके बजाय, bashप्रत्येक वर्ण को सीधे प्राप्त करते हुए , जैसा कि आप इसे टाइप करते हैं, और रीडलाइन लाइब्रेरी के माध्यम से, स्वयं नियंत्रण दृश्यों की व्याख्या करते हैं । यह लाइब्रेरी आपके टर्मिनल डिवाइस पर आपके द्वारा सेट किए गए मैपिंग का सम्मान करेगी , हालांकि, फिर भी आप sttyउन्हें बदलने के लिए उपयोग कर सकते हैं। या, आप अपनी फ़ाइल के अंदर संपत्ति bashसेट करके उन्हें स्वतंत्र रूप से अंदर और अन्य रीडलाइन-आधारित कार्यक्रमों को अनुकूलित कर सकते unix-line-discardहैं ~/.inputrc। अधिक जानकारी के लिए बैश मैन पेज देखें ।

जब आप कोई प्रोग्राम चलाते हैं, तो bashविहित लाइन संपादन मोड को फिर से सक्षम करता है ( stty icanonयदि यह पहले सक्षम था, और फिर प्रोग्राम समाप्त होने पर इसे फिर से निष्क्रिय कर देता है ( stty -icanon)।


धन्यवाद, इससे मुझे अपने टिल्डा / याय 'मिटा' मुद्दे का पता लगाने और ठीक करने में मदद मिली!
थॉमस हेसे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.