Grep का उपयोग करते समय bash इतिहास में किसी पासवर्ड या अन्य संवेदनशील जानकारी को संग्रहीत करने से कैसे रोकें?


21

मुझे हाल ही में एक पासवर्ड के लिए grep करना था जो शायद किसी फ़ाइल में सहेजा गया है। मैं नहीं चाहता था कि वह लाइन बैश इतिहास में दिखाई दे।

मैं grep का उपयोग करते समय किसी पासवर्ड या अन्य संवेदनशील जानकारी को bash इतिहास में संग्रहीत होने से कैसे रोक सकता हूं? उदाहरण के लिए, मैं स्टड या कंसोल से पैटर्न को पढ़ने के लिए grep कैसे प्राप्त कर सकता हूं?

जवाबों:


37

यदि आप HISTCONTROL=ignorespaceअपने .bashrc में रखते हैं, और आप कमांड नाम से पहले एक स्थान रखते हैं, तो यह आपके इतिहास में नहीं जोड़ा जाएगा।

$ export HISTCONTROL=ignorespace
$ grep "passwd" secret_password_file.txt   # added to history
$  grep "passwd" secret_password_file.txt  # not added to history

3
एफडब्ल्यूआईडब्ल्यू: शीर्षक में सवाल और शरीर में सवाल पूरी तरह से अलग हैं। मैंने शीर्षक में प्रश्न का उत्तर दिया।

आपकी आलोचना उचित है। मैंने सिर्फ शीर्षक संपादित किया। क्या अब यह बेहतर है? मुझे अभी भी लगता है (और ऐसा लगता है कि यह समुदाय करता है) कि आपका उत्तर सबसे अधिक प्रासंगिक है।
सिंह

1
मैंने चीजों को स्पष्ट करने के लिए आपके प्रश्न का संपादन किया, दोनों प्रश्न उपलब्ध किए (इतिहास में कुछ संग्रहित होने से रोकने और स्ट्रेप से पढ़ने के लिए कुछ उपलब्ध)। इस तरह, सभी उत्तर अभी भी मान्य हैं, लेकिन बहुत अलग समाधान भ्रमित नहीं करेंगे।

5

पूर्णता के लिए, मैं शरीर में प्रश्न का उत्तर देता हूं: स्टड से पैटर्न पढ़ने के लिए कैसे grep प्राप्त करें:

आप -fविकल्प का उपयोग कर सकते हैं :

grep -f- /path/to/file

वह stdinप्रति पंक्ति एक से कितने भी पैटर्न पढ़ेगा । ( -इसका मतलब है stdin, आप एक फ़ाइल को प्रतिमानों के साथ निर्दिष्ट कर सकते हैं, प्रति पंक्ति एक।) grepउन पंक्तियों से /path/to/fileमेल खाएंगे जिनमें किसी निर्दिष्ट पैटर्न से मेल खाता हो।


उसके लिए धन्यवाद। यह एक अच्छा योगदान है और साथ ही कहीं और उपयोग करने के लिए एक आसान ट्रिक है, कहो जब एक or'ed पैटर्न की आवश्यकता होती है
Leo

2

यह सबसे अच्छा मैं के साथ आ सकता है:

grep $(read -p "Pattern: "; echo $REPLY) .*

क्या यह काफी सुरक्षित है? वहाँ वैसे भी टर्मिनल स्क्रॉल करने के अलावा पैटर्न को पुनर्प्राप्त करने के लिए है? क्या कोई अच्छा तरीका है?


3
आप read -sइको को रोकने के लिए उपयोग कर सकते हैं ( यह प्रश्न भी देखें )। psहालांकि उत्पादन में रहस्य दिखाई देगा । आप इसके बजाय grep -f /dev/stdin *(या grep -f - *) का उपयोग कर सकते हैं ताकि grep इसके बजाय किसी फ़ाइल से पैटर्न (ओं) को ^D(read -es; echo $REPLY) | grep -f - *
पढ़ेगा

1
कैप्चर खोल के चारों ओर दोहरे उद्धरण चिह्न होने चाहिए। इस समय, यह टूट जाएगा यदि उपयोगकर्ता रिक्त स्थान या कुछ विशेष वर्णों में प्रवेश करता है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.