अपने टर्मिनल को रीसेट और खाली करने के लिए मैं किन कमांड का उपयोग कर सकता हूं?


64

मैं कमांड का उपयोग कर रहा हूं:

reset

मेरे टर्मिनल को खाली करने के लिए। हालांकि मुझे पूरा यकीन है कि यह वह नहीं है जो मुझे करना चाहिए। रीसेट करें, जैसा कि नाम से पता चलता है, आपके पूरे टर्मिनल को बदलता है (बहुत सारे सामान बदलता है)। यहाँ मैं क्या चाहता हूँ:

मैं मूल रूप से कमांड का उपयोग करना चाहता हूं clear। हालाँकि, यदि आप स्पष्ट हैं और फिर स्क्रॉल करते हैं तो भी आपको पहले से टन सामान मिलेगा। सामान्य तौर पर यह कोई समस्या नहीं है, लेकिन मैं सकल लॉग को देख रहा हूं जो लंबे हैं और मैं यह सुनिश्चित करना चाहता हूं कि मैं अभी हाल ही में सबसे अधिक देख रहा हूं। मुझे पता है कि मैं उपयोग moreकर सकता हूं या ऐसा कुछ हो सकता है लेकिन मैं इस दृष्टिकोण को पसंद करता हूं।


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

1
Ctrl-L स्पष्ट प्रोग्राम निष्पादित करने के समान, bash में स्क्रीन को खाली करेगा (emacs मोड में, जो डिफ़ॉल्ट है)।

बस IntelliJ IDE में बैश टर्मिनल में यह परीक्षण किया। ठीक काम करता है और स्क्रॉलबैक को साफ करता है जो कि मैं चाहता था। धन्यवाद।
इयान लुईस

मुझे पता है कि यह मौत के लिए उत्तर दिया गया है, लेकिन मुझे लगता है कि आप क्या चाहते हैं clear && printf '\033[3J'। कोई टर्मिनल रीसेटिंग नहीं, बस स्क्रीन पर पाठ को साफ़ करना। यह पोस्ट देखें: superuser.com/questions/555554/...
jwd

जवाबों:


57

स्क्रैचबैक बफर बैश की विशेषता नहीं है, बल्कि टर्मिनल प्रोग्राम की है। आपने यह नहीं बताया कि आप किस टर्मिनल का उपयोग कर रहे हैं।

यदि आप xterm का उपयोग कर रहे हैं, तो आप टर्मिनल पर ESC-c की गूंज करके सहेजी गई लाइनों को साफ़ करने में सक्षम हो सकते हैं।

यह आपके द्वारा उपयोग किए जा रहे टर्मिनल प्रोग्राम पर काम कर सकता है या नहीं भी हो सकता है।

लिनक्स पर यह शायद काम करेगा:

echo -e '\0033\0143'

FreeBSD गूंज पर स्वीकार नहीं करता है-तो आप कोशिश कर सकते हैं:

printf '\033\143'

मैं xterm का उपयोग कर रहा हूं। हालाँकि मुझे समझ नहीं आ रहा है कि आपका क्या मतलब है। क्या मुझे वास्तव में टाइप करना चाहिए echo ESC-c?
साठफुटेरसूड

2
@ सिक्सटाइफुटर्सडूड: नहीं, शाब्दिक नहीं ESC। विकिपीडिया पर "पलायन चरित्र" और "नियंत्रण चरित्र" लेख पढ़ें - ESCअक्सर ASCII चरित्र 0x1B को दर्शाने के लिए उपयोग किया जाता है, जिसे आप ^Vबाद में दबाकर सम्मिलित कर सकते हैं Esc
ग्रिटिटी

1
आपको नहीं करना चाहिए यदि आपके समाधान में कच्चे टर्मिनल एस्केप अनुक्रम लिखना शामिल है, तो आपको समाधान पर पुनर्विचार करना चाहिए। मैं बिल्ली के बजाय "कम" का उपयोग करेगा। अगर आप वास्तव में "टर्मिनल एस्केप सीक्वेंस" के बारे में जानना चाहते हैं तो Google आपकी मदद कर सकता है।
क्रेग

2
@HaraldNordgren इको-ई की तुलना में अधिक मानक प्रिंटफ का उपयोग करने के लिए बेहतर है।
अच्छा व्यक्ति

3
\0143इसके बजाय क्यों c?
बरबाद करें

51

प्रत्येक कार्य के लिए सही उपकरण का उपयोग करें:

  • clearटर्मिनल विंडो को खाली करने के लिए उपयोग करें ।

  • resetनियंत्रण दृश्यों द्वारा गड़बड़ होने पर अपने टर्मिनल को रीसेट करने के लिए उपयोग करें ।

  • catकेवल तब ही उपयोग करें जब आप एक स्थान से दूसरे स्थान तक एक पूरे डेटा को निर्बाध रूप से प्रवाहित करना चाहते हैं ।

  • पेजर प्रोग्राम का उपयोग करें जैसे कि lessया mostआउटपुट के पृष्ठों को देखने के लिए।

  • tail -f /var/log/foo.log /var/log/bar.logकई अलग लॉग फ़ाइल देखने के लिए उपयोग करें ।

    • GNU के साथ tail, -Fविकल्प बेहतर है क्योंकि यह फ़ाइल का अनुसरण तब भी जारी रख सकता है जब कोई नई फ़ाइल अपने स्थान पर दिखाई देती है, जैसा कि लॉग फ़ाइलों के लिए सामान्य है।

14
यह वास्तव में मेरे प्रश्न का उत्तर नहीं देता है।
साठफुटेरसूड

7
हाँ, यह करता है। उन्हें पढ़ने के लिए बिल्ली की फाइलें मत करो, उन्हें छिपाने के लिए बिल्ली की फाइलें। फ़ाइलों को पढ़ने के लिए कम या अधिक का उपयोग करें - फिर आपको एक ही समस्या नहीं है।
रिच ब्रेडशॉ

"बिल्ली का बेकार उपयोग" देखें
गैलोज़

बहुत से लोग catकुछ भी पढ़ने के उपयोग के विरोध में हैं , लेकिन छोटी फ़ाइलों के लिए यह वास्तव में catउपयोग करने के बजाय उनके लिए बहुत मायने रखता है less। एक बार फ़ाइल को टर्मिनल से बाहर निकाल दिया गया है, तो आप फ़ाइल को वापस देख सकते हैं / स्क्रॉल कर सकते हैं जितनी बार आप चाहते हैं, बजाय इसके lessकि आप कुछ और करने से पहले खारिज कर दें।
GKFX

22

बस तकनीकी जवाब देने के लिए: resetटर्मिनल को फिर से व्यवस्थित करें, जैसे कि इसे खरोंच से फिर से खोल दिया गया था। stty saneएक ही कार्यक्षमता (रीसेट के बिना) का एक बहुत कुछ करेंगे। यह ^L(Ctrl + L) (irc), और जैसी ही बात है tput clear। पिछले पोस्टर (@grawity) के बारे में clearक्या कहा गया है, इसके बावजूद नई कहानियों का एक समूह नहीं है। यह भेजता TERMहै रीसेट में परिभाषित के रूप में terminfoया termcap, मेरे लिए, का उपयोग कर gnome-terminal(टर्म) यह आदेश रूप में ही है perl -e'print "\33[H\33[2J"'

यदि आप बफर को खाली करना चाहते हैं - पूरे टर्मिनल को रीसेट करने की तुलना में, तो यह प्रयास करें tput reset। यह बहुत तेज़ होना चाहिए , और वही करना चाहिए जो आप चाहते हैं। (हालांकि आपको वास्तव में फाइलों को पढ़ना चाहिए less)

tput reset, रीसेट के लिए टर्मोफ वैल्यू भेजता है - मेरे टर्मिनल (xterm) पर यह वैसा ही है perl -e'print "\33c"'


1
मैंने यह नहीं कहा था कि clearनई कहानियों का एक समूह है। मैंने बस इसके विकल्प के रूप में एक कमांड प्रदान की , क्योंकि clearकेवल स्क्रीन को साफ़ करता है लेकिन स्क्रॉलबैक बफर को नहीं। (पुट्टी या कॉनसोल में नहीं, कम से कम।)
विशालता

1
सिर्फ उसी कारण से, नई सुर्खियों का एक गुच्छा छापना वास्तव में स्पष्ट करने का विकल्प नहीं है - आपको यह पता नहीं है कि टर्मिनल स्पष्ट संकेत के साथ क्या करेगा। नए लोगों को बताना बेहतर है कि आपके पास एक डेटाबेस है जो जानता है कि आपके टर्मिनल को कैसे संभालना है, इसमें दो कुंजी-मान हैं जो clearएक सिग्नल के सिग्नल के रूप में मैप करता है, और resetएक सिग्नल के लिए मैप करता है - और केवल बाद वाला। क्लियर स्क्रॉल बैक बफर में परिणाम। resetअन्य मजेदार चीजें करने के बाद, बाद में भेजता है।
इवान कैरोल

1
साठफुटर्सडूड के मूल प्रश्न के अनुसार, अपने स्क्रॉलबैक को रीसेट नहींclear करता है । ( वीटीई-आधारित में काम करता है , लेकिन PuTTY और Konsole में नहीं।) वह या तो उपयोग नहीं करना चाहता , क्योंकि वह जितना चाहता है उससे अधिक रीसेट करता है। (मुझे नहीं पता कि कौन सा टर्मिनल वह उपयोग करता है - लेकिन तुलना से पहले और रीसेट करने के बाद।)ESC cxtermresetstty
grawity

2
जैसा मैंने कहा, वह शायद चाहता है tput reset, जो टर्मिनल को रीसेट सिग्नल भेजता है - वास्तव में शब्द को फिर से संगठित किए बिना। "रीसेट - इनिशियलाइज़ेशन स्ट्रिंग्स को डालने के बजाय, टर्मिनल के रिसेट स्ट्रिंग्स आउटपुट होंगे यदि प्रेज़ेंट (rs1, rs2, rs3, rf)। यदि रिसेट स्ट्रिंग्स मौजूद नहीं हैं, लेकिन इनिशियलाइज़ स्ट्रिंग्स हैं, तो इनिशियलाइज़ेशन स्ट्रिंग्स आउटपुट होंगे। अन्यथा, पहचान के लिए इनिट को रीसेट करें। " यहां, हमारे पास स्ट्रिंग्स रीसेट हैं ताकि इनिट स्ट्रिंग्स न चलें।
इवान कैरोल

+1: सुझाव के लिए, हालांकि tput resetकाफी धीमा है (जैसा कि reset)। printf '\033\143'बहुत तेज है। क्या कोई कारण है कि प्रिंटफ पद्धति खतरनाक / खराब है?
साठफुटेर्सड्यूड 20

9

एक और टर्मिनल iTerm2 है, और इसे स्क्रॉलबैक क्लियर करने के लिए उपयोग किए जाने वाले कुछ हद तक अजीब सीक्वेंस मिला है। बैश शेल में, मैं कुछ का उपयोग करता हूं:

echo -ne '\033]50;ClearScrollback\a'

एक स्क्रिप्ट में। तो मूल रूप से यह एक ईएससी चरित्र है, उसके बाद " ]50;ClearScrollback" और फिर एक बीईएल चरित्र।


1
CMD + K iTerm2 में काम करता है। CTRL + K बहुत सारे अन्य में काम करता है।
ब्‍लॉकलोप

मुझे यह समाधान पसंद है क्योंकि यह मुझे शेल स्क्रिप्ट से iTerm2 स्क्रॉलबैक बफर को साफ करने देता है, जब चीजें पसंद होती हैं clearऔर resetनहीं होती हैं। यह वास्तव में सवाल का सबसे अच्छा जवाब नहीं है, हालांकि। मुझे लगता है कि उस मामले के लिए सही उत्तर वह है जो टर्मिनल अनुप्रयोग प्रदान करता है, जैसे कि कमांड-के इन iTerm2, अन्य में नियंत्रण-के, आदि
LS

8

संभवतः टर्मिनल के फ़ंक्शन का उपयोग करने के लिए सब कुछ साफ़ करने का सबसे अच्छा तरीका है:

  • कॉन्सोल: Ctrl+ Shift+ Kदृश्य → स्क्रॉलबैक और रीसेट साफ़ करें
  • गनोम टर्मिनल: संपादित करें → रीसेट और साफ़ करें
  • पिल्ला: Ctrl+ right-click→ साफ़ स्क्रॉलबैक

इस तरह दोनों बफ़र्स को साफ कर दिया जाता है, और टर्मिनल की स्थिति ठीक उसी तरह से रीसेट हो जाती है, जैसा कि स्टार्टअप पर था (जो कि उपयोग करने के समान हो सकता है या नहीं भी हो सकता है reset)।


हम्म, मेरे पास मेरे सूक्ति के तहत ऐसा नहीं है ...
२६:५० पर ६oot फेटर्सडूड

@sixtyfootersdude: मैं यह यकीन है मैं सिर्फ सही मेनू (उपयोग नहीं कर सकते पता नहीं है, वहाँ gnome-terminalअपने आप को इस समय) ... "उपकरण" और अन्य मेनू पर एक नजर डालें।
२१:२०

Xterm में इसका ctrl-mid बटन -> "रीसेट और क्लियर सेव लाइन्स"
Craig

3
कम -W + F foo.log

+F"अनुसरण करें" के लिए है, tail -fलेकिन आपको वापस स्क्रॉल भी करने देता है।

सभी vte- आधारित टर्मिनलों (GNOME's, Xfce's, रोक्सटरम) और KDE Konsole आपको स्क्रॉल व्हील का उपयोग अंदर स्क्रॉल करने के लिए करते हैं less। मुझे वह काफी अच्छा लगता है।


के लिए वैकल्पिक clear:

perl -e 'Print "\ n" x512? "

xterm -e 'tail -f foo.log'

3

Mac OS X Terminal.app पर:

देखें -> स्पष्ट स्क्रॉलबैक (या command- K)


@ रोहित यदि प्रश्न विशेष रूप से मैक ओएस एक्स टर्मिनल के बारे में था। तो, हां, यह एक शानदार जवाब है। हालांकि, मूल प्रश्न अस्पष्ट है, सबसे अच्छा मैं बता सकता हूं, किस टर्मिनल और ओएस के संबंध में है।
डेविड जे।

2

यह एक "बैश" समस्या नहीं है। यह आपके द्वारा उपयोग किए जाने वाले टर्मिनल पर निर्भर करता है। उदाहरण के लिए, मैं रिमोट लाइनक्स मशीन को जोड़ने के लिए मैकबुक के साथ "iterm2" का उपयोग करता हूं। आप बफर को साफ करने के लिए "कमांड + के" का उपयोग कर सकते हैं, या मेनू में, "एडिट" -> "क्लियर बफर" चुनें।


1

PuTTY चलाते समय कंसोल स्क्रीन और स्क्रॉलबैक बफर को साफ़ करने के लिए, यह मेरे लिए काम करता है:

echo -en "\ec\e[3J"

यह वास्तव में 2 "Esc" क्रम है जो स्वतंत्र रूप से कार्य करते हैं ... उनका उपयोग या तो क्रम में किया जा सकता है:

# clears the console screen, but not the scrollback buffer
# this is actually the escape code to "reset" the terminal
echo -en "\ec"

# clears the scrollback buffer, but not the console screen
# screen content remains, and cursor position remains at its last position
echo -en "\e[3J"

echo -en "\ec"टर्मिनल का उपयोग करने से आपके कुछ अन्य टर्मिनल सेटिंग्स बदल सकते हैं। "रीसेट" के बजाय, आप ऐसा कर सकते हैं:

# position the cursor to "Home" (Top Row, First Column)
echo -en "\e[H"

# Erase down: clear the screen from the cursor down to the bottom of the screen.
echo -en "\e[J"

# Note: this is supposed to clear the screen and position the cursor to home,
# but it didn't work like that for me. It cleared the entire screen (above and 
# below the cursor), but left the cursor at its last position.
echo -en "\e[2J"

# putting everything together
echo -en "\e[H\e[J\e[3J"

आप इसे शेल स्क्रिप्ट में रख सकते हैं और यह ठीक काम करता है।


मामले में कुछ सिस्टम निर्भरताएँ हैं:

मैं PuTTY कनेक्शन प्रबंधक (संस्करण 0.7.1 बीटा (निर्माण 136)) का उपयोग कर रहा हूँ, PuTTY (0.60 रिलीज़) के साथ।

लेखन:

echo \"$TERM\"; /bin/sh --version

रिपोर्ट:

"xterm"
GNU bash, version 4.1.2(1)-release-(x86_64-redhat-linux-gnu) ...

1

FreeBSD में हार्डवेयर TTY के लिए स्क्रीन बफर को साफ करने के लिए आप पैरामीटर v के साथ "vidcontrol - सिस्टम कंसोल कंट्रोल और कॉन्फ़िगरेशन उपयोगिता" का उपयोग कर सकते हैं-इतिहास बफ़र को साफ़ करें।

vidcontrol -C

वर्तमान कंसोल के लिए कमांड सभी स्क्रीन बफ़र को खाली कर देगा, ऊपर जो आप इस समय देखते हैं। आप पहले 'स्पष्ट' करना चाहते हैं, या नहीं - आप पर निर्भर हो सकता है।


0

यदि आप यह सुनिश्चित करना चाहते हैं कि आप लॉग फ़ाइल में सबसे हाल की प्रविष्टियों को देख रहे हैं, तो संभवत: / के बजाय पूंछ का उपयोग करना सबसे अच्छा है जो मुझे लगता है कि आप उपयोग कर रहे हैं।clearcat


वास्तव में मैं टेल-ऑफ (निरंतर लॉग) का उपयोग कर रहा हूं, क्योंकि वे कभी-कभी हजारों लाइनों को थूक देते हैं, जो कि वापस स्क्रॉल करना महत्वपूर्ण है। हालाँकि यह जानना अच्छा होगा कि मैं एक पुराने लॉग में वापस नहीं जा रहा हूं।
साठफुटेरसूड

0

हममम। मुझे लगता है कि अगर आप कोनो कंसोल चला रहे हैं, तो आप भाग्य से बाहर हैं। यह सिर्फ "स्पष्ट स्क्रॉलबैक" हो सकता है। कॉनसोल आपको ऐसा नहीं करने देगा। आप इसे रीसेट भी करेंगे, इसलिए यह आपके द्वारा चलाए जा रहे किसी भी प्रोग्राम को मार देगा। मुझे लगता है मुझे एक नए टर्मिनल कार्यक्रम की आवश्यकता है ......

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