tcsh - 에코 이스케이프 코드

tcsh - 에코 이스케이프 코드

다른 내용을 인쇄하여 프로그래밍 방식으로 파일을 만들려고 합니다. (즉 printf %s\\n hostname >> file.txt)

화면을 지우기 위해 Esc 코드를 보내고 싶습니다(첫 번째 줄이 됩니다).

printf $'\033[2J'$'\033[;H'Bash에서는 ( \033octet으로 ) 을 사용하면 Esc화면이 지워집니다. 모든 것이 정상적으로 작동합니다. 파일의 첫 번째 줄은 cat파일을 열 때 먼저 화면을 지웁니다.

tcsh(FreeBSD 루트의 기본 쉘)에서는 "이스케이프"를 탈출하는 방법과 bash 이스케이프 코드에 해당하는 코드를 얻는 방법을 알 수 없는 것 같습니다.

난 노력해왔어 ( printf그리고 echo)

  • 에코%{\e[2J]}
  • 에코\e
  • 에코\e
  • 에코%{\033[2J}

누구든지 올바른 방향으로 나를 가리킬 수 있다면 매우 감사하겠습니다!

감사해요!

답변1

printfksh93-style 따옴표 없이 형식(첫 번째) 인수의 인수를 개별적으로 확장합니다 $'...'. 그래서:

printf '\33[2J\33[H'

이는 printf내장되어 있지 않으므로 파일 시스템에서 명령을 호출 tcsh하게 됩니다 . 그런 다음 또는 명령을 printf호출할 수도 있지만 , termcap/terminfo에 대한 지원이 내장되어 있으므로 그렇게 할 필요가 없습니다 . 다음을 수행할 수 있습니다.tputcleartcshtcsh

echotc clear

이는 terminfo 또는 termcap 데이터베이스를 쿼리하여 현재 터미널에 보낼 올바른 이스케이프 시퀀스를 가져옵니다(term 에 따라 다름 $TERM). 이는 일반적으로 하드코딩을 사용하는 것보다 낫습니다.

내장 기능을 사용하려면 다음을 수행하십시오 tcsh.echo

set echo_style = both # meant to be the default in tcsh
echo -n '\033[2J\033[H'

또는:

set echo_style = sysv # or both
echo '\033[2J\033[H\c'

관련 정보