별칭을 사용하여 호출하고 싶은 단선이 있습니다.
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에서는 별칭을 정의하면 확장됩니다.~할 것 같다마치 인수를 취하거나 변수를 사용한 것처럼 행동합니다. 때때로. 머피의 법칙은 실제로 필요할 때 작동하지 않는다는 것을 보장합니다.