Haskell에서 터미널 화면을 어떻게 지우나요?


93

사용자가 내 애플리케이션 메뉴에서 옵션을 선택한 후 터미널 화면을 지우려면 어떻게해야합니까?


2
Haskell 프로그램에서 사용중인 사용자 인터페이스 시스템에 대해 더 명확하게 알 수 있습니까? 단순히 stdin / stdout에 텍스트를 읽고 쓰는 것을 의미합니까? 그렇다면 "화면"이라는 암묵적인 개념이 없습니다. stdin / stdout에 터미널이 연결되어 있다고 가정하고 프로그램을 작동 시키려면 @ZackS의 대답과 같은 터미널 제어 패키지를 사용하도록 프로그램을 코딩해야합니다.
MtnViewMark

2
정답을 선택하세요. 사람들은 모든 답변을 거쳐야합니다!
Shishir Gupta

답변:


195

:! 쉘 명령 실행
:! 창 아래 cls
:! 취소 리눅스와 OS X에서


2
ghci에 대한 치트 시트가 있습니까?
tugberk 2014-06-22

2
@Peter 내 최고의 추측은 그것이 하스켈 솔루션이라고 생각하지 않기 때문입니다 (당연히 GHCi에서만 작동합니다), 작동하지 않거나 (쉘 의존적) ZachS의 답변이 더 나은 것으로 간주됩니다. . :! cls내 유스 케이스에는 충분하지만 질문자가 GHCi를 사용하지 않기 때문에 질문자의 경우에는 작동하지 않습니다.
John Dvorak

58

이것은 당신이 찾고있을 수있는 것입니다 :

ansi-terminal : Windows와 호환되는 간단한 ANSI 터미널 지원

Hackage에서 찾을 수 있으며 cabal install ansi-terminal. 특히 화면 지우기, 색상 표시, 커서 이동 등의 기능이 있습니다.

그것을 사용하여 화면을 지우는 것은 쉽습니다 : (GHCI와 함께)

import System.Console.ANSI

clearScreen


4
이것이 정답입니다. 시스템의 패키지 관리자에서 패키지를 찾으십시오. cabal은 일반적으로 작동하지 않으며 제거 명령을 제공하지 않습니다.
Evi1M4chine

14

ANSI 이스케이프 시퀀스 (유닉스 / 리눅스 시스템의 모든 용어를 믿습니다)를 이해하는 터미널에서는 다음과 같이 간단하게 수행 할 수 있습니다.

clear = putStr "\ESC[2J"

2전체 화면을 지 웁니다. 커서에서 화면 끝까지 또는 커서에서 화면 시작까지 지우려면 0또는 1각각을 사용할 수 있습니다 .

그러나 나는 이것이 Windows 셸에서 작동한다고 생각하지 않습니다.



8

Unix 시스템 System.system "clear"에서는 명령 줄 유틸리티 clear를 호출하는 작업 을 수행 할 수 있습니다 . 외부 도구에 의존하지 않는 솔루션의 경우 ansi-terminal 과 같은 다른 터미널 유형을 추상화하는 라이브러리가 필요합니다 .


8
@Pradeep : 네, 하스켈로 대답했습니다.
sepp2k

8
@Pradeep : 소리 칠 필요가 없습니다. ( en.wikipedia.org/wiki/All_caps#Internet 참조 )
Jared Updike

5

Windows에서 빠른 방법은 다음과 같습니다.

import System.Process

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

이것은 나에게 가장 깨끗한 솔루션이었고 Linux 시스템에서는 system "clear.
Iain J. Reid

5

Windows에서는 Haskell 명령 프롬프트 터미널에 Ctrl + L 을 사용하십시오 . 그리고 GUI의 경우 Ctrl + S를 사용하십시오 .


0

Linux (최소 우분투)에서는 터미널을 지우는 데 사용하는 코드입니다.

import qualified System.Process as SP

clearScreen :: IO ()
clearScreen = do
  _ <- SP.system "reset"
  return ()
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.