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


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.