मैक ओएस एक्स में टर्मिनल में पिछले आउटपुट को कैसे साफ़ करें?


523

मुझे पता है कि clearकमांड वर्तमान स्क्रीन को 'क्लियर' करती है, लेकिन यह बहुत सारी नईलाइनों को प्रिंट करके करता है - क्लीयर किए गए कंटेंट को सिर्फ स्क्रॉल किया जाता है।

क्या टर्मिनल से सभी पिछले आउटपुट को पूरी तरह से पोंछने का एक तरीका है ताकि मैं इसे स्क्रॉल करके भी नहीं पहुंच पाऊं?


1
क्या आपको कभी ऐसा करने का तरीका मिला जो शेल स्क्रिप्ट में काम करता हो?
ज़ेव ईसेनबर्ग

7
@ZevEisenberg मुझे ऐसा नहीं लगता। वैसे भी, अब मुझे लगता है कि मुझे इसकी बिल्कुल भी जरूरत नहीं है। मैं संतुष्ट हूं Command+K
Eonil

@ZevEisenberg मेरा अद्यतन उत्तर (और एक अन्य उत्तर) आपको यह दिखाता है कि इसे स्क्रिप्ट से कैसे किया जाए।
आलोक सिंघल

जवाबों:


1098

टर्मिनल को मैन्युअल रूप से साफ़ करने के लिए:

+K

Command+ Kनए कीबोर्ड के लिए

शेल स्क्रिप्ट के भीतर से टर्मिनल को साफ करने के लिए;

/usr/bin/osascript -e 'tell application "System Events" to tell process "Terminal" to keystroke "k" using command down'

@fearless_fool apple.stackexchange.com/a/31887 यह कर सकता है? अगर ऐसा होता है, तो कृपया मुझे बताएं!
आलोक सिंघल

ठीक है, हां, लेकिन पूरी तरह से बेहतर तरीके से नीचे देखें ( stackoverflow.com/a/26615036/558639 )।
निर्भय_फूल

9
यदि आपने गलती से यह दबाया है, तो कोई व्यक्ति कैसे साफ किए गए बफर को देखने जाएगा?
जोशुआ पिंटर

4
@JoshPinter, बस इसे दुर्घटना से न दबाएं। :) (उपयोग करने पर विचार clearसभी मामलों के लिए छोड़कर जहां जब आप मुद्रित करने के लिए जा रहे हैं वास्तव में गायब हो जाते हैं, जैसे करने के लिए स्क्रॉल बैक इतिहास की जरूरत है।)
वाइल्डकार्ड

2
@Wildcard मेला काफी। :) उपयोग करने पर अच्छी सलाह clear। मुझे लगता है कि उन्हें उलट दिया जाना चाहिए, हालांकि। clearटकराने की तुलना में टंकण अधिक जानबूझकर लगता है Command + K
जोशुआ पिंटर

85

एक स्क्रिप्ट के भीतर से स्क्रीन को साफ़ करने का बेहतर तरीका ...

यदि आप OSX टर्मिनल ऐप (जैसा कि ओपी द्वारा कहा गया है) का उपयोग कर रहे हैं, तो बेहतर तरीका ( https://apple.stackexchange.com/a/113168 के लिए धन्यवाद ) बस यही है:

clear && printf '\e[3J'

या अधिक संक्षेप में ( https://stackoverflow.com/users/4834046/qiuyi पर टिप )

printf '\33c\e[3J'

जो स्क्रॉलबैक बफर के साथ-साथ स्क्रीन को भी साफ करता है। साथ ही अन्य विकल्प भी हैं, अधिक जानकारी के लिए https://apple.stackexchange.com/a/113168 देखें ।

मूल उत्तर

इस थ्रेड में दिए गए AppleScript का उत्तर काम करता है, लेकिन यह सक्रिय होने वाली किसी भी टर्मिनल विंडो को साफ़ करने का बुरा पक्ष प्रभाव है। यह आश्चर्य की बात है अगर आप एक विंडो में स्क्रिप्ट चला रहे हैं और दूसरे में काम करने की कोशिश कर रहे हैं!

आप AppleScript को केवल स्क्रीन साफ़ करने से बचाते हैं यदि ऐसा करने से यह सबसे सामने आता है ( https://apple.stackexchange.com/a/31887 से लिया गया ):

osascript -e 'if application "Terminal" is frontmost then tell application "System Events" to keystroke "k" using command down'

... लेकिन जब यह वर्तमान विंडो नहीं है, तब तक आउटपुट स्टैक हो जाएगा जब तक कि यह फिर से चालू नहीं हो जाता है, जो संभवतः वह नहीं है जो आप चाहते हैं।


1
मैंने "बेहतर तरीके" का उपयोग किया .bash_profileऔर यह भयानक है क्योंकि मुझे अब नई टर्मिनल विंडो खोलने पर ग्लिच किए गए बफर कभी नहीं मिलते हैं।
पैट्रिक रॉबर्ट्स

1
यह सबसे वैचारिक रूप से सही उत्तर है। qiuyi का उत्तर थोड़ा पठनीयता के बलिदान पर && से बचा जाता है। अगर आलोक का जवाब मौजूदा स्क्रिप्ट को चलाने वाले टर्मिनल को साफ करने के लिए बढ़ाया जा सकता है, तो यह एक सुधार होगा, लेकिन यह सरल है।
ज़ैक मॉरिस

1
स्क्रिप्टिंग के लिए यह waaaaaaaaaaay बेहतर है। बहुत बहुत धन्यवाद!
एंडी

यह सही है जब आप किसी अन्य प्रणाली के लिए ssh'd, धन्यवाद!
JBRWilkinson

48

सुंदर तरीका है printf '\33c\e[3J'


3
यह सबसे अच्छा तरीका है। हमें उपनाम की तरह परिभाषित करना चाहिएalias cls='printf "\33c\e[3J"'
mpyw

धन्यवाद, यह वही है जो मुझे चाहिए था।
गीगाबास

ITerm2 में भी काम करता है
एंडर्स ज़ोमारिन

1
@ Lo @cFaure-Lacroix, कमांड \33cके समतुल्य प्रदर्शन करता है clear, जो मूल रूप से स्क्रीन को केवल तब तक स्क्रॉल करता है जब तक आप इसे पिछली सामग्री नहीं देख सकते। यह स्क्रीन को साफ करता है, लेकिन स्क्रॉल बैक बफर नहीं है (यानी आप पुराने आउटपुट को देखने के लिए अभी भी स्क्रॉल बार का उपयोग कर सकते हैं)। \e[3Jस्क्रॉल बैक बफर को वास्तव में साफ़ करने के लिए जोड़ें ।
लूइस

@EirNym, (या सिस्टम-वाइड ) function cls { printf '\33c\e[3J\33c' }में लाइन जोड़ें । यह डेस्कटॉप वातावरण में macOS, FreeBSD, Linux आदि के लिए काम करना चाहिए। ध्यान दें कि अतिरिक्त गैर-macOS में अतिरिक्त शाब्दिक समाशोधन के लिए है (मूल रूप से Linux / FreeBSD के लिए, हमें केवल आवश्यकता है )। ~/.profile/etc/profile\33c\e[3Jprintf '\33c'
वल्केन रैवेन

33

इसे अपने .bash_profile या .bashrc में डालें

function cls { 
osascript -e 'tell application "System Events" to keystroke "k" using command down' 
}

यह सही उत्तर होना चाहिए। AppleScript गड़बड़ हो सकता है, लेकिन हे, काम हो जाता है। धन्यवाद।
एलनबेरी

उत्थान किया गया था, लेकिन एक और उत्तर नोट करता है कि यह सभी विंडोज़ को साफ करता है!
माइकल बुश

20

मैक ओएस एक्स टर्मिनल पर यह कार्यक्षमता टर्मिनल एप्लिकेशन में पहले से ही निर्मित है View->Clear Scrollback(डिफ़ॉल्ट CMD+ है K)।

तो आप इसे फिर से असाइन कर सकते हैं जैसे कि आप Apple के कीबोर्ड शॉर्टकट के साथ पसंद करते हैं। टर्मिनल "स्पष्ट स्क्रॉलबैक" के साथ टर्मिनल के लिए बस एक नया शॉर्टकट जोड़ें। (मैं CMD+ का उपयोग करता हूं L, क्योंकि यह वर्तमान स्क्रीन सामग्री को खाली करने के लिए CTRL+ के समान है L, बफर को साफ किए बिना।)

यह सुनिश्चित नहीं है कि आप इसे एक स्क्रिप्ट में कैसे उपयोग करेंगे (शायद AppleScript जैसा कि दूसरों ने बताया है)।


1
Yosemite (10.10) के रूप में, View->Clear Scrollbackअब टर्मिनल के मेनू में मौजूद नहीं है। कीबोर्ड शॉर्टकट CMD+ Kअभी भी काम करता है, हालांकि।
निकोलस मिआरी

1
@NicolasMiari लगता है Clear Scrollbackकि अभी योसमाइट में से स्थानांतरित किया Viewगया Editहै।
22

10

Mac OS X Yosemite (10.10) के Option + Command + Kसाथ Terminal.app में स्क्रॉलबैक साफ़ करने के लिए उपयोग करें।


9

या आप दबाकर पेज ब्रेक (ASCII फॉर्म फीड) भेज सकते हैं :

CTRL+L

हालांकि यह तकनीकी रूप से एक नया पृष्ठ शुरू करता है, लेकिन अन्य सभी विधियों के समान इसका शुद्ध प्रभाव होता है, जबकि यह बहुत तेज़ होता है (Apple + K समाधान को छोड़कर)।

और क्योंकि यह एक ASCII नियंत्रण कमांड है, यह सभी गोले में काम करता है।


1
यह स्क्रीन को साफ करता है, लेकिन स्क्रॉलबैक बफर को बरकरार रखता है।
जॉर्ज

यदि आप छूट के लिए cmd + f का उपयोग करना चाहते हैं तो यह समान नहीं है
19 '10

7

केवल अंतिम आउटपुट हटाने के लिए:

+L

टर्मिनल को पूरी तरह से साफ़ करने के लिए:

+K


6

कमांड + K पिछले आउटपुट को क्लियर कर देगा

दर्ज किए गए पाठ को साफ़ करने के लिए, पहले " कंट्रोल + के " के साथ पॉइंटर के दाईं ओर स्पष्ट पाठ " कमांड + ए " छोड़ दिया ।

दृश्य उदाहरण: यहाँ छवि विवरण दर्ज करें



5

सही काम करो, बात सही करो!

पिछले चिह्न को साफ़ करें:Command-L

पिछले बुकमार्क को साफ़ करें:Option-Command-L

शुरू करने के लिए साफ़ करें: Command-K

अपने लोगों की मदद करो!


1

मैं (macOS पर) काम करने के लिए उपरोक्त में से कोई भी नहीं प्राप्त कर सका।

मेरे लिए एक संयोजन ने काम किया -

IO.write "\e[H\e[2J\e[3J"

यह बफर और स्क्रीन को साफ करता है


IO.write क्या है? मुझे इसे काम करने के लिए प्रिंटफ से बदलना पड़ा। फिर भी धन्यवाद। यह मेरे लिए सबसे अच्छा काम करता है
Fitsyu

1
मुझे यकीन नहीं है कि मैंने क्यों चुना IO.write। यह उसी तरह काम करना चाहिए जब आप टर्मिनल पर उन वर्णों को मुद्रित करने का निर्णय लेते हैं।
माइकल बाल्ड्री

1

टर्मिनल में निम्नलिखित टाइप करने से आपका इतिहास मिट जाएगा (मतलब तीर का उपयोग करने से आपको कुछ नहीं मिलेगा) - लेकिन स्क्रीन को साफ नहीं करेगा:

history -c

ऐसा होता है। @ एफआईएल उन्हें डिस्क से स्थायी रूप से हटा देता है, या वे अभी भी किसी तरह से पुनर्प्राप्त करने योग्य हैं?
स्टीवन रोज

मूल रूप से यह फ़ाइल को हटा देता है ~ / .bash_history, इसलिए यदि आप इसे ठीक कर सकते हैं, तो आप उन कमांड को पुनर्प्राप्त कर सकते हैं जो साफ हो गए हैं
रयान पेंडलटन

नहीं, यह काम नहीं करता है। स्क्रॉल किया गया इतिहास अभी भी मौजूद है, और मैं उन्हें फिर से देखने के लिए स्क्रॉल कर सकता हूं।
Eonil

26
जो नहीं पूछा गया था। यह इतिहास को साफ करता है, न कि वर्तमान बफर को, जो दो बहुत अलग चीजें हैं।
सीन कैमरून

1
जो नहीं पूछा गया था, और हानिकारक ; मुझे बस इससे काट दिया गया था, और मेरे इतिहास में महत्वपूर्ण चीजें शामिल थीं।
एलजार

0

इसे आज़माएँ, यदि आप फ़िल्टर चाहते हैं तो आउटपुट से अभिभूत हैं

adb -d शेल डंप्स गतिविधि | grep ActivRecord


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