이스케이프된 큰따옴표를 사용하여 문자열에 바인딩

이스케이프된 큰따옴표를 사용하여 문자열에 바인딩

Alt-s매우 복잡하고 중첩된 큰따옴표가 필요한 SSH 명령에 바인딩하려고 합니다 .

bind '"\es":"ssh -t me@myserver  \"echo \\"hi\\"; echo \\"bye\\"\""'

그러나 키 바인딩을 수행하면 문자열의 절반이 잘립니다.

ssh -t me@myserver  "echo \"hi\";

전체 문자열을 삽입하는 방법은 무엇입니까? 이것이 세미콜론 뒤의 공백 문제인지, 아니면 큰따옴표의 모든 이중 이스케이프 문제인지는 모르겠습니다.

노트bind -x: a) 실제 명령이 인쇄되지 않고 b) 실행 시 Enter 키를 눌러 실행하기 전에 행을 수동으로 수정할 수 있는 방법이 없기 때문에 스타일을 사용하고 싶지 않습니다 .

답변1

이스케이프 쉘 문자열은 까다로울 수 있습니다. 노력하다:

bind '"\es":"ssh -t localhost  \"echo \\\"hi\\\"; echo \\\"bye\\\"\""'

위 명령을 실행한 후 Esc-s를 누르면 명령줄에 다음 텍스트가 표시됩니다.

ssh -t localhost  "echo \"hi\"; echo \"bye\""

이것은 잘 작동합니다. 실행되면 다음과 같은 출력이 생성됩니다.

hi
bye
Connection to localhost closed.

문제는 \\"단일 백슬래시 뒤에 쉘 활성 큰따옴표가 오는 것으로 해석된다는 것입니다. 비활성화하려면 큰따옴표를 이스케이프 처리해야 합니다. 그러므로 \\\".

관련 정보