पिछले कमांड को चलाने के लिए एरो का उपयोग करना


11

पिछली कमांड को चलाने के लिए मुझे अप-एरो का उपयोग करने के लिए क्या सेटअप चाहिए? मैक के साथ, मैं कमांड को फिर से चलाने के लिए अप-एरो का उपयोग कर सकता हूं जिसे मैं अभी चलाता हूं, लेकिन यह मेरे बैश शेल के साथ काम नहीं करता है।

मैं 8.04 का उपयोग करता हूं (मैं कुछ संकलक संस्करण मुद्दों के कारण नवीनतम वितरण का उपयोग नहीं कर सकता)।

जोड़ा

मैंने कुछ भी नहीं बदला क्योंकि यह मैक पर VMWare फ्यूजन के साथ एक ताजा स्थापित है।


3
डिफ़ॉल्ट कॉन्फ़िगरेशन में, अप एरो पूरी तरह से काम करता है: क्या आपने कुछ चीज़ों को संशोधित किया है?
enzotib

जैसा कि @enzotib का कहना है कि बैश डिफ़ॉल्ट रूप से होगा, लेकिन कुछ अन्य, जैसे श नहीं होगा!
रॉरी अलसॉप

जवाबों:


10

सुनिश्चित करें कि आपका इतिहास सक्षम है। आप चालू स्थिति की जाँच कर सकते हैं:

set -o

आउटपुट में होना चाहिए ( history onरेखा को नोट करें ):

histexpand      on
history         on
ignoreeof       off

यदि यह सक्षम नहीं है, तो आपको चलाने की आवश्यकता है set -o history। इस परिवर्तन को लगातार बनाए रखने के लिए, आपको इसे इसके साथ जोड़ना होगा ~/.bashrc:

set -o history

यदि आप पिछली कमांड को चलाना चाहते हैं, तो आप अगले कमांड को भी चला सकते हैं:

!!

से बैश मैनुअल पृष्ठ :

Event Designators
   An event designator is a reference to a command line entry in the history list.

   !      Start a history substitution, except when followed by a blank, newline,
          carriage return, = or ( (when the extglob shell option  is
          enabled using the shopt builtin).
   !n     Refer to command line n.
   !-n    Refer to the current command line minus n.
   !!     Refer to the previous command.  This is a synonym for `!-1'.
   !string
          Refer to the most recent command starting with string.
   !?string[?]
          Refer to the most recent command containing string.  The trailing ? 
          may be omitted if string is followed immediately by a newline.
   ^string1^string2^
          Quick  substitution.  Repeat the last command, replacing string1 with
          string2.  Equivalent to ``!!:s/string1/string2/'' (see Modifiers below).
   !#     The entire command line typed so far.

यदि आप बैश का उपयोग कर रहे हैं, तो आप इतिहास के माध्यम से नेविगेट करने के लिए डिफ़ॉल्ट शॉर्टकट का उपयोग कर सकते हैं:

  • Ctrl+ P: पिछला आदेश
  • Ctrl+ N: अगला आदेश

    इतिहास को पिछले इतिहास में हेरफेर करने के लिए कमांड (Cp) इतिहास सूची से पिछली कमांड प्राप्त करें, सूची में वापस जा रहा है। अगला-इतिहास (Cn) इतिहास सूची से अगला आदेश प्राप्त करें, सूची में आगे बढ़ रहा है।


1
मैंने जाँच की कि सेटअप सही है, लेकिन ऊपर-तीर कुंजी काम नहीं करती है। हालाँकि, मैं परिणाम प्राप्त करने के लिए Ctrl-P / N का उपयोग कर सकता हूं। धन्यवाद।
मुकदमा

@prosseek उस मामले में, आप बदल गए हैं /etc/inputrcया ~/.inputrc? इसके अलावा, आप जो टर्मिनल उपयोग कर रहे हैं उसमें अप और डाउन एरो प्रोडक्शन से कौन सा एस्केप सीक्वेंस उत्पन्न होता है? चेक करने, चलाने के लिए cat, फिर खाली लाइन पर, ऊपर की ओर और नीचे की ओर हिट करें, फिर कैट से बाहर निकलने के लिए Ctrl + C। यहाँ यह उत्पादन करता है ^[[A^[[B
जिरहा

@geirha: मेरे पास ~ / .inputrc फ़ाइल नहीं है, और मैंने कुछ भी नहीं बदला / etc / inputrc। और भागने के क्रम के लिए, मुझे स्क्रीन में कुछ भी नहीं मिला।
अभियोजन पक्ष

@prosseek तब यह लगता है कि तीर कुंजी कभी भी टर्मिनल तक नहीं पहुंचती है। शायद VMWare इंटरफ़ेस उन्हें या कुछ और फ़िल्टर कर रहा है।
जिरह

14

सुनिश्चित करें कि आप वास्तव में बैश का उपयोग कर रहे हैं। एक आम गोचा उपयोगकर्ताओं या समूहों (GUI) एप्लिकेशन के useraddबजाय एक नया उपयोगकर्ता बना रहा है adduser। पूर्व के साथ, डिफ़ॉल्ट शेल सेट है /bin/sh। यह सुनिश्चित करने के लिए चलाएँ chsh( ch ange sh ell) /bin/bash


1

टर्मिनल में दर्ज करें:

gedit  ~/.inputrc

फिर कॉपी पेस्ट करें और सहेजें:

"\e[A": history-search-backward
"\e[B": history-search-forward
"\e[C": forward-char
"\e[D": backward-char

अब से टर्मिनल में आप वृद्धिशील खोज कर सकते हैं, आपको पिछले कमांड को खोजने के लिए सभी करने की आवश्यकता है, यह कहने के लिए कि पहले दो या तीन अक्षर दर्ज करें और ऊपर की ओर तीर आपको जल्दी से वहाँ ले जाएगा।

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