Linux komut dosyalama ve otomasyonunda dünkü tarihi almak sık karşılaşılan bir görevdir. Bu kılavuz, yerleşik date
komutunu kullanan iki güvenilir yöntemi sunar ve zaman dilimlerinin ele alınmasıyla ilgili hususları inceler.
İçindekiler
date
Komutunu Kullanma
En basit yaklaşım, date
komutunun yerleşik “dün” işlevselliğini doğrudan kullanmayı içerir:
date -d "yesterday" +%Y-%m-%d
Bu komut:
date
: date komutunu çağırır.-d "yesterday"
: Dünün tarihini istediğimizi belirtir.+%Y-%m-%d
: Çıktıyı YYYY-AA-GG olarak biçimlendirir. Bunu özelleştirebilirsiniz (örneğin,+%F
,+%Y/%m/%d
,+%d/%m/%Y
).
Örnek: Bugün 2024-10-27 ise, çıktı şu olacaktır: 2024-10-26
Daha Yüksek Doğruluk için Zaman Dilimlerinin Ele Alınması
Farklı zaman dilimlerinde hassas tarih hesaplamaları gerektiren komut dosyaları için daha sağlam bir yönteme ihtiyaç vardır. Önceki yöntem genellikle yeterli olsa da, yaz saati uygulaması geçişleri nedeniyle tutarsızlıklar ortaya çıkabilir. Bu geliştirilmiş yaklaşım epoch zamanını kullanır:
date -d "@$(($(date +%s) - 86400))" +%Y-%m-%d
Bu komut:
date +%s
: Epoch’tan (1 Ocak 1970, 00:00:00 UTC) itibaren saniye cinsinden geçerli zamanı alır.$(...)
: Komut yerine koyma, iç komutun çıktısını yakalar.- 86400
: 86400 saniye (bir gün) çıkarır.@(...)
:date
‘e önceki değeri epoch’tan itibaren saniye olarak yorumlamasını söyler.date -d "..." +%Y-%m-%d
: Ortaya çıkan epoch zamanını YYYY-AA-GG olarak biçimlendirir.
Bu yöntem, zaman dilimiyle ilgili olası belirsizliklerden kaçınarak epoch zamanını doğrudan manipüle ederek doğruluğu sağlar.
Çoğu senaryo için, date -d "yesterday"
kullanan ilk yöntem yeterlidir. Bununla birlikte, kritik uygulamalar veya zaman dilimi aşırı komut dosyaları için ikinci yaklaşım daha güvenilir bir çözüm sunar. Çıktı biçimini özel gereksinimlerinize göre uyarlamayı unutmayın.