ZSH - आउटपुट पूरे इतिहास?


37

मैंने हाल ही में बैश से लेकर zsh तक स्विच किया। बैश में, एक तरह से (पुनरावर्ती खोज के अलावा) जो मुझे पहले से चलाए गए कमांडों को खोजने के लिए इस्तेमाल किया गया था history | grep whatever, जहां whateverमुझे याद रखने वाली थोड़ी सी कमांड है।

Zsh में, यह काम नहीं कर रहा है। historyकेवल कुछ आइटम लौटाता है, भले ही मेरी .zsh_historyफ़ाइल में कई प्रविष्टियाँ हों, जिन्हें मैंने इसे करने के लिए कॉन्फ़िगर किया है।

मैं अपने पूरे इतिहास का उत्पादन कैसे कर सकता हूं, जिसके साथ खोज करने के लिए उपयुक्त है grep?

जवाबों:


48

इतिहास zsh प्रविष्टियों में एक सीमा को [first] [last]तर्क के रूप में स्वीकार करता है , इसलिए उन सभी को प्राप्त करने के लिए history 0

Zsh मदद पाने के लिए (कम से कम दिमाग के साथ) Alt-hइतिहास कमांड पर टाइप करें और यह बिल्ट-इन के लिए मदद लाएगा।


3
महान! हालाँकि, यह मेरे लिए एक कष्टप्रद डिफ़ॉल्ट है, इसलिए मैं इसे अपनी एलियास फाइल में जोड़ रहा हूँ:alias history="history 0"
नाथन लॉन्ग

7
ऐसा नहीं है कि यह मायने रखता है, लेकिन इतिहास सूची 1 से शुरू होती है और
0.40 पर

2
मैं खुद इस उपनाम का उपयोग कर रहा हूं:alias h='history 1 | grep'
हेराल्ड नॉर्डग्रेन

3
यह मेरे लिए काम नहीं करता है: मेरी ~/.zsh_history10066 लाइनें हैं, लेकिन history 0(या इसके समकक्ष fc -l 0), केवल 4999 लाइनों को प्रिंट करता है।
jayhendren

2
करने के लिए history 1 | grepलोगों को, मुझे आशा है कि आप के बारे में पता ctrl+r- सबसे अच्छा चाल / शॉर्टकट कभी!
एमिल वताई

9

स्वीकृत उत्तर सही है, लेकिन यह ध्यान देने योग्य है कि आपको खोज करने के लिए बाहरी बाइनरी को कॉल करने की आवश्यकता नहीं हैgrep , क्योंकि उस क्षमता को बेक किया गया है। मेरे पास यह फ़ंक्शन मेरे में परिभाषित है .zshrc:

histsearch() { fc -lim "*$@*" 1 }

टिप्पणियाँ:

  • fczsh बिल्डिन है जो इंटरेक्टिव इतिहास को नियंत्रित करता है। historyके बराबर है fc -l

  • -mझंडा एक पैटर्न है, जो उद्धृत किया जाना चाहिए की आवश्यकता है।

  • -iझंडा एक टाइमस्टैम्प कहते हैं।

  • fcइसकी आस्तीन तक कई और चालें हैं (जैसे वर्तमान सत्र के लिए आंतरिक इतिहास की खोज को सीमित करना)। देखें zshbuiltins(1)आदमी पेज या आधिकारिक दस्तावेज


बेहतर अभी तक "$ @" के बजाय "* $ @ *" (अतिरिक्त सितारों पर ध्यान दें) पैटर्न का उपयोग करना है क्योंकि उत्तरार्द्ध केवल सटीक मिलान करता है।
पायोत्र डोब्रोगोस्ट

1
आप पूरी तरह से सही हैं, @PiotrDobrogost! मुझे यकीन नहीं है कि मैंने इस उत्तर को राज्य में कैसे सबमिट किया, जो मैंने किया था - मुझे लगता है कि मैंने स्मृति से उस फ़ंक्शन को टाइप किया होगा। जैसा कि यह खड़ा है यह बहुत उपयोगी नहीं है, इसलिए मैं तारांकन शामिल करने के लिए उत्तर को संपादित करने जा रहा हूं।
wjv

3

पर एक नज़र डालें fzf । यह आपके शेल इतिहास में न केवल "जो भी-कण" खोजने में मदद करता है, बल्कि अन्य दिलचस्प स्थानों में भी है, जैसे ब्राउज़र इतिहास, निर्देशिका इतिहास, आदि।

fzf एक कमांड-लाइन फ़ज़ी फ़ाइंडर है। इसका मतलब है कि आप उन कणों या अंशों की खोज कर सकते हैं जो आप देख रहे हैं और यह उन मेलों के संग्रह को प्रदर्शित करेगा जिन्हें आप लगातार परिष्कृत कर सकते हैं। यह वास्तव में एक गेम चेंजर है।

होमपेज पर लेखक की निदर्शी उदाहरण के एक नंबर शामिल हैं।


आपके द्वारा बताए गए इस उत्तर के संदर्भ में कुछ संदर्भ जोड़ने पर विचार करें।
दलाल रस आईटी

सुपर उपयोगकर्ता में आपका स्वागत है! कृपया पढ़ें कैसे सॉफ्टवेयर की सिफारिश करने के लिए न्यूनतम आवश्यक जानकारी कैसे सूपर उपयोगकर्ता पर सॉफ्टवेयर की सिफारिश करने पर और सुझावों। आपके उत्तर को उपयोगी रखने के लिए, भले ही प्रदान की गई कड़ी इन विवरणों को आपके उत्तर में संपादित कर दे।
मैं कहता हूं मोनिका
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.