बैश शेल हिस्ट्री रेंज कैसे प्राप्त करें


9

मैं किसी विशिष्ट श्रेणी में इतिहास प्रविष्टियाँ कैसे प्राप्त / फ़िल्टर कर सकता हूँ?

मेरे पास एक बड़ी इतिहास फ़ाइल है और अक्सर उपयोग होती है

history | grep somecommand

अब, मेरी याददाश्त बहुत खराब है और मैं यह भी देखना चाहता हूं कि कमांड में प्रवेश करने के समय मैंने और क्या किया।

अभी के लिए मैं ऐसा करता हूं: मैच मिलता है 4992 somecommand, फिर मैं कहता हूं

history | grep 49[0-9][0-9]

यह आमतौर पर काफी अच्छा होता है, लेकिन मैं इसे अधिक सटीक तरीके से करूंगा, यह 4972 से 5012 तक की कमांड है, जो पहले 20 कमांड है और 20 के बाद।

मैं सोच रहा हूं कि क्या कोई आसान तरीका है? मुझे संदेह है, एक कस्टम स्क्रिप्ट क्रम में है, लेकिन शायद किसी और ने पहले भी कुछ ऐसा ही किया है।


इतिहास में हेरफेर के लिए 2 बिल्ट-इन हैं: gnu.huihoo.org/bash-2.02/html_node/bashref_73.html
LAFK कहते हैं, मोनिका

जवाबों:


13

आप grepमैच के आसपास की कुछ पंक्तियों को प्रिंट करने के लिए कह सकते हैं , जैसे, 3 पहले और 5 बाद:

history | grep -B 3 -A 5 somecommand

grep -C 4के बराबर है grep -A 4 -B 4

लेकिन अक्सर आप ठीक से नहीं जानते होंगे कि आपको अग्रिम में कितनी लाइनें चाहिए। इसलिए कम प्रयोग करें और उसके अंदर खोजें। तुम भी कमांड लाइन से खोज शुरू कर सकते हैं:

history | less +/somecommand

1
साथ बहुत अच्छा चाल less! नहीं पता था कि आप ऐसा कर सकते हैं
वॉरेन

वास्तव में बहुत अच्छा ... मैं "आस-पास" कमांड देख सकता हूं, जिसे मैं तब भी देख रहा हूं, जब मैं वास्तव में इसे विशेष रूप से नहीं देख रहा हूं, लेकिन मुझे याद है जब मैंने एक और प्रासंगिक कमांड का उपयोग किया था! अच्छा सामान tnx।
खलील घरौई

8

Fc आज़माएँ:

fc -l 4972 5012

... यह बैश बिलियन कमांड है। (इसलिए इसे tcsh में न आज़माएँ:>)


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