इतिहास को पूरी तरह से कैसे साफ़ करें?


254

मैं अपने सर्वर के इतिहास से पिछली सभी कमांड को खाली करना चाहता हूं। मैंने उपयोग किया history -cऔर ऐसा लगता है कि सभी चीजें साफ हो गई हैं, लेकिन जब मैं सर्वर पर जाता हूं, तो सभी कमांड अभी भी हैं।

मैं उन्हें स्थायी रूप से कैसे साफ़ कर सकता हूँ?

जवाबों:


332

फ़ाइल ~/.bash_historyइतिहास रखती है।

सर्वर पर बैश इतिहास को पूरी तरह से खाली करने के लिए, टर्मिनल खोलें और टाइप करें

cat /dev/null > ~/.bash_history

अन्य वैकल्पिक तरीका से लिंक ~/.bash_historyकरना है/dev/null

हालाँकि,

एक कष्टप्रद पक्ष प्रभाव यह है कि इतिहास प्रविष्टियों की मेमोरी में एक प्रति है और जब आप लॉग आउट करते हैं तो यह फ़ाइल में वापस आ जाएगी ।

इसे हल करने के लिए, निम्न कमांड का उपयोग करें (मेरे लिए काम किया):

cat /dev/null > ~/.bash_history && history -c && exit

17
आप .bashrc & .bash_logout में भी कमांड डाल सकते हैं। इसका क्या मतलब है जब आप यू लॉगिन करते हैं तो आपका इतिहास स्पष्ट होगा और जब आप लॉग आउट करेंगे तो आपका इतिहास साफ हो जाएगा
कासिम

26
आपको वहाँ / देव / अशक्त की आवश्यकता क्यों है? > ~/.bash_hstoryपर्याप्त नहीं होगा ?
विन्यासकर्ता

4
हाँ यह पर्याप्त होगा!
fromnaboo

3
मैंने इसे SSH के माध्यम से कनेक्ट करते समय एक रास्पबेरी बॉक्स पर करने की कोशिश की। मैंने उपरोक्त आदेश (कैट / देव / null> ~ / .bash_history && history -c &&) दोनों को .bashrc और @Bash_logout में @Qasim द्वारा सुझाए गए अनुसार जोड़ा। अब जैसे ही मैं एसएसएच के माध्यम से जुड़ता हूं रिमोट होस्ट कनेक्शन को बंद कर देता है (मोटीड को प्रिंट करने के बाद)। सहायता: /
उन्नत

14
यह दिखाने के लिए जाता है कि क्या होता है जब आप आँख बंद करके ठीक से पढ़े बिना और प्रसंस्करण और डेटा प्रवाह को समझे बिना काम करते हैं। यह खराब संचार के नुकसान को भी दर्शाता है। Devav2 ने जो किया वह एक बार चलाया गया, और कासिम को जो लिखना चाहिए था, उसे लॉगिन स्क्रिप्ट में जोड़ने से पहले एक्जिट कमांड को हटा देना चाहिए।
श्री

141

क्या करें:

में हर खुला बैश खोल (आप कई टर्मिनलों खुला हो सकता है):

history -c
history -w

क्यों: जैसा कि ऊपर उल्लेख किया गया है, history -cफ़ाइल को खाली करता है ~/.bash_history। यह नोट करना महत्वपूर्ण है कि बैश शेल तुरंत इतिहास को bash_history फ़ाइल पर नहीं भेजता है। इसलिए, (1) इतिहास को फ़ाइल में फ्लश करना महत्वपूर्ण है, और (2) सभी टर्मिनलों में इतिहास को साफ़ करें । यही ऊपर के आदेश करते हैं।

संदर्भ: http://www.giannistsakiris.com/index.php/2007/09/13/how-to-clear-bash-history-and-what-to-watch-out-for/


3
दरअसल, आसपास के दूसरे तरीके ने मेरे लिए काम किया।
kristianp

24
कई मामलों में, आप इन दो आदेशों को एक साथ जोड़ सकते हैं:history -cw
इलियट

2
किसी कारण से यह Ubuntu 14.04 पर काम नहीं करता है, शायद अन्य। यह होना चाहिए, लेकिन यह नहीं है यदि आप कमांड "इतिहास -cw" जारी करते हैं, तो आप अप एरो से पुष्टि कर सकते हैं कि इतिहास अब और नहीं है, लेकिन यदि आप शिफ्ट + के साथ एक और टर्मिनल विंडो शुरू करते हैं + टर्मिनल आइकन पर क्लिक करें (मेरे पास यह है) लॉन्चर में पिन किया गया) कमांड इतिहास वापस आ गया है, इससे कोई फर्क नहीं पड़ता कि आप कितनी बार "इतिहास -ww" करते हैं। "कैट / देव / नल> ~ / .bash_history" मेरे लिए काम करने का एकमात्र तरीका है।
हाटोरु हंसो

जबकि मैं उबंटू नहीं हूं, ओएसएक्स में मेरे बैश शेल के लिए ठीक काम करता है।
स्कॉट बिग्स

3
यह इतिहास -c है और फिर इतिहास -w, आप पहले इतिहास को साफ़ करें फिर परिवर्तन लिखें। टर्मिनल को बंद करने और फिर से खोलने के साथ आसानी से इसकी पुष्टि की जाती है, -इसके साथ-साथ पहले कमांड फिर से होते हैं, -w अंतिम इतिहास के साथ प्रभावी रूप से साफ़ हो जाता है।
हाटोरू हंसो

56

इतिहास को हमेशा के लिए साफ़ करने के लिए निम्न कमांड निष्पादित करें

history -c && history -w

सौभाग्य!


3
स्वीकृत उत्तर की तुलना में बहुत बेहतर है। ;)
चिरमिसु

यह उत्तर और भी अधिक उपयोगी होगा यदि यह समझाया जाए कि ये झंडे क्या करते हैं (और इसलिए / जब वे उपयोग करने के लिए सही आदेश हैं)।
लार्स

20

एक और बहुत सरल है: history -cटर्मिनल प्रॉम्प्ट पर चला गया और bash_historyफ़ाइल में सभी प्रविष्टियां हैं ।


नहीं ऐसा नहीं है। लॉग आउट करें, लॉग इन करें, एरो-अप मुझे सब कुछ देता है। आपको "इतिहास -w" भी चाहिए।
स्टॉल्सविक

1
यदि आप ओपी के प्रश्न को पढ़ते हैं तो आपको पता चलेगा कि history -cइस पद्धति का उपयोग करना सटीक तरीका है।
जे। मनी

10

ऐसा करने का दूसरा तरीका कमांड ~/.bash_historyका उपयोग करके फ़ाइल को हटा रहा है rm ~/.bash_history। जब आप दूसरी बार लॉगइन .bash_historyकरेंगे , तो फाइल अपने आप बन जाएगी।


4
कम से कम कुछ OS पर ~ / .bash_history को डिस्क पर लिखा जाता है जब आप लॉग आउट करते हैं - * बंटस के बारे में निश्चित नहीं।
d -_- b

7

वर्तमान शेल का इतिहास साफ़ करें:

history -c

जब आप लॉग आउट करते हैं, तो आपके वर्तमान शेल के इतिहास को ~ / .bash_history से जोड़ दिया जाता है, जो पिछले गोले के इतिहास का एक कैश है, अधिकतम संख्या में ("मैन बैश" में HISTFILESIZE देखें)।

यदि आप इतिहास को पूरी तरह से हटाना चाहते हैं, तो आपको अनिवार्य रूप से ~ / .bash_history को खाली करना होगा, जो उपरोक्त कई प्रविष्टियों ने सुझाया है। जैसे कि:

history -c && history -w

यह वर्तमान शेल के इतिहास को साफ़ करता है और फिर वर्तमान शेल के इतिहास (खाली) को ~ / .bash_history को अधिलेखित करने के लिए बाध्य करता है .... या अधिक सटीक होने के लिए, यह इसे HISTFILE (जो कि डिफ़ॉल्ट के लिए ~ / .bash_history) को अधिलेखित करने के लिए मजबूर करता है।

उम्मीद है की यह मदद करेगा।


4
आप उत्तर सटीक है, लेकिन प्रश्न दो साल पुराना था, उत्तर स्वीकार कर लिया था, और आपके द्वारा दिए गए उत्तर को शामिल किया था।
चार्ल्स ग्रीन

6
rm ~/.bash_history; history -c; logout

अब वापस लॉग इन करें और गवाह करें कि आपका एरो-अप आपको कुछ नहीं देता है।


1
@ कैसिया यह एक सर्वर और ssh सत्र के बारे में है, इसलिए इसे संपादित करने की आवश्यकता नहीं है ...
Radu Rădeanu

0

इसको आजमाओ

अपनी संपादित करें .profileऔर फ़ाइल के अंत में नीचे की पंक्ति जोड़ें

rm -f .bash_history

इस तरह, हर बार जब आप लॉगिन करते हैं, तो यह आपके लिए आपके .bash_history फ़ाइल को स्वचालित रूप से हटा देगा। -R पुनरावर्ती हटाने विकल्प जोड़ना खतरनाक लगता है और इसकी आवश्यकता नहीं है।

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