हास्केल में टर्मिनल स्क्रीन को कैसे साफ़ करूँ?


93

मेरे उपयोगकर्ता द्वारा मेरे आवेदन के मेनू से विकल्प चुनने के बाद मैं एक टर्मिनल स्क्रीन कैसे साफ़ कर सकता हूं?


2
क्या आप इस बारे में अधिक स्पष्ट हो सकते हैं कि आप अपने हास्केल प्रोग्राम में किस यूजर इंटरफेस सिस्टम का उपयोग कर रहे हैं? क्या आपका मतलब यह है कि आप केवल स्टड / स्टडआउट को पाठ पढ़ और लिख रहे हैं? यदि हां, तो उन लोगों के पास "स्क्रीन" की कोई अंतर्निहित अवधारणा नहीं है। यदि आप अपने कार्यक्रम को यह मानकर काम करने का इरादा रखते हैं कि स्टडिन / स्टडआउट से जुड़ा एक टर्मिनल है, तो आपको कुछ टर्मिनल नियंत्रण पैकेज का उपयोग करने के लिए अपने प्रोग्राम को कोडिंग करना चाहिए, जैसे कि संकेतित @ZackS उत्तर।
माउंटनवार्कमार्क

2
कृपया सही उत्तर चुनें। लोगों को सभी उत्तरों से गुजरना पड़ता है!
शिशिर गुप्ता

जवाबों:


195

: शेल कमांड चलाएं
: खिड़कियों के नीचे cls
:! लिनक्स और ओएस एक्स के तहत स्पष्ट


2
वहाँ कोई धोखा के लिए धोखा देती है?
14

2
@ मेरा सबसे अच्छा अनुमान यह है क्योंकि उन्हें नहीं लगता कि यह एक हैसेल सॉल्यूशन है (ठीक है तो; यह केवल जीएचसीआई में काम करता है), यह उनके लिए काम नहीं करता है (शेल-डिपेंडेंट) या वे सिर्फ ZachS के जवाब को बेहतर मानते हैं । :! clsमेरे उपयोग के मामले के लिए पर्याप्त पर्याप्त है, लेकिन पूछने वाले के मामले के लिए काम नहीं करता है क्योंकि पूछने वाला GHCi का उपयोग नहीं कर रहा है।
जॉन ड्वोरक

58

यह वह है जिसे आप देख सकते हैं:

एएनएसआई-टर्मिनल: विंडोज संगतता के साथ सरल एएनएसआई टर्मिनल समर्थन

आप इसे हैकेज में पा सकते हैं और उपयोग कर इंस्टॉल कर सकते हैं cabal install ansi-terminal। इसमें विशेष रूप से स्क्रीन को साफ करने, रंगों को प्रदर्शित करने, कर्सर को हिलाने आदि के लिए कार्य हैं।

स्क्रीन को साफ करने के लिए इसका उपयोग करना आसान है: (यह जीएचसीआई के साथ है)

import System.Console.ANSI

clearScreen


4
यह सही जवाब है। अपने सिस्टम के पैकेज मैनेजर में पैकेज देखने की कोशिश करें, हालांकि, जब तक कि आम तौर पर उस के साथ काम नहीं करता है और अनइंस्टॉल कमांड की पेशकश नहीं करता है।
Evi1M4chine

13

एक टर्मिनल पर जो एएनएसआई से बचने के क्रम को समझता है (मेरा मानना ​​है कि हर शब्द यूनिक्स / लिनक्स सिस्टम में है) आप इसे बस इसके साथ कर सकते हैं:

clear = putStr "\ESC[2J"

2पूरे स्क्रीन को साफ करता है। यदि आप कर्सर को स्क्रीन के अंत में या कर्सर से स्क्रीन की शुरुआत में साफ़ करना चाहते हैं तो आप क्रमशः 0या उपयोग कर सकते हैं 1

हालाँकि मुझे नहीं लगता कि यह विंडोज शेल में काम करता है।



8

यूनिक्स प्रणालियों पर आप कर सकते हैं System.system "clear"जो सिर्फ कमांड-लाइन उपयोगिता को स्पष्ट करता है। ऐसे समाधान के लिए जो बाहरी साधनों पर निर्भर नहीं करता है, आपको एक पुस्तकालय की आवश्यकता होगी जो विभिन्न टर्मिनल-प्रकारों पर सार करता है जैसे कि उदाहरण के लिए ansi- टर्मिनल


8
@ प्रदीप: हाँ, और मैंने हैसेल में जवाब दिया।
sepp2k

8
@ प्रदीप: चिल्लाने की जरूरत नहीं। (देखें en.wikipedia.org/wiki/All_caps#Internet )
जेरेड अपडेटाइक

5

विंडोज पर एक त्वरित तरीका होगा

import System.Process

clear :: IO ()
clear = system "cls"

यह मेरे लिए और लिनक्स सिस्टम के उपयोग के लिए सबसे साफ समाधान था system "clear
इयान जे। रीड

5

विंडोज पर, Haskell कमांड प्रॉम्प्ट टर्मिनल के लिए Ctrl + L का उपयोग करें । और, GUI के लिए Ctrl + S का उपयोग करें ।


0

लिनक्स के तहत (उबंटू कम से कम), वह कोड जो मैं टर्मिनल को साफ करने के लिए उपयोग करता हूं:

import qualified System.Process as SP

clearScreen :: IO ()
clearScreen = do
  _ <- SP.system "reset"
  return ()
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.