2016-03-25 18 views
2

Bu soru, saf bir meraktır. Bash'dan date komutunu çalıştırarak bir tarih almak kolaydır, ancak bu bir dış yürütülebilirdir ve bir alt işlemin üretilmesini gerektirir. Bir alt işlem olmadan biçimlendirilmiş geçerli zaman/tarih almanın mümkün olup olmadığını merak ettim. PS1 ve HISTTIMEFORMAT bağlamında yalnızca tarih/saat biçimlerine referanslar bulabilirim. Bu yakın geliyorGüncel tarihi, bir alt işlem oluşturmadan bash'ta alma

HISTTIMEFORMAT="%Y-%m-%d_%H:%M:%S " 
history -s echo 
x=$(history) 
set -- $x 
date="$2" 

ancak $(history) bildiğim kadarıyla söyleyebilirim, bir alt işlemi olarak çoğaltılır: İkinci buna izin verir.

Daha iyisini yapabilir miyiz?

cevap

2

bash 4.2 printf için yeni bir tanımlayıcı tanıtıldı; Bu, argüman verilmediyse geçerli saati kullanmak için bash 4.3'te genişletildi. %()T, parantez içinde görünen biçimini kullanarak geçerli saate doğru genişler. Linux ve GNU Bash 4 ile

$ printf '%(%Y-%m-%d_%H:%M:%S)T\n' 
2016-03-25_12:38:10 
+0

Serin. Makinemin http://linux.die.net/man/1/bash yerine 'adam bash'ı okumalıydım. Ve güzel, 'printf -v date' ile tarihi daha fazla kullanım için bir değişkene alıyorum. – Harald

1

:

#!/bin/bash 

while IFS=: read -r a b; do 
    [[ $a =~ rtc_time ]] && t="${b// /}" 
    [[ $a =~ rtc_date ]] && d="${b// /}" 
done < /proc/driver/rtc 

echo "$d $t" 

Çıktı:

 
2016-03-26 08:03:09 
+0

Güzel bir tane çok :-) – Harald

İlgili konular