다른 내용을 인쇄하여 프로그래밍 방식으로 파일을 만들려고 합니다. (즉 printf %s\\n hostname >> file.txt
)
화면을 지우기 위해 Esc 코드를 보내고 싶습니다(첫 번째 줄이 됩니다).
printf $'\033[2J'$'\033[;H'
Bash에서는 ( \033
octet으로 ) 을 사용하면 Esc
화면이 지워집니다. 모든 것이 정상적으로 작동합니다. 파일의 첫 번째 줄은 cat
파일을 열 때 먼저 화면을 지웁니다.
tcsh(FreeBSD 루트의 기본 쉘)에서는 "이스케이프"를 탈출하는 방법과 bash 이스케이프 코드에 해당하는 코드를 얻는 방법을 알 수 없는 것 같습니다.
난 노력해왔어 ( printf
그리고 echo
)
- 에코%{\e[2J]}
- 에코\e
- 에코\e
- 에코%{\033[2J}
누구든지 올바른 방향으로 나를 가리킬 수 있다면 매우 감사하겠습니다!
감사해요!
답변1
printf
ksh93
-style 따옴표 없이 형식(첫 번째) 인수의 인수를 개별적으로 확장합니다 $'...'
. 그래서:
printf '\33[2J\33[H'
이는 printf
내장되어 있지 않으므로 파일 시스템에서 명령을 호출 tcsh
하게 됩니다 . 그런 다음 또는 명령을 printf
호출할 수도 있지만 , termcap/terminfo에 대한 지원이 내장되어 있으므로 그렇게 할 필요가 없습니다 . 다음을 수행할 수 있습니다.tput
clear
tcsh
tcsh
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'