'Date + FORMAT' komutu -% a,% A,% b, vb. Nedir?


10

dateKomut böyle geçerli tarih ve saati verir: Fri Apr 12 15:04:03 UTC 2013.

Çıktı tarih-saatini özel bir biçimde elde etmek için date +FORMAT, örneğin şu şekilde kullanabiliriz : date "+%Y-%m-%dT%H:%M:%S%:z"ki buna benzer bir şey verir 2013-04-12T15:04:37+00:00.

Ama bilmek istiyorum %Y, %m, %d, %H, %M, %Stopluca (yani terminoloji) denir vb. Ayrıca, Tdiğerlerinden farklı olduğu için ne denir?


3
“FORMAT çıkışı kontrol eder. Yorumlanan diziler … ”- erkek dateVe“ T ”sadece gerçek bir“ T ”dir.
manatwork

@manatwork Man sayfasında dizilerin hem %Yanlamlarını hem de ilgili anlamlarını ifade ettiğini düşündüm .
its_me

İpucu:date +"You will die in the year %Y"
Izkata

@Izkata Mantıklı değil (?)
its_me

1
@TheoneManis Bunun Tözel olmamasının bir örneği . Ayrıca, yazarken (iş arkadaşlarının konuşmalarını dinlerken) garip bir gün geçiriyordum.
Izkata

Yanıtlar:


7

dateKomutun POSIX belirtiminde kullanılan terim "dönüştürme belirtimleri" dir.

İçin biçim dizesi datekomutu yakından C'nin için biçim dizeden oluşur printffonksiyonu; C standardı ayrıca %d"dönüşüm spesifikasyonları" gibi şeyleri de belirtir .

Töncesinde olmayan %bir karakter sadece: "Diğer tüm karakterler çıktıya değişiklik yapılmadan kopyalanacaktır."

POSIX açıklamasının değişiklik geçmişi bölümüne göre date:

DESCRIPTION, LC_TIME kategorisiyle tutarlılık için alan tanımlayıcıları yerine dönüşüm spesifikasyonlarına başvurmak üzere güncellenir.

Görünüşe göre spesifikasyonun daha önceki bir sürümü "alan tanımlayıcıları" ifadesini kullandı, ancak "dönüşüm spesifikasyonları" mevcut resmi terimdir.

Tabii ki anlamına gelmez sahip bu şekilde onlara başvurmak için.


" conversion sequences" Veya " format sequences" de uygun terimler mi? Ben düşünüyorum sequencesüzerinde specificationsaslında için kılavuz sayfasında bahsetmişti çünkü date.
its_me

2
@TheoneManis: Üçünden herhangi biri ne anlama geldiği konusunda yeterince açık görünüyor.
Keith Thompson

4

Ben "kaçış dizileri" ya da (bu durumda) "kaçan diziler için özel karakterler" onlara atıfta bulunmanın tipik yolu olacağını düşünürdüm. Ters eğik çizgi ve yüzde kaçan diziler C'de çok kullanılır (örn. Printf), bu nedenle birkaç Unix komutuna da filtrelendiler (kabuk istemini belirtmek gibi).

"Kaçış dizisi", "% Y", "% m", "% d" vb. ve "özel karakterler", "Y", "m", "d" vb. "%" "kaçış karakteri" (bir sonraki karaktere alışılmadık / özel bir anlam veren karakter) olacaktır.


3

Bu belge , IBM'in Bilgi Merkezi'nden açıkça belirtmektedir alfabeler içinde %Y, %m, %d, %H, %M, %S, vb "denir Saha Açıklayıcılar ".

Her önce gelmelidir alan tanımlayıcısı bir ile % (yüzde işareti). Sistem, alan tanımlayıcısını belirtilen değerle değiştirir. [...] dateKomut başka karakterleri değiştirmeden çıktıya kopyalar.

Bu iki sorumu cevaplıyor (yaklaşık% n & T). Ve bunun olabildiğince yetkili olduğuna inanıyorum.


1
IBM datekomutu icat etmedi ; belgelerini yetkili kılan nedir? Komutun davranışı şu anda bu terimi kullanmayan POSIX tarafından tanımlanmaktadır. POSIX açıklamasının altındaki değişiklik geçmişi, "AÇIKLAMA kategorisi, LC_TIME kategorisiyle tutarlılık için alan tanımlayıcıları yerine dönüşüm belirtimlerine başvurmak üzere güncelleştirildi" diyor. şuan ki dönem. Ayrıca güncellenmiş yanıtıma da bakın.
Keith Thompson

2

Diğerlerinin de belirttiği gibi, Tgerçek bir mektuptur T. Ancak spesifik olmak gerekirse, örneğin tarih ve saat için ISO-8601 spesifikasyonuna date "+%Y-%m-%dT%H:%M:%S%:z"uyan bir biçim dizesi gibi görünüyor . Yani burada tarihi zamandan ayıran bir sınırlayıcı var.T

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.