대화식으로 사용되는 기능에 사용 설명 표시


11

.bashrc터미널에 대화 형으로 사용되도록 의도 된 여러 함수 가 있습니다. 나는 일반적으로 의도 된 사용법을 설명하는 주석을 붙였다.

# Usage: foo [bar]
# Foo's a bar into a baz
foo() {
  ...
}

소스 코드를 탐색하는 경우에는 문제가 없지만 type터미널에서 실행 하여 함수의 기능을 신속하게 알 수 있습니다. 그러나 이것은 (의견 적으로) 주석을 포함하지 않습니다 :

$ type foo
foo is a function
foo ()
{
    ...
}

"이러한 종류의 주석이 지속되어 주석을 type표시 할 수 있다면 좋지 않을까요?" 그리고 파이썬의 docstrings 정신에서 나는 이것을 생각해 냈습니다.

foo() {
  : Usage: foo [bar]
  : "Foo's a bar into a baz"
  ...
}

$ type foo
foo is a function
foo ()
{
    : Usage: foo [bar];
    : "Foo's a bar into a baz";
    ...
}

이제 사용법이 type출력에 바로 포함됩니다 ! 물론 따옴표는 오류가 발생하기 쉬운 문제가되지만 작동하면 사용자 경험이 더 좋습니다.

제 질문은 이것이 끔찍한 생각입니까? Bash 함수 사용자에게 추가 컨텍스트를 제공하기위한 더 나은 대안 (예 : man/ infofor 함수)이 있습니까?

이상적으로는 여전히 소스 코드를 보는 사람들이 혜택을 얻을 수 있도록 사용법 정의를 함수 정의 근처에 배치하고 싶지만, 이것을 수행하는 "적절한"방법이 있다면 대안을 사용할 수 있습니다.

이것들은 모두 매우 간단한 도우미 스타일 함수이며 편집 하기 위해 대화식으로 약간의 추가 컨텍스트를 얻고 싶습니다. 확실히 플래그를 구문 분석하는보다 복잡한 스크립트의 경우 --help옵션을 추가 하지만 모든 경우에 도움말 플래그를 추가하는 것이 다소 부담이됩니다. 아마도 그것은 내가 받아 들여야 할 비용 일 수도 있지만,이 :해킹은 소스를 편집하기가 훨씬 어려워지지 않으면 합리적으로 잘 작동하는 것 같습니다.

답변:


8

나는 이것을하는 좋은 방법이 하나만 있다고 생각하지 않습니다.

많은 기능, 스크립트 및 기타 실행 파일은 사용자가 제공 -h하거나 --help옵션으로 도움말 메시지를 제공합니다 .

$ foo() {
[[ "$1" =~ (-h|--help) ]] && { cat <<EOF
Usage: foo [bar]
Foo's a bar into a baz
EOF
return;
}
: ...other stuff...
}

예를 들면 다음과 같습니다.

$ foo -h
Usage: foo [bar]
Foo's a bar into a baz

$ foo --help
Usage: foo [bar]
Foo's a bar into a baz

그렇습니다. 이들은 간단한 기능이며 지나치게 복잡하게 만들지 않으려 고합니다. 구문 분석 플래그를 수행하는 명령의 경우 확실히 --help옵션을 추가합니다 .
dimo414

프로그래밍에서 일관성은 미덕입니다. 또한 "복잡한"의 의미에 따라 다릅니다.
John1024

그리고 당신의 접근 방식은 영리하고 훌륭합니다 (그리고 당신의 질문에는 이미 +1이 있습니다).
John1024

1
감사; 귀하의 구현 --help도 비 침습적이며,이 경우 내 기본 기준이라고 생각합니다. :사용 사례에 더 직접 맞기 때문에 트릭 을 사용하게 될 수도 있지만 지원하기가 어렵지 않으며 --help대부분의 사용자가 기대할 것이라고 지적합니다.
dimo414

1
+1. "getopts 사용"에 대답하려고했지만 다른 옵션이 없으면 제대로 작동합니다. 함수에 다른 옵션이 있으면를 사용하십시오 getopts.
cas
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.