줄 바꿈없이 콘솔에 인쇄하는 방법이 있습니까? console
객체 문서는 것을에 관한 아무 말도하지 않습니다
console.log()
줄 바꿈으로 stdout에 인쇄합니다. 이 함수는 여러 가지 인수를
printf()
비슷한 방식으로 사용할 수 있습니다 . 예:console.log('count: %d', count);
포맷팅 요소가 첫 번째 문자열에 없으면
util.inspect
각 인수에 사용됩니다.
답변
답변
또한 카운트 다운과 같이 같은 줄에 메시지를 덮어 쓰려면 문자열 끝에 ‘\ r’을 추가하면됩니다.
process.stdout.write("Downloading " + data.length + " bytes\r");
답변
Windows 콘솔 (Linux도)에서 '\r'
동등한 코드로 바꿔야 합니다 \033[0G
.
process.stdout.write('ok\033[0G');
VT220 터미널 이스케이프 시퀀스를 사용하여 커서를 첫 번째 열로 보냅니다.
답변
@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");
});
답변
제안하는 많은 답변이있는 것 같습니다.
process.stdout.write
오류 로그가 생성되어야합니다.
process.stderr
대신 다음을 사용하십시오.
console.error
왜 process.stdout.write('\033[0G');
아무것도하지 않았 는지 궁금한 사람에게는 stdout
버퍼링되어 있기 때문에 drain
이벤트 를 기다려야합니다 ( 더 많은 정보 ).
쓰기가 반환되면 이벤트 false
가 발생합니다 drain
.
답변
이 솔루션 중 어느 것도 나를 위해 작동하지 process.stdout.write('ok\033[0G')
않으며 단지'\r'
단지 새로운 라인을 만들 수 있지만, 맥 OSX 10.9.2에 덮어 쓰기하지 않습니다.
편집 : 현재 줄을 바꾸려면 이것을 사용해야했습니다.
process.stdout.write('\033[0G');
process.stdout.write('newstuff');