ssh ... "sed '/002/a \ PS1=" \[\e[31m\]\n--...- \# \[\e[0m\] " /etc/profile' "
^ ^ ^ ^
Você tem duas aspas duplas não citadas dentro da string citada, elas serão removidas pelo shell (no lado local da conexão ssh). Além disso, as aspas simples internas parecem abranger tanto o comando sed
quanto o nome do arquivo, portanto, depois que o shell remoto manipular aspas, sed
receberá um argumento com /002/a \ ... /etc/profile
. Isso realmente mostra a saída do ssh na sua imagem.
(Bem, pelo menos é o que vem à mente, questões de citação dupla não funcionam bem com o meu cérebro, pelo menos sem café suficiente.)
Você deve poder depurar isso executando algo como
ssh somewhere printf '"%s\n"' "sed '/002/... /etc/profile' "
O printf
imprimirá os argumentos que recebe, um por linha, para que seja mais fácil ver onde a string é realmente dividida (o echo se uniria a espaços, por isso foo
, bar
teria a mesma aparência %código%). Aspas duplas na string de formato para manter a barra invertida intacta no controle remoto.