셸에 정의된 기능을 나열하려면 어떻게 해야 합니까?
별칭을 입력하여 모든 별칭 목록을 표시할 수 있습니다.
하지만 기능에 대해서는, 제가 할 수 있는 것은 그리피뿐입니다..bash_profile.
그러면 해당 파일에 있는 파일만 얻을 수 있고, 보조 파일이나 동적으로 정의된 파일은 얻을 수 없습니다.
현재 정의된 기능을 확인할 수 있는 더 편리한 방법이 있습니까?
declare -F
함수 이름 및 정의는 다음과 같이 나열될 수 있습니다.
-f에 대한 옵션declare내장 명령(배시 내장 명령 참조).그-F에 대한 선택권.declare에는 함수 이름만 나열됩니다(및 선택적으로 원본 파일 및 줄 번호).
bash 셸 가정:
typeset -f
에는 함수가 나열됩니다.
typeset -F
에는 함수 이름만 나열됩니다.
declare -F
모든 함수의 이름을 제공합니다.
type function_name
특정 기능에 대한 소스를 제공합니다.
declare -F실제로는 함수 이름뿐만 아니라 선언 명령도 출력합니다.
$ declare -F
declare -f function1
declare -f function2
사용할 수 있습니다.compgen -A function함수 이름만 인쇄하려면:
$ compgen -A function
function1
function2
유형 집합이 더 이상 사용되지 않습니다. 다음을 사용하십시오.
declare -f
또는
declare -f function_name
또는
type function_name
set | grep " ()"
grep 대신 fgrep 또는 hgrep을 사용할 수도 있습니다(hgrep은 제가 개인적으로 가장 좋아하는 것입니다, grep이지만 'grep-ped' 결과를 강조 표시합니다).
hgrep은 여기에서 찾을 수 있습니다: ACME Labs hgrep
저는 아직 배우는 것에 전문가는 아니지만, 같은 것을 원했기 때문에 이 질문과 답을 찾은 후, 저는 궁극적으로 제가 추구하는 것을 제공하기 위해 다음과 같은 것을 썼습니다: 별칭과 기능의 형식화된 목록:
function functionaliaslist() {
echo
echo -e "\033[1;4;32m""Functions:""\033[0;34m"
declare -F | awk {'print $3'}
echo
echo -e "\033[1;4;32m""Aliases:""\033[0;34m"
alias | awk {'print $2'} | awk -F= {'print $1'}
echo
echo -e "\033[0m"
}
그건 제가 리리의 대답을 보기 전이었고, 그래서 그것으로부터 추론해보면, 저는 그것을 대체합니다.declare그리고.alias적절한 행compgen명령 대신 다음을 가져옵니다.
function functionaliaslist() {
echo
echo -e "\033[1;4;32m""Functions:""\033[0;34m"
compgen -A function
echo
echo -e "\033[1;4;32m""Aliases:""\033[0;34m"
compgen -A alias
echo
echo -e "\033[0m"
}
내가 원했던 것에 대해 효과가 있습니다.다른 사람에게 도움이 될 경우를 대비해 공유합니다.
사용할 수 있는 다양한 다른 "액션"이 있습니다.compgen -A [action](및 기타 옵션:compgen물론).나는 여기서 man 페이지에 대한 링크도 포함된 좋은 글을 찾았습니다.man compgen경우에 따라 작동하지 않음).
Bash 셸 스크립트 관련 답변
셸에서 내보낸 함수가 있으면 호출된 스크립트에서 해당 함수를 볼 수 있습니다.하지만 다행히도, 그들은 그렇게 표시됩니다.
복사-파스타 데모 스크립트
#!/bin/bash
foo(){ :;}; bar(){ :;}; baz(){ :;}; export -f foo bar
export -pf
bash -c $'spam(){ :;}; \
echo "RAW:"; \
declare -pF; \
echo "FILTERED:"; \
declare -pF | awk \'$2 !~ /x/{print$3}\''
바시 문자 변환
/tmp $ foo(){ :;}; bar(){ :;}; baz(){ :;}; export -f foo bar
/tmp $ export -pf
bar ()
{
:
}
declare -fx bar
foo ()
{
:
}
declare -fx foo
/tmp $ bash -c $'spam(){ :;}; echo "RAW:"; declare -pF; echo "FILTERED:"; declare -pF | awk \'$2 !~ /x/{print$3}\''
RAW:
declare -fx bar
declare -fx foo
declare -f spam
FILTERED:
spam
언급URL : https://stackoverflow.com/questions/4471364/how-do-i-list-the-functions-defined-in-my-shell
'programing' 카테고리의 다른 글
| 셀레늄을 사용하여 인증서를 처리하는 방법은 무엇입니까? (0) | 2023.05.27 |
|---|---|
| Git 기록에서 파일을 제거하는 방법은 무엇입니까? (0) | 2023.05.22 |
| WPF 툴킷 데이터 그리드에서 데이터 그리드 템플릿 열을 정렬하려면 어떻게 해야 합니까? (0) | 2023.05.22 |
| NodeJS에서 의존성 주입이 필요합니까? 아니면 ...을 처리하는 방법이 필요합니까? (0) | 2023.05.22 |
| 제안/자동 완성을 통한 Excel 데이터 검증 (0) | 2023.05.22 |