zsh 별칭에서 큰따옴표와 작은따옴표를 이스케이프하세요.

zsh 별칭에서 큰따옴표와 작은따옴표를 이스케이프하세요.

이 답변의 결과를 복제하려고합니다.철사그러나 다른 명령을 사용합니다.

답변을 복사하려고 했지만 터미널을 로드할 때 zsh에서 계속 오류가 발생합니다.

/Users/k/.zshrc:155: defining function based on alias `convert'
/Users/k/.zshrc:155: parse error near `()'

별칭을 만들려는 명령은 다음과 같습니다.

awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}' SOME_FILE_NAME.pem

별칭을 지정하고 싶습니다.

convert SOME_FILE_NAME.pem

이것이 내가 zshrc에서 시도한 것입니다.

conv() {
    awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}' "$@"
}

답변1

이에 대한 별칭을 만들려면 다음을 수행해야 합니다.

alias conv='awk '\''NF {sub(/\r/, ""); printf "%s\\n",$0;}'\'

함수 만들기:

conv() awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}' "$@"

그러나 함수 정의 명령을 alias실행하기 전에 이미 정의한 경우 별칭 정의로 확장되어 다음 과 같은 해석을 시도하게 됩니다.convconvzsh

awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}'() awk 'NF {sub(/\r/, ""); printf "%s\\n",$0;}' "$@"

당신이보고있는 오류의 원인.

당신은 선택해야 합니다: 별칭이나 함수를 사용하되, 둘 다를 사용하지 마십시오.

별칭을 제거하려면(함수를 정의할 수 있도록):

unalias conv

관련 정보