Como documentar minhas funções e aliases personalizados do bash?
11
Problema:
Eu tenho várias funções e aliases do bash. Não consigo me lembrar de todos eles em cima da minha cabeça, então geralmente acabo abrindo meus arquivos .bash_functionse .bash_aliasespara encontrar o que preciso.
Questões):
Como posso listar funções / aliases disponíveis no prompt do bash?
É possível para mim documentar minhas funções / aliases bash usando comentários (como o PHPDoc)?
Gostaria apenas de uma maneira simples / agradável de exibir o que está disponível sem precisar abrir os arquivos. Seria legal executar um comando e cuspir uma lista dinâmica de minhas funções / aliases (exemplos de uso seriam uma vantagem). :)
Para ver os nomes de todas as funções ativas, execute:
declare -F
Para ver os nomes e as definições de todas as funções ativas, execute:
declare -f
Mais
As informações sobre aliases também estão disponíveis em um formato compatível com scripts com:
declare -p BASH_ALIASES
man bashfornece mais informações sobre o aliasbuiltin:
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 namein 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.
Em relação às funções, man bashexplica que declarepode fornecer ainda mais informações disponíveis se a extdebugopção estiver configurada:
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).
Ha! Muito fácil. Obrigado! Isso é bem fácil. Alguma dica sobre como listar funções personalizadas?
Mhulse # 9/14
1
@mhulse De nada. Veja a atualização para funções.
10139 John1024
Obrigado pela atualização! Vejo que você adicionou as declareinformações. Obrigado! Eu poderia viver com declaree aliaspara uma visualização rápida e fácil. Acabei de perceber que posso fazer o declare -f treeque cospe apenas a treefunção. Legal! Eu estou vendido. Obrigado novamente! (Eu posso aceitar isso como resposta em 4 minutos.)
mhulse
2
@ashumeow O texto do ss64.com em ss64.com/bash/alias.html com seus termos de direitos autorais e distribuição ss64.com/docs/copyright.html (não comercial!) BREAK os termos do GFDL - a licença do bash manual, porque incluem texto de gnu.org/software/bash/manual/html_node/Aliases.html : o uso comercial dos trabalhos derivados do manual do Bash deve ser permitido. Sua compilação sem referências não parece boa por isso e por razões de atribuição semelhantes.
Eu uso a seguinte função e javadoc como comentários para criar uma opção --help para meus scripts:
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;doif( echo "${line}"| grep -q '{@param [^}]*}');then# color parameter and echo evaulated valueeval 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');fidone;}
Isso é muito legal! Eu gostaria de poder dar uma marca de verificação verde para várias respostas. Obrigado Kasper! Mal posso esperar para experimentar isso. :)
mhulse
Eu continuo recebendo grep: : No such file or directoryao tentar executá-lo via unix / bash como uma função. … Eu sei que essa pergunta é antiga, mas você poderia dar um exemplo de como alguém executaria isso apenas como uma função bash via linha de comando? Obrigado!!! :)
mhulse
1
@ mhulse, esqueci de mencionar que você precisa definir PROG=$0; resposta atualizada.
Kasper van den Berg
Obrigado Kasper! Eu realmente quero fazer isso funcionar, mas não estou tendo nenhuma sorte até agora. Eu odiaria continuar incomodando você, mas você poderia fornecer uma chamada de exemplo da linha de comando do bash? Além disso, como eu poderia configurar --helpou -help(ou seja, if echo "$@" | egrep -q -e '(-h)|(--help)'; then ...eu gostaria de configurar o meu. .bash_functions/ aliasesPara permitir aliasname -hou function arg --helpObrigado novamente.!
mhulse
1
@mhulse A chamada de exemplo da generateReport.shprópria linha de comando só é útil se você quiser indexar documentos médicos via Zylab e consultá-los via Aida. No entanto, para tentar o uso função ajuda o seguinte: wget https://raw.githubusercontent.com/kaspervandenberg/aida/master/Search/zylabPatisClient/src/main/scripts/generateReport.sh && chmod a+x generateReport.sh && ./generateReport.sh --help. Como alcançar a segunda parte usando o aliasname.bash_functions (ainda) não sei.
declare
informações. Obrigado! Eu poderia viver comdeclare
ealias
para uma visualização rápida e fácil. Acabei de perceber que posso fazer odeclare -f tree
que cospe apenas atree
função. Legal! Eu estou vendido. Obrigado novamente! (Eu posso aceitar isso como resposta em 4 minutos.)Eu uso a seguinte função e javadoc como comentários para criar uma opção --help para meus scripts:
Em https://github.com/kaspervandenberg/aida/blob/master/Search/zylabPatisClient/src/main/scripts/generateReport.sh, você pode ver como é usado em um script real.
fonte
grep: : No such file or directory
ao tentar executá-lo via unix / bash como uma função. … Eu sei que essa pergunta é antiga, mas você poderia dar um exemplo de como alguém executaria isso apenas como uma função bash via linha de comando? Obrigado!!! :)PROG=$0
; resposta atualizada.--help
ou-help
(ou seja,if echo "$@" | egrep -q -e '(-h)|(--help)'; then ...
eu gostaria de configurar o meu..bash_functions
/aliases
Para permitiraliasname -h
oufunction arg --help
Obrigado novamente.!generateReport.sh
própria linha de comando só é útil se você quiser indexar documentos médicos via Zylab e consultá-los via Aida. No entanto, para tentar o uso função ajuda o seguinte:wget https://raw.githubusercontent.com/kaspervandenberg/aida/master/Search/zylabPatisClient/src/main/scripts/generateReport.sh && chmod a+x generateReport.sh && ./generateReport.sh --help
. Como alcançar a segunda parte usando oaliasname
.bash_functions (ainda) não sei.