cat
종종 바이너리 데이터로 난독화되는 명령줄 도구(간단한 텍스트 편집기일 수도 있음)에 의해 표시되지 않는 추악한 데이터를 숨기고 싶습니다 . 예를 들어, VT100 터미널이 이진 출력용으로 잘못 구성되는 경우가 있었습니다.
<?php
// PHP code shown by text tools on the command line
__halt_compiler();
// here some fake EOF mark for simple text processing tools
// hidden ugly data
할 수 있는파일 끝간단한 스트림 기반 텍스트 뷰어 도구, 특히 Linux 명령줄 도구(그러나 일부 Windows 도구도 가능)를 사용하고 계십니까?
cat
다른 사람이 사용하거나 유사한 파일을 사용하면 화면에 쓰레기가 표시되지 않도록 혼합 텍스트/바이너리 파일에서 솔루션을 찾고 있습니다 .
답변1
한 가지 "해결책"은 많은(전부는 아님) 터미널에서 지원하는 대체 화면 버퍼를 사용하는 것입니다. 다음 명령을 고려하십시오.
printf "Hello, \e[?1049h ABCDEFG \e[?1049l World\n"
대체 화면 버퍼를 지원하는 터미널에서는 다음과 같은 메시지가 표시됩니다.
Hello, World!
터미널이 갑자기 깜박일 수도 있습니다.
이 \e[?1049h
순서로 인해 터미널은 대체 화면 버퍼로 전환되고 이후에 인쇄되는 모든 내용이 종료됩니다. 이 \e[?1049l
시퀀스는 기본 화면 버퍼로 다시 전환됩니다.
PHP를 사용한 예:
<?php
echo "Hello";
// Nothing to see here...^[[?1049h
echo ", World!\n";
//^[[?1049l
?>
이는 ^[
이스케이프 문자를 나타냅니다.
대체 화면 버퍼는 터미널 사용자 인터페이스를 만들고 싶지만 닫은 후 터미널 내용을 복원하려는 많은 프로그램에서 사용됩니다. 그게 다야더 적은전체 창을 사용하여 콘텐츠를 표시할 수 있지만 종료 후에도 이전 명령은 모두 계속 표시됩니다. 당신이 가지고 있다면버퍼링 해제설치 후 다음을 확인할 수 있습니다.
$ unbuffer less -f /dev/null | xxd
00000000: 1b5b 3f31 3034 3968 1b3d 0d0d 1b5b 4b1b .[?1049h.=...[K.
보시다시피, 가장 먼저 인쇄되는 것은 \x1b[?1049h
터미널이 화면 버퍼를 전환하도록 하는 것입니다.
대부분의 편집자는 인쇄할 수 없는 문자를 표시하려고 시도하지 않기 때문에 (내가 아는 한) 어떤 편집기에서도 작동하지 않습니다.