[bash] 쉘에 정의 된 함수를 어떻게 나열합니까?

별명을 입력하여 모든 별명 목록을 표시 할 수 있습니다.

그러나 기능을 위해 내가 할 수있는 일은 grep my .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"
}

그것은 Lri의 대답 을보기 전에 이루어 졌으므로 그로부터 외삽하여 대신에 declareand 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 compgen경우에 작동하지 않습니다).