टाइमस्टैम्प के साथ बैश इतिहास


15

मैं अपने Bash $ HISTFILE में लॉग इन कमांड पर टाइमस्टैम्प रखना चाहूंगा, क्या यह संभव है?

मैंने man bashसूचना स्रोत के रूप में इसका उपयोग करने का प्रबंधन नहीं किया ।

मेरे अन्य विकल्प इस प्रकार हैं:

function thebanana() {
  local -r -a bash_commands=(
    "ls"
    # ... more coconut commands
  )
  for bash_command in "${bash_commands[@]}"; do
    printf "${bash_command}"
    printf ":"
  done
}
export HISTFILE=banana
export HISTIGNORE="$(thebanana)"
export HISTSIZE=999999
export HISTFILESIZE=999999999
export HISTCONTROL=ignoredups:erasedups

मुझे उल्लेख करना चाहिए था कि मैं ओएस एक्स माउंटेन लायन (आह) पर हूं। uname -aमुझे देता है:

Darwin CoconutMac.local 12.2.0 Darwin Kernel Version 12.2.0: Sat Aug 25 00:48:52 PDT 2012; root:xnu-2050.18.24~1/RELEASE_X86_64 x86_64

और echo $BASH_VERSIONमुझे देता है:

3.2.48(1)-release

इसे जोड़ने की कोशिश की:

export HISTTIMEFORMAT='%b %d %I:%M:%S %p '

और यह केवल इस प्रकार के टाइमस्टैम्प्स को उपसर्गों को कमांड करता है:

#1349057791

मैं चर ( echo $HISTTIMEFORMAT) को वापस गूँजने की कोशिश करता हूं , इसका सही मूल्य है।

दिलचस्प!

मैंने इसे हटाने के लिए पूरी तरह से हटा दिया है। अभी भी केवल मजेदार टाइमस्टैम्प:

#1349058320

मैं नहीं जानता कि यह कैसे आगे का निवारण करना है ... :(

समाधान : मैं एक ऐसी स्क्रिप्ट का उपयोग कर रहा था, जो $ HISTFILE को सीधे पढ़ती है, न कि इतिहास में निर्मित इसलिए युग-आधारित टाइमस्टैम्प (1 जनवरी, 1970 के समन्वित यूनिवर्सल टाइम (UTC) के बाद से सेकंड) का उपयोग दिनांक स्वरूपित स्ट्रिंग का उपयोग करके नहीं किया जा रहा था। । सादा-पुराना historyठीक काम करता है, मैं इसके बजाय इसका उपयोग करूँगा।


2
क्या आपने सेटिंग करने की कोशिश की है HISTTIMEFORMAT?
— jw013

संभवत: मुझे स्ट्रगलटाइम फॉर्मेट गलत मिल रहा है। यह मदद करेगा यदि मैन पेज में कम से कम दो उदाहरण शामिल हों .. +% Y-% m-% d% H-% M-% S?
— Robottinosino

जवाबों:


15

हां, इसे इसमें डालें ~/.bashrc:

export HISTTIMEFORMAT='%F %T '

फिर, निम्न आदेश चलाएँ:

. ~/.bashrc
history

यह इस तरह दिखेगा:

 (...)
 5200  2012-09-30 23:55:37 find -printf '%Ts %f\n'
 5201  2012-10-01 00:00:58 ls
 5202  2012-10-01 00:03:45 cd
 (...)

आउटपुट की व्याख्या:

  • पहला कोला अद्वितीय है id
  • दूसरा एक तारीख है, तीसरा घंटा है
  • नवीनतम आपकी कमांड लाइन है

3
नहीं, OSX पर काम नहीं करता है .. :(
— शायद

क्या आपने source ~/.bashrc?
— गाइल्स क्वेनोट

मैंने सबसे निश्चित रूप से किया। यह "कुछ" कर रहा है: एक संख्यात्मक टाइमस्टैम्प के साथ कमांड से पहले एक टिप्पणी की गई पंक्ति को जोड़ना : # 1349057149
— Robottinosino

1
@Robottinosino हाँ टिप्पणी लाइन अपेक्षित प्रारूप है। स्वरूपित समय के साथ कमांड प्रदर्शित करने के लिए, historyअंतर्निहित कमांड का उपयोग करें , सीधे इतिहास फ़ाइल को न देखें।
— jw013

1
क्या HISTTIMEFORMAT का उपयोग करके दर्ज की गई इतिहास फ़ाइल में समय की मुहर लगना संभव है? मैं कभी भी historyकमांड का उपयोग नहीं करता हूं , इसके बजाय मैं एक टेक्स्ट एडिटर का उपयोग करता हूं ताकि मैं जो कमांड ढूंढ रहा हूं उसे ढूंढ सकूं और मानव पठनीय तारीख संदर्भ के लिए अच्छा होगा।
— चला गया
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.