मैं इसे निष्पादित किए बिना बैश इतिहास में एक कमांड कैसे जोड़ सकता हूं?


32

हर अब और फिर यह वास्तव में इसे क्रियान्वित किए बिना बैश के इतिहास में सीधे एक कमांड जोड़ने के लिए उपयोगी होगा। अब तक मैंने जो बंद चीज पाई है #, वह उसके सामने जोड़ रहा है और रिटर्न मार रहा है। क्या बेहतर तरीके हैं?

जवाबों:


39

history -s आदेश


उस सुविधा के बारे में कभी नहीं पता था। मैं इसके लिए तत्काल उपयोग के बारे में नहीं सोच सकता, लेकिन यह जानना अच्छा है।
डॉग हैरिस

7
क्या आप जानते हैं कि स्क्रिप्ट से इस तरह की कमांड चलाना संभव है? मेरे पास एक स्क्रिप्ट है ./resize-images.shजिसकी अंतिम पंक्ति परिवर्तनों को पूर्ववत करने के लिए एक कमांड को इंगित करती है, यह वास्तव में उपयोगी होगा यदि इसके बजाय स्क्रिप्ट मेरे इतिहास में कमांड जोड़ सकती है तो मुझे बस हिट करना है up-enterअगर मुझे पूर्ववत करने की आवश्यकता है
बेन पृष्ठ

1
@BenPage: यहां दोनों उत्तरों को देखें: unix.stackexchange.com/questions/112354/…
RustyTheBoyRobot

9

history -s आदेश

तुम भी आप के लिए यह करने के लिए एक कीस्ट्रोक बाँध सकते हैं। आप इसे बैश प्रॉम्प्ट पर दर्ज कर सकते हैं:

bind '"\C-q": "\C-a history -s \C-j"'

या इसे अपने में जोड़ें ~/.inputrc:

"\C-q": "\C-a history -s \C-j"

तब आप कुछ लिख सकते हैं और दबा सकते हैं Ctrl- qऔर इसे बिना निष्पादित किए इतिहास में जोड़ दिया जाएगा। "इतिहास" से पहले का स्थान historyकमांड का कारण बनता है यदि इतिहास में आपके वैरिएबल को शामिल नहीं किया गया है या । एक और कीस्ट्रोक को "\ Cq" के बजाय चुना जा सकता है।HISTCONTROLignorespaceignoreboth


3

एक वर्ण "कमांड" से कम कुछ भी साथ आना मुश्किल है, इसलिए हमें वास्तव में कीस्ट्रोक स्तर पर जाने की आवश्यकता है। मेरे बैश सेटअप और एक यूएस कीबोर्ड के साथ जो आप अब करते हैं:

  1. लाइन की शुरुआत करने के लिए जाओ CTRLA:: +1 निर्देश, +2 कीबोर्ड
  2. जोड़ें #(आवश्यकताएं SHIFT): +1 निर्देश, +2 कुंजीपट
  3. इसे इतिहास के साथ लागू करना ENTER: +1 निर्देश, +1 कुंजी

इसलिए कुल 3 निर्देशों में, 5 कुंजी।

ALT#1 निर्देश, 2 कीपेस में यही प्रयोग करता है।

YMMV आपके कीबोर्ड लेआउट और बैश कॉन्फ़िगरेशन पर निर्भर करता है।


3
यह समस्या प्रमुख प्रेसों की संख्या नहीं है, लेकिन यह कि "# कमांड" का उद्देश्य "कमांड" के बजाय इतिहास में संग्रहीत किया जाता है।
19

1
यह अच्छा है कि "#command" इतिहास फ़ाइल में संग्रहीत हो जाती है क्योंकि यह आपको बताती है कि कमांड वास्तव में निष्पादित नहीं हुई थी। यह अच्छा हो सकता है यदि आप बाद में समीक्षा करना चाहते हैं कि किसी समस्या का पता लगाने के लिए आपने कौन सी कमांड दर्ज की है।
मार्निक्स ए। वैन एम्मर्स

2
@Grumbel, @ मेनिक्स: सहमत, मैंने पत्र के सवाल का जवाब नहीं दिया, लेकिन यह दिखाया कि कैसे वह अब तेजी से करता है। व्यक्तिगत रूप से मुझे लगता है कि का उपयोग कर #commandरास्ता से ज़्यादा तेज़ है history -s commandउपयोग करने के लिए बहुत आसान है, और यह भी अगर आप मैप history-search-backward/-forwardठीक से। लेकिन यह स्वाद की बात है।
बेंजामिन बैनियर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.