백틱을 사용하여 cmd의 별칭 만들기

백틱을 사용하여 cmd의 별칭 만들기

저는 tcsh에서 일합니다. 다음에 대한 별칭을 만드는 방법:

nc stop `nc list | awk '/Running/{print $1}'`

나는 다음과 같은 다양한 변형을 시도했습니다.

alias ncstop "nc stop `nc list | awk '/Running/{print $1}'`"

하지만 아무것도 작동하지 않습니다

답변1

별칭을 사용하기 전에 백틱이 평가되지 않도록 따옴표를 약간 변경할 수 있습니다.

alias ncstop 'nc stop `nc list | awk '\''/Running/{print $1}'\''`'

'이는 셸이 |, 와 같은 $특수 문자를 해석하지 않고 해당 문자가 따옴표로 사용될 때 작동합니다 backtick. 이렇게 하면 이러한 특수 문자를 별칭 정의에 입력할 수 있습니다. 그러나 별칭을 정의하는 과정에서 쉘은 외부 레이어를 삭제합니다 '. 별칭 정의의 실제 내용은 다음과 같아야 합니다.

nc stop `nc list | awk '/Running/{print $1}'`

구조 '\''에는 일반적으로 설명이 필요합니다. 하지만 간단히 말해서 아포스트로피 세 개입니다. 첫 번째는 이전에 인용된 문자열을 끝내고, 다음(셸의 해석을 피하기 위해 이스케이프됨)은 통과하며, 세 번째는 다른 인용된 문자열을 시작합니다. 따라서 이 구문을 사용하면 작은따옴표로 묶인 문자열 안에 '\''아포스트로피(예: '또는 )를 표시할 수 있습니다.single quote

여러 계층의 해석을 거쳐야 하는 문자열에서 모든 따옴표와 이스케이프를 올바르게 가져오는 것은 금방 혼란스럽고 복잡해질 수 있습니다. 이 질문에 대한 한 의견에서는 bash별칭을 함수로 구현하는 것을 고려하도록 제안했습니다. 나는 같은 것이 제안될 수 있다고 확신합니다 tcsh.

관련 정보