कमांड-लाइन कमांड हिस्ट्री से पूरी होती है


84

इसलिए, मैंने इतिहास और Ctrl+ को देखा है R, लेकिन वे नहीं हैं जो मैंने सोचा था कि मैं जानता था। क्या कोई तरीका है जो मैं एक कमांड की शुरुआत में टाइप कर सकता हूं, और कुछ बैश शॉर्टकट के साथ अपने इतिहास में मैचों के माध्यम से साइकिल चला सकता हूं?

# mysq(some shortcut key)

मुझे देता है:

# mysqldump  --add-drop-table -e -q -n -C -u 
(some shortcut key)
#  mysql -u ben.dauphinee -p

साइड नोट: टैटी के बिना डेस्कटॉप के लिए '<kbd> Alt + Tab </ kbd>' है।
neverMind9

जवाबों:


90

दबाने पर Ctrl+ Rउल्टा इतिहास खोज खुल जाएगा। अब अपनी कमांड टाइप करना शुरू करें, इससे पहला मैच होगा। Ctrl+ R(और फिर से) दबाकर आप इतिहास के माध्यम से चक्र कर सकते हैं।

mysq(Ctrl+R)

देना होगा:

mysqldump  --add-drop-table -e -q -n -C -u 

Ctrl+ Rफिर से:

mysql -u ben.dauphinee -p

5
धन्यवाद। इसके अलावा, Esc निष्पादित किए बिना चयनित कमांड को आपकी कमांड लाइन पर रखेगा, जबकि Enter चयनित कमांड को चलाएगा।
बेन डुपहिने 16

3
मुझे ESC की तुलना में CTRL + E बेहतर लगता है, क्योंकि भागने के लिए पहुंचना अजीब है, लेकिन मैं पहले से ही CTRL + R मार रहा हूं, इसलिए E वहीं है। यह पंक्ति के अंत में कर्सर को भी रखता है, जो उस स्थिति में आसान है जब मैं कुछ बदलना चाहता था (जैसे फ़ाइल नाम) जो मुझे एक सामान्य मामला लगता है।
सोरपीगल

अफसोस की बात है, यह Cygwin पर काम नहीं करता है
ATorras

2
मैक पर, कम से कम, ऐसा लगता mysq(CTRL+R)(CTRL+R)है कि "mysq" के साथ शुरू होने वाली आज्ञाओं के माध्यम से चक्र नहीं होता है। आपको (CTRL+R)mysq(CTRL+R)इसके बजाय करने की आवश्यकता है
ब्लूराजा - डैनी पफ्लुघोफ

62

गाइल्स ने जो कहा, उस पर विस्तार करने के लिए, मेरे पास .inputrcऊपर / नीचे तीर कुंजी को बांधने के लिए निम्नलिखित है history-search-backwardऔर history-search-forward:

# Key bindings, up/down arrow searches through history
"\e[A": history-search-backward
"\e[B": history-search-forward
"\eOA": history-search-backward
"\eOB": history-search-forward

बस कुछ टाइप करें (वैकल्पिक), फिर जो आपने टाइप किया उसके साथ शुरू होने वाले कमांड के लिए इतिहास के माध्यम से खोजने के लिए ऊपर / नीचे तीर कुंजी दबाएं।

इसके .bashrcबजाय ऐसा करने के लिए .inputrc, आप इसका उपयोग कर सकते हैं:

bind '"\e[A": history-search-backward'

3
उन बंधन में ~ / .inputrc ... मेरे आलसीपन का समर्थन करने के लिए धन्यवाद।
मार्टिन ज़ेटलर

यह ध्यान देने योग्य है कि '\ e' महत्वपूर्ण है, कम से कम बैश डेब्यूटेंट्स के लिए। अपने आदेश के लिए कीस्ट्रोक प्राप्त करने के लिए बस Ctrl-V टाइप करना पूरी कहानी नहीं बताता है। उदाहरण के लिए, Ctrl-V मेटा-पी (यानी) Alt-P टाइप करने पर ^ [p - आपको जो व्यवहार चाहिए उसे प्राप्त करने के लिए, "^ [" को '\ e' से बदलें।
18

@Syslogic से सहमत - .inputrc में लाइनें डालें और बाइंड और सिंगल कोट्स ड्रॉप करें।
18

इस पर कॉपी-पेस्ट करते हुए .inputrc on osx, I get: source ~ / .inputrc -bash: \ e [A :: कमांड नहीं मिला -बश: \ e [B :: कमांड नहीं मिला -bash: \ eOA "कमांड नहीं मिला -बश: \ eOB :: कमांड नहीं मिला
वालरस द कैट

1
सुपरसुअर . com/questions/241187/how-do-i-reload-inputrc देखें । आप फ़ाइल को स्रोत नहीं कर सकते।
रेची

7

आप PAGEUPएक कमांड को स्वतः पूर्ण करने के लिए बटन भी दबा सकते हैं । यह मूल रूप से bash_historyफ़ाइल को खोजता है ।


आपको /etc/inputrcदो पंक्तियों को $HOME/.inputrc"\e[5~": history-search-backward "\e[6~": history-search-forward
अनकंफर्ट

5

आप रीडलाइन कमांड का उपयोग कर सकते हैं history-search-backwardऔर history-search-forwardआपके द्वारा पहले से टाइप किए गए उपसर्ग के साथ शुरू होने वाली कमांड लाइनों के बीच नेविगेट करने के लिए। इनमें से कोई भी आदेश डिफ़ॉल्ट कॉन्फ़िगरेशन में कुंजियों के लिए बाध्य नहीं है।

Zsh (zle) में समान कमांड हैं history-beginning-search-backwardऔर history-beginning-search-forward, डिफ़ॉल्ट रूप से कुंजियों के लिए बाध्य नहीं है। वहाँ भी हैं history-search-backwardऔर history-search-forward, जो कर्सर की स्थिति की परवाह किए बिना खोज करने के लिए उपसर्ग के रूप में वर्तमान कमांड के पहले शब्द का उपयोग करता है।


4

यदि आप बहुत ही समान आदेशों का एक अच्छा अवलोकन चाहते हैं, तो आप इसके साथ एक सूची प्राप्त कर सकते हैं:

history|grep KEYSTRING

फिर अपने माउस के मध्य बटन के साथ कॉपी और पेस्ट करें।

आरजीडीएस - जो

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