저는 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]}
해당 정의도 표시됩니다.