如何記錄我的自訂 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

我一直在使用 (null) 內建功能自我記錄 bash~./bashrc函數:。好處是運行時不會執行任何操作,但列印時會顯示。

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

相關內容