Как в linux создать файл с датой
Философия Linux гласит - всё в системе есть файл. Мы ежедневно работаем с файлами, и программы, которые мы выполняем, - тоже файлы. В разных случаях нам может понадобиться создать в системе файлы определённого типа. Если вам интересно, какие типы файлов в Linux можно создать, смотрите отдельную статью.
Конечно, всё очень просто делается с помощью мышки и файлового менеджера. Но если вы дружите с клавиатурой, создать файл через терминал Linux намного быстрее и, как вы увидите, эффективнее. В терминале вы можете не только создавать пустые файлы, но и создавать файл с уже готовым содержимым, файлы определённого размера, и с нужными метаданными.
Как всё это делать, вы узнаете из этой статьи. Мы рассмотрим все доступные средства создания файлов в терминале Linux. Поехали!
1. Редактор nano
Самый распространённый способ создать текстовый файл в Linux - это использовать консольные текстовые редакторы. Например nano. После ввода команды открывается редактор, и вы прописываете нужный текст, например:
2. Редактор Vi
Тот же принцип, но программа намного серьёзнее:
Если вы в первый раз столкнулись с vim, то предупрежу - это необычный редактор. Здесь есть два режима: режим вставки и командный. Переключаться между ними можно с помощью кнопки Esc. Для выхода из редактора в командном режиме наберите :q, для сохранения файла - :w. Вообще, Vim - очень полезный инструмент. Чтобы узнать побольше о его возможностях и выучить основы, выполните: vimtutor.
Понятное дело, в этом пункте можно говорить и о других редакторах, в том числе и с графическим интерфейсом. Но мы их опустим и перейдём к другим командам создания файла в Linux.
3. Оператор перенаправления >
Это, наверное, самая короткая команда для создания файла в Linux:
Оператор оболочки для перенаправления вывода позволяет записать вывод любой команды в новый файл. Например, можно подсчитать md5 сумму и создать текстовый файл в Linux с результатом выполнения.
Это рождает ещё несколько способов создания файла в Linux, например, выведем строку в файл с помощью команды echo:
echo "Это строка" > файл.txt
Этот способ часто используется для создания конфигурационных файлов в Linux, так сказать, на лету. Но заметьте, что sudo здесь работать не будет. С правами суперпользователя выполниться echo, а запись файла уже будет выполнять оболочка с правами пользователя, и вы всё равно получите ошибку Access Denied.
Ещё тем же способом можно сделать примитивный текстовый редактор для создания файла. Утилита cat без параметров принимает стандартный ввод, используем это:
После выполнения команды можете вводить любые символы, которые нужно записать в файл, для сохранения нажмите Ctrl+D.
А ещё есть утилита printf, и здесь она тоже поддерживает форматирование вывода:
printf "Это %d текстовая строка\n" 1 > файл
Этот способ создать файл в Linux используется довольно часто.
4. Оператор перенаправления вывода >>
Также можно не только перезаписывать файл, а дописывать в него данные, с помощью перенаправления оператора >>. Если файла не существует, будет создан новый, а если существует, то строка запишется в конец.
echo "Это текстовая строка" > файл.txt
$ echo "Это вторая текстовая строка" >> файл.txt
5. Оператор перенаправления 2>
Если команда не выдает ошибок, файл будет пустым.
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, просто наберите:
Можно создать несколько пустых файлов сразу:
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:
9. Утилита dd
Это утилита для копирования данных из одного файла в другой. Иногда необходимо создать файл определённого размера в Linux, тогда можно просто создать его на основе /dev/zero или /dev/random, вот так:
dd if=/dev/zero of=
Параметр 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 отображает или устанавливает системную дату. Чаще всего он используется для печати даты и времени в разных форматах и для расчета будущих и прошлых дат.
Использование 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
Когда команда дата используется без каких-либо параметров и аргументов, то она отображает текущую дату и время в формате по умолчанию. Выглядит это следующим образом:
Показать будущие даты
Чтобы отобразить в терминале завтрашнюю дату, введите следующую команду:
Отображение даты следующей пятницы:
Показ прошлых дат в Linux
Чтобы показать вчерашнюю дату, используйте следующую команду:
Аналогично, чтобы отобразить дату последней пятницы, выполните указанную ниже команду:
Параметры формата команды Date
Например, мы хотим отформатировать вывод команды date следующим образом:
Используя этот список символов форматирования, вы можете отображать выходные данные в желаемом формате:
Используя следующую команду, вы можете изучить полный список параметров формата команды date:
Отображение даты из строкового значения
Параметры -date или -d позволяют отображать конкретную дату. Чтобы отобразить определенную дату, укажите строку даты в удобочитаемом формате, как показано в следующей команде:
Используя опцию -d, вы также можете отобразить дату в пользовательском форматировании следующим образом:
Показать время последнего изменения файла
Команда date для установки часового пояса
Чтобы просмотреть все доступные списки часовых поясов, выполните следующую команду:
Например, чтобы установить часовой пояс для отображения времени от Сиднея до Австралии, выполните следующую команду:
date в качестве преобразователя эпох
Например, чтобы просмотреть, сколько секунд прошло с эпохи до определенной даты, используйте следующую команду:
Использование date с другими командами
В следующем примере мы создали новый файл резервной копии SQL с помощью приведенной ниже команды:
$ mysqldump database_name > database_name-$(date +%Y%m%d).sql
Установка даты в Linux
Используя команду date, вы можете вручную установить дату системы Linux.
Например, чтобы вручную установить дату и время в системе Linux на 2:30 вечера 13 октября 2021 года. Выполните приведенную ниже команду:
В большинстве дистрибутивов Linux системное время по умолчанию синхронизируется с NTP или timedatectl / timesyncd. Так что не нужно сильно беспокоиться о его изменении.
Заключение
Мы рассказали о том, как использовать команду date в системе Linux. Чтобы узнать больше о команде date, можете посмотреть справочные страницы команды date.
Читайте также: