명령을 사용하여 브라우저에서 맨페이지를 열려고 시도했지만 /usr/bin/man -H 3 free
명령을 실행할 때마다 브라우저가 존재하지 않는 파일을 열며 당연히 페이지가 표시되지 않습니다.
내가 뭘 잘못했나요?
내 man
명령은 다음에서 제공됩니다.man-db
답변1
적어도 내 시스템(Arch Linux, man-db 2.9.4, Firefox 88.0)에서는 man
에 임시 디렉토리를 만들고 /tmp/
생성된 HTML 파일을 그 안에 쓰고 HTML 파일을 인수로 사용하여 브라우저를 호출하고 브라우저가 종료되는 동안 처리 중이면 임시 디렉터리를 삭제하세요(정리를 위해).
이로 인해 일부 브라우저(예: Lynx)에서는 문제가 발생하지 않지만 다른 브라우저에서는 경쟁 조건이 발생할 수 있습니다(제 경우에는 Firefox; Chromium도 간략하게 테스트했는데 비슷한 결과가 나왔습니다). 내가 아는 한, man
새 브라우저 창을 열면 HTML 파일이 올바르게 열립니다. 반면, 기존 브라우저 창에서 맨페이지를 새 탭으로 열면 그에 의해 시작된 브라우저 프로세스가 man
일찍 반환되고, 다른 브라우저 프로세스가 파일을 읽으려고 할 때쯤에는 파일이 사라져 버립니다.
man
임시 HTML 파일이 삭제되는 것을 방지하도록 설계된 옵션이 표시되지 않습니다 . 그러나 -H
/ 옵션에 대한 인수 --html
(또는 환경 변수의 값 BROWSER
)는 셸 명령일 수 있으며 빠른 수정은 다음과 같습니다.
BROWSER='firefox %s; sleep 5' man -H 3 free
( sleep
파일이 삭제되기 전에 Firefox에 페이지를 로드할 시간을 주세요. 물론 다시 로드하는 것은 불가능합니다.)
또는 임시 HTML 파일을 삭제하는 자체 메커니즘을 구현하려는 경우:
BROWSER='cp %s /path/to/file.html; firefox /path/to/file.html' man -H 3 free
(이것은 기본 파일과 함께 생성되었을 수 있는 다른 리소스를 무시 .html
하므로 잘못 렌더링될 수 있습니다.)
또는 임시 디렉터리를 유지하려는 경우(예: 임시 디렉터리를 많이 생성하지 않고 임시 디렉터리가 /tmp
불안정하며 시스템이 정기적으로 재부팅됨):
BROWSER='firefox %s && false' man -H 3 free
(브라우저 명령이 오류를 반환하면 임시 디렉터리는 삭제되지 않습니다 man
. 단점으로는 man
브라우저가 열 수 없는 것으로 간주되어 오류 메시지가 인쇄됩니다.)
또한 환경 변수를 사용하여 임시 데이터가 생성되는 위치를 TMP
나타낼 수 있습니다 .man
마지막으로 선택한 해결 방법을 다음과 같이 별칭이나 함수로 편리하게 만들 수 있습니다.
alias man='BROWSER="${BROWSER:-firefox} %s && false" man'
HTML에서 매뉴얼 페이지를 보는 다른 방법도 참조하십시오.