Zsh शेल में इतिहास कमांड के लिए डेटाटाइम स्टैम्प कैसे देखें


34

जब मैं अपने ubuntu सर्वर पर इतिहास कमांड चलाता हूं, तो मुझे आउटपुट निम्नानुसार मिलता है:

   history
   ...
   25  cd ~
   26  ls -a
   27  vim /etc/gitconfig
   28  vim ~/.gitconfig

मैं किसी विशेष उपयोगकर्ता का डेटाटाइम देखना चाहता हूं। हालाँकि जब मैं उन्हें मानता हूँ:

su otheruser
export HISTTIMEFORMAT='%F %T  '
history
...
25  cd ~
26  ls -a
27  vim /etc/gitconfig
28  vim ~/.gitconfig

यह अभी भी डेटाटाइम नहीं दिखाता है। मैं zsh खोल का उपयोग कर रहा हूं।

जवाबों:


49

मेरा मानना ​​है कि HISTTIMEFORMAT बैश गोले के लिए है। यदि आप उपयोग कर रहे हैं zshतो आप इन स्विच को historyकमांड में उपयोग कर सकते हैं :

उदाहरण

$ history -E
    1   2.12.2013 14:19  history -E

$ history -i
    1  2013-12-02 14:19  history -E

$ history -D
    1  0:00  history -E
    2  0:00  history -i

यदि आप करते हैं man zshoptionsया man zshbuiltinsआप इन स्विचों के बारे में अधिक जानकारी के साथ-साथ संबंधित अन्य जानकारी प्राप्त कर सकते हैं history

अंश zshbuiltins मैन पेज से

Also when listing,
  -d     prints timestamps for each command
  -f     prints full time-date stamps in the US `MM/DD/YY hh:mm' format
  -E     prints full time-date stamps in the European `dd.mm.yyyy hh:mm' format
  -i     prints full time-date stamps in ISO8601 `yyyy-mm-dd hh:mm' format
  -t fmt prints time and date stamps in the given format; fmt is formatted 
         with the strftime function with the  zsh extensions described for 
         the %D{string} prompt format in the section EXPANSION OF PROMPT 
         SEQUENCES in zshmisc(1).  The resulting formatted string must be no 
         more than 256 characters or will not be printed.
  -D     prints elapsed times; may be combined with one of the options above.

डिबगिंग आमंत्रण

zshजब आप इसे लागू करते हैं, तो आप डीबग करने के लिए निम्न 2 विधियों का उपयोग कर सकते हैं ।

विधि # 1

$ zsh -xv

विधि # 2

$ zsh
$ setopt XTRACE VERBOSE

किसी भी मामले में आपको कुछ इस तरह से देखना चाहिए जब यह शुरू होता है:

$ zsh -xv
#
# /etc/zshenv is sourced on all invocations of the
# shell, unless the -f option is set.  It should
# contain commands to set the command search path,
# plus other important environment variables.
# .zshenv should not contain commands that produce
# output or assume the shell is attached to a tty.
#

#
# /etc/zshrc is sourced in interactive shells.  It
# should contain commands to set up aliases, functions,
# options, key bindings, etc.
#

## shell functions
...
...
unset -f pathmunge _src_etc_profile_d
+/etc/zshrc:49> unset -f pathmunge _src_etc_profile_d

# Created by newuser for 4.3.10

6
"ईवेंट नहीं मिला: -i" "ईवेंट नहीं मिला: -E"। क्या इन स्विचेस को चलाने से पहले मुझे किसी कॉन्फिग फाइल में कुछ लोड करना होगा?
जॉनमेरलिनो

1
किस संस्करण का zsh? zsh --version। मैंने सिर्फ उबंटू 12.10 पर पुष्टि की है कि मैंने आपको जो आदेश दिए हैं वे ठीक काम करते हैं।
SLM

17
@JohnMerlino मैं एक सर्वर पर ४.३.१० (x86_64-अज्ञात-लिनक्स-ग्नू) zsh था जिसके लिए मैं इतिहास को टाइमस्टैम्प के साथ देखना चाहता था। के माध्यम से देखने के बाद zshbuiltinsआदमी पेज, मुझे पता चला कि मैं का उपयोग करने के लिए आवश्यक fc। मेरे लिए आखिरकार क्या काम हुआ fc -li। आप कमांड संख्या को fcभी पास कर सकते हैं, इसलिए fc -li -100अपने इतिहास के अंतिम 100 आदेशों को सूचीबद्ध करता है।
थॉमस अप्टन

21
मुझे उपयोग करना है \history -E, मैं
जुआनपास्टास

1
यह ओह-माय-ज़श के साथ एक लंबे समय से स्थायी (6+ वर्ष) बग है, इस मुद्दे को गीथूब पर देखें: github.com/robbyrussell/oh-my-zsh/issues/739
rococo

20

history -Eया history -iजो भी मेरे लिए काम नहीं करते।

zsh --versionशो zsh 4.3.6 (x86_64-suse-linux-gnu)

फिर fc -li 100काम करता है! यह टाइमस्टैम्प के साथ हाल के 100 आदेशों को दर्शाता है :)


धन्यवाद, इसने मेरे लिए भी काम किया, शीर्ष उत्तर के विपरीत। मेरे संस्करण है: zsh 5.1.1 (x86_64-ubuntu-linux-gnu)। और जब मैं यहां हूं: क्या आप जानते हैं कि कमांड की मदद कैसे लें fc? न तो man fcऔर न ही fc --helpकाम
पूर्वाह्न

@exhuma क्यों नहीं इसे Google :)
गैब

@ गब 是 好人 क्या आपके पास इतिहास अलियास है? यदि आप oh-my-zshइतिहास कमांड का उपयोग कर रहे हैं -l, तो विकल्पों में से एक में ध्वज जोड़ें । देखें github.com/robbyrussell/oh-my-zsh/blob/master/lib/…
माइक डी

1
fc -lfएक पूर्ण टाइमस्टैम्प दिखाएगा। ध्यान दें कि यह केवल zsh पर काम करता है, बैश पर नहीं।
dr01

@exhuma zsh में, आप उपयोग कर सकते हैं run-help fc
xuhdev

4

यदि आप oh-my-zshऐडऑन इन zsh, history -Eया history -iअभ्यस्त काम का उपयोग कर रहे हैं (क्योंकि यह उर्फ ​​है fc -l 1)।

जैसा @juanpastas ने बताया, कोशिश करें

\history -E

या

\history -i

या

fc -li 100


1
मैंने अभी जोड़ा: इतिहास उपनाम को मेरे ~ / .zshrc फ़ाइल में पुनर्परिभाषित करने के लिए 'उपनाम इतिहास = "fc-1 1" और यह अब वांछित के रूप में काम कर रहा है!
user886869

या इससे भी बेहतर: 'उर्फ इतिहास = "इतिहास -इ"। इस तरह आप उर्फ ​​में एक ही कमांड चला सकते हैं, और यदि आप अधिक कुंजी / विकल्प जोड़ना चाहते हैं तो यह भ्रमित करने वाला नहीं है।
डॉ। बीको
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.