사용자 정의 bash 함수 및 별칭을 문서화하는 방법은 무엇입니까?

사용자 정의 bash 함수 및 별칭을 문서화하는 방법은 무엇입니까?

문제:

여러 bash 함수와 별칭이 있습니다. 머리 속으로 그것들을 모두 기억할 수 없기 때문에 대개는 필요한 것을 찾기 위해 내 .bash_functions및 파일을 열게 됩니다..bash_aliases

질문):

Bash 프롬프트에서 사용할 수 있는 함수/별명을 어떻게 나열할 수 있나요?

주석(PHPDoc과 유사)을 사용하여 내 bash 함수/별칭을 문서화하는 것이 가능합니까?

나는 파일을 열지 않고도 사용 가능한 것을 출력할 수 있는 간단하고 좋은 방법을 원합니다. 명령을 실행하고 내 기능/별칭의 동적 목록을 표시하는 것은 멋질 것입니다(사용 예는 플러스가 될 것입니다). :)

답변1

활성 별칭을 나열하려면 다음을 실행하세요.

alias

모든 활성 함수의 이름을 보려면 다음을 실행하세요.

declare -F

모든 활성 함수의 이름과 정의를 보려면 다음을 실행하세요.

declare -f

별칭에 대한 정보는 다음과 같은 스크립트 친화적인 형식으로도 제공됩니다.

declare -p BASH_ALIASES

man bash내장 에 대한 자세한 정보를 제공합니다 alias.

   alias [-p] [name[=value] ...]
          Alias with  no  arguments  or  with  the  -p
          option  prints  the  list  of aliases in the
          form alias name=value  on  standard  output.
          When  arguments  are  supplied,  an alias is
          defined for each name whose value is  given.
          A  trailing  space in  value causes the next
          word to be checked  for  alias  substitution
          when  the  alias is expanded.  For each name
          in the argument list for which no  value  is
          supplied, the name and value of the alias is
          printed.  Alias returns true unless  a  name
          is   given  for  which  no  alias  has  been
          defined.

기능과 관련하여 옵션을 설정 하면 더 많은 정보를 제공할 수 있다고 man bash설명합니다 .declareextdebug

   Function  names  and definitions may be listed with
   the -f option to the  declare  or  typeset  builtin
   commands.  The -F option to declare or typeset will
   list the function names only  (and  optionally  the
   source  file and line number, if the extdebug shell
   option is enabled).

연결

  1. http://ss64.com/bash/alias.html
  2. http://linfo.org/alias.html

답변2

내 스크립트에 대한 --help 옵션을 생성하기 위해 다음 함수와 주석과 같은 javadoc을 사용합니다.

PROG=$0 #The program name, used within doHelp

# Print a help message
# doHelp uses lines starting with ## to create the output
# the tags {@param ...} and {@code ...} colorize words
doHelp() {
grep '^##' "${PROG}" |
sed -e 's/^##[[:space:]]*//' |
while read line; do
    if ( echo "${line}" | grep -q '{@param [^}]*}' ); then
        # color parameter and echo evaulated value
        eval echo -e $(echo ${line} | sed \
            -e 's/^\(.*\){@param \([^}]*\)}\(.*\)$/\
            \"\1\\\\E[32;40m\2\\\\E[37;40m\\t(value: \"$\2\")\3\"/');
    else
        # other color commands
        echo -e $(echo ${line} | sed \
            -e 's/{@code \([^}]*\)}/\\E[36;40m\1\\E[37;40m/g');
    fi
done;
}

~에https://github.com/kaspervandenberg/aida/blob/master/Search/zylabPatisClient/src/main/scripts/generateReport.sh실제 스크립트 내에서 어떻게 사용되는지 확인할 수 있습니다.

답변3

나는 (null) 내장 기능을 ~./bashrc사용 하여 bash 기능을 자체적으로 문서화했습니다 . :장점은 실행 시 아무것도 실행되지 않지만 인쇄 시 표시된다는 것입니다.

$ declare -f my_function
my_function() {
    : My function does this and that
    echo "foo"
}
$ my_function
foo

관련 정보