Use printf
:
printf '%s\n' "-n"
Estou tentando produzir literais de string 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 funcionar com as strings '-e' e '-n' e '-N'
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ê pode fazer isso:
dd of=/tmp/alabama conv=fsync <<< alabama
Por exemplo tente isso:
dd of="-e abc -N def" conv=fsync <<< "-e abc -N def"