शेल के लिए iPython लाइक कमांड हिस्ट्री


24

आप में से जो लोग ubuntu पर पायथन प्रोग्रामिंग नहीं करते हैं, उनके लिए ipython स्टेरॉयड पर एक पायथन शेल है, लेकिन इसमें यह अद्भुत विशेषता है कि यह न केवल ज्ञात नामों के आधार पर ऑटोकंप्लेट्स करता है (अर्थात टैब प्रेस करते समय ठीक उसी तरह से करता है) लेकिन यदि आप एक कमांड टाइप करना शुरू करते हैं और दबाते हैं, तो यह पूरे इतिहास (जैसे बैश) के माध्यम से स्क्रॉल नहीं करता है, लेकिन केवल हाल के आदेशों के माध्यम से जो लेटर्स के समान स्ट्रिंग से शुरू हुआ है।

इसलिए यदि आपने कुछ लंबी कमांड की तरह scp -r -P 8000 -l user server.com:~/dir/to/copy ./कई अन्य कमांड का पालन किया है। यदि आपने टाइप करना शुरू किया scpऔर दबाया, तो बैश पूरे इतिहास के माध्यम से स्क्रॉल करने के बजाय पहले दिखाई गई कमांड को प्रदर्शित करेगा।

क्या बैश के लिए इस तरह का विस्तार है? या क्या कोई शेल है जो इस तरह की सुविधा प्रदान करता है?

जवाबों:


26

बैश में वह सुविधा भी है, लेकिन यह डिफ़ॉल्ट रूप से सक्षम नहीं है। आप इसे इसमें चिपकाकर कर्सर को ऊपर / नीचे बांध सकते हैं ~/.inputrc:

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

मैं Ctrlइसके बजाय इसे + ऊपर / नीचे बांधना पसंद करता हूं :

"\e[1;5A": history-search-backward
"\e[1;5B": history-search-forward

संपादित करें: रक्षा करने के लिए ctrl+leftऔर ctrl+rightपूरे शब्द में वापस आ गया और आगे बढ़ने के लिए, भी इन पंक्तियों को शामिल ~/.inputrcफ़ाइल:

# mappings for Ctrl-left-arrow and Ctrl-right-arrow for word moving
"\e[1;5C": forward-word
"\e[1;5D": backward-word
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word

इस टिप का उपयोग करते हुए, अब मैं टर्मिनल / बाएँ / दाएँ टर्मिनल में अगले / पिछले शब्द पर कूदने के लिए उपयोग नहीं कर सकता, जो मेरे लिए पूरे उद्देश्य को बर्बाद कर देता है। शायद वर्कअराउंड है?
zetah

@ ज़ेटा ने शब्द चाल के लिए मेरे वर्कअराउंड में जवाब दिया
wim

1
सभी डिफॉल्ट्स को संरक्षित करने के लिए $include /etc/inputrc, आप पहली पंक्ति में अधिमानतः जोड़ सकते हैं ।
तुलियो कासाग्रेन्डे

9

कुछ अक्षर लिखने Ctrl+ R, और टाइप करने का प्रयास करें । यह रिवर्स ऑर्डर में भी काम करता है।


6

और बैश में शानदार इतिहास विस्तार शॉर्टकट मत भूलना। 1

मैं मैनपेज से कुछ अंश पोस्ट कर रहा हूं, यदि आपने उन्हें अपनी बांह पर टैटू नहीं कराया है (या उन्हें याद किया है)।

   Event Designators  
       An event designator is a reference to a command line entry in the  his
       tory 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 trail‐
              ing ? may be omitted if string is followed immediately by a new‐
              line.
       ^string1^string2^
              Quick  substitution.  Repeat the last command, replacing string1
              with string2.  Equivalent to ``!!:s/string1/string2/'' (see Mod‐
              ifiers below).
       !#     The entire command line typed so far.

मैं अक्सर पिछली कमांड के अंतिम 'शब्द' को संदर्भित करने की क्षमता का उपयोग करता हूं। उदाहरण के लिए,

mkdir /foo/shmoo/adir.horribilus.foo
cp file1 file2 file3 file4 !$ 
ls -l !$

यहां दोनों मामलों में, !$मैच /foo/shmoo/adir.horribilus.foo


1 ... जो csh से लिए गए थे। बैश के फीचर चोरी के दायरे को कम करने के लिए, बैश मैन पेज कहता है

   The shell supports a history expansion feature that is similar  to  the
   history  expansion in csh.  

तो, यह "समान" है। इस में से किसी में तोड़ सकता cshया tcsh। या जो भी csh वंशज है आप इस तथ्य के कारण उपयोग नहीं कर रहे हैं कि यह उतना अद्भुत नहीं है bash


0

ऊपर उल्लिखित @ ak2 के समान एक विकल्प है , लेकिन आपको एक नई .inputrc फ़ाइल नहीं बनानी है।

इसके बजाय, यदि आपके पास sudo अनुमतियाँ हैं, तो आप इसे / etc / inputrc फ़ाइल में सक्षम कर सकते हैं। इस फ़ाइल में इतिहास खोज सुविधा (कम से कम 18.04 के लिए) सहित विभिन्न कीबोर्ड सेटिंग्स हैं। / Etc / inputrc से अंश है:

# alternate mappings for "page up" and "page down" to search the history
# "\e[5~": history-search-backward
# "\e[6~": history-search-forward

बस एक sudo फ़ाइल संपादक (जैसे, $ sudo vim) का उपयोग करके नीचे की दो पंक्तियों को अनसुना कर दें, और एक नए टर्मिनल सत्र में इतिहास खोज सुविधा (सभी उपयोगकर्ताओं के लिए) होगी।

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