То, что вы ищете, в терминологии Debian / Ubuntu называется «предварительной» установкой. Его можно полностью автоматизировать туда, куда вы просто вставляете компакт-диск, а он делает все остальное - при достаточной конфигурации он может делать именно то, что вы хотите, как указано в вашем резюме. Полное обсуждение того, как работать с файлами preseed, для этого сайта немного длинно, но отличной отправной точкой для вас является просмотр следующих документов:
Довольно часть информации в нем будет дублироваться, но представлена в несколько ином виде.
Перенаправление с использованием >
создаст выходной файл, на который вы перенаправляете, или, если он уже существует, урежет его до нулевого размера. Любая запись в файл будет начинаться с начала файла, и данные будут записываться последовательно. Это не то, что вы хотите сделать.
Перенаправление с использованием >>
приведет к созданию выходного файла или, если он уже существует, не его усечению. Любая запись в файл будет происходить в конец файла. Это то, что вы хотите сделать.
Кроме того, в коде есть синтаксическая ошибка. Я предполагаю, что вы хотели использовать расширение фигурной скобки в цикле:
#!/bin/bash
for timestamp in {1262300400..1264978800..600}; do
date -d @"$timestamp" '+%Y %m %d %H %M %S'
done | grep -v '[15]0 00$' >>file.txt
Кроме того, это чрезвычайно медленный цикл, вызывающий date
большое количество раз (4465 раз, если быть точным; количество десяти -минутных отрезков времени в 31-дневном месяце ). Чтобы ускорить процесс, используйте тот факт, что GNU date
может читать из файла (здесь, мы предоставляем временные метки на стандартном вводе, который date
читает с помощью-f -
):
#!/bin/bash
printf '@%s\n' {1262300400..1264978800..600} |
date -f - '+%Y %m %d %H %M %S' |
grep -v '[15]0 00$' >>file.txt
Это займет секунду или меньше.
Я также удалил -E
из вызова grep
, так как вы не используете расширенное регулярное выражение.