문제:
여러 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
설명합니다 .declare
extdebug
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).
연결
답변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