На этот вопрос уже есть ответ здесь:
Я использую:
command > ~/Desktop/file.txt
Моя проблема в том, что мне нужно выполнить эту команду несколько раз, и каждый раз она будет давать разные результаты, в этом Каждый раз, когда я запускаю его, он стирает все и сохраняет новый вывод в файле, очевидно, это не работает для меня, так как мне нужно добавить новый вывод вместе с текущим выводом.
Буду очень признателен за любую помощь.
Использовать >>
вместо >
:
command >> ~/Desktop/file.txt
В то время как Вы использовали command > ~/Desktop/file.txt
, файл ~/Desktop/file.txt
был открыт оболочкой для записи содержания STDOUT (дескриптор файла 1). Таким образом, содержание файла будет перезаписано каждый раз, когда Вы работаете command
.
С другой стороны, оболочка откроет файл для добавления, если Вы будете использовать >>
оператор. В результате выводы command
будет добавлен каждый раз, когда Вы выполняете его.
Я предложил бы, чтобы Вы прошли это руководство по перенаправлениям удара.
При выполнении его в цикле можно перенаправить вывод всего цикла вместо этого.
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
Вы хотите >>
, не >
, как это:
command >> /path/to/file.txt