वर्तमान सत्र के लिए इतिहास को कोसें


15

हो सकता है कि मैं कुछ अनदेखी कर रहा हूं, लेकिन वर्तमान सत्र के लिए अपना वर्तमान बैश इतिहास प्राप्त करने का एक तरीका है जो आप उपयोग कर रहे हैं

अगर मैं चला

ssh host
$ pwd
$ ls
$ cd /tmp

मैं सिर्फ उन 3 कमांडों को देखना चाहता हूं और कुछ नहीं


क्या आपने historyकमांड चेक किया है ??
हैकाहॉलिक

फिर मुझे पता है, historyलेकिन यह मेरे सत्र नहीं देता है
माइक

यदि मुझे याद है तो सत्रों के बीच बचाई गई राशि को SAVEHIST शेल चर द्वारा नियंत्रित किया जाता है। इस प्रकार यदि आपने पिछली बार सहेजे गए इतिहास की राशि ZERO थी, तो आपको वर्तमान शेल सत्र के लिए इतिहास मिलेगा (लेकिन निश्चित रूप से उप स्तरों पर नहीं)
mdpc

@ mdpc, आप क्या डॉक्स पढ़ रहे हैं? बैश मैन पेज में मुझे SAVEHIST का कोई संदर्भ नहीं मिलता है, लेकिन केवल HISTSIZEऔर HISTFILESIZE
वाइल्डकार्ड

जवाबों:


15

थोड़ा गोल चक्कर रास्ता:

history -a ~/current_history

यह वर्तमान सत्र के सहेजे नहीं गए इतिहास को सहेज देगा ~/current_history, जिसे आप तब देख सकते हैं।


यह काम कर सकता है, लेकिन कई सत्रों को संभाल नहीं सकता है .. मुझे लगता है कि मैं इसे स्टोर करने के लिए एक यादृच्छिक अस्थायी फ़ाइल बना सकता हूं
माइक

1
@ माइक शेल से जुड़े एक नाम का उपयोग करते हैं, शायद ~/$$_history
मूरू

4
यह ध्यान देने योग्य है कि यह इतिहास को स्पष्ट नहीं करेगा या किसी भी तरह से सामान्य इतिहास की बचत को प्रभावित करेगा! जब तक मैंने इसका परीक्षण नहीं किया, मुझे यकीन नहीं हुआ। :)
NHDaly

मुझे यह अधिक सुविधाजनक लगता है बस history -aइसे पिछले इतिहास के साथ ~ / .bash_history में फेंक देता है ... जो कि एक समस्या हो सकती है यदि आपका इतिहास कटऑफ से अधिक है, जो कि मेरे सेंटोस 7 और फेडोरा 24 सिस्टम पर 1000 है।
रे फॉस

0

compसंपूर्ण इतिहास की तुलना करने के लिए उपयोग करें (वर्तमान बैश सत्र) पहले से ही मौजूद इतिहास के साथ .bash_historyऔर केवल उन पंक्तियों को प्रिंट करें जो वर्तमान सत्र के लिए अद्वितीय हैं - जिसमें केवल उन आदेशों को दिखाना चाहिए जो वर्तमान बैश शेल को शुरू करने के बाद से निष्पादित किए गए थे।

comm -23 <( history | cut -c 8- ) ~/.bash_history

संपादित करें: जैसा कि @Wildcard ने बताया कि यह कमांड सभी वितरणों के लिए काम नहीं करता है comm। मैंने मैक ओएस पर इसका परीक्षण किया।

एक ही विचार का एक परिवर्तन का उपयोग diff:

diff <( history | cut -c 8- ) ~/.bash_history | sed -n 's/^< //pg'

मेरे परीक्षणों में एक अच्छा विचार, लेकिन बहुत अविश्वसनीय। commमान लिया गया इनपुट। लेकिन, स्टैक एक्सचेंज में आपका स्वागत है! :)
वाइल्डकार्ड

@Wildcard, इनपुट के दोनों किनारों को commमेरे उदाहरण में स्वाभाविक रूप से क्रमबद्ध किया गया है। क्या आपने इसे चलाया? और इसने आपके वर्तमान बैश सत्र इतिहास का निर्माण नहीं किया?
ईसाई Kadner

हां, मैंने किया, और नहीं, यह नहीं था। और नहीं, की सामग्री ~/.bash_historyहै नहीं हल कर; और न ही historyप्रमुख लाइन नंबरों को हटा दिए जाने के बाद सभी में छंटनी का उत्पादन होता है। (इसके अलावा, commलेक्सिकोग्राफिक रूप से सॉर्ट किए गए इनपुट की अपेक्षा करता है, संख्यात्मक रूप से सॉर्ट किए गए इनपुट की नहीं।)
वाइल्डकार्ड

ठीक है, मेरा मतलब था कि commमेरे उदाहरण में कमांड के लिए दोनों तर्क एक ही क्रम में हैं, न कि वे क्रमबद्ध रूप से लिखे गए हैं। फ्रीबीएसडी संस्करण को commलेक्सिकोग्राफिक रूप से सॉर्ट किए गए इनपुट की आवश्यकता नहीं है
क्रिश्चियन काडनेर

मैं मैक ओएस एक्स का उपयोग कर रहा हूं। इसका इससे कोई लेना-देना नहीं है। करीब से देखने पर, यह इन-मेमोरी हिस्ट्री से शुरुआती कमांड प्रतीत होता है , जो तब से इतिहास फ़ाइल में अन्य शेल से बाहर निकलने के बाद लिखा गया है ।
वाइल्डकार्ड

0

मुझे समस्या यह थी कि मैं historyएक फ़ाइल में करंट लिखना चाहता था, लेकिन फिर भी चाहता था कि प्रविष्टियाँ मुख्य बैश में दर्ज होंhistory

मैंने इसे केवल फ़ाइल संलग्न करके हल किया है cat:

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