बैश इतिहास में समय टिकट कैसे देखें?


259

क्या कोई तरीका है जो मैं देख सकता हूं कि किस समय कमांड को बैश इतिहास से निष्पादित किया गया था? हम आदेश देख सकते हैं लेकिन क्या ऐसा कोई तरीका है जिससे मुझे समय भी मिल सके?

निचला-रेखा: बैश इतिहास में निष्पादन का समय


7
मैं हैरान हूं कि मैनपेजों में लिनक्स और बीएसडी दोनों पर यह कैसे खराब दस्तावेज है।
श्रीधर सरनोबत

इस ब्लॉग को देखें - sanctum.geek.nz/arabesque/better-bash-history
23

4
अगर आप zsh का उपयोग कर रहे हैं:history -E
Vahid

4
निश्चित नहीं कि नीचे दिए गए दो उत्तर आपको टर्मिनल खोलने का तरीका बताने की आवश्यकता महसूस करते हैं ..
mwfearnley

2
@ Dog0 द्वारा संदर्भित ब्लॉग के अनुसार, टाइमस्टैम्पसे स्पष्ट रूप से सहेजे नहीं जाते हैं जब तक कि HISTTIMEFORMATचर जारी नहीं किया गया था जब आदेश जारी किए गए थे। दूसरे शब्दों में, यदि आपने इसे सेट नहीं किया है, तो इसे अब सेट करने से आपको पहले जारी किए गए कमांड के टाइमस्टैम्प को पुनः प्राप्त करने में मदद नहीं मिलेगी।
टॉमिस्लाव नैक-अल्फेयरविक

जवाबों:


316

प्रेस Ctrl+ Alt+ Tटर्मिनल खोलने के लिए है, तो नीचे दिए गए कमांड चलाएँ:

HISTTIMEFORMAT="%d/%m/%y %T "

या, वर्तमान उपयोगकर्ता के लिए परिवर्तन को स्थायी बनाने के लिए:

echo 'HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bashrc
source ~/.bashrc

फिर

history

अधिक जानकारी के लिए लिनक्स के लिए बैश कमांड लाइन के मैन बैश या एन AZ इंडेक्स देखें ।

सेट किए जाने से पहले चलाए गए आदेशों के लिए HISTTIMEFORMAT, वर्तमान समय को टाइमस्टैम्प के रूप में सहेजा जाएगा। HISTTIMEFORMATसेट के बाद चलने वाले कमांडों में उचित टाइमस्टैम्प को बचाया जाएगा।


7
इसके साथ क्यों की घोषणा exportमें .bash_profile? यह केवल एक चर है bashजिसे इसके द्वारा लॉन्च किए गए कमांड द्वारा पढ़ा जाता है, इसलिए इसे निर्यात नहीं किया जाना चाहिए।
अल्वारो गुटिरेज़ पेरेस

71
ध्यान दें कि यह केवल नए इतिहास आइटम के लिए टाइमस्टैम्प रिकॉर्ड करेगा , HISTTIMEFORMATसत्रों के लिए सेट होने के बाद , अर्थात आप इस पूर्वव्यापी का उपयोग नहीं कर सकते। यहाँ कुछ उत्तर छाप देते हैं कि इतिहास कमांड तुरंत टाइमस्टैम्प्ड प्रविष्टियों को दिखाता है
लुई मैडॉक्स

9
@ लुईस - वास्तव में यह मेरे लिए मेरे लिए प्रतिगामी रूप से काम करता है?!?!
Stephenmm

19
@ जैमिल: जो लोग आईएसओ मानकों का पालन करते हैं, उनके लिए यह "% y-% m-% d" तिथि भागों के लिए है।)
गौथियर

13
@Gauthier - वास्तव में, बस% आईएसओ तारीख के लिए एफ का उपयोग ;-) man7.org/linux/man-pages/man3/strftime.3.html
brianmearns

73

टर्मिनल खुला है Ctrl+ Alt+ Tऔर रन

HISTTIMEFORMAT="%d/%m/%y %T "

फिर,

history

नीचे दिए चरणों के अनुसार परिवर्तनों को स्थायी बनाने के लिए,

gedit ~/.bashrc

आपको .bashrc फ़ाइल में नीचे की पंक्ति जोड़ने की आवश्यकता है और फिर इसे सहेजें,

export HISTTIMEFORMAT="%d/%m/%y %T "

स्रोत .bashrc फ़ाइल के नीचे कमांड चलाएँ,

source ~/.bashrc

इसके बाद historyकमांड रन करें ।

यहां छवि विवरण दर्ज करें

स्रोत : http://www.cyberciti.biz/faq/unix-linux-bash-history-display-dis-time/


उत्तर देने के लिए धन्यवाद, \ n क्या यह स्थायी परिवर्तन होगा?
r --dʒɑ

1
अरे, मैं ओएस एक्स और विंडोज (MINGW के माध्यम से) में यह कर रहा हूं, और मैं इसे .bash_profile में जोड़ रहा हूं, प्रोफ़ाइल और आरसी के बीच क्या अंतर है?
LasagnaAndroid

18

हां, आप कर सकते हैं: यदि आप सेट करते हैं $HISTTIMEFORMAT, तो .bash-historyठीक से टाइमस्टैम्प किया जाएगा। यह मौजूदा .bash-historyसामग्री के साथ मदद नहीं करता है, लेकिन भविष्य में मदद करेगा।


1
क्या आप अधिक स्पष्टता के लिए इसका विस्तार कर सकते हैं?
r --dʒɑ

5
पिछली पोस्ट में सुधार: HISTTIMEFORMAT की स्थापना टाइमस्टैम्प के प्रदर्शन को सक्षम करती है ... यहां तक ​​कि मौजूदा भी। मेरा पसंदीदा है: HISTTIMEFORMAT = '% F% T' क्योंकि यह मायने नहीं रखता कि आप किस देश से रहते हैं ... हर कोई तुरंत जानता है कि यह किस समय है। :)

4
मैंने $ HISTTIMEFORMAT सेट किया और मुझे इस सेट के आदेशों से पहले ही आज के लिए समय मिल गया।
यासीन ओकुमुस

@ user491029 "... मौजूदा भी"। यह सच है, लेकिन भ्रामक है। Ubuntu 14.04 पर, कम से कम, इसने सभी इतिहास प्रविष्टियों के लिए टाइमस्टैम्प दिखाना शुरू कर दिया था एक बार जब मैंने HISTTIMEFORMAT सेट किया था, लेकिन यह मौजूदा सत्र से पहले किसी भी कमांड रन के लिए टाइमस्टैम्प की तरह दिखता है जो वर्तमान सत्र का लॉगिन टाइमस्टैम्प था।
jbobbins

1

आपको अगले लॉगिन पर परिवर्तन दिखाई देंगे।

echo 'HISTTIMEFORMAT="%d/%m/%y %T "' >> ~/.bashrc

0

सभी उपयोगकर्ताओं के लिए इतिहास टाइमस्टैम्प सक्षम करने के लिए, /etc/profile.d में एक स्क्रिप्ट बनाएं:

echo 'HISTTIMEFORMAT="%Y%m%d %T "' >> /etc/profile.d/timestamp.sh

1
यह संभवतः GUI के माध्यम से लॉग इन करने वाले उपयोगकर्ताओं के लिए काम नहीं करेगा, क्योंकि डिफ़ॉल्ट टर्मिनल लॉगिन शेल नहीं चलाएगा। /etc/bash.bashrcएक बेहतर जगह होगी।
मूरू

0

मुझे पता है, मैं इसका उत्तर बहुत देर से दे रहा हूं, लेकिन सभी उपयोगकर्ताओं के लिए ऐसा करने के लिए, आप इसमें कोई भी .shफ़ाइल बना सकते हैं /etc/profile.dऔर इसके लिए निम्नलिखित जोड़ सकते हैं :

echo 'HISTTIMEFORMAT="%Y-%m-%d %T "' >> /etc/profile.d/existing-foo-file.sh

यदि आप rootसुपरसुसर के रूप में लॉग इन नहीं करते हैं , तो आपको teeऐसा करने के लिए कमांड का उपयोग करने की आवश्यकता है :

echo 'HISTTIMEFORMAT="%Y-%m-%d %T "' | sudo tee /etc/profile.d/mytimestamp.sh

यदि आप किसी मौजूदा फ़ाइल में संलग्न करना चाहते हैं, तो -aध्वज को teeकमांड में पास करें :

echo 'HISTTIMEFORMAT="%Y-%m-%d %T "' | sudo tee -a /etc/profile.d/mytimestamp.sh

यहां छवि विवरण दर्ज करें


नमस्कार शशांक, उत्तर जोड़ने के लिए धन्यवाद, लेकिन यह उत्तर दूसरों से अलग कैसे है? यदि आपका उत्तर पूरी तरह से अलग है, तो हमें यह जानकर खुशी है, लेकिन यदि आप मौजूदा उत्तरों में सुधार नहीं कर सकते हैं।
r --dɑː

नमस्ते, टिप्पणी करने के लिए धन्यवाद। यह निम्नलिखित तरीकों से दूसरों से अलग है: 1. उनमें से कुछ ने सभी उपयोगकर्ताओं के लिए बनाने के बारे में उल्लेख किया है, लेकिन किसी ने किसी फ़ाइल नाम को बनाने / समझाने के बारे में उल्लेख नहीं किया है /etc/profile.dtimestamp.shतकनीकी के बहुत करीब दिखता है (इसलिए यह भ्रम पैदा करता है) इसलिए मैंने नाम existing-foo-file.sh(फू-बार अवधारणा) का उपयोग किया। 2. गैर-रूट उपयोगकर्ताओं के साथ इसका उपयोग करने के बारे में किसी ने उल्लेख नहीं किया है। इसलिए मैंने उपयोग करने का एक उदाहरण दिया है sudo। 3. तीसरा उदाहरण मौजूदा फ़ाइल में संलग्न होने के दूसरे उदाहरण को बेहतर बनाता है। चूंकि लिनक्स / यूनिक्स शुरुआती इस मुद्दे को हिट कर सकते हैं, इसलिए मैंने विस्तार से बताया।
शशांक अग्रवाल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.