Вопрос: Командная оболочка Unix, альтернативная эхо-сигналу


Я пытаюсь вывести строковые литералы в файл. До сих пор я пытался использовать команду echo, но, к сожалению, я обнаружил, что невозможно выводить «-n», «-e» или «-E» (по крайней мере, не слишком много усложнять код). Есть ли альтернативная команда, которую я могу использовать для вывода строковой строки?

Желательно, если команда доступна на удаленных компьютерах, к которым я подключаюсь, - я пытаюсь обновлять файлы на удаленной стороне.

Конечно, я могу просто передать данные с клиентской стороны, но если я это сделаю, мне нужно подключиться к SSH-серверу после каждой команды.

Обходной путь, который я использую:

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

Что я хочу сделать:

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

Я передаю случайные строки из случайной программы, и я хочу, чтобы последняя форма могла работать со строками '-e' и '-n' и '-N'


4
2018-04-01 13:51


Источник




Ответы:


использование printf:

printf '%s\n' "-n"

11
2018-04-01 14:15





Для вашего конкретного примера вы можете использовать строки bash здесь (см. Man). Вместо этого:

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

вы можете сделать это:

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

Например. попробуй это:

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

0
2018-04-01 14:12