Linux History Expansion은 zsh에서 수정자로 사용되지 않는 콜론을 이스케이프합니다.

Linux History Expansion은 zsh에서 수정자로 사용되지 않는 콜론을 이스케이프합니다.

다음과 같은 명령이 있습니다.

echo test

이제 zsh에서 기록 확장이 포함된 다른 명령의 마지막 매개변수를 사용하고 싶습니다. 내 또 다른 명령에는 앞에 콜론 ":"이 있으므로 내가 원하는 결과는 다음과 같습니다.

echo test:someothertext

다음과 같이 Linux bash 기록 확장을 사용해 보았습니다.

echo !!$:someothertext

:s는 수정자로 해석되어 다음과 같은 결과를 낳습니다.

echo testsomeothertext

따라서 필수 콜론이 누락되었습니다.

실제 시나리오는 더 유용하며 git 명령(git showbranch:file)을 사용하지만 이 에코 예제는 모든 시스템에서 재현하기가 더 쉽습니다.

콜론에 대한 이스케이프 방법으로 "\"를 사용해 보았지만 작동하지 않았습니다("\"도 결과에 인쇄됨). 두 번째 콜론이 표시되지 않도록 유효한 수정자를 사용해 보았습니다. 해석되었지만 효과가 작동하지 않습니다.

그래서 나는 이것을 시도했습니다 :

echo !!$:p:someothertext

결과 :

zsh: substitution failed

답변1

좋지는 않지만 bash이 경우에는 작동합니다.

echo !!$\
:someothertext

답변2

언제든지 다음을 사용할 수 있습니다.

echo !!$':moretext'

또는:

echo !!$'':moretext

또는:

echo $_:moretext

관련 정보