क्या बैश में इतिहास ट्रैकिंग को अस्थायी रूप से निलंबित करने का एक तरीका है, ताकि "गुप्त" मोड में प्रवेश किया जा सके? मैं अपने टर्मिनल में सामान दर्ज कर रहा हूं जिसे मैं रिकॉर्ड नहीं करना चाहता, संवेदनशील वित्तीय जानकारी।
क्या बैश में इतिहास ट्रैकिंग को अस्थायी रूप से निलंबित करने का एक तरीका है, ताकि "गुप्त" मोड में प्रवेश किया जा सके? मैं अपने टर्मिनल में सामान दर्ज कर रहा हूं जिसे मैं रिकॉर्ड नहीं करना चाहता, संवेदनशील वित्तीय जानकारी।
जवाबों:
यह वही होना चाहिए जो आप देख रहे हैं:
unset HISTFILE
man bash
यदि HISTFILE परेशान है, या यदि इतिहास फ़ाइल अपरिहार्य है, तो इतिहास सहेजा नहीं गया है।
वैकल्पिक रूप से, यदि आप इसे बंद करना चाहते हैं और फिर से फिर से चालू करते हैं, तो इसका उपयोग करना आसान हो सकता है set
:
set +o history
set -o history
set +o history
और set -o history
); आगे पीछे टॉगल करने के लिए जब मैं गुप्त सामान कर रहा हूँ
unset HISTFILE
काम नहीं करता। set -/+o history
एक जादू की तरह काम करता है! धन्यवाद
history
इसे देखने की कोशिश करें)। यदि अतिरिक्त रूप से आप HISTSIZE=0
सूची को मिटा देते हैं और कोई आदेश फ़ाइल में संग्रहीत नहीं किया जा सकता है (जैसा कि कोई आदेश याद नहीं है)।
सुनिश्चित करें कि HISTCONTROL
शामिल हैं ignorespace
। आप शायद अपने HISTCONTROL=ignorespace
( HISTCONTROL=ignoredups:ignorespace
या कुछ) को जोड़ना चाहते हैं ~/.bashrc
। फिर किसी भी कमांड लाइन जो एक स्थान से शुरू होती है, इतिहास से छोड़ी जाती है।
एक और संभावना एक नया बैश सत्र शुरू करने की है जो अपने इतिहास को नहीं बचाती है।
$ bash
$ unset HISTFILE
$ sooper-sekret-command
$ exit
$ #back in the parent shell
यदि आपको कई आदेशों को संग्रहीत करने से बचने की आवश्यकता है और आप अभी भी पिछले आदेशों तक पहुंचने के लिए तीर का उपयोग करना चाहते हैं, तो उपयोग करें:
$ bash # open a new session.
$ unset HISTFILE # avoid recording commands to file.
$ commands not recorded
.
.
$ exit
$
कमांड को कैसे संग्रहीत किया जाता है, इसे नियंत्रित करने के चार तरीके (स्तर) हैं।
पहला और सबसे सरल उपयोग ignorespace
(या उपेक्षा) है:
$ HISTCONTROL="ignorespace${HISTCONTROL:+:$HISTCONTROL}"
वह उन आदेशों से पहले एक स्थान का उपयोग करने की अनुमति देगा जिन्हें आप स्मृति सूची में दर्ज किए जाने से बचना चाहते हैं history
। और, परिणाम में, जैसा कि मेमोरी में कोई कमांड दर्ज नहीं है जिसे फ़ाइल में भेजा जा सकता है, एक कमांड से भी सूचीबद्ध फ़ाइल में भेजे जाने से बच जाएगा $HISFILE
।
फ़ाइल में कमांड दर्ज करने से बचें $HISTFILE
:
$ unset HISTFILE
यदि कोई परेशान है, तो शेल से बाहर निकलने पर कमांड हिस्ट्री सेव नहीं होती है।
अशक्त HISTFILE=''
और / या HISTFILE=/dev/null
एक ही प्रभाव के लिए काम करता है। यह समझें कि कमांड अभी भी मेमोरी सूची में दर्ज किए जा रहे हैं, history
कमांड या अप ऐरो की कोशिश करें।
चेतावनी: यदि शेल मौजूद होने से पहले HISTFILE को रीसेट किया जाता है, तो जो कुछ भी मेमोरी में दर्ज किया गया है, वह वैसे भी फ़ाइल में लिखा जा सकता है।
स्मृति में इतिहास सूची में नई कमांड दर्ज करने से बचें । और, जैसा कि मेमोरी में नहीं है, फाइल करने के लिए रिकॉर्ड नहीं किया जा सकता है।
$ shopt -ou history # or set +o history
shopt -os history
(या set -o history
) के साथ फिर से सक्षम
मेमोरी में इतिहास सूची से सभी कमांड निकालें:
$ HISTSIZE=0
सभी आदेश मिट जाते हैं (स्मृति से) और इसलिए, फ़ाइल को संग्रहीत करने के लिए कुछ भी संग्रहीत नहीं किया जा सकता है, निश्चित रूप से, जब तक कि चर को कुछ वैध संख्यात्मक मान पर सेट नहीं किया जाता है।
man history
है कि यह हम में से ज्यादातर के लिए कटौती करने के लिए नहीं जा रहा है।
HISTIGNORE
, जो subsumes
के समारोह HISTCONTROL
।
LESS=+'/^ *HISTI' man bash
(यह "मैनुअल पेज?) नहीं है।" @ नथनबासानी
इतिहास को बंद करने का एक सरल तरीका है, इसलिए कमांड को .bash_history
फ़ाइल में संग्रहीत नहीं किया जाएगा ।
आपको व्हाट्सएप या टैब स्पेस को किसी कमांड के सामने रखना होगा, ताकि कमांड हिस्ट्री में स्टोर न हो। उदाहरण के लिए:
$ ls
print the list of file
$ history
ls
history
$ pwd
print the current working directory
$ history
ls
history
pwd
आदेश, इतिहास में दुकान नहीं मिलेगा, क्योंकि यह सामने खाली स्थान के है।
export HISTFILE=/dev/null
यह मेरा गोटो तरीका है। बस के मामले में परेशान इतिहास / इतिहास / इतिहास, आदि ... काम नहीं करता है, इसे निर्यात करने के लिए / dev / null हमेशा मेरे लिए काम किया है।
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin16)
HISTFILE
बैश के बाहर निकलने पर केवल मूल्य की जाँच की जाती है, इसलिए पहला तरीका काम नहीं करता है (यदि आप मान को पुनर्स्थापित करते हैं, तो कमांड बच जाएगा)।set +o history
निर्देशानुसार काम करता है।