bash 구성 파일에서 별칭의 명령 대체가 해결되었습니까? [복사]

bash 구성 파일에서 별칭의 명령 대체가 해결되었습니까? [복사]

내 Mac 주소를 무작위로 변경하기 위해 별칭을 만들고 싶습니다.

alias chrandmac="sudo ifconfig en0 ether $(openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//')"

하지만 명령 대체 부분은 구성 파일 실행 시 해결되었습니다.

alias chrandmac='sudo ifconfig en0 ether 83:3a:bf:fc:4e:29'

왜 이런 일이 발생하는지에 대한 아이디어가 있습니까?

답변1

별칭 대신 함수를 사용하고 싶습니다. 별칭처럼 시작 파일에 넣을 수 있습니다.

chrandmac() {
    sudo ifconfig en0 ether $(openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//')
}

별칭과 함께 작동하려면 작은따옴표를 사용하여 명령 대체의 확장을 방지해야 합니다.

alias chrandmac='sudo ifconfig en0 ether $(openssl rand -hex 6 | sed '\''s/\(..\)/\1:/g; s/.$//'\'')'

관련 정보