대화형 명령 사용법 참조: 일반적으로 Unix에서 사용할 수 있나요?

대화형 명령 사용법 참조: 일반적으로 Unix에서 사용할 수 있나요?

명령 사용에 대한 참조를 제공하기 위해 일부 명령은 플래그와 같은 것에 의존 manpages하고 다른 명령은 플래그와 같은 것에 의존하는 이유는 무엇입니까?--help새것이 아닌. 일반적으로 둘 사이에는 범위 차이가 있습니다.문서명령 및명령 사용법 요약. 후자는 일반적으로 전자의 하위 집합입니다. 그러나 대부분의 명령과 유틸리티에는 맨페이지가 있지만 요약 섹션의 형식에는 차이가 있으며 이는 시도해 볼 때 매우 실용적인 의미를 갖습니다.정제그러한 정보. 다른 경우에는 strings명령이 문서화되지 않은 것처럼 보일 때 유틸리티에 대한 단서를 찾을 수도 있습니다.

나는 이것에 대한 내 명령에 관심이 있습니다QNX플랫폼과 발견use명령 1은 사용 정보를 표시합니다. 설명된 대로usemsg, 프레임워크에는 컴파일 후 명령을 사용하여 액세스할 수 있는 유틸리티 소스의 표준 사용 기록 설정이 포함되며 use, 기본 기능 등을 래핑할 수도 있습니다. 간단하게 할 수 있기 때문에 매우 편리합니다.

use -d dir >>file

/base기본적으로 시스템 /proc/boot의 모든 명령의 모든 사용법을 추출합니다.

그래서 소스를 잠깐 살펴봤는데GNU coreutils ls그리고FreeBSDs전자가 사용 정보를 일부에 넣는 곳에서 유사한 작업을 수행하는지 확인하십시오.용법명명 된기능( --help제 생각에는) 그리고 후자는 전혀 어디에도 두지 않는 것 같습니다(?).


  • 이 해결책 ( use)이 당신이 찾은 전형적인 해결책입니까?상용 유닉스명령 사용법 참조를 대화형으로 렌더링하시겠습니까?
  • POSIX/SUS는 (지정하는 대신) 명령에서 명령 사용법 참조를 제시/구현하는 것에 대해 권장하거나 제안합니까?상징~을 위한쉘 유틸리티)?

1. use명령:

use
Print a usage message (QNX Neutrino)

Syntax:
use [-aeis] [-d directory] [-f filelist] files

Options:
-a
    Extract all usage information from the load module in its source form, suitable for piping into usemsg. 
-d directory
    Recursively display information for all files under directory. 
-e
    Include only ELF files. 
-f filelist
    Read a list of files, one per line, from the specified filelist file, and display information for each. 
-i
    Display build properties about a load module. 
-s
    Display the version numbers of the source used in the executable. 
files
    One or more executable load modules or shell scripts that contain usage messages. 

답변1

상업용 unice는 일반적으로 매뉴얼 페이지에서만 사용 정보를 제공합니다. 명령 자체가 사용법 정보를 표시하도록 하는 것은 전통적인 Unix 기능이 아닙니다(설명 없이 사용법 오류에 대해 지원되는 옵션 목록을 표시하는 것 제외). POSIX와 그 친척들은 그런 것에 대해 이야기하지 않습니다.

사용 요약을 표시하는 옵션이 있습니다 --help(일반적으로 옵션 목록, 한 줄에 하나씩, 옵션당 최대 약 60자의 설명 포함).GNU 표준. 내가 아는 한, 이 규칙은 GNU 프로젝트에서 다중 문자 옵션 이름에 대한 이중 대시 규칙의 일부로 시작되었습니다. 단일 대시와 지원이 포함된 여러 문자 옵션 이름을 사용하는 X11 유틸리티와 같은 다른 유틸리티가 있습니다. -help어느 것이 먼저 나왔는지 모르겠습니다.

use명령은 QNX의 것입니다.

답변2

귀하의 예에서는 GNU 도구를 참조했습니다. 이는 Linux 및 기타 여러 플랫폼에서 사용할 수 있으며 문서화 측면에서 다소 특이합니다.

실제로 GNU 도구는~인 것 같다가지다세 가지 수준점점 더 자세한 대화형 참조:

--help일반적인 명령 옵션 - 짧은 사용법일반화하다,
man- 클래식 매뉴얼 페이지,"빠른 참조", 및
info- 더 자세한 GNU 관련 매뉴얼 - 전체,공식 문서.

종종 사람들은 매뉴얼 페이지를 기본 문서로 사용합니다. 심지어 GNU 정보 문서가 더 자세하고 공식적이라는 것을 알면서도 말입니다.

선호도에 따라 조금씩 다르지만 다음과 같은 사용 패턴이 매우 일반적이라고 생각합니다.

  • 사용처man foo기본,
    • 모든 옵션에 대한 설명과 함께
    • 가끔은 좀 밋밋한 느낌이 들 때도 있지만 충분해요
  • 가끔 사용 foo --help되는작은옵션 이름이 확실하지 않은 등의 질문,
    • 짧은 요약이 포함된 간결한 레이아웃
  • 그리고 info foo...거의 사용안 돼요.
    • 이는 더 많은 상황별 세부정보와 다른 명령에 대한 링크를 제공할 수 있습니다.
    • 하지만 누구도 emacs 스타일의 정보 브라우저 UI에 접근할 수 없기 때문에 확실히 알 수는 없습니다.
  • 기타 웹 기반 문서,
    • 매뉴얼 페이지가 너무 간결한 것 같습니다.


그러나 문제가 있습니다.

가장 일반적으로 사용되는 명령의 경우 다음으로 시작하십시오.coreutils, ls, cp, mkdir, csplit그리고 더,

매뉴얼 페이지에는 man foo정확히 동일한 정보가 포함되어 있습니다 foo --help. (1)

이것은 의미한다"진정한 문서", 사실 매뉴얼 페이지에는 없습니다. 우리가 생각했던 것처럼...
실제로는 매뉴얼 페이지에 있습니다.GNU 정보우리에게 파일을 제출하세요읽지 않았다!

man이제 페이지 및 (하단)을 보면 --help매뉴얼 페이지가 "더 자세히" 보이기 때문에 내용이 동일하다는 것을 알아차리기 어렵습니다. 이는 텍스트 레이아웃 밀도가 두 변형 간에 크게 다르기 때문입니다. --help극도로 느슨한 간격에 비해 극도의 압축입니다 man.


직접 비교해 보면 정말 충격적입니다.

ls --help | less

man ls | less

info --subnodes ls | less

(이 옵션은 --subnodes비교를 위해 페이지를 선형적으로 렌더링합니다. info하이퍼텍스트 자체를 표시하여 HTML과 유사한 문서 간을 연결합니다. 이 man명령에는 less보다 쉬운 비교를 위해 강제로 비색상 출력을 포함합니다.)


관련 팁:

터미널용 또는 GUI용과 info같은 기본 정보 뷰어에 대한 더 편리한 대안이 있습니다 . 사용 예는 다음과 같습니다. 또는 또는 url 열에 있습니다 .pinfokonqueror
pinfo lskonqueror info:lsinfo:lskonqueror


로서특별한 경우,문서내부 명령GNU의 bash,
호출됨쉘 내장 함수, 명령을 통해 액세스할 수 있습니다 help.
예를 들어 명령줄에서 bash다음을 시도해 보세요.
help cd


1) 다행히 @PádraigBrady는 그의 답변에서 이를 지적했습니다.

답변3

GNU coreutils 매뉴얼 페이지는 $cmd --help에서 생성됩니다.

또한 bash 내장 명령은 최소한 --help를 지원하지 않습니다. 거기에서 예를 들어 사용해야합니다 help umask. POSIX는 이제 이를 허용하고 ksh는 적어도 이를 사용합니다 umask --help. 최근에는 bash도 이 구문을 허용할 수 있다고 제안되었습니다.

관련 정보