SSH 명령에서 따옴표를 이스케이프 처리하는 방법은 무엇입니까?

SSH 명령에서 따옴표를 이스케이프 처리하는 방법은 무엇입니까?

SSH를 통해 명령을 실행할 수 있습니다.

$ ssh user@host bash -c "'echo x '"
x

그러나 나는 탈출할 수 없다는 것을 알았습니다 '.

$ ssh user@host bash -c "'echo \''"
bash: -c: line 0: unexpected EOF while looking for matching `''
bash: -c: line 1: syntax error: unexpected end of file

나도 그것을 시도했지만 \\아무것도 작동하지 않습니다.\\\\\\\

아이디어는 비슷한 것을 제공하는 것입니다 ls -1tr /var/log/ | head -10 | xargs -d '\n' -I {} echo {}. 하지만 \'작동하지 않아서 통과하는 방법을 모르겠습니다 '\n'. 이 목표를 어떻게 달성할 수 있나요?

답변1

지옥을 인용하고 있는 자신을 발견하면 여기 문서가 종종 도움이 됩니다.

ssh user@host bash <<END
echo \'
END

즉, 작은따옴표로 묶인 문자열에는 작은따옴표가 포함될 수 없습니다.

답변2

GNU Parallel은 내부적으로 문자열을 여러 번 참조합니다. 다음과 같은 목적으로 인용 엔진을 사용할 수 있습니다.

$ parallel --shellquote
write your string here, which may contain ' or " or \n
ctrl-D

두 번 인용해야 하는 경우:

parallel --shellquote --shellquote

오락을 위해:

echo "'" | parallel --shellquote --shellquote --shellquote --shellquote --shellquote --shellquote

관련 정보