Добавить вывод терминала в конец текстового файла [дубликат]

Я использую:

command > ~/Desktop/file.txt

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

Буду очень признателен за любую помощь.

1
задан 4 May 2015 в 14:39

4 ответа

Использовать >> вместо >:

command >> ~/Desktop/file.txt

В то время как Вы использовали command > ~/Desktop/file.txt, файл ~/Desktop/file.txt был открыт оболочкой для записи содержания STDOUT (дескриптор файла 1). Таким образом, содержание файла будет перезаписано каждый раз, когда Вы работаете command.

С другой стороны, оболочка откроет файл для добавления, если Вы будете использовать >> оператор. В результате выводы command будет добавлен каждый раз, когда Вы выполняете его.

Я предложил бы, чтобы Вы прошли это руководство по перенаправлениям удара.

3
ответ дан 3 December 2019 в 06:21

При выполнении его в цикле можно перенаправить вывод всего цикла вместо этого.

for (( i = 0; i < n; i++ )); do
    somecommand
done > ~/Desktop/file.txt

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

exec 3> ~/Desktop/file.txt
...
somecommand >&3
...
somecommand >&3
...
exec 3>&- # closes it
2
ответ дан 10 November 2019 в 08:04

Используйте'>>'. command >> ~/Desktop/file.txt

3
ответ дан 10 November 2019 в 08:04

Вы хотите >>, не >, как это:

command >> /path/to/file.txt
1
ответ дан 10 November 2019 в 08:04

Другие вопросы по тегам:

Похожие вопросы: