मैं उबंटू में एक से अधिक टर्मिनल सत्र से बैश इतिहास कैसे देख सकता हूं? [डुप्लिकेट]


12

संभव डुप्लिकेट:
क्या इतिहास की फाइलें बैश में एकीकृत की जा सकती हैं?

मैं उबंटू सर्वर का उपयोग करता हूं 9.10 और मैं एक से अधिक टर्मिनल सत्रों के लिए अपने बैश इतिहास को देखने में सक्षम होना चाहूंगा। यानी मेरे अंतिम 200 कमांड या तो, भले ही मैं बीच में लॉग आउट किया गया हो।

जब मैं उपयोग करता historyहूं तो मैं अपने वास्तविक टर्मिनल सत्र से सभी कमांड देखता हूं। मैं बैश से अधिक कमांड इतिहास कैसे देख सकता हूं? क्या बश के लिए कोई विशिष्ट सेटिंग्स है जिसे मुझे उबंटू में डिफ़ॉल्ट मूल्यों से बदलना चाहिए?

मेरे पास ~/.bash_historyफाइल नहीं है । लेकिन मैं एक है ~/.bashrcके साथ HISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredupsऔरHISTCONTROL=ignoreboth

echo $HISTFILE
/home/sanoj/.bash_history
echo $HISTSIZE
500
echo $HISTFILESIZE
500
echo $HISTCONTROL
ignoreboth

अद्यतन: मैं अब UbuntuBox 10.10 VirtualBox में कोशिश कर रहा हूँ। यदि मैं शटडाउन कमांड के बिना बस वर्चुअलबॉक्स को बंद कर देता हूं, तो अगली बार जब मैं बूट करता हूं, तो पिछले सत्र के कमांड इतिहास फ़ाइल में सहेजे नहीं जाते हैं।

यदि मैं मशीन को शटडाउन कमांड के साथ बंद करता हूं तो कमांड केवल सहेजे जाते हैं। जैसे शटडाउन -२।

यह मेरी समस्या का कारण होना चाहिए। इसलिए मुझे यह पता लगाना है कि कमांड-हिस्ट्री को अधिक बार कैसे बचाया जाए। जैसे प्रत्येक आज्ञा के बाद।


यदि आप करते हैं echo $HISTSIZEऔर क्या मिलता है echo $HISTFILESIZE? मेरी (उबंटू) ~/.bashrcमें HISTCONTROLआपकी जैसी पंक्तियाँ हैं जो मस्तिष्क की मृत हैं क्योंकि दूसरा पहले ओवरराइड करता है और मानों को बृहदान्त्र-पृथक माना जाता है, अल्पविराम से अलग नहीं। यदि आप ऐसा करते हैं, set -oतो यह "इतिहास पर" कहने वाली एक पंक्ति दिखाता है?
अगली सूचना तक रोक दिया गया।

मैं 500के साथ echoदोनों चरों पर औरhistory on
जोनास

दूसरा HISTCONTROL कथन वह है जो आप प्राप्त कर रहे हैं, पहला नहीं। हालांकि ignboth पर नजरअंदाज किया जाता है + के लिए उपेक्षा की जाती है ताकि संभवतः समस्या न हो।
क्वैक क्विक्सोट

1
यह एक डुप्लिकेट है: superuser.com/questions/37576/…
वॉरेन

1
@warren: अच्छा लगता है। मैं सहमत हूँ, जैसा दिखता है वैसा ही दिखता है।
क्वैककोट

जवाबों:


7

आप उपयोग कर सकते हैं

history -a

तुरंत इतिहास फ़ाइल में स्मृति इतिहास संलग्न करने के लिए। एक टर्मिनल सत्र दूसरे को तब तक नहीं देख सकता जब तक कि ऐसा नहीं किया जाता है या दूसरा बाहर नहीं निकलता है।

आप उपयोग कर सकते हैं

history 200 | less

प्रविष्टियों की संख्या देखने के लिए।

इसके अलावा HISTSIZEबाश मैन पेज में प्रविष्टि देखने के लिए HISTFILESIZE


history -a´ doesn't do anything for me, and not इतिहास 200 | कम `या तो, लेकिन मैंने अधिक जानकारी के साथ अपने प्रश्न को अपडेट किया है। फिर भी धन्यवाद।
जोनास

मुझे लगता है कि मुझे अब एक कारण मिल गया है। जब तक मैं एक साफ शटडाउन नहीं करता, तब तक इतिहास को बचाया नहीं जाता है। मेरा नया प्रश्न देखें: unix.stackexchange.com/questions/3330/…
जोनास

7

एक बार जब आप लॉग आउट करते हैं तो इतिहास फ़ाइल में जुड़ जाता है ~/.bash_history। वहाँ एक नज़र है।

डिफ़ॉल्ट रूप से यह आपके पिछले 500 कमांड को याद रखेगा। आप को बचाने के लिए चाहते हैं, तो अधिक चर सेट HISTSIZEमें ~/.bashrc

मैं भी जोड़ सकता हूँ ignoredupsकरने के लिए HISTCONTROL(के साथ HISTCONTROL=$HISTCONTROL:ignoredup)। यह केवल एक बार सहेजने के लिए लगातार आदेशों को डुप्लिकेट बनाता है।

man 1 bashइतिहास के बारे में आप और क्या ट्यून कर सकते हैं , इस पर एक नज़र डालें ।


आपके जवाब के लिए धन्यवाद। लेकिन मैं एक की जरूरत नहीं है ~/bash_historyफ़ाइल है, और कोई HISTSIZEमें ~/.bashrcलेकिन मेरे पास है HISTCONTROL=$HISTCONTROL${HISTCONTROL+,}ignoredupsऔर HISTCONTROL=ignorebothऔर यह Ubuntu सर्वर है अगर उस बात।
जोनास

1
@Snoj सूचना .में ~/.bash_history। और इसके लिए HISTSIZEबस 500 प्रविष्टियों के डिफ़ॉल्ट मूल्य का उपयोग करना होगा।
बेंजामिन बैनियर

हां, लेकिन मेरे पास ~/.bash_historyअपने सिस्टम पर कोई फाइल नहीं है। मैं ls -aजांच करता था।
जोनास

@ सनोज तो शायद यह डिफ़ॉल्ट नहीं है। फ़ाइल नाम $HISTFILEचर में संग्रहीत किया जाता है, इसलिए echo $HISTFILEआपको बताएगा कि कहाँ देखना है।
बेंजामिन बैनियर

echo $HISTFILEमुझे देता है /home/sanoj/.bash_history- अजीब। शायद यह सुरक्षा कारणों से सक्रिय नहीं है?
जोनास

1

बैश इतिहास आमतौर पर खोल के चलने पर लोड होता है, और सामान्य रूप से बाहर निकलने पर बच जाता है। आप इसका उपयोग कर सकते हैं history -aऔर history -nइसे ओवरराइड कर सकते हैं , लेकिन स्वचालित रूप से नहीं जब तक कि आप दुरुपयोग $PROMPT_COMMANDया कुछ इसी तरह का न करें।


0

Sanoj, यह वास्तव में "सिर्फ काम" होना चाहिए; मुझे नहीं लगता कि ऐसा करने के लिए आपको कुछ विशेष करने की आवश्यकता है। ऐसा लगता है कि कुछ घटनाओं के सामान्य पाठ्यक्रम में हस्तक्षेप कर रहा है।

मैं / etc / प्रोफ़ाइल, / etc / bashrc (या कुछ स्रोतों के अनुसार / शायद /etc/bash.bashrc) में देखूंगा, ~ /। अगर ऐसा कुछ है जो इतिहास को प्रभावित कर सकता है (शायद grep -i histउपरोक्त फ़ाइलों में से प्रत्येक पर)।

... विशेष रूप से मुझे आश्चर्य है कि अगर आपके पास ~ / .bash_logout में कुछ है जो फ़ाइल को निकालता है।

वैकल्पिक रूप से, क्या यह संभव है कि कुछ $HOMEचर को ओवरराइड कर रहा है?

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.