Eu tenho um script que estou escrevendo, que inclui a passagem de uma string de conexão para socat.
Quando colo isso na linha de comando, tudo bem, mas quando eu abro um arquivo e o colo lá ( pico filename.sh
), os caracteres são convertidos em outra coisa, e a string de conexão falha.
O código em questão é:
conTest=$(echo -e -n "@0Ç\x01Ó
0�\x01�
'{abcdeconTest=$(echo -e -n "@0Ç\x01Ó
0�\x01�
'{abcde%pre%fghij%pre%Ç\x01Ó|" | socat STDIO tcp4:127.0.0.1:12345)
fghij%pre%Ç\x01Ó|" | socat STDIO tcp4:127.0.0.1:12345)
Os personagens com um problema são:
%pre%que são convertidos para:
%pre%Existe uma maneira de impedir que eles sejam convertidos?
Estou conectando a esta máquina (Debian) usando putty (ssh) do meu PC com Windows 7.
Meu texto inicial está em um arquivo no notepad ++ no meu PC Windows. Eu então copio / colo de lá para a linha de comando no meu servidor Debian. Quando eu corro isso funciona bem.
Se eu abrir um arquivo usando pico pico test1.sh
e copiar / colar o texto, ele parece estar ok. Mas assim que eu tentar salvar (ctrl-O) os personagens mudam.
Se eu, então, executar file test1.sh
, ele diz test1.sh: Bourne-Again shell script, ISO-8859 text executable
.
Se eu executar iconv -f ASCII -t UTF-8 test1.sh
, receberei illegal input sequence at position 263
, que é o caractere Ç
.
Se eu tentar com nano nano test2.sh
, o copy / paste não funciona e recebo caracteres adicionais após os caracteres do problema. Novamente, assim que eu tento salvá-lo, o mesmo acontece (os personagens mudam).
Em seguida, tentei copiar o arquivo usando o sftp. Eu copiei como test3.sh e, em seguida, uma vez no servidor, abri-o com o vi usando vi test3.sh
. Isso mostrou o mesmo problema em que os caracteres problema foram substituídos.
No entanto, a execução de file test3.sh
me deu test3.sh: Bourne-Again shell script, UTF-8 Unicode text executable
Eu copiei o arquivo de volta via sftp e o abri no meu windows pc, e os personagens estão bem, sugerindo que o processo sftp não é um problema.
Tags debian character-encoding