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

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

별칭을 사용하여 단일 회선으로 전화하고 싶습니다.

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

또는 대신 $()참조 되면 교체되고 의도한 프로그램 호출 대신 결과가 별칭 정의의 일부가 됩니다."'\

답변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에서는 별칭이 정의될 때 확장됩니다.가능한매개변수를 받아들이거나 변수를 사용하는 것과 같습니다. 때때로. 머피의 법칙은 이것이 정말로 필요할 때 작동하지 않도록 보장합니다.

관련 정보