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


11

문제:

bash 함수와 별칭이 여러 개 있습니다. 난 보통 내 개방 결국 그래서 나는 내 머리 위로 떨어져 그들 모두를 기억할 수 .bash_functions.bash_aliases내가 필요한 것을 찾기 위해 파일을.

질문 :

bash 프롬프트에서 사용 가능한 함수 / 별칭을 어떻게 나열합니까?

주석 (PHPDoc과 같은 Kinda)을 사용하여 bash 함수 / 별명을 문서화 할 수 있습니까?

파일을 열지 않고도 사용 가능한 것을 출력하는 간단하고 좋은 방법을 원합니다. 명령을 실행하고 내 기능 / 별칭의 동적 목록을 뱉어내는 것이 좋습니다 (사용 예는 플러스 일 것입니다). :)

답변:


17

활성 별명을 나열하려면 다음을 실행하십시오.

alias

모든 활성 기능의 이름을 보려면 다음을 실행하십시오.

declare -F

모든 활성 기능의 이름과 정의를 보려면 다음을 실행하십시오.

declare -f

별칭에 대한 정보는 다음과 같은 스크립트 친화적 형식입니다.

declare -p BASH_ALIASES

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

   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

하아! 너무 쉽다. 감사! 꽤 쉽습니다. 사용자 정의 함수 나열에 대한 팁이 있습니까?
mhulse

1
@mhulse 천만에요. 기능 업데이트를 참조하십시오.
John1024

업데이트 해 주셔서 감사합니다! declare정보 를 추가 한 것을 확인했습니다 . 감사합니다! 나는 살 수 declarealias빠르고 쉽게 볼 수. 방금 함수 declare -f tree만 뱉을 수있는 것을 알았습니다 tree. 멋있는! 나는 팔렸다. 다시 감사합니다! (4 분 내에 답변으로 수락 할 수 있습니다.)
mhulse

2
@ashumeow ss64.com의 텍스트 및 ss64.com/bash/alias.html 의 저작권 및 배포 조건 ss64.com/docs/copyright.html (비상업적!) BREAK bash 의 조건 인 bash의 라이센스 gnu.org/software/bash/manual/html_node/Aliases.html의 텍스트를 포함하고 있기 때문에 : Bash 매뉴얼의 파생 저작물의 상업적 사용이 허용되어야합니다. 참조가없는 컴파일은 이와 비슷한 특성 때문에 좋지 않습니다.
imz-Ivan Zakharyaschev

쉘 스크립트 옵션의 간단한 처리에 설명 된 기술 을 사용할 수 있습니다.
DocSalvager

7

다음 함수와 주석과 같은 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 당신이 실제 스크립트에서 사용되는 방법을 볼 수 있습니다.


정말 멋지다! 여러 답변에 녹색 확인 표시를 표시 할 수 있기를 바랍니다. 카스퍼 감사합니다! 나는 이것을 시도하기를 기다릴 수 없다. :)
mhulse

grep: : No such file or directory유닉스 / bash를 통해 함수로 실행하려고하면 계속 얻습니다 . … 나는이 질문이 오래되었다는 것을 알고 있지만 명령 줄을 통해 bash 함수만으로 어떻게 이것을 실행할 수 있는지에 대한 예를들 수 있습니까? 감사!!! :)
mhulse

1
@ mhulse, 나는 당신이 정의해야한다고 언급하는 것을 잊었다 PROG=$0. 답변이 업데이트되었습니다.
카스퍼 반 덴 버그

카스퍼 감사합니다! 나는 이것을 실제로 작동시키고 싶지만 지금까지 운이 없다. 나는 당신을 계속 괴롭 히고 싶지 않지만 bash 명령 줄에서 예제 호출을 제공 할 수 있습니까? 또한, 방법은 내가 설정할 수 있습니다 --help또는 -help(즉, if echo "$@" | egrep -q -e '(-h)|(--help)'; then ...내가 설정 내 싶네요. .bash_functions/을 aliases수 있도록 aliasname -h하거나 function arg --help감사를 다시.!
mhulse

1
@mhulse 명령 줄 generateReport.sh자체 의 예제 호출은 Zylab을 통해 의료 문서를 색인화하고 Aida를 통해 쿼리하려는 경우에만 유용합니다. 그러나 도움말 기능을 사용하려면 다음을 사용하십시오 wget https://raw.githubusercontent.com/kaspervandenberg/aida/master/Search/zylabPatisClient/src/main/scripts/generateReport.sh && chmod a+x generateReport.sh && ./generateReport.sh --help.. aliasname.bash_functions에서 사용하여 두 번째 부분을 얻는 방법 나는 아직 모른다.
카스퍼 반 덴 버그
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.