
Linuxコンソール上でIPアドレスの計算をさせるコマンド3つ
時々、CIDR形式で書かれたI…
bashで、現在読み込まれているfunctionの一覧とその内容(コード)を、ターミナルからbashrc等を読まないで確認したい時がある。
調べたところ、以下のような方法で確認できるようだ。
単純に、全部のfunctionとその内容を見るだけであれば、setコマンドをオプションなしで実行してやればいい。
function以外も出力されてしまうが、読み込まれているfunctionとそのコードが出力される。
blacknon@test-ubuntu18:~$ set BASH=/bin/bash ... quote () { local quoted=${1//\'/\'\\'\'}; printf "'%s'" "$quoted" }
単純に設定されているfunction等はsetで見れることは確認できたが、これだとちょっと見にくい。
functionの一覧を出力して、必要だったらその中身を見るようにしたい場合は、compgenやdeclare(aliasでtypesetが設定されてる場合もある様子)など、いくつか手段があるようだ。
functionの一覧を出力する場合は以下。
compgen -A function declare -F typeset -F
blacknon@test-ubuntu18:~$ compgen -A function __expand_tilde_by_ref __get_cword_at_cursor_by_ref __git_eread __git_ps1 __git_ps1_colorize_gitstring ... blacknon@test-ubuntu18:~$ declare -F declare -f __expand_tilde_by_ref declare -f __get_cword_at_cursor_by_ref declare -f __git_eread declare -f __git_ps1 declare -f __git_ps1_colorize_gitstring declare -f __git_ps1_show_upstream declare -f __grub_dir declare -f __grub_get_last_option declare -f __grub_get_options_from_help declare -f __grub_get_options_from_usage declare -f __grub_list_menuentries declare -f __grub_list_modules ...
functionの内容を確認する場合は以下。
declare -f <function名> typeset -f <function名>
blacknon@test-ubuntu18:~$ declare -f quote quote () { local quoted=${1//\'/\'\\'\'}; printf "'%s'" "$quoted" } blacknon@test-ubuntu18:~$ typeset -f quote quote () { local quoted=${1//\'/\'\\'\'}; printf "'%s'" "$quoted" }
通常であれば読み込んでる.bashrc等をみればいいだけなのだけど、前に書いたローカルのbashrcを使ってssh接続する方法だとファイルが存在しないので利用できない。
そのような状態でも、この方法でfunctionの内容を調べることができる。