Вывести текстовый файл, включая команду, которая использовалась для его создания - PullRequest
0 голосов
/ 19 февраля 2019

Наверняка должен быть более элегантный способ сделать это!Я хотел бы выполнить команду и затем создать текстовый файл с самой командой, парой новых строк, а затем с выводом команды.

Для контекста, причина для этого заключается в том, чтопользователь, просматривающий текстовый файл, сможет увидеть команду, необходимую для обновления содержимого файла.

Вот пример, который дает почти правильный результат, но громоздкий.

cat /proc/meminfo > meminfo.txt; sed -i '1s/^/\/proc\/meminfo pipeSymbol meminfo\.txt \n\n/' meminfo.txt

Вот содержимое файла meminfo.txt:

/proc/meminfo pipeSymbol meminfo.txt

MemTotal:       263024768 kB
MemFree:        255517652 kB

Я бы хотел улучшить его следующими способами, если это возможно.Но все, что сделает его немного чище, также будет оценено.

  • Устраните необходимость повторного ввода команды вручную
  • Устраните необходимость вручную экранировать специальные символы в sedкоманда
  • Если вышеперечисленное не может быть выполнено, как я могу вставить > вместо текста pipeSymbol?

1 Ответ

0 голосов
/ 19 февраля 2019

Вы можете использовать другой символ в качестве разделителя в sed.Вы можете написать свое утверждение set, как показано ниже.

cat /proc/meminfo > meminfo.txt; sed -i '1s#^#/proc/meminfo >  meminfo.txt \n\n#' meminfo.txt

Вы можете сделать это, как показано ниже.Сначала установите вашу команду и вывод на переменные.И выполните их как переменные.

mycmd="ls -l"
out="myout.txt"
eval $mycmd > $out; sed -i -e "1s#^#$mycmd > $out \n\n#" $out

Надеюсь, это поможет.

...