Как сделать новый файл с датой в нем?

Я могу создать новый файл и поместить дату в нее.

touch example.txt
date >> example.txt

Но я должен создать файл с датой в нем момент, я создал новый файл. Как я делаю это только с одной командой?

2
задан 7 December 2018 в 19:54

2 ответа

Просто используйте команду даты для перенаправления в файл, и это будет создано:

date > example.txt

Предпочтенный путь был бы с помощью >> добавьте оператор:

date >> example.txt

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

15
ответ дан 2 December 2019 в 01:25

Стоит отметить что, если проблема с

Я должен создать файл с датой в нем момент, я создал новый файл

происходит из-за условий состязания (например, существует процесс, периодически сканируя для файла с тем именем и ожидает находить дату там), даже делая

date > example.txt

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

В этом случае решение состоит в том, чтобы записать в отдельный файл и затем выполнить a mv к корректному имени файла:

date > example.txt.tmp
mv example.txt.tmp example.txt

Перемещение в той же файловой системе, как гарантируют, будет атомарным, итак, когда example.txt появляется, это уже содержит ожидаемое содержание.


Если вместо этого вопрос примерно вводит единственную команду, исходным решением является, конечно, корректное и большая часть простого.

0
ответ дан 2 December 2019 в 01:25

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

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