별칭에 '를 사용하는 방법은 무엇입니까?

별칭에 '를 사용하는 방법은 무엇입니까?

별칭을 사용하여 호출하고 싶은 단선이 있습니다.

while printf '%s ' "$(df -P / | awk 'NR==2 { print $(NF-1) }')"; do sleep 30; done

나는 탈출을 시도했지만 '작동 \'하지 않았습니다.

별칭으로 한 줄 이상 사용하는 올바른 구문은 무엇입니까?

답변1

alias my_du=$'while printf \'%s \' "$(df -P / | awk \'NR==2 { print $(NF-1) }\')"; do sleep 3; done'

당신은 결과를 확인할 수 있습니다

alias my_du

or then 대신에 $()로 인용된 경우 대체되고 의도한 프로그램 호출이 아닌 결과가 별칭 정의의 일부가 됩니다."'\

답변2

이를 별명으로 동축화할 수 있지만 일반적으로 기능이 선호됩니다. 에서 man bash:

거의 모든 목적에서 별칭은 셸 함수로 대체됩니다.

함수 형식의 별칭:

my_du() {
    while printf '%s ' "$(df -P / | awk 'NR==2 { print $(NF-1) }')"
    do
        sleep 30
    done
}

더 읽기 쉽고 유지 관리도 더 쉽습니다.

답변3

\작은따옴표 컨텍스트에서 문자 그대로 사용되므로 작은따옴표 안에 있는 동안 작은따옴표를 이스케이프할 수 없습니다 . 이스케이프하기 전에 작은따옴표를 닫거나 큰따옴표를 사용하는 것이 더 좋습니다.

alias my_du="while printf '%s ' \"\$(df -P / | awk 'NR==2 { print \$(NF-1) }')\"; do sleep 30; done"

답변4

인수를 사용하거나 환경과 어떤 방식으로든 상호 작용하는 명령을 원하면 함수를 사용하세요. 적어도 bash에서는 별칭을 정의하면 확장됩니다.~할 것 같다마치 인수를 취하거나 변수를 사용한 것처럼 행동합니다. 때때로. 머피의 법칙은 실제로 필요할 때 작동하지 않는다는 것을 보장합니다.

관련 정보