टर्मिनल में Ctrl + L


41

मैंने गलती से ctrl+ Lटर्मिनल में टाइप किया और मेरी टर्मिनल विंडो ने एक 'स्क्रीनफुल' साइज जंप किया। मैंने "एडिट" -> "कीबोर्ड शॉर्टकट" में कीबोर्ड शॉर्टकट देखे और उस शॉर्टकट को नहीं खोजा।

क्या करता है ctrl+ Lऔर कहाँ परिभाषित किया गया है?

जवाबों:


58

ctrl+ Lबस टर्मिनल स्क्रीन को साफ़ करें।

यह कमांड के बराबर कीबोर्ड शॉर्टकट है clear -xसंदर्भ

यह संपत्ति है bash, इसलिए आपने इसे अपने गनोम-टर्मिनल में कीबोर्ड शॉर्टकट के तहत नहीं पाया । से man bash:

clear-screen (C-l)
          Clear the screen leaving the current line  at  the  top  of  the
          screen.   With  an  argument,  refresh  the current line without
          clearing the screen.

बैश कीबोर्ड शॉर्टकट की एक विस्तृत सूची देखें ।


ओह, यह बताते हैं।
पार्टो

3
हालांकि यह सिर्फ बैश नहीं है; Ctrl-L फॉर्म-फीड कैरेक्टर है। यह इतना सामान्य नहीं है, लेकिन कभी-कभी आप कोड के "पेज" को अलग करते हुए ^ L को स्रोत कोड में देखेंगे। यह अधिक समझ में आता है जब एक प्रिंटर इसे एक नियंत्रण चरित्र के रूप में व्याख्या करेगा।
जोशुआ टेलर

@JoshuaTaylor आप सही हैं। पेज ब्रेक
souravc

1
^ एल आस्की टेबल में फॉर्म-फीड कैरेक्टर है, लेकिन यह तब तक कुछ नहीं करता, जब तक कि यह उस प्रोग्राम को प्राप्त न हो जाए जो इसके अनुसार व्यवहार करता है (या तो इस संदर्भ में बैश या टर्मिनल एमुलेटर)।
एलेक्सिस

1
ध्यान दें कि यह डिफ़ॉल्ट कमांड के बराबर नहीं है clear, क्योंकि यह आपके टर्मिनल इतिहास को मिटाता नहीं है, जबकि कमांड clearतब तक करता है, जब तक कि आप -xतर्क नहीं जोड़ते हैं, जैसे clear -x:।
जिरिस्लाव

18

यदि आपके द्वारा उपयोग किया जा रहा शेल इसे इंटरसेप्ट नहीं कर रहा है, तो आप अपने टर्मिनल में "फॉर्म-फीड" कैरेक्टर टाइप कर रहे हैं। यदि टर्मिनल एप्लिकेशन किसी तरह से कीस्ट्रोक को इंटरसेप्ट या उपयोग नहीं करता है, तो Ctrl+ लेटर का अनुवाद ASCII कोड माइनस 64 (1) के कोड में किया जाता है। 65 'A' का ASCII कोड है, 'L' 12 वां अक्षर है -> कोड 76। यदि शेल को पता नहीं है कि कोड का क्या करना है, तो वह इसे प्रिंट करता है।

FF char को प्रिंट करने से लाइन प्रिंटर पर एक नया पृष्ठ और टर्मिनल पर एक स्पष्ट स्क्रीन का परिणाम होता है (हाँ, मैंने एक वीटी -52 का उपयोग किया था , फिर 300 बॉड में)।

तो Ctrl+ L12 है जो एफएफ है। उसी तरह, Ctrl+ Iएक TAB है, और Ctrl+ Gघंटी बजती है --- अगर टर्मिनल या शेल इसे इंटरसेप्ट नहीं करते हैं, जैसे Ctrl+ Cउदाहरण के लिए।

दूसरे उत्तर से नोटिस: ऐसा लगता है कि बैश इंटरसेप्ट करते हैंCTRL - Lऔर ए clear। अच्छा स्पर्श है कि bashलेखकों ने एक कमांड के साथ कुंजी को जोड़ा जो कि कमोबेश वही होगा जो ASCII कोड ने पुराने टर्मिनलों पर किया था!

दूसरी ओर, मेरे zshसंयोजन में CTRL- एक (2) के Iरूप में TABऔर CTRL- के Hरूप में काम करता है Backspace

पुराना अच्छा ASCII ... (ध्यान दें कि L अक्षर कॉलम 4, पंक्ति 12 पर है, इसमें ASCII कोड 4 * 16 + 12 (76) है।

विकिमीडिया कॉमन्स से छवि

मूल छवि यहाँ , ASCII पर विकिपीडिया लेख से ।


फुटनोट:

(1) Ctrlवास्तव में बिट 7 को साफ करने के लिए उपयोग किया जाता है।

(2) यह "शब्द को हटाने में विफल" का स्रोत है "मजाक में आपको कुछ समय लगता है उदाहरण के लिए" यह एक बुरा था ^ एच ^ एच ^ इतना अच्छा विचार नहीं है ... (सामान्य रूप से एक शब्द बुरे से मजबूत है!)


1
अच्छा लगा। मैं इस चार्ट का उपयोग कैसे करूँ? मैं देख सकता हूं कि L अक्षर पंक्ति 12 और कॉलम 4 पर है। क्या मैं तब 124 से सिर्फ 32 घटा या आप ASIIII कोड की गणना कैसे करते हैं?
भागो

@AvatarParto अप, 65 के बजाय 32 लिखा। उत्तर सही। तालिका बाइनरी है, इसलिए कोड कॉलम * 16 + पंक्ति है।
रमनो

1
जब आप स्ट्राइकथ्रू का उपयोग नहीं कर सकते हैं तो शाब्दिक ^Hएस या ^Wएस लगाना अच्छा है। :)
ब्लैकलाइट शाइनिंग

8

Control-Lबश द्वारा व्याख्यायित और व्याख्या की जाती है (वास्तव में readlineपुस्तकालय द्वारा , जो कमांड लाइन पर संवादात्मक संपादन संभालती है)। यह clear-screenफ़ंक्शन के लिए बाध्य है , जैसा कि @souravc ने लिखा है।

के अर्थ पर ध्यान दें Control-L: यह ASCII वर्ण तालिका में फ़ॉर्म फ़ीड के रूप में परिभाषित किया गया है, लेकिन इसका मतलब कुछ भी नहीं है जब तक कि कुछ कार्यक्रम इसके अनुसार व्याख्या न करें। जब यह प्रपत्र फ़ीड देखता है तो टर्मिनल स्क्रीन को साफ नहीं करता है, क्योंकि आप फ़ाइल में ^ L को सहेजकर और फ़ाइल को प्रिंट करके सत्यापित कर सकते हैं cat। जब bash/readlineदेखता है ^L, यह clear-screenफ़ंक्शन को निष्पादित करता है। यह उन वर्णों का एक क्रम भेजता है जो आपके टर्मिनल एमुलेटर द्वारा समझा जाता है (जैसा कि टर्मकैप या टर्मफो द्वारा वर्णित है), और स्क्रीन को साफ़ करने का प्रभाव है।

बहुत पुराने प्रिंटरों में, एक ^Lअग्रिम पत्र को अगली शीट पर प्रिंट करना शुरू कर सकता है, इसलिए नाम "फ़ॉर्म फ़ीड" होगा। लेकिन आधुनिक टर्मिनल और टर्मिनल एमुलेटर एक नए एएनएसआई मानक का पालन करते हैं, जिसमें नियंत्रण कमांड बहु-चरित्र "एस्केप कोड" होते हैं जो ^[(एस्केप) से शुरू होते हैं। जब बैश आपके देखता है ^L, तो यह संभवतः दो-कमांड अनुक्रम भेज रहा है ESC [ H ESC [ J, जो स्क्रीन के ऊपरी बाएं भाग में जाता है और इसके नीचे सब कुछ साफ़ करता है (इसलिए संपूर्ण स्क्रीन)।


वास्तव में, अनुक्रम ESC [ ESC [ Jकमांड इतिहास को भी साफ़ करता है, जबकि CTRL + L अनुक्रम ऐसा नहीं करता है। अनुक्रम टर्मिनल के लिए भेजा बल्कि है ESC [ H ESC [ 2 J, आगे बढ़ो एक यह अपने आप को इस आदेश के साथ प्रयास करें: printf "\033[H\033[2J"
जिरिस्लाव

0

जैसा कि हर कोई पहले से ही बहुत अच्छी तरह से समझाया Ctrl+ Lहै और करता है, लेकिन कोई भी बताया कि कैसे कुछ आदेशों आप आप क्या कर रहे थे करने के लिए वापस पाने के लिए टाइप कर सकते हैं "रिवर्स" करने के लिए आदेश, यहाँ:

history

आपके द्वारा लिखी गई अंतिम 20 कमांड आपको देगा।

tail --lines=20 /var/log/dpkg.log

आपको किसी भी पैकेज इंस्टॉलेशन के आउटपुट की अंतिम 20 लाइनें देगा जो आप प्रदर्शन कर रहे थे

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.