텍스트 편집기에 cat 명령과 다른 내용이 표시되는 이유는 무엇입니까?

텍스트 편집기에 cat 명령과 다른 내용이 표시되는 이유는 무엇입니까?

난 달린다:

$ man cd > mancd
$ cat mancd

이는 예상대로 나타납니다. 하지만 VSCode와 vim으로 파일을 열면 완전히 다릅니다.

여기에 이미지 설명을 입력하세요.

여기에 이미지 설명을 입력하세요.

이런 일이 발생하는 이유와 매뉴얼 페이지를 파일로 올바르게 리디렉션하는 방법.

답변1

^H위 스크린샷에는 내용이 많이 포함되어 있으니 참고하세요. Ctrl+는 HASCII 08 문자 AKA를 생성한다는 의미입니다 .백스페이스 키. 문자를 인쇄할 때 커서를 뒤로 이동백스페이스 키그 다음에같은 문자를 다시 덮어쓰기 그런 다음 나타나더 어둡다. 이것이 방법이다볼드체기계식 타자기에 구현되었습니다. 다양한 최신 전자 터미널도 이를 지원하며 많은 CLI 도구가 텍스트 서식 지정에 이를 사용합니다.ANSI 시퀀스에 의해. . . 시작탈출하다08(ASCII 27) 은 커서 위치와 깜박임, 색상, 기울임꼴 등의 텍스트 서식 속성을 변경하는 데에도 일반적으로 사용됩니다 27.제어 문자.

cat이 바이트에 대해 아무것도 모릅니다. 그냥 지나간다원시 바이트 스트림터미널이나 파이프라인의 다음 항목으로 이동합니다. 터미널은 이러한 제어 문자를 알고 있으므로 텍스트를 올바르게 표시합니다. 그러나 viVS 코드는 터미널이 아니며 제어 문자를 창 내부에 표시하기 전에 변환하여 예기치 않은 제어 문자가 화면과 터미널을 어지럽히지 않도록 합니다.

제어 문자를 비활성화하고 일반 텍스트만 출력하려면 사용 중인 도구의 옵션을 확인하세요. 알아두어야 할 man것은Controlling formatted output맨 페이지의 섹션. 다음과 같은 것을 시도해보세요man --ascii cd

그러나 대부분의 프로그램은 제어 문자를 출력해야 하는지 여부를 알기 위해 출력 유형을 자동으로 결정합니다. 예를 들어 대부분의 GNU 도구는 또는 --color와 같은 옵션을 사용합니다 . 또한 이렇습니다 :lsgrepman

  • MAN_KEEP_FORMATTING

    일반적으로 출력이 터미널(예: 파일 또는 파이프)로 지정되지 않는 경우 특수 도구 없이 결과를 쉽게 읽을 수 있도록 형식 문자가 삭제됩니다. 그러나 $MAN_KEEP_FORMATTINGnull이 아닌 값으로 설정되면 이러한 형식 문자가 유지됩니다. 이는 형식 지정 문자를 해석할 수 있는 man 래퍼에 유용할 수 있습니다.

따라서 귀하의 형식이 man다르거나 일부 형식 옵션이 별칭 또는 환경 변수로 지정되었으므로 출력을 텍스트 파일로 리디렉션하더라도 형식이 출력됩니다.

바라보다

관련 정보