[apple] `man ls> temp.txt`를 수행했습니다. 출력 텍스트 파일이 손상되었습니다

man ls > temp.txt출력 텍스트 파일을 실행 하면 손상됩니다. 타락한다는 것은 어떤 단어의 첫 글자와 마지막 글자가 지나치게 반복됨을 의미합니다.

몇 개의 첫 줄 temp.txt:

LS(1)                     BSD General Commands Manual                    LS(1)

NNAAMMEE
     llss -- list directory contents

SSYYNNOOPPSSIISS
     llss [--AABBCCFFGGHHLLOOPPRRSSTTUUWW@@aabbccddeeffgghhiikkllmmnnooppqqrrssttuuwwxx11] [_f_i_l_e _._._.]

DDEESSCCRRIIPPTTIIOONN

등등. 리디렉션 man ls이 없으면 완전히 정상입니다. 무슨 일이야?



답변

보낸 사람 man man:

백 스페이스와 밑줄없이 일반 텍스트 버전의 매뉴얼 페이지를 얻으려면

    # man foo | col -b > foo.mantxt

man매뉴얼 페이지의 형식화 된 버전을 인쇄하고 밑줄과 이중 문자를 구문 분석합니다

너무 많이 구문 분석되지는 않지만 “터미널이없는 경우 굵은 체 형식은 반복되는 문자로 표시됩니다.” 일단 터미널 (vt100, xterm, Terminal 등)에 연결하면 man은 터미널을 인식하고 색상, 굵은 체, 밑줄 등을 수행하기 위해 적절한 제어 코드를 보냅니다. null 터미널 유형에 대해서만 올바르게 구문 분석됩니다.

MichaelT의 코멘트


답변

옛날 옛적에 컴퓨터는 일상적으로 텔레타이프 (텔레 프린터)에 연결되어 모든 텍스트를 종이에 실시간으로 인쇄합니다. 텔레 프린터에는 밑줄이 있거나 굵은 글씨로 된 텍스트를위한 기능이 없지만 밑줄을 출력하고 백 스페이스를 사용하고 다른 것을 인쇄하면 다른 부분에 밑줄이 생길 수 있습니다. 마찬가지로 캐릭터 출력, 백 스페이스 및 동일한 캐릭터 출력은 캐릭터가 더 어둡게 보이도록하지만 효과는 설치된 리본의 품질에 따라 달라집니다 (리본이 오래되고 연약한 경우 동일한 캐릭터를 두 번 입력하는 경우) 새로운 리본으로 문자를 한 번이라도 입력하면 최대 어두움에 가까워집니다). 또한 사용자가 프린터에 연결되지 않은 경우에도man인쇄 스풀러에 대한 출력은 꽤 일반적이었을 것입니다. 아마도 man출력이 리디렉션 될 때 왜 그런 식으로 작동하는지 설명합니다 .

BTW는 일부 프린터 (및 텔레 프린터)에서도 프린트 헤드가 프린트 헤드의 방향을 반복적으로 뒤집어 야하고 (일반적으로 양쪽 끝에서 목표를 초과하기 때문에 ) 성능 _←U_←N_←D_←E_←R_←L_←I_←N_←I_←N_←G이 현저히 떨어집니다 ___________←←←←←←←←←←←UNDERLINING. 멀티 스트라이크 볼드체를 사용할 때도 마찬가지이지만, 각 문자가 처음 인쇄 될 때 즉시 백 스페이스 문자를 따르고 두 번째 문자는 따르지 않기 때문에 동작이 실제로 유리할 수 있습니다. 첫 번째 문자를 인쇄하는 동안 프린트 헤드가 가속 된 경우 두 번째 문자에 비해 약간 정렬되지 않아 굵은 체 효과가 더 효과적입니다.


답변

Mateusz의 대답은 정확하지만 tty 용 형식을 제거하는 대신 사람 형식을 다르게 지정할 수 있음을 지적하는 것이 좋습니다.

예를 들어, 대신 다음과 같이 멋진 형식의 pdf를 얻을 수 있습니다.

man -t ls | pstopdf -i -o ~/ls.pdf


답변

대안으로, 나는 다음과 같은 쉘 함수를 정의했습니다 ( Oh-my-ZSH 의 OS X 플러그인 에서 호출 됨 ).

man-preview () {
    man -t "$@" | open -f -a /Applications/Preview.app
}

이로 인해 원하는 맨 페이지가 미리보기에서 열리고 원하는 모든 형식이 원하는 형식으로 표시됩니다. 이 단일 별칭을에 추가하는 것만 큼 쉽습니다 (보다 쉽다고 ~/.profile생각 하므로으로 설정 했습니다 ).pmanman-previewalias pman='man-preview~/.zshrc

추신 : 나는 pman인터넷의 다양한 도트 파일에 정의 된 기능을 보았습니다. 오 마이 ZSH는 내 것이 정의 된 곳에서 발생합니다.


답변

또는 Carl Lindberg의 ManOpen을 사용하여 매뉴얼 페이지를 조회하고 인쇄 할 수 있습니다. ManOpen은 NeXtStep을 위해 처음 개발되었으며 Carl 덕분에 계속 작동합니다.


답변