चेतावनी: पंक्ति संपादन सक्षम नहीं है


21

मुझे bind -x '"\C-r"':resetटर्मिनल को खाली करने के लिए यह मददगार कमांड मिली लेकिन मैं एक साधारण बैश स्क्रिप्ट बनाना चाहता था:

#!/bin/bash
bind -x '"\C-r"':reset

उत्पादन:

alfred@alfred-laptop:~/bash$ ./bind 
./bind: line 2: bind: warning: line editing not enabled

क्या कोई समझा सकता है:

  1. मैं इसे कैसे ठीक करूं?
  2. क्या warning: line editing not enabledमतलब है?

मैंने पहले से ही superuser.com/questions/122911/bash-reset-and-clear-commands/…echo -e '\0033\0143' के लिए धन्यवाद का उपयोग करके इसे ठीक कर दिया है , लेकिन मैं अभी भी जानना चाहता हूं कि इस त्रुटि का क्या अर्थ है और इसे कैसे ठीक किया जाए। बहुत धन्यवाद।
अल्फ्रेड

@squircle अच्छे सुधार के लिए धन्यवाद। क्या आप मेरे प्रश्न का उत्तर भी जान सकते हैं: P?
अल्फ्रेड

4
सिर्फ रिकॉर्ड के लिए (क्योंकि यह वास्तव में उत्तर नहीं दिया गया है): आपको "लाइन संपादन सक्षम नहीं है", क्योंकि जब आप अपनी स्क्रिप्ट को इनवॉइस करते हैं, तो यह बस सक्षम नहीं होता है और आपको इसे स्वयं करना होगा, .eg को अपनी स्क्रिप्ट में set -o emacsया set -o vi( bindनिश्चित रूप से पहले ) डालें ।
एल्मर जेंडर

जवाबों:


10

आपको उस स्क्रिप्ट को स्रोत करने की आवश्यकता है। वर्तमान सत्र में उस कुंजी बाइंडिंग को सक्रिय करें . ./bindया source ./bindकरें।

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

यदि आप चाहते हैं कि कीबाइंडिंग लगातार बनी रहे, तो उस कमांड को अपने साथ जोड़ें ~/.bashrc


1. मैं दृढ़ता के बारे में जानता हूं। 2. आपका उदाहरण काम करता है, लेकिन जटिलता रनिंग कमांड (मेरी राय में) जोड़ता है। मुझे लगता है कि मुझे अब यह पता है, लेकिन मैं एक साधारण बैश फ़ाइल रखना चाहूंगा जिसे मैं इसके बिना चला सकता हूं source
अल्फ्रेड

2
@alfredwesterveld: यदि आप नहीं चाहते हैं हर बार लोड आप एक खोल शुरू करते हैं, लेकिन आप का उपयोग किए बिना किसी भी समय इसे सक्रिय करने के लिए सक्षम होना चाहते हैं बाध्यकारी sourceया डॉट ( .), अपने में फ़ंक्शन जोड़ने ~/.bashrc: rbind () { bind -x '"\C-r"':reset; }तो आप में प्रवेश कर सकते rbindद्वारा अपने आप में एक कमांड और बाइंडिंग सक्रिय होगी।
अगली सूचना तक रोक दिया गया।

9

मेरे पास एक समान संदेश था, लेकिन मेरा एक स्क्रिप्ट से एक इंटरैक्टिव (लॉगिन) खोल के बाहर चलाया जा रहा था; यह एक सीजीआई स्क्रिप्ट के माध्यम से चलाई जा रही एक शेल स्क्रिप्ट थी। मेरा संदेश था:

/home/richard/.bash_profile: line 4: bind: warning: line editing not enabled

और हालांकि यह वास्तव में लाइन 4 पर नहीं था, केवल bindउस फ़ाइल में था:

bind 'set completion-ignore-case on'

यदि लाइन एडिटिंग सक्षम है, तो इसका मतलब केवल यह है कि अगर यह एक इंटरेक्टिव शेल है।

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