OS X पर .bash_history को सहेजे बिना एक टर्मिनल कमांड निष्पादित करें?


19

यह साइट कहती है कि लिनक्स पर आप spaceइसे बाहर रखने के लिए एक टर्मिनल कमांड से पहले जोड़ सकते हैं .bash_history।

यह मैक ओएस एक्स के लिए काम नहीं करता है। क्या किसी को इतिहास पर सहेजे बिना टर्मिनल पर किसी एक कमांड को निष्पादित करने का तरीका पता है?

मैं इतिहास को साफ नहीं करना चाहता।

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


टर्मिनल कमांड से पहले `` (स्पेस) जोड़ने से यह इतिहास से बाहर नहीं रहेगा
— वॉरेन

2
@warren नहीं, यह करता है। आपको बस बैश में सुविधा को सक्षम करना होगा।
— गॉउन

@firebat - सही: लेकिन जब से यह कुछ आप है सक्षम करने के लिए, यह या काम नहीं हो सकता है हर जगह :)
— वॉरेन

जवाबों:


24

निम्नलिखित पंक्ति को ~ / .bashrc में जोड़ें

export HISTCONTROL=ignorespace

फिर source ~/.bashrcसेटिंग को रिफ्रेश करने के लिए

इससे उस सुविधा को बैश में सक्षम किया जाना चाहिए। यदि यह काम नहीं करता है, तो आपको इसे ~ / .bash_profile के बजाय ~ / .bashrc में जोड़ना पड़ सकता है क्योंकि OS X मुझे लगता है कि linux की तुलना में थोड़ा अलग है।


मैं उसके साथ दो विकल्पों का उपयोग कैसे कर सकता हूं? मैं उपयोग करना चाहता हूं export HISTCONTROL=erasedups,ignorespaceलेकिन मुझे लगता है कि सिंटैक्स काम नहीं करता है ...
— cwd

2
export HISTCONTROL=erasedups:ignorespace
— ग्वोन

2
लेकिन मुझे लगता है कि यह वास्तव में हैexport HISTCONTROL=ignoredups:ignorespace
— goweon

3
"नजरअंदाज" सेटिंग बार-बार लाइनों को नजरअंदाज करती है। एक पंक्ति में बीस बार टाइप करने पर "ls" केवल इतिहास में उनमें से एक के साथ समाप्त होता है। हालाँकि, "ls" और फिर "ps" टाइप करना और फिर "ls" फिर से "ls" और "ps" को हर बार स्टोर करेगा - जब तक कि आपके पास 3 बैश न हों और "eradesups" सेट न करें। यदि यह सेट है, तो कोई भी डुप्लिकेट बैश इतिहास में बिल्कुल भी दर्ज नहीं होता है। - cyberciti.biz/faq/bash-for-loop-array
— cwd

1
यह मेरे लिए काम नहीं करता है। मैंने कोशिश की है export HISTCONTROL=erasedups:ignorespace और दोनोंexport HISTCONTROL=ignoredups:ignorespace भी export HISTCONTROL=ignoredups:ignoreboth। लेकिन मुझे जो मिलता है, वह सत्रों के बजाय प्रत्येक सत्र के लिए एक एकल प्रविष्टि है : अर्थात, यदि कोई आदेश पहले से ही .bash_historyएक सत्र की शुरुआत में है, और इसे फिर से टाइप किया गया है, तो इसे इतिहास में जोड़ा जाएगा (हालांकि उस सत्र के लिए केवल एक बार) । मैं यह कैसे सुनिश्चित करूँ कि जब मैं फिर से दर्ज किया जाता है तो एक कमांड जो कि ensure .bash_history में है, मैं टर्मिनल लॉन्च नहीं करता?
— ओरोम

1

यदि आप सत्र को सक्रिय रखने के बारे में चिंतित नहीं हैं, तो यह काम कर सकता है:

kill -9 $$

यह लॉग-आउट के बजाय वर्तमान सत्र को मार देगा, जिसका [सैद्धांतिक रूप से] मतलब है कि आपका इतिहास सहेजा नहीं जाएगा।

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