13 Eylül 2020 Pazar

date komutu

Giriş
date komutu çoğunlukla sistem saatini veya girdi olarak verilen bir saati belirtilen formata göre gösterir.
- eğer seçenek kullanmazsak sistem saatini formatlar ve gösterir.
-d seçeneği ile girdi olarak verilen string'i formatlar ve gösterir
-s seçeneği ile sistem saatini değiştirme imkanı da sağlar
- Formatlarken @ kullanırsak epoch'tan beri geçen saniye olarak algılanır

date
Çıktı olarak şunu alırız.
# date
Wed Sep 21 11:13:11 EEST 2016
Formatlama
+ karakterinden sonra string yani ".." içinde format karakterleri belirtirlir
%Y
%d
%m
%H
%M
%S
kullanılabilir.

Örnek
Şöyle yaparız.
date +"%Y%d%m%H%M%S"
Çıktı olarak şunu alırız.
20171225203309
Örnek
Şöyle yaparız
date +"%Y-%m-%d"

%a Formatı
Açıklaması şöyle. Bugünün 3 harfli kısaltmasını gösterir.
%a     locale's abbreviated weekday name (e.g., Sun)
%b Formatı
Şöyle yaparız. Bu ayın 3 harfli kısaltmasını gösterir.
date +%b
%F Formatı
yıl-ay-gün çıktısı verir.

Örnek
Şöyle yaparız
$ date --date='jan 1 + 65 days' +%F
2021-03-07
Örnek
Şöyle yaparız
date '+%F %R'; date '+%F %R' --date='- 1 hour'
2021-04-19 15:35
2021-04-19 14:35
%j Formatı
Açıklaması şöyle
gives an output of the day of the year (001-366).
Şöyle yaparız
date +%j
%s Formatı
Açıklaması şöyle.
You could use date +%s to get a date format that you can easily do math on (number of seconds since Jan 1 1970 00:00:00Z).
%y Formatı
Yılın son iki rakamını gösterir. %Y kullanmak daha iyi bence.
Örnek
Şöyle yaparız.
date -d@${1::-3} +%y%m%d.%H%M
Çıktı olarak şunu alırız.
Input: 1547233866744
Output: 190111.1911
%Y Formatı
Yılı gösterir
Örnek
Şöyle yaparız
start=$(date +'%Y-%m-%d %H:%M:%S') # This line converts to 2019-09-10 00:50:48
echo "$start"
%Z Formatı
Yerel saatin zaman dilimini de yazar. Şöyle yaparız.
$ TZ=UTC date -d "2019-01-19T05:00:00" +%Y-%m-%d_%H:%M:%S%Z           
2019-01-19_05:00:00UTC
Formatlama ve TZ Ortam Değişkeni
Açıklaması şöyle. tz ortamı değişkeni tzdata paketiyle geliyor
GNU date uses your system settings (the TZ environment variable or, if unset, the system defaults) to determine the timezone of both the date feeded with the -d/--date option and the date reported by the +format argument. The --date option also let you override the timezone for its own option-argument but it doesn't override the timezone of +format.
tzdata paketini kurmak için şöyle yaparız
apt-get update
apt install -y --no-install-recommends tzdata
rm -rf /var/lib/apt/lists/*
apt-get clean
Örnek
Yerel saatim UTC -6 olsun. Eğer TZ değişkenini atamazsak girdi olarak UTC versek bile çıktı olarak yerel saati alırız.
$ date -d '1970-01-01 00:00:00 UTC' '+Normal: %F %T %:z%nUnix: %s'
Normal: 1969-12-31 18:00:00 -06:00
Unix: 0
Eğer çıktıyı da UTC yapmak istersek şöyle yaparız
$ TZ='UTC0' date -d '1970-01-01 00:00:00 UTC' '+Normal: %F %T %:z%nUnix: %s'
Normal: 1970-01-01 00:00:00 +00:00
Unix: 0

-d/--date seçeneği
Girdi olarak verilen string'i formatlayarak gösterir

Örnek - saniye
Şöyle yaparız
# date only accepts seconds since epoch
$ date --date '@1403950332'
Sat, Jun 28, 2014  4:12:12 AM
Örnek - Hatalı Tarih
Şöyle yaparız. date komutu hatayı bildirir.
$ TZ=Europe/Paris date --date="03/29/2020 02:30"
date: invalid date ‘03/29/2020 02:30’
Örnek - Hatalı Belirtilen Gün
Elimizde year değişkeni olsun. Belirtilen günün geçerli olup olmadığını kontrol etmek için şöyle yaparız. Geçersiz kod için 0'dan farklı değer döner.
date -d $year-02-29 &>/dev/null
echo $?
Örnek - adjustment
Şöyle yaparız. Belirtilen tarihten 4 gün sonrasını döner.
date -d "2017/06/26 00:00:00 4 days"
Çıktı olarak şunu alırız.
Cum Haz 30 00:00:00 +03 2017
Örnek - adjustment
Açıklaması şöyle.
What's going on here is that you are specifying a time and an adjustment to it. The time is midnight January 1st, 1970 GMT, the unix epoch. (Midnight is not explicitly given; it's used implicitly any time you omit the time of day.)

The adjustment, 1571889039 seconds, is added to the time.
Şöyle yaparız.
$ date -d '1/1/1970 GMT 1571889039 seconds'
Çıktı olarak şunu alırız.
Wed Oct 23 20:50:39 PDT 2019
Örnek - Bugün
Şöyle yaparız. Bugünden 29 gün sonrasını döner.
$ date +"%Y/%m/%d" --date '+29 day'   
Örnek - timestamp
Şöyle yaparız.
$ date -d @2147483647
Çıktı olarak şunu alırız. Çıktı yerel saat olarak verilir.
Mon Jan 18 19:14:07 PST 2038
-I seçeneği
Sistem saatini ISO 8601 formatında gösterir. -I karakterinden sonra 'date', 'hours', 'minutes', 'seconds', 'ns' kullanılabilir
Örnek
Şöyle yaparız
$date -Ins
-s seçeneği
Sistem saatini değiştirir
Örnek
Şöyle yaparız
$date -s ‘‘@1608146451’
-u seçeneği
Açıklaması şöyle.
‘-u’ ‘--utc’ ‘--universal’
Use Universal Time by operating as if the ‘TZ’ environment variable were set to the string ‘UTC0’. UTC stands for Coordinated Universal Time, established in 1960. Universal Time is often called “Greenwich Mean Time” (GMT) for historical reasons. Typically, systems ignore leap seconds and thus implement an approximation to UTC rather than true UTC.
UTC olarak gösterir. Çıktı olarak şunu alırız.
# date -u
Wed Sep 21 08:13:15 UTC 2016



Hiç yorum yok:

Yorum Gönder