Як вивести дату та час у Linux

0 Comments

Як працювати з датою та часом у Bash за допомогою команди date

Команда Date — це зовнішня програма bash, яка дозволяє встановлювати або відображати системну дату та час. Він також надає кілька варіантів форматування. Команда Date встановлюється у всіх дистрибутивах Linux за замовчуванням.

$ which date $ type -a date

Введіть команду date в терміналі, яка відобразить поточну дату та час.

За допомогою команди дати можна змінити системну дату, час і часовий пояс, а зміни необхідно синхронізувати з апаратним годинником.

$ date --set="Thu Nov 12 13:06:59 IST 2020" $ hwclock --systohc

Гарним місцем для отримання списку параметрів форматування буде сторінка довідки.

Давайте подивимося на деякі з найпоширеніших варіантів форматування, які ми будемо використовувати.

  • Щоб застосувати форматування, використовуйте «+» і «форматувальник».
  • Щоб отримати список параметрів форматування для GNU\LINUX, перегляньте пов’язану man-сторінку.
  • Щоб отримати список параметрів форматування для BSD, перегляньте пов’язану man-сторінку.

Дві важливі частини команди date – це використання параметра Format +% і –date.

Тепер давайте застосуємо деяке форматування до команди date. Щоб застосувати форматування, додайте знак плюс (+) , а потім %formatter , як показано в прикладах.

Давайте подивимося, як використовувати пов’язані з датою форматувальники в простому сценарії оболонки під назвою «date.sh».

# PRINT YEAR,MONTH,DAY AND DATE. echo "We are in the year = $(date +%Y)" echo "We are in the year = $(date +%y)" # Difference between %Y and %y is %Y will print 4 digits while %y will print the last 2 digits of the year. echo "We are in the month = $(date +%m)" echo "We are in the month = $(date +%b)" echo "We are in the month = $(date +%B)" # Difference between %B and %b is, %B will print full month name while %b will print abbreviated month name. echo "Current Day of the month = $(date +%d)" echo "Current Day of the week = $(date +%A)" echo "Current Day of the week = $(date +%a)" # Difference between %A and %a is, %A will print full Weekday name while %a will print abbreviated weekday name. # Instead of formatting to get the date, we can use %D which will print the date as %m/%d/%y or %F which prints in %Y-%M-%d format. echo "Date using %D = $(date +%D)" echo "Date using %F = $(date +%F)"

Давайте подивимося, як використовувати засоби форматування, пов’язані з часом, у простому сценарії оболонки під назвою ‘time.sh’.

# PRINT HOURS, MINS, SECONDS, NANO SECONDS echo Hours = $(date +%H) echo Minutes = $(date +%M) echo Seconds = $(date +%S) echo Nanoseconds = $(date +%N) echo Epoch Time = $(date +%s) echo "current time = $(date +%H:%M:%S:%N)" # can also use %T which displays Time in HH:MM:SS format. echo "current time in 24 hour format = $(date +%T)" # can also use %r to display time in 12 hour format. echo "current time in 12 hour format = $(date +%r)"

За допомогою прапора –date або -d можна передати вхід як рядок, а команда date знає, як це розумно обробляти.

Давайте подивимося на кілька прикладів, щоб зрозуміти, як це працює.

# Print yesterday's date and time. echo "Yesterday = $(date -d "Yesterday")" # Print Tomorrow date and time. echo "tomorrow = $(date -d "tomorrow")" # Find what is the date and time before 10 days from now. echo "Before 10 days = $(date -d "tomorrow -10 days")" # Find last month and next month echo "Last month = $(date -d "last month" "%B")" echo "Next month = $(date -d "next month" "%B")" # Find last year and next year echo "Last Year = $(date -d "last year" "+%Y")" echo "Next Year = $(date -d "next year" "+%Y")" # Forecast the weekday echo "2 days away from today and it comes on weekdays? = $(date -d "Today +2 days" "+%A")

обчислити кількість днів між 2 заданими датами.

$ echo $(( ( $(date -d "2020-11-10" "+%s") - $(date -d "2020-11-01" "+%s") ) / 86400))

Знайдіть даний рік високосний чи ні.

$ for y in ; do date -d $y-02-29 &>/dev/null && echo $y is leap year; done

Призначення виводу команди date змінній.

$ TODAY=$(date +%Y-%m-%d) OR $ TODAY1=$(date +%F) $ echo $TODAY $ echo $TODAY1

Створіть файли журналу з датою, доданою до імені файлу.

Додавання дати та часу під час створення файлів журналів, резервних копій або текстових файлів – це поширена операція, з якою ми стикаємося найчастіше. Давайте візьмемо приклад, щоб зробити резервну копію, ми створили сценарій оболонки.

Цей сценарій буде робити резервну копію з 00:00 до 23:59 і виконуватиметься щодня о 00:00 наступного дня. Ми хочемо створити файли журналів у форматі вчорашньої дати.

CUSTOM_FORMAT=$(date –date “Yesterday” “+%d-%y-%H:%M”) LOG_FILE=/var/log/custom_application/application_$.log echo “Script started” >> $ . CODE BLOCKS . echo “Script completed” >> $

Ось і все для цієї статті. У цій статті ми побачили, як використовувати дату та час bash в Linux. Повідомте нам свій відгук.

Всі права захищені. © Linux-Console.net • 2019-2024

Як відобразити дату та час у терміналі Linux (і використовувати їх у сценаріях Bash)

Команда date знаходиться в оболонці Bash, яка є оболонкою за замовчуванням у більшості дистрибутивів Linux і навіть у macOS. У цьому підручнику показано, як оволодіти date командним рядком і як ви можете використовувати його в сценаріях оболонки, щоб робити більше, ніж просто друкувати час.

Виконайте date команду, щоб побачити цю інформацію. Він друкує поточну дату та час для вашого часового поясу:

Форматування за замовчуванням виглядає трохи безглуздо. Чому рік не друкується після місяця та дня, а не в кінці, за часовим поясом? Не бійтеся: якщо це контроль над форматом виводу, який ви хочете, date надає його в піку. Існує понад 40 параметрів, до яких ви можете перейти, date щоб доручити йому відформатувати вихідний текст саме так, як вам потрібно.

Щоб використати будь-який з параметрів, введіть date , пробіл, знак плюса + та параметр, що включає головний знак відсотка. Параметр %c (дані та час у форматі мовного стандарту) дає змогу друкувати дату та час у нормалізованому форматі, пов’язаному з вашим мовним стандартом. Ваш локаль визначається географічною та культурною інформацією, яку ви надали під час встановлення операційної системи. Місцевий стандарт регулює такі речі, як символ валюти, розміри паперу, часовий пояс та інші культурні норми.

Рік тепер постає в більш природному положенні у виході.

Ви можете передати кілька варіантів date одночасно. Послідовність параметрів називається рядком форматування. Щоб побачити назву дня ( %A ), дня місяця ( %d ) і назви місяця ( %B ), скористайтеся цією командою:

Це спрацювало, але це негарно. Немає проблем, ми можемо включати пробіли, якщо ми укладаємо весь рядок формату в лапки. Зверніть увагу, що + символ виходить за межі лапок.

Ви можете додати текст до рядка форматування, наприклад:

date +"Сьогодні: %A %d %B"

Прокручування вгору і вниз date сторінкою керівництва в пошуках потрібної вам опції незабаром стає втомливим. Ми об’єднали варіанти в групи, щоб допомогти вам легше орієнтуватися в них.

Параметри відображення дати та часу

  • %c : друкує дату та час у форматі для вашої мови, включаючи часовий пояс.

Параметри відображення дати

  • %D : друкує дату у форматі мм/дд/рр.
  • %F : друкує дату у форматі рррр-мм-дд.
  • %x : друкує дату у форматі для вашого мовного стандарту.

Параметри відображення дня

  • %a : друкує назву дня, скорочено до пн, вт, ср тощо.
  • %A : друкує повну назву дня, понеділок, вівторок, середа тощо.
  • %u : друкує номер дня тижня, де понеділок=1, вівторок=2, середа=3 тощо.
  • %w : друкує номер дня тижня, де неділя=0, понеділок=1, вівторок=2 тощо.
  • %d : друкує день місяця з нулем на початку (01, 02 … 09), якщо потрібно.
  • %e : друкує день місяця з пробілом (‘1’, ‘2’ … ‘9’), якщо потрібно. Зверніть увагу, що апострофи не друкуються.
  • %j : друкує день року з двома провідними нулями, якщо потрібно.

Параметри для відображення тижня

  • %U : друкує номер тижня року, вважаючи неділю першим днем ​​тижня. Наприклад, третій тиждень року, двадцятий тиждень року тощо.
  • %V : друкує номер тижня ISO року, вважаючи понеділок першим днем ​​тижня.
  • %W : номер тижня року, вважаючи понеділок першим днем ​​тижня.

Параметри відображення місяця

  • %b або %h : друкує назву місяця, скорочено січень, лютий, березень тощо.
  • %B : друкує повну назву місяця, січня, лютого, березня тощо.
  • %m : друкує номер місяця з нулем на початку, якщо потрібно, 01, 02, 03 … 12.

Параметри відображення року

  • %C : друкує століття без року. У 2019 році буде надруковано 20.
  • %y : друкує рік у вигляді двох цифр. у 2019 році буде надруковано 19.
  • %Y : друкує рік у вигляді чотирьох цифр.

Параметри відображення часу

  • %T : друкує час у вигляді ГГ:ММ:СС.
  • %R : друкує години та хвилини як ГГ:ММ без секунд, використовуючи 24-годинний годинник.
  • %r : друкує час відповідно до вашого регіону, використовуючи 12-годинний годинник та індикатор ранку або вечора.
  • %X : друкує час відповідно до вашої місцевості, використовуючи 24-годинний годинник. Нібито. Зауважте, що під час тестування цей параметр поводився точно так %r само, як показано нижче. На комп’ютері з Linux, налаштованим для британської мови та встановленим на GMT, він друкував час, використовуючи 24-годинний годинник без індикатора AM або PM, як очікувалося.

Параметри відображення години

  • %H : друкує годину 00, 01, 02…23.
  • %I : друкує годину за допомогою 12-годинного годинника, 00, 01, 02 … 12, з нулем на початку, якщо потрібно.

Параметри відображення хвилин

  • %M : друкує хвилини, 01, 02, 03 … 59, з нулем на початку, якщо потрібно.

Параметри відображення секунд

  • %s : друкує кількість секунд з 1970-01-01 00:00:00, початку епохи Unix .
  • %S : друкує секунди, 01, 02, 03 … 59, з нулем на початку, якщо потрібно.
  • %N : друкує наносекунди.

Параметри відображення інформації про часовий пояс

  • %z : друкує різницю в часі між вашим часовим поясом та UTC.
  • %:z : друкує різницю в часі між вашим часовим поясом та UTC із символом : між годинами та хвилинами. Зверніть увагу на значення : між % знаком і z .
  • %::z : друкує різницю в часі між вашим часовим поясом та UTC із символом : між годинами, хвилинами та секундами. Зверніть увагу на значення :: між % знаком і z .
  • %Z : друкує назву часового поясу за алфавітом.

Параметри, пов’язані з форматуванням

  • %p : друкує індикатор AM або PM у верхньому регістрі.
  • %P : друкує індикатор ранку або вечора у нижньому регістрі. Зверніть увагу на особливість цих двох варіантів. Нижній регістр p дає виведення у верхньому регістрі, а у верхньому регістрі — у P нижньому регістрі.
  • %t : друкує вкладку.
  • %n : друкує новий рядок.

Параметри для зміни інших параметрів

Ці модифікатори можна вставити між % літерою та літерою опції інших параметрів, щоб змінити їх відображення. Наприклад, %-S видалить нуль на початку для однозначних значень секунд.

  • : один дефіс запобігає нульовому заповненню однозначних значень.
  • _ : одне підкреслення додає пробіли для однозначних значень.
  • 0 : Забезпечує початкові нулі для однозначних значень.
  • ^ : Використовує верхній регістр, якщо можливо (не всі параметри відповідають цьому модифікатору).
  • # : Якщо можливо, використовуйте для параметра регістр, протилежний стандартному (не всі параметри відповідають цьому модифікатору).

Ще два акуратні трюки

Щоб отримати час останньої зміни файлу, використовуйте параметр -r (посилання). Зауважте, що – замість % знака використовується (дефіс) і знак не вимагає + . Спробуйте цю команду у своїй домашній папці:

Налаштування TZ дозволяє змінювати часовий пояс протягом однієї команди.

Використання дати в сценаріях

Увімкнути сценарій оболонки Bash для друку часу та дати є тривіальним. Створіть текстовий файл із таким вмістом і збережіть його як gd.sh .

#!/bin/bash  СЬОГОДНІ=$(дата +"Сьогодні %A, %d із %B")  TIMENOW=$(дата +"Місцевий час %r")  TIME_UK=$(TZ=BST дата +"Час у Великобританії %r")  відлуння $СЬОГОДНІ  echo $TIMENOW  echo $TIME_UK

Введіть таку команду, щоб встановити дозволи на виконання та зробити сценарій виконуваним.

Запустіть скрипт за допомогою цієї команди:

Ми можемо використовувати команду date для надання позначки часу. Показаний сценарій створить каталог із міткою часу в якості імені. Потім він скопіює в нього всі текстові файли з поточної папки. Періодично запускаючи цей скрипт, ми можемо зробити знімок наших текстових файлів. З часом ми створимо серію папок з різними версіями наших текстових файлів.

Зауважте, що це не надійна система резервного копіювання, це лише для ілюстрації.

Створіть текстовий файл із таким вмістом і збережіть його як snapshot.sh.

#!/bin/bash  # отримати дату та час  date_stamp=$(дата +"%F-%H-%M-%S")  # створити каталог з такою назвою  mkdir "$date_stamp"  # скопіюйте в неї файли з поточної папки  cp *.txt "$date_stamp"  # все зроблено, звіт і виход  echo "Текстові файли скопійовані до каталогу: "$date_stamp

Введіть таку команду, щоб встановити дозволи на виконання та зробити сценарій виконуваним.

chmod +x snapshot.sh

Запустіть скрипт за допомогою цієї команди:

Ви побачите, що каталог створено. Його назва — це дата і час виконання сценарію. Усередині цього каталогу знаходяться копії текстових файлів.

Якщо трохи подумати та проявити творчість, навіть скромну date команду можна продуктивно використати.

Команди Linux
Файли tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · хвіст · стат · лс · fstab · echo · less · chgrp · chown · rev · дивитися · рядки · тип · перейменувати · zip · розпакувати · змонтувати · розмонтувати · встановити · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · патч · конвертувати · rclone · подрібнювати · srm
Процеси псевдонім · екран · верх · гарний · renice · прогрес · strace · systemd · tmux · chsh · історія · у · пакет · безкоштовно · котрий · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · тайм-аут · стіна · так · вбити · сну · sudo · su · час · groupadd · usermod · групи · lshw · вимкнення · перезавантаження · зупинка · poweroff · passwd · lscpu · crontab · дата · bg · fg
Мережа netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw
  • › Що таке епоха Unix і як працює Unix Time?
  • › Чому послуги потокового телебачення стають все дорожчими?
  • › Wi-Fi 7: що це таке і наскільки швидко він буде?
  • › Припиніть приховувати свою мережу Wi-Fi
  • › Що таке «Ethereum 2.0» і чи вирішить він проблеми з криптовалютою?
  • › Суперкубок 2022: найкращі телевізійні пропозиції
  • › Що таке NFT Ape Ape Ape?