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