질문:
여러 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
설명이 제공될 수 있습니다.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
다음 함수와 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