Вставить текст в начале файла + stdout, stderr - PullRequest
0 голосов
/ 12 марта 2020

У меня есть функция «резервное копирование», и вывод для этой функции из консоли также перенаправляется в файл, и это делается следующим образом:

backup > >(tee -a ./log.txt) 2>&1

это работает, но я хочу добавить новый вывод данные в начало файла, и, похоже, для моего случая разумно использовать ed (не sed), и я делаю это следующим образом:

ed -s log.txt < <(printf '%s\n' 1i "$(backup)" . wq)

И в этом случае я не знаю, как реализовать вывод в консоль и файл одновременно (как это происходит в моем первом случае). Может кто-нибудь дать мне подсказку о реализации?

1 Ответ

0 голосов
/ 12 марта 2020

Если я правильно понимаю ваш код - вы пытаетесь предварительно перенести вывод команды резервного копирования в начало файла log.txt. Более того, вы пытаетесь увидеть резервную копию на консоли.

Попробуйте это:

{
  backup 2>&1 | tee /dev/tty
  cat log.txt
} > log.txt.new
mv log.txt.new log.txt 

Редактировать:

Вот версия кода, следующая за Чарльзом Даффи предложение:

cat <( backup 2>&1 | tee /dev/tty ) log.txt > log.txt.new && mv log.txt.new log.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...