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