연결 문자열을 socat에 전달하는 것을 포함하는 스크립트를 작성 중입니다.
명령줄에 붙여 넣으면 제대로 작동하지만 파일을 열고 거기에 붙여 넣으면( pico filename.sh
) 문자가 다른 것으로 변환되고 연결 문자열이 실패합니다.
문제의 코드는 다음과 같습니다.
conTest=$(echo -e -n "@\0\0'{abcde\0fghij\0Ç\x01Ó|" | socat STDIO tcp4:127.0.0.1:12345)
문제의 캐릭터는 다음과 같습니다.
0Ç\x01Ó
이는 다음과 같이 번역됩니다.
0�\x01�
변환을 방지할 수 있는 방법이 있나요?
저는 Windows 7 PC에서 putty(ssh)를 사용하여 이 컴퓨터(Debian)에 연결하고 있습니다.
내 초기 텍스트는 내 Windows PC의 notepad++ 파일에 있습니다. 그런 다음 거기에서 데비안 서버의 명령줄에 복사하여 붙여넣었습니다. 이것을 실행하면 잘 작동합니다.
pico를 사용하여 파일을 열고 pico test1.sh
텍스트를 복사/붙여넣으면 괜찮은 것 같습니다. 하지만 저장하려고 하면(ctrl-O) 문자가 변경됩니다.
그런 다음 실행하면 file test1.sh
다음과 같이 표시됩니다 test1.sh: Bourne-Again shell script, ISO-8859 text executable
.
실행하면 어떤 캐릭터 인지 iconv -f ASCII -t UTF-8 test1.sh
알 수 있습니다 .illegal input sequence at position 263
Ç
nano를 사용하려고 하면 nano test2.sh
복사/붙여넣기가 작동하지 않고 문제 문자 뒤에 다른 문자가 나타납니다. 또 저장하려고 하면 똑같은 현상이 발생합니다(문자가 바뀌는 현상).
다음으로 sftp를 사용하여 파일 복사를 시도했습니다. test3.sh로 복사해서 서버에서 vi로 열었습니다 vi test3.sh
. 이것은 같은 문제를 보여줍니다질문문자가 대체됩니다.
그러나 달리기는 file test3.sh
나에게test3.sh: Bourne-Again shell script, UTF-8 Unicode text executable
sftp를 통해 파일을 다시 복사하여 내 Windows 컴퓨터에서 열었고 문자가 모두 괜찮아서 sftp 프로세스에 문제가 없음을 나타냅니다.