最近では、ワンタイム関数をたくさん書いています。時々私は「まあ、これを保存する必要があります」と言い、type <function name>
それを使ってコードを表示してからコピーして.bashrcに貼り付けます。これを行うより速い方法はありますか?それとも、この目的のために作成された標準やコマンドはありますか?
FWIW、私はMintを実行しているパーソナルコンピュータでこれをやっているので、コピーや貼り付けなどの便利です。しかし、シェル専用環境に関する回答にも興味があります。
答え1
ksh
、およびを含むKornに似たシェルでは、zsh
次のことができますbash
。yash
typeset -fp myfunc
関数定義を印刷しますmyfunc
。
したがって、これを最後に追加できます~/.bashrc
。
typeset -fp myfunc >> ~/.bashrc
答え2
この目的のために作成されたいくつかの標準またはコマンド
よくわかりませんが、タイプ+テール+リダイレクトを使用できます。
たとえば、関数がありますedit()
。これは私のtype edit
結果です。
edit — это функция
edit ()
{
for arg in "$@";
do
if which "$arg" > /dev/null; then
subl $(realpath $(which "$arg"));
else
echo "$arg not found";
fi;
done
}
edit — это функция
私が使用する最初の行を抑制するにはtail -n +2
:
$ type edit | tail -n +2
edit ()
{
for arg in "$@";
do
if which "$arg" > /dev/null; then
subl $(realpath $(which "$arg"));
else
echo "$arg not found";
fi;
done
}
その後、この出力を.bash_profileや.bashrcなどにリダイレクトする必要があります。
type edit | tail -n +2 >> $HOME/.bash_profile
それでは、これが実際に関数であることを確認してみましょうedit
。引数が関数の場合、type -t edit
1 ワードのみ出力されます。function
最終的な解決策は次のとおりです。
add_to_bash_profile() {
local type_of_arg="$(type -t $1)"
if [ "$type_of_arg" == "function" ]
then
echo >> $HOME/.bash_profile #adding empty line for readability of .bash_profile
type $1 | tail -n +2 >> $HOME/.bash_profile
else
echo "$1 is not a function"
fi
}
.bash_profileにこの機能を追加できるようになりました。
add_to_bash_profile add_to_bash_profile