2009-01-08 17 views
10

जब एक इंटरैक्टिव बैश सत्र काम कर रहे, विंडोज खोल मैं याद आती है से एक पहलू F8 कुंजी है जहाँ आप एक आदेश टाइप करना आरंभ है, F8 मारा और खोल से मेल खाता है कि तुम्हारे पास क्या है सबसे हाल ही में आदेश इतिहास में दर्ज की गई पाता है अभी तक टाइप किया गया। जैसेबैश शैल - डॉस खोल एफ 8 के बराबर क्या है?

[email protected]:~>cd /home/jboss/server/default/log 

वहाँ बैश में ऐसा करने का कोई तरीका है:

[email protected]:~>cd /home/jb<F8 Key Here> 

मेरी पूर्व आदेश को लाता है?

उत्तर

15

हिट Ctrl - आर टाइपिंग शुरू करने से पहले।

(वहाँ अच्छी तरह से एक और संस्करण जो पहले से ही टाइप किया गया है के आधार पर आदेशों पाता है हो सकता है -, मुझे पता नहीं होता Ctrl के रूप में - आर हमेशा मेरे लिए काफी अच्छा रहा है :)

दबाने Ctrl - आर फिर अगले मैच आदि

+2

ध्यान दें कि यदि आप अपने पहले Ctrl-R के बाद टेप करते हैं, तो आप इतिहास में खोज को आपके द्वारा लिखे गए प्रविष्टियों से प्रतिबंधित कर देंगे; फिर आप Ctrl-R के बीच वैकल्पिक हो सकते हैं और जो भी आप ढूंढ रहे हैं उसे ढूंढने के लिए टाइपिंग कर सकते हैं। – MatthieuP

2

अपने मामले !jb में प्रिंट और फिर कि आदेश चलाने को दर्शाता है।

जैसे

$ nano logconfig.properties 
$ !n 
nano logconfig.properties 
$ 
बेशक

यदि आप सुरक्षित पक्ष पर होना चाहता हूँ, उपयोग Ctrl-R पहली इंटरैक्टिव आदेश इतिहास को लाने के लिए।

+0

उसका आदेश "सीडी/होम/जेबी" शुरू होता है; "! जेबी" उसका आदेश नहीं चलाएगा। "!? जेबी?" ऐसा कर सकता है, लेकिन यह कुछ अन्य कमांड भी चला सकता है जिसमें अक्षरों में "जेबी" था। –

+0

यदि आप पहले ही टाइप कर चुके हैं तो आपको संदेह हो रहा है! और क्वेरी का खोज भाग, आप एम-^ के साथ जगह-जगह विस्तार को मजबूर कर सकते हैं। –

2

Ctrl + आर इतिहास खोज करता है। यह एक सा है कि पहले में विभिन्न आप Ctrl +आर मारा है और तो प्रकार आप के लिए क्या देख रहे हैं।

1

यदि आप केवल एक कमांड के बारे में बात कर रहे हैं, तो आप अंतिम करने के लिए !<cmd> का उपयोग कर सकते हैं। उदाहरण के लिए, कहें कि आपने कुछ समय पहले python runscript.py दर्ज किया था; आप टाइप कर सकते हैं:

!py 

या उस आदेश को फिर से चलाने के लिए उन पंक्तियों के साथ कुछ।

echo !py:1 

जो runscript.py वापस गूंज होगा टर्मिनल के लिए, इस उदाहरण में:

एक कमांड को एक तर्क दोहराने के लिए, आप कुछ इस तरह कर सकता है। कोलन के बाद संख्या उस तर्क को संदर्भित करती है जिसे आप दिए गए आदेश से उपयोग करना चाहते हैं।

बैश इतिहास here के बारे में बहुत सारी अन्य जानकारी है।

6

मेरा Gentoo इस तरह से कॉन्फ़िगर किया गया है कि मैं कमांड इतिहास में उन आदेशों को स्क्रॉल करने के लिए PgUp और PgDn दबा सकता हूं जो वर्तमान में मेरी कमांड लाइन में मौजूद है।

# cd<PgUp> 

परिणामों में:

# cd hydrogen 

कि काफी एक ही समारोह है। यह मेरी /etc/inputrc में निम्न पंक्तियों के साथ परिभाषित किया गया है:

# mappings for "page up" and "page down" to step to the beginning/end 
# of the history 
"\e[5~": history-search-backward 
"\e[6~": history-search-forward 
+0

मेरे पास tcsh में कुछ समान है। मैंने इसे Ctrl + ऊपर और Ctrl + Down के बजाय मैप किया है, इसलिए मेरे पास सामान्य इतिहास-ब्राउज़िंग भी हो सकती है। –

0

IMHO '!' खतरनाक है, ऐसा करने की तरह! गलत शेल में आरएम जिसमें आप अपेक्षा कर रहे थे से एक अलग आरएम कमांड है। कम से कम Ctrl + आर आपको इसे निष्पादित करने से पहले चुनी गई पूर्ण कमांड लाइन देखने देता है।

1

मैं अपने .inputrc फ़ाइल में इन पंक्तियों के होते हैं:

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

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

मेरी सभी कॉन्फ़िगरेशन फ़ाइलें github पर सार्वजनिक हैं।

http://github.com/jonshea/config-files/tree/master

0

अच्छा समाधान। उन लोगों के लिए धन्यवाद। Ctrl + आर वही था जो मैं खोज रहा था, हालांकि इनपुटआरसी विकल्प वास्तव में उपयोगी ऐड-ऑन हैं।

चीयर्स।

0

यदि आप vi इनपुट मोड का उपयोग करते हैं (bash में set -o vi या set संपादन-mode vi .inputrc में) के माध्यम से, आप इतिहास (/) को खोजने के लिए सामान्य vi आदेशों का उपयोग कर सकते हैं। यह आपको पूर्ण नियमित अभिव्यक्ति देता है, जो जटिल आदेश खोजने के लिए सहायक हो सकता है।

संबंधित मुद्दे