사용자 정의 별칭만 나열하는 방법은 무엇입니까?

사용자 정의 별칭만 나열하는 방법은 무엇입니까?

저는 ZSH를 사용하고 있으며 일부 별칭이 정의되어 있습니다(여러 벌금에 저장되고 에 로드됨 ~/.zshrc). 좋은 결과. alias사용 가능한 모든 별칭을 나열하려면 이 명령을 실행합니다 .

이제는 사용자 지정 별칭, 즉 현재 사용자가 정의한 별칭만 나열할 수 있기를 원합니다. 어떻게 해야 하나요?

답변1

~/.zshrc자신의 별칭 정의를 시작하기 전에(또는 정의한 모든 위치에서) 별칭 목록을 기록할 수 있습니다.내 자신의별명):

aliases_before=()
printf -v aliases_before '%s=%s' "${(kv@)aliases}"

그런 다음 현재 목록과 비교하십시오.

aliases_now=()
printf -v aliases_now '%s=%s' "${(kv@)aliases}"
print -rC1 'Now and not before:' ${aliases_now:|aliases_before}

이것은 $aliases목록을 노출하기 위해 특별한 연관 배열을 사용하고 있습니다.정상별칭과 그 정의. 전역 별칭과 접미사 별칭을 확인 $galiases하고 알아보세요.$saliases

이전에 정의한 것과 동일한 방식으로 별칭을 재정의하면 해당 별칭이 이 목록에 나타나지 않습니다.


또 다른 방법은 함수를 사용하여 my-alias별칭을 정의하고 이를 자체 연관 배열에 기록하는 것입니다.

typeset -A my_aliases
my-alias() {
  local alias
  for alias do
    my_aliases[${alias%%=*}]=${alias#*=}
  done
  alias "$@"
}

그런 다음: typeset my_aliases별칭을 확인하세요.


별칭은 csh 기능에 가깝습니다. Bourne과 같은 쉘은 우수한 기능을 가지고 있습니다(별칭에 사용되는 모든 기능에 사용할 수는 없지만).

별칭을 함수로 정의하면(예: la() ls -la "$@"대신 alias ls='ls -la') 해당 파일에 정의된 함수 목록을 쿼리할 수 있습니다.

예를 들어,

print -rC1 -- ${(k)functions_source[(Re)$HOME/.zshrc]}

~/.zshrc에 정의된 함수를 나열합니다.

whence -f --  ${(k)functions_source[(Re)$HOME/.zshrc]}

해당 정의도 표시됩니다.

관련 정보