2009-04-29 16 views
15

समस्या: ~/.historyZsh इतिहास के टाइमस्टैम्प पढ़ने में असमर्थ

: 1241036336:0;vim ~/.zshrc 
: 1241036379:0;vim ~/bin/HideTopBar 
: 1241036421:0;ls 
: 1241036430:0;cat ~/.history 

पर निम्न टाइमस्टैम्प

1241036430 

को समझने के लिए जब मैं

setopt EXTENDED_HISTORY 
HISTFILE=~/.history 

में है .zshrc।

आप टाइमस्टैम्प कैसे पढ़ सकते हैं?

+0

मैं दूसरा पूर्णांक (हमेशा 0 होना प्रतीत होता है) के बारे में उत्सुक हूं। यह संख्या क्या दर्शाती है? –

उत्तर

1

यह सरल util, localtime बुलाया टाइमस्टैम्प के साथ फ़ाइलों को पढ़ने के लिए सोना है:

#!/usr/bin/perl 
# http://perl.plover.com/classes/mybin/samples/source/localtime 

if ($ARGV[0] eq '-f') { 
    *show_localtime = \&show_localtime_list; 
    shift; 
} 

if (@ARGV) { 
    for (@ARGV) { 
    print show_localtime($_), "\n"; 
    } 
} else { 
    while (<>) { 
    s/^(\d+)/show_localtime($1)/e; 
    print; 
    } 
} 


sub show_localtime { 
    my $t = shift; 
    scalar localtime $t; 
} 

sub show_localtime_list { 
    my $t = shift; 
    my @a = localtime $t; 
    "@a\n" 
} 
  • (वहाँ भी एक छोटे से presentation है :))

यह कई मामलों को संभालता है, और लगता है कि सेकेंड में टाइमस्टैम्प और मिनी- सेकंड, आदि

$ localtime < ~/.histfile 
<snip> 
: Sat Sep 17 05:55:17 2016:0;cat localtime 
+0

क्या आप अन्य इतिहास फ़ाइलों के लिए फ़ंक्शन का उपयोग कर सकते हैं, न कि केवल Zsh का? –

+0

यूप, यह आमतौर पर बस काम करता है। यह केवल अंकों की पहली स्ट्रिंग की तलाश करता है और मानव पठनीय तारीख में परिवर्तित करता है। – olejorgenb

18

history -d आज़माएं। या सिर्फ सभी विभिन्न विकल्प प्राप्त करने के टाइप history - और प्रेस नियंत्रण-डी:

% history - 
-D -- print elapsed times 
-E -- dd.mm.yyyy format time-stamps 
-d -- print time-stamps 
-f -- mm/dd/yyyy format time-stamps 
-i -- yyyy-mm-dd format time-stamps 
-m -- treat first argument as a pattern 
-n -- suppress line numbers 
-r -- reverse order of the commands 
+0

स्पष्टीकरण के लिए धन्यवाद! –

+0

नई बात जानी कि ctrl-D सभी विकल्प देगा। धन्यवाद!! – Buchi

+2

मेरे लिए काम नहीं कर रहा है, मैं ओएस एक्स में यह कैसे कर सकता हूं? – juanpastas

12

आप an answer on the zsh mailing list से इस एक लाइनर लिया का उपयोग कर मानव पठनीय टाइमस्टैम्प के साथ पूरे इतिहास को प्रदर्शित कर सकते हैं:

perl -lne 'm#: (\d+):\d+;(.+)# && printf "%s :: %s\n",scalar localtime $1,$2' $HISTFILE 

मैं इसे अधिक पठनीय बनाने के लिए आउटपुट को एक पेजर (उदाहरण के लिए less) पर पाइप करने की अनुशंसा करता हूं।

+0

+1 ... :) –

2

Adendum: आप को बचाया इतिहास में पाया timestamps रूप में अच्छी तरह फ़ाइलों का अनुवाद करने में history आदेश ही उपयोग कर सकते हैं:

history आदेश के लिए विकल्प के रूप में सहेजा इतिहास फ़ाइलों के लिए निकोलस रिले लागू द्वारा समझाया बस के रूप में अच्छी तरह से है, तो history -d < historyfile (या अन्य विकल्पों में से कोई भी) टाइमस्टैम्प का अनुवाद ठीक है।

यदि आप केवल एक इतिहास फ़ाइल से अधिक उपयोग कर रहे हैं तो यह आसान है - मैंने एक इतिहास फ़ाइल प्रति पीटीआई रखने के लिए zsh सेट किया है ताकि एक ही सिस्टम पर समानांतर में चलने वाले गोले से इतिहास को मिश्रित करने से बचें (आमतौर पर प्रत्येक खिड़की/स्क्रीन/... एक निश्चित कार्य के लिए विशेष है, और इसलिए सामान्य उपयोग से उभर रहे इतिहास थीम के प्रकार समाप्त होते हैं)।

+1

'इतिहास-डी olejorgenb

संबंधित मुद्दे