Как в linux создать файл с датой

Обновлено: 05.07.2024

Философия Linux гласит - всё в системе есть файл. Мы ежедневно работаем с файлами, и программы, которые мы выполняем, - тоже файлы. В разных случаях нам может понадобиться создать в системе файлы определённого типа. Если вам интересно, какие типы файлов в Linux можно создать, смотрите отдельную статью.

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

Как всё это делать, вы узнаете из этой статьи. Мы рассмотрим все доступные средства создания файлов в терминале Linux. Поехали!

1. Редактор nano

Самый распространённый способ создать текстовый файл в Linux - это использовать консольные текстовые редакторы. Например nano. После ввода команды открывается редактор, и вы прописываете нужный текст, например:

files

2. Редактор Vi

Тот же принцип, но программа намного серьёзнее:

files1

Если вы в первый раз столкнулись с vim, то предупрежу - это необычный редактор. Здесь есть два режима: режим вставки и командный. Переключаться между ними можно с помощью кнопки Esc. Для выхода из редактора в командном режиме наберите :q, для сохранения файла - :w. Вообще, Vim - очень полезный инструмент. Чтобы узнать побольше о его возможностях и выучить основы, выполните: vimtutor.

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

3. Оператор перенаправления >

Это, наверное, самая короткая команда для создания файла в Linux:

files2

Оператор оболочки для перенаправления вывода позволяет записать вывод любой команды в новый файл. Например, можно подсчитать md5 сумму и создать текстовый файл в Linux с результатом выполнения.

files3

Это рождает ещё несколько способов создания файла в Linux, например, выведем строку в файл с помощью команды echo:

echo "Это строка" > файл.txt

files4

Этот способ часто используется для создания конфигурационных файлов в Linux, так сказать, на лету. Но заметьте, что sudo здесь работать не будет. С правами суперпользователя выполниться echo, а запись файла уже будет выполнять оболочка с правами пользователя, и вы всё равно получите ошибку Access Denied.

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

files5

После выполнения команды можете вводить любые символы, которые нужно записать в файл, для сохранения нажмите Ctrl+D.

А ещё есть утилита printf, и здесь она тоже поддерживает форматирование вывода:

printf "Это %d текстовая строка\n" 1 > файл

files6

Этот способ создать файл в Linux используется довольно часто.

4. Оператор перенаправления вывода >>

Также можно не только перезаписывать файл, а дописывать в него данные, с помощью перенаправления оператора >>. Если файла не существует, будет создан новый, а если существует, то строка запишется в конец.

echo "Это текстовая строка" > файл.txt
$ echo "Это вторая текстовая строка" >> файл.txt

files7

5. Оператор перенаправления 2>

file11

Если команда не выдает ошибок, файл будет пустым.

6. Оператор перенаправления и head

С помощью команды head можно выбрать определённый объем данных, чтобы создать текстовый файл большого размера. Данные можно брать, например, с /dev/urandom. Для примера создадим файл размером 100 мегабайт:

base64 /dev/urandom | head -c 100M > файл

7. Команда cp

Команда cp используется для копирования файлов в Linux. Но с её помощью можно и создать файл. Например, чтобы создать пустой файл, можно просто скопировать /dev/null:

cp /dev/null файл

8. touch

Вот мы и подобрались к непосредственному созданию файлов через терминал, для этого в Linux есть специальная утилита touch. Она позволяет создать пустой файл в Linux, при этом указывать дату создания, права доступа и другие метаданные.

Чтобы создать пустой файл Linux, просто наберите:

files8

Можно создать несколько пустых файлов сразу:

touch файл1 файл2

Опция -t позволяет установить дату создания. Дата указывается опцией -t в формате YYMMDDHHMM.SS. Если не указать, будет установлена текущая дата. Пример:

touch -t 201601081830.14 файл

Можно использовать дату создания другого файла:

touch -r шаблон файл

Также можно установить дату последней модификации, с помощью опции -m:

touch -m -t 201601081830.14 файл

Или дату последнего доступа:

touch -a -t 201601081830.14 файл

Чтобы посмотреть, действительно ли задаётся информация, которую вы указали, используйте команду stat:

files9

9. Утилита dd

Это утилита для копирования данных из одного файла в другой. Иногда необходимо создать файл определённого размера в Linux, тогда можно просто создать его на основе /dev/zero или /dev/random, вот так:

dd if=/dev/zero of=

files10

Параметр if указывает, откуда брать данные, а of - куда записывать, count - необходимый размер. Ещё можно указать размер блока для записи с помощью bs, чем больше размер блока, тем быстрее будет выполняться копирование.

Создание специальных файлов в Linux

В Linux, кроме выше рассмотренных обычных текстовых и бинарных файлов, существуют ещё и специальные файлы. Это файлы сокетов и туннелей. Их нельзя создать обычными программами, но для этого существуют специальные утилиты, смотрите подробнее в статье, ссылку на которую я дал вверху.

Выводы

Это были все возможные команды для создания файла в Linux. Если вы знаете другие, которые следовало бы добавить в статью - поделитесь в комментариях.

Я пытаюсь добавить текущую дату в конец имени файла следующим образом:

Вот что у меня так далеко:

Однако все, что я получаю, это имя файла, и оно ничего не добавляет. Как добавить текущую дату к имени файла?

Более чем вероятно, это ваше использование set . Это назначит 'today', '=' и вывод date программы позиционным параметрам (или аргументам командной строки). Вы хотите просто использовать оболочку C (которую вы помечаете как «bash», так что скорее всего нет), вы захотите использовать:

Обратите внимание на отсутствие пробелов вокруг знака равенства.

Вы также не хотите использовать & в конце ваших утверждений; что заставляет оболочку не ждать завершения команды. Особенно, когда один полагается на следующий. Команда find может потерпеть неудачу, потому что она запускается до mkdir .

Спасибо за этого приятеля, теперь он работает на 100% нормально, привет за хедз-ап и и MkDir

Скрипт Bash для вставки даты в имя файла:

Этот код Bash в файле называется a.sh

При запуске печатает:

Пояснение к коду:

Интерпретируйте скрипт с помощью интерпретатора / bin / bash. Создайте новую переменную с именем today. Выполните команду date, передав флаги Y, m, d, H, M, S для настройки вывода. Поместите результат в переменную даты.

Создайте новую переменную с именем filename, окружите переменную $ today остальным текстом статического имени файла. затем введите имя файла на экран.

Втирайте его в однострочник, чтобы увеличить lulz:

Вы, кажется, перепутали несколько вещей.

set today = 'date +%Y' выглядит как синтаксис tcsh, но даже в tcsh он присваивает строку date +%Y переменной today , он не запускает date команду. Поскольку вы, вероятно, используете bash или какую-либо другую оболочку POSIX, синтаксис присваивания today=some_value (без пробелов вокруг знака равенства). Чтобы запустить команду и назначить ее вывод переменной, используйте подстановку команды :

(Я также завершил спецификацию даты). Вы можете использовать обратные кавычки вместо долларовых скобок, но это может привести к тому, что они будут визуально перепутаны с прямыми кавычками, а правила, когда вам нужны кавычки внутри команды с обратными кавычками, довольно сложны и зависят от реализации, поэтому лучше не придерживаться $(…) (что имеет тот же эффект с более разумным синтаксисом).

Вы использовали & в конце несколько команд. Это заставляет команду выполняться в фоновом режиме, что здесь не нужно. Я подозреваю, что вы имели в виду && , что означает выполнение следующей команды, только если первая команда прошла успешно.

Альтернативой использованию && после каждой команды является запуск вашего скрипта set -e . Это говорит оболочке прекратить выполнение скрипта, как только любая команда вернет ненулевой статус (за исключением команд в if условиях и нескольких других случаях).

Ваша find команда в порядке, но, вероятно, не делает то, что вы собираетесь делать (хотя я не знаю точно, что это такое).

Вы создаете каталог с помощью, mkdir а затем сразу же просматриваете его find . Это не будет полезно, если каталог уже существует. Вы имели в виду создать каталог для сегодняшних журналов и переместить последние файлы из The_Logs каталога под названием, например The_Logs.2012-02-11 ?

Или вы хотели переименовать сегодняшние файлы журналов, чтобы добавить суффикс $today ? Это требует вычисления разных имен файлов для каждого файла для перемещения.

Обратите внимание, что я использовал -mtime для перемещения файлов в зависимости от времени их изменения, а не -atime от времени последнего чтения файла (если ваша система отслеживает это, а если нет, то время может быть уже как время изменения).

Команда Date в Linux с примерами

Команда date отображает или устанавливает системную дату. Чаще всего он используется для печати даты и времени в разных форматах и ​​для расчета будущих и прошлых дат.


Использование Date

Синтаксис date команды следующий:

Чтобы отобразить текущее системное время и дату, используя форматирование по умолчанию, вызовите команду без каких-либо параметров и аргументов:

Выходные данные включают день недели, месяц, день месяца, время, часовой пояс и год:


Параметры форматирования даты

Вывод date команды может быть отформатирован с помощью последовательности символов управления форматом, перед которой стоит + знак. Элементы управления форматом начинаются с % символа и заменяются их значениями.

Символ %Y будет заменен на год, %m месяц и %d день месяца:

Вот еще один пример:

Ниже приведен небольшой список некоторых наиболее распространенных символов форматирования:

  • %a - Сокращенное название дня недели (например, понедельник)
  • %A - Сокращенное полное название дня недели (например, понедельник)
  • %b - Сокращенное название месяца (например, январь).
  • %B - сокращенное длинное название месяца (например, январь)
  • %d - день месяца (например, 01)
  • %H - час (00..23)
  • %I - час (01.12.12)
  • %j - День года (001..366)
  • %m - Месяц (01.12.12)
  • %M - Минута (00..59)
  • %S - Второй (00 .. 60)
  • %u - день недели (1..7)
  • %Y - Полный год (например, 2019)

Чтобы получить полный список всех параметров форматирования, запустите date --help или man date в своем терминале.

Пользовательское форматирование даты

-d Опция позволяет работать на дату конкретного. Вы можете указать дату в виде удобочитаемой строки даты, как показано ниже:

Использование пользовательского форматирования:

Строка даты принимает значения, такие как «завтра», «пятница», «последняя пятница», «следующая пятница», «следующий месяц», «следующая неделя» .. и т. Д.

Вы также можете использовать параметр строки даты, чтобы показать местное время для разных часовых поясов. Например, чтобы показать местное время 6:30 утра следующего понедельника на восточном побережье Австралии, введите:


Переопределить часовой пояс

Команда date возвращает дату в системном часовом поясе по умолчанию . Чтобы использовать другой часовой пояс, установите переменную среды TZ в желаемый часовой пояс.

Например, чтобы показать время в Мельбурне, введите:

Чтобы получить список всех доступных часовых поясов , вы можете либо перечислить файлы в /usr/share/zoneinfo каталоге, либо использовать timedatectl list-timezones команду.


Конвертер эпох

date Команда может быть использована в качестве преобразователя Epoch. Время, или метки времени Unix, - это количество секунд, прошедших с 1 января 1970 года в 00:00:00 UTC.

Чтобы напечатать количество секунд от эпохи до текущего дня, вызовите date с %s контролем формата:

Чтобы преобразовать секунды с начала эпохи в дату, установите секунды в виде строки даты с префиксом @ :


Использование date с другими командами

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

Команда ниже создаст файл резервной копии Mysql в следующем формате database_name-20190601.sql

Вы также можете использовать date команду в своих сценариях оболочки. В приведенном ниже примере мы присваиваем выход date к date_now переменной:


Показать время последнего изменения файла

Команда date с -r параметром показывает время последнего изменения файла. Например:

Если вы хотите изменить временную метку файла, используйте touch команду .


Установите системное время и дату

Установка системного времени и даты вручную с помощью этой date команды не рекомендуется, поскольку в большинстве дистрибутивов Linux системные часы синхронизируются с ntp помощью systemd-timesyncd служб или .

Однако, если вы хотите установить системные часы вручную, вы можете использовать эту --set= опцию. Например, если вы хотите установить дату и время 17:30, 01 июня 2019 г., введите:

Команда Date в Linux используется для отображения или установки системной даты и времени. Эта команда позволяет пользователям отображать время в различных форматах и посмотреть прошлые и будущие даты.

В этой инструкции мы расскажем про команду date в Linux и покажем примеры использования.

Как использовать команду Date (дата) Linux?

Ниже приведен синтаксис команды date в терминале Linux:

По умолчанию команда date выводит дату и часовой пояс, в котором настроена система. Чтобы изменить дату и время, вам потребуется пользователь с правами root или sudo.

Отображения команды Date

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

Команда Date в Linux без параметров (атрибутов)

Команда Date в Linux без параметров (атрибутов)

Показать будущие даты

Чтобы отобразить в терминале завтрашнюю дату, введите следующую команду:

Показ завтрашней даты в терминале

Показ завтрашней даты в терминале

Отображение даты следующей пятницы:

Отображение даты следующей пятницы

Отображение даты следующей пятницы

Показ прошлых дат в Linux

Показ прошлой даты в Linux 1 год назад

Показ прошлой даты в Linux 1 год назад

Чтобы показать вчерашнюю дату, используйте следующую команду:

Показ вчерашней даты

Показ вчерашней даты

Аналогично, чтобы отобразить дату последней пятницы, выполните указанную ниже команду:

Показ даты последней пятницы

Показ даты последней пятницы

Параметры формата команды Date

Например, мы хотим отформатировать вывод команды date следующим образом:

Параметры формата команды Date

Параметры формата команды Date

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

Используя следующую команду, вы можете изучить полный список параметров формата команды date:

Отображение даты из строкового значения

Параметры -date или -d позволяют отображать конкретную дату. Чтобы отобразить определенную дату, укажите строку даты в удобочитаемом формате, как показано в следующей команде:

Используя опцию -d, вы также можете отобразить дату в пользовательском форматировании следующим образом:

отобразить дату в пользовательском форматировании

отобразить дату в пользовательском форматировании

Показать время последнего изменения файла

Показать время последнего изменения файла

Показать время последнего изменения файла

Команда date для установки часового пояса

Чтобы просмотреть все доступные списки часовых поясов, выполните следующую команду:

Просмотреть все доступные списки часовых поясов в Linux

Просмотреть все доступные списки часовых поясов в Linux

Например, чтобы установить часовой пояс для отображения времени от Сиднея до Австралии, выполните следующую команду:

Изменение часового пояса в Linux

Изменение часового пояса в Linux

date в качестве преобразователя эпох

Команда date в качестве преобразователя эпох

Команда date в качестве преобразователя эпох

Например, чтобы просмотреть, сколько секунд прошло с эпохи до определенной даты, используйте следующую команду:

Команда date в качестве преобразователя эпох

Команда date в качестве преобразователя эпох

Использование date с другими командами

В следующем примере мы создали новый файл резервной копии SQL с помощью приведенной ниже команды:

$ mysqldump database_name > database_name-$(date +%Y%m%d).sql

Использование date с другими командами

Использование date с другими командами

Установка даты в Linux

Используя команду date, вы можете вручную установить дату системы Linux.

Например, чтобы вручную установить дату и время в системе Linux на 2:30 вечера 13 октября 2021 года. Выполните приведенную ниже команду:

Установка даты в Linux

Установка даты в Linux

В большинстве дистрибутивов Linux системное время по умолчанию синхронизируется с NTP или timedatectl / timesyncd. Так что не нужно сильно беспокоиться о его изменении.

Заключение

Мы рассказали о том, как использовать команду date в системе Linux. Чтобы узнать больше о команде date, можете посмотреть справочные страницы команды date.

Читайте также: