GNU/Linux >> Belajar Linux >  >> Linux

Cara Menggunakan Perintah Tanggal Di Bash Scripting Di Linux

Ketika saya mulai menulis skrip bash, saya menyadari bahwa satu operasi yang sering saya tangani setiap skrip adalah menangani tanggal dan waktu. Saya telah melakukan banyak operasi seperti menamai file/direktori dengan tanggal, mengambil hasil API, dan mengubah nilai epoch menjadi tanggal/waktu yang sesuai untuk aplikasi, memanipulasi kolom tanggal dalam file CSV, dll. Jika Anda seorang pemula untuk skrip Bash, artikel ini akan membantu dalam memahami cara menggunakan perintah tanggal dalam skrip Bash, cara bekerja dengan tanggal dan waktu menggunakan perintah tanggal dalam skrip shell, cara memanipulasinya dan melakukan berbagai operasi dengannya di Linux.

Anda harus memiliki pemahaman dasar tentang bagaimana tanggal dan waktu sistem diatur. Bagian ini sebagian besar akan diurus oleh admin server dalam pekerjaan Anda.

Tetapi jika Anda adalah pengguna individu dan menggunakan Linux di mesin pribadi Anda, maka Anda harus memiliki pemahaman tentang bagaimana tanggal dan waktu disetel, cara menyinkronkannya, dan cara memodifikasinya.

Ada dua jam yang digunakan oleh Linux untuk menjaga sinkronisasi waktu.

  • Jam Waktu Nyata - Ini adalah jam yang terintegrasi ke dalam motherboard sistem Anda dan akan tetap berjalan meskipun Anda mematikan mesin.
  • Jam Sistem - Ini akan ditangani oleh kernel Linux dan selama sistem boot kernel akan mendapatkan waktu awal dari jam real-time.

Saya tidak akan melalui proses pengaturan tanggal dan waktu, itu topik terpisah untuk dibahas. Mari kita mulai melihat bagian inti artikel ini tentang cara menggunakan date perintah dalam skrip Bash di Linux.

Mendapatkan Bantuan

Pertama, Anda dapat memeriksa lokasi biner dari date perintah dengan menjalankan perintah berikut.

$ which date
/usr/bin/date

date perintah bukan shell builtin tetapi program eksternal. Anda bisa mendapatkan informasi itu dengan menjalankan type perintah.

$ type -a date
date is /usr/bin/date
date is /bin/date

Ada banyak pilihan untuk dikerjakan dan mengingat semuanya tidak mungkin dan di sinilah bantuan dan halaman manual akan berguna.

Jalankan perintah berikut untuk mengakses halaman manual date perintah.

$ man date

Jalankan perintah berikut untuk mengakses pesan bantuan.

$ date --help

Cetak Tanggal Dan Waktu Saat Ini

Luncurkan terminal Anda dan jalankan date memerintah. Anda akan mendapatkan tanggal saat ini bersama dengan waktu dan zona waktu. Dalam kasus saya, saya telah menetapkan zona waktu sebagai IST selama instalasi OS saya.

$ date
Sunday 13 February 2022 11:27:17 AM IST

Anda juga bisa mendapatkan tanggal dan waktu di UTC zona waktu dengan menggunakan -u bendera.

$ date -u
Sunday 13 February 2022 05:57:36 AM UTC

Konversi Zona Waktu

Anda bisa mendapatkan output dari date perintah di zona waktu yang berbeda dengan menyetel variabel lingkungan TZ . Saya telah menyetel TZ ke Moskow dan Singapura zona waktu dalam contoh di bawah ini.

$ Z="Europe/Moscow" date
Sunday 13 February 2022 08:59:03 AM MSK
$ TZ="Asia/Singapore" date
Sunday 13 February 2022 01:59:37 PM +08

Anda bisa mendapatkan daftar zona waktu dengan menjalankan "timedatectl " perintah.

$ timedatectl list-timezones
$ timedatectl list-timezones | grep -i singapore
Asia/Singapore
Singapore
$ timedatectl list-timezones | grep -i moscow
Europe/Moscow

Waktu Terakhir File yang Dimodifikasi

Biasanya, kami menggunakan stat perintah untuk memeriksa waktu modifikasi file. Hal yang sama dapat diperiksa dengan date perintah menggunakan -r bendera.

$ stat ~/.bashrc
  File: /home/karthick/.bashrc
  Size: 4342          Blocks: 16         IO Block: 4096   regular file
Device: 806h/2054d    Inode: 27787278    Links: 1
Access: (0644/-rw-r--r--)  Uid: ( 1000/karthick)   Gid: ( 1000/karthick)
Access: 2022-02-13 09:06:45.713721080 +0530
Modify: 2022-02-11 20:18:52.485178931 +0530
Change: 2022-02-11 20:18:52.485178931 +0530
 Birth: -
$ date -r ~/.bashrc
Friday 11 February 2022 08:18:52 PM IST

Anda dapat melihat stat format output perintah berbeda dari date perintah, tetapi keduanya memiliki tujuan yang sama.

Opsi Pemformatan Berbeda

date perintah mendukung opsi pemformatan dan menggunakan opsi ini Anda dapat memformat date perintah output dalam format apa pun yang Anda inginkan atau Anda hanya dapat mengambil nilai tertentu dari output.

Buka date halaman manual perintah dan cari bagian seperti yang ditunjukkan pada gambar di bawah ini.

Ada banyak opsi pemformatan, tetapi tidak semuanya berguna. Kita akan melihat beberapa opsi pemformatan penting dan memahami cara kerjanya.

Secara default, date perintah akan menampilkan tanggal dan waktu. Bagaimana jika Anda hanya ingin mencetak tanggal atau waktu?

$ date
Sunday 13 February 2022 11:27:17 AM IST

Untuk mendapatkan tanggal saja, Anda dapat menggunakan %F tandai atau %D bendera.

$ date +%F
2021-11-16
$ date +%D
02/13/22

Saat Anda menggunakan flag formatter, Anda harus mengawalinya dengan + simbol seperti yang saya lakukan pada contoh di atas.

  • Keluaran dari %F bendera akan berada di YYYY-MM-DD formatnya.
  • Keluaran dari %D bendera akan berada di BB/DD/YY formatnya.

Anda dapat mengambil hari, bulan, dan tahun secara individual dan membuat output berformat baru Anda sendiri.

$ date +%Y
2022
$ date +%m
02
$ date +%d
13

Untuk membuat output berformat Anda sendiri, cukup gabungkan semua flag seperti yang ditunjukkan di bawah ini.

$ date +%Y_%m_%d
2022_02_13

Mirip dengan tanggal, Anda juga bisa mendapatkan waktu sendirian menggunakan %r (12 jam format) atau %T Bendera (format 24 jam).

$ date +%r # 12 hour format
11:24:12 PM IST
$ date +%T # 24 hour format
23:24:11

Anda dapat mengambil jam, menit, detik satu per satu dan membuat output berformat Anda sendiri.

$ date +%H
12
$ date +%M
24
$ date +%S
03

Gabungkan semua tanda di atas dan buat keluaran khusus.

$ date +%H_%M_%S
12_26_53

Sekarang di mana opsi pemformatan khusus ini membantu? Bagi saya, ketika saya membuat file apa pun sebagai bagian dari skrip, saya akan menamainya dengan tanggal hari ini. Jadi akan berguna bagi saya untuk melihatnya saat dibutuhkan.

Sampai sekarang kita telah melihat bagaimana bekerja dengan tanggal dan waktu secara individual. Terkadang, Anda mungkin ingin menampilkan tanggal dan waktu. Dalam hal ini, Anda dapat menggabungkan tanggal dan waktu seperti di bawah ini atau membuat output berformat Anda sendiri.

$ date "+%F %r"
2021-11-16 11:29:06 PM IST

Jalankan Script Hanya Pada Hari-hari Tertentu

Dalam beberapa kasus, Anda mungkin ingin menjalankan skrip Anda hanya pada hari tertentu dalam seminggu. Misalnya, jika saya ingin skrip saya hanya berjalan pada hari Jumat, maka saya dapat menggunakan %A (Jumat) atau %a (Jumat) menandai dan menulis logika yang sesuai.

if [[ $(date +%A) = Friday ]]
then
  echo "Running the code"
else
  echo "Today is not Friday, Exiting the script"
fi
OUTPUT:
Today is not Friday, Exiting the script

Ada lebih banyak opsi pemformatan yang tersedia. Lihat halaman manual dan jelajahi semuanya.

Menyimpan Output Ke Variabel

Saat menulis skrip, praktik terbaik adalah menyimpan keluaran date perintah ke variabel dan gunakan variabel dalam skrip. Salah satu skenario tersebut adalah membuat nama file dengan tanggal dan waktu.

Perhatikan contoh di bawah ini dimana tanggal hari ini akan disimpan dalam variabel TDY dan hal yang sama digunakan untuk membuat nama file "disk_usage_${TDY}.txt " yang akan menyimpan output dari "df -h " perintah.

$ TDY=$(date +%F)
$ df -h > ~/disk_usage_${TDY}.txt
$ ls -l *.txt
-rw-rw-r-- 1 karthick karthick 474 Feb 13 23:40 disk_usage_2022-02-13.txt
$ cat disk_usage_2022-02-13.txt 
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           1.6G  154M  1.5G  10% /run
/dev/sda7        93G   27G   61G  31% /
tmpfs           7.8G   82M  7.7G   2% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           4.0M     0  4.0M   0% /sys/fs/cgroup
/dev/sda9       261G  130G  118G  53% /nextdrive
/dev/sda6       348G  110G  221G  34% /home
/dev/sda5       2.0G  234M  1.8G  12% /boot/efi
tmpfs           1.6G  180K  1.6G   1% /run/user/1000

Menggunakan -d atau --date Tandai

Ini adalah fitur penting yang paling saya sukai dengan date memerintah. Anda dapat meneruskan string sebagai argumen ke -d atau --date bendera dan Anda akan mendapatkan output dalam format default.

Lihatlah contoh-contoh di bawah ini. Saya telah memberikan argumen string sebagai "today ", "yesterday ", "tomorrow ", "last Thursday ", "Today (+,-) 20 years " ke --date bendera. Perintah date akan menginterpretasikan string ini dan mengonversi output ke format default.

$ date --date "Today"
Sunday 13 February 2022 01:01:26 PM IST
$ date --date "now"
Sunday 13 February 2022 01:01:34 PM IST
$ date --date "yesterday"
Saturday 12 February 2022 01:01:39 PM IST
$ date --date "Tomorrow"
Monday 14 February 2022 01:01:45 PM IST
$ date --date "Last Thursday"
Thursday 10 February 2022 12:00:00 AM IST
$ date --date "Today - 20 years"
Wednesday 13 February 2002 01:01:56 PM IST
$ date --date "Today + 20 years"
Thursday 13 February 2042 01:02:01 PM IST

Anda dapat melewatkan lebih banyak argumen string relatif selain yang saya tunjukkan dalam contoh di atas.

Waktu Epoch

Waktu Epoch dapat dikonversi ke format tanggal dan waktu saat ini menggunakan -d atau --date bendera. %s output flag akan dalam format Epoch.

$ date +%s
1644737777

Untuk mengonversinya ke format standar yang dapat dibaca manusia, tambahkan @ diikuti oleh epoch time seperti di bawah ini.

$ date --date @1644737777
Sunday 13 February 2022 01:06:17 PM IST

Dalam semua contoh di atas, Anda dapat melihat output default ditampilkan. Anda dapat menggabungkan pemformat bersama dengan -d atau --date tandai untuk mendapatkan keluaran khusus.

$ date --date "Today + 20 years" +%Y
2042
$ date --date "Today + 21 years" +%s
2275890194
$ date --date @2275890194 +%Y
2042

Kesimpulan

Dalam artikel ini, kami membahas cara menggunakan date perintah dalam skrip Bash dengan contoh. Saat ini, Anda seharusnya sudah nyaman menggunakan date perintah dalam skrip Anda. Ada banyak opsi pemformatan yang tersedia, uji dan kenali mereka.

Jika Anda memiliki umpan balik atau saran tentang artikel ini, beri tahu kami melalui bagian komentar di bawah.

Panduan pembuatan skrip Bash:

  • Cara Men-debug Skrip Bash Di Linux dan Unix
  • Skrip Bash – Mengurai Argumen Dalam Skrip Bash Menggunakan getopts
  • Cara Membuat Kotak Dialog GUI Dalam Skrip Bash Dengan Zenity Di Linux Dan Unix
  • Skrip Bash – Pernyataan Kasus
  • Skrip Bash – Pernyataan Bersyarat
  • Skrip Bash – Manipulasi String
  • Bash Scripting – Perintah Printf Dijelaskan Dengan Contoh
  • Bash Scripting – Array Terindeks Dijelaskan Dengan Contoh
  • Bash Scripting – Array Asosiatif Dijelaskan Dengan Contoh
  • Skrip Bash – Untuk Pengulangan Dijelaskan Dengan Contoh
  • Bash Scripting – Sementara Dan Sampai Perulangan Dijelaskan Dengan Contoh
  • Pengalihan Bash Dijelaskan Dengan Contoh
  • Bash Scripting – Variabel Dijelaskan Dengan Contoh
  • Bash Scripting – Fungsi Dijelaskan Dengan Contoh
  • Perintah Bash Echo Dijelaskan Dengan Contoh Di Linux
  • Tutorial Bash Heredoc Untuk Pemula

Linux
  1. Cara menggunakan perintah grep Linux

  2. Cara menggunakan perintah history di Linux

  3. Cara Menggunakan Perintah Uptime Di Ubuntu Linux

  1. Cara Menggunakan Perintah sejarah Linux

  2. Cara menggunakan Perintah Su di Linux

  3. Cara Menggunakan Perintah Layar Linux

  1. Cara Menggunakan Perintah baca Bash

  2. Cara Menggunakan Perintah Disown di Linux

  3. Cara Menggunakan Perintah Linux xargs