사용자 정의 bash 함수와 별칭을 어떻게 문서화합니까?

사용자 정의 bash 함수와 별칭을 어떻게 문서화합니까?

질문:

여러 bash 함수와 별칭이 있습니다. 나는 모든 것을 바로 기억할 수 없기 때문에 대개 필요한 것을 찾기 위해 .bash_functions파일을 열어 보게 됩니다..bash_aliases

질문):

Bash 프롬프트에서 사용 가능한 기능/별칭을 나열하는 방법은 무엇입니까?

내 bash 함수/별칭(PHPDoc과 유사)을 문서화하기 위해 주석을 사용할 수 있습니까?

나는 파일을 열지 않고도 사용할 수 있는 것을 출력하는 쉽고 좋은 방법을 원합니다. 명령을 실행하고 내 기능/별칭의 동적 목록을 표시하는 것은 멋질 것입니다(예를 사용하는 것이 더할 나위 없이 좋습니다). :)

답변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

다음 함수와 javadoc과 같은 주석을 사용하여 스크립트에 대한 --help 옵션을 만들었습니다.

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

나는 자체 문서화 bash ~./bashrc기능 에 내장된 (null) 기능을 사용해 왔습니다 :. 장점은 실행 중에는 아무 작업도 수행하지 않지만 인쇄할 때는 표시된다는 것입니다.

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

관련 정보