Questão Uma alternativa de comando do shell Unix ao eco


Eu estou tentando saída literais de seqüência de caracteres para um arquivo. Até agora eu tenho tentado usar o comando echo, mas infelizmente eu descobri que é impossível produzir '-n', '-e' ou '-E' (pelo menos não sem complicar muito o código). Existe algum comando alternativo que eu possa usar para produzir uma string literal?

É preferível que o comando esteja disponível nas máquinas remotas às quais estou me conectando - estou tentando atualizar arquivos no lado remoto.

É claro que posso simplesmente passar os dados do lado do cliente, mas, se precisar, preciso reconectar ao servidor SSH após cada comando.

A solução alternativa que estou usando:

echo alabama | ssh server dd of=/tmp/alabama conv=fsync
echo china | ssh server dd of=/tmp/china conv=fsync

O que eu quero fazer:

(echo 'echo alamaba | dd of=/tmp/alabama conv=fsync'
echo 'echo china | dd of=/tmp/china conv=fsync') | ssh server /bin/sh

Estou passando strings aleatórias de um programa aleatório, e quero garantir que o último formulário possa trabalhar com as strings '-e' e '-n' e '-N'


4


origem




Respostas:


Usar printf:

printf '%s\n' "-n"

11





Para o seu exemplo em particular, você pode usar bash here strings (veja man). Em vez disso:

echo alamaba | dd of=/tmp/alabama conv=fsync

você consegue fazer isso:

dd of=/tmp/alabama conv=fsync <<< alabama

Por exemplo. tente isto:

dd of="-e abc -N def" conv=fsync <<< "-e abc -N def"

0