Date Komutunu Kullanarak Bash'te Tarih ve Saatle Nasıl Çalışılır


Date komutu, sistem tarihini ve saatini ayarlamanıza veya görüntülemenize olanak tanıyan harici bir bash programıdır. Ayrıca çeşitli biçimlendirme seçenekleri de sunar. Date komutu tüm Linux dağıtımlarında varsayılan olarak kuruludur.

which date
type -a date

Terminalde geçerli tarih ve saati görüntüleyecek tarih komutunu yazın.

date

Linux Sistem Tarihini ve Saatini Değiştirin

Tarih komutunu kullanarak sistem tarihi, saati ve saat dilimi değiştirilebilir ve değişikliğin donanım saatiyle senkronize edilmesi gerekir.

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

Biçimlendirme Seçenekleri

Biçimlendirme seçeneklerinin listesini almak için iyi bir yer kılavuz sayfası olacaktır.

man date

Kullanacağımız en yaygın biçimlendirme seçeneklerinden bazılarını görelim.

  • Biçimlendirmeyi uygulamak için “+ ve ardından “biçimlendirici” kullanın.
  • GNU\LINUX için biçimlendirme seçeneklerinin bir listesini almak için bağlantılı kılavuz sayfasına bakın.
  • BSD'ye yönelik biçimlendirme seçeneklerinin bir listesini almak için bağlantılı kılavuz sayfasına bakın.

Tarih komutunun iki önemli kısmı Format +% ve –date seçeneğinin kullanılmasıdır.

Şimdi tarih komutuna biraz biçimlendirme uygulayalım. Biçimlendirmeyi uygulamak için, örneklerde gösterildiği gibi artı işaretini (+) ve ardından %formatter ekleyin.

Linux'ta Tarihi İşleme

'date.sh' adlı basit bir kabuk komut dosyasında tarihle ilgili biçimlendiricilerin nasıl kullanılacağına bir göz atalım.

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)"

Linux'ta Zamanı Yönetmek

'time.sh' adı verilen basit bir kabuk komut dosyasında zamanla ilgili formatlayıcıların nasıl kullanılacağına bir göz atalım.

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 veya -d Bayrağı ile

--date veya -d işaretiyle girdi dize olarak iletilebilir ve date komutu bunu akıllıca nasıl kullanacağını bilir.

Nasıl çalıştığını anlamak için bazı örnekler görelim.

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")

Ortak İşlemler

Verilen 2 tarih arasındaki gün sayısını hesaplayın.

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

Verilen yılın artık yıl olup olmadığını bulun.

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

Date komutunun çıktısını bir değişkene atamak.

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

Dosya adına eklenen tarihle günlük dosyaları oluşturun.

Günlük dosyaları, yedekleme veya metin dosyaları oluştururken tarih ve saat eklemek en sık karşılaşacağımız yaygın bir işlemdir. Örnek verelim, yedek almak için bir kabuk betiği oluşturduk.

Bu komut dosyası 00:00 ile 23:59 arasında yedek alacak ve her gün ertesi gün saat 00:00'da çalışacak şekilde planlanacaktır. Dünün tarih formatında günlük dosyaları oluşturmak istiyoruz.

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

Bu makale için bu kadar. Bu yazımızda Linux'ta bash tarih ve saatinin nasıl kullanılacağını gördük. Geri bildiriminizi bize bildirin.