답변:
` followed by an
실제 줄 바꿈 문자를 출력하려고 할 때 리터럴 n`을 얻었습니다.
또한 카운트 다운과 같이 같은 줄에 메시지를 덮어 쓰려면 문자열 끝에 '\ r'을 추가하면됩니다.
process.stdout.write("Downloading " + data.length + " bytes\r");
process.stdout.write("Downloading " + data.length + " bytes\033[0G");
\033
육각 문자와 \x1b
같은 : \x1b[0G
. (엄격한 코드와 엄격하지 않은 코드 모두에서 작동)
Windows 콘솔 (Linux도)에서 '\r'
동등한 코드로 바꿔야 합니다 \033[0G
.
process.stdout.write('ok\033[0G');
VT220 터미널 이스케이프 시퀀스를 사용하여 커서를 첫 번째 열로 보냅니다.
[\] 39
지고 커서는 첫 번째 문자에서 강조 표시됩니다.var spinner = '|/-\\'.split('');process.stdout.write("["+this.randomElement(spinner)+"] "+message+"\033[0G");
man console_codes
(Linux 또는 온라인) 에서 찾을 수 있으며 내가 가장 좋아하는 참고 자료는 www2.phys.canterbury.ac.nz/dept/docs/manuals/unix/DEC_4.0e_Docs/…입니다 (99 %는 여전히 작동합니다) . 주의 사항 : 널리 배포하기 전에 여러 터미널에서 실험을 테스트 할 준비를하십시오.
@rodowi가 행을 덮어 쓸 수 있다는 점에 대한 훌륭한 추가 기능을 확장 / 향상시킵니다.
process.stdout.write("Downloading " + data.length + " bytes\r");
코드에서 보았 듯이 터미널 커서를 첫 번째 문자에 두지 않으려면 다음을 수행하십시오.
let dots = ''
process.stdout.write(`Loading `)
let tmrID = setInterval(() => {
dots += '.'
process.stdout.write(`\rLoading ${dots}`)
}, 1000)
setTimeout(() => {
clearInterval(tmrID)
console.log(`\rLoaded in [3500 ms]`)
}, 3500)
를 배치하여 \r
다음 인쇄 문 앞에 커서가 교체 문자열이 이전을 덮어 직전 재설정됩니다.
util.print도 사용할 수 있습니다. 읽기 : http://nodejs.org/api/util.html#util_util_print
util.print ([...]) # 동기 출력 함수. 프로세스를 차단하고 각 인수를 문자열로 캐스팅 한 다음 stdout으로 출력합니다. 각 인수 뒤에 줄 바꿈을하지 않습니다.
예를 들면 :
// get total length
var len = parseInt(response.headers['content-length'], 10);
var cur = 0;
// handle the response
response.on('data', function(chunk) {
cur += chunk.length;
util.print("Downloading " + (100.0 * cur / len).toFixed(2) + "% " + cur + " bytes\r");
});
util.print
더 이상 사용되지 않습니다
(node:7616) DeprecationWarning: util.print is deprecated. Use console.log instead.
엄격 모드를 사용할 때 다음 오류가 발생했습니다.
노드 오류 : "엄격한 모드에서는 8 진 리터럴을 사용할 수 없습니다."
다음 솔루션이 작동합니다 ( source ).
process.stdout.write("received: " + bytesReceived + "\x1B[0G");
console.log
인쇄 된\n
나는 개행 문자를 인쇄를 원하는 경우 그대로.