최근에는 일회성 함수를 많이 작성하고 있습니다. 때때로 저는 "음, 이것을 저장해야 합니다"라고 말하고 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
한 단어만 출력됩니다.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