क्या मछली की तरह सिंटैक्स हाइलाइटिंग करने के लिए बैश पाने का कोई तरीका है?


40

में मछली खोल , वास्तविक कमांड लाइन वाक्यविन्यास पर प्रकाश डाला है:

यहां छवि विवरण दर्ज करें

क्या बैश में ऐसा ही व्यवहार प्राप्त करने का कोई तरीका है?

नहीं है बस कुछ इस तरह है, लेकिन zsh के लिए, नहीं मार नहीं। क्या यह संभव है कि इस पर रोक लगाई जा सके?

उन लोगों के लिए स्पष्ट करने के लिए जो स्क्रीनशॉट, स्पष्टीकरण या लिंक को नहीं समझते हैं: मैं टर्मिनल पर दर्ज किए गए वास्तविक पाठ को उजागर करना चाहता हूं। आज्ञा, कोष्ठक, उद्धरण, आदि।


लगता है कि बाश zsh करता है जैसे प्लगइन्स स्वीकार नहीं करता है, इसलिए इसे बैश शेल / बाइनरी के कस्टम निर्माण की आवश्यकता हो सकती है। किसी कारण के बजाय सिर्फ मछली का उपयोग करने के लिए नहीं? इसके अलावा, मुझे अपने साथ खेलने और देखने के लिए किसी अन्य शेल की ओर इशारा करने के लिए धन्यवाद कि क्या मैं हाहा की कुछ उन्नत विशेषताओं को सीख सकता हूं।
मैट्रिक्स मोल

1
@ मेट्रिक्स: मैं मछली का उपयोग नहीं कर सकता क्योंकि मेरे पास एक बहुत ही जटिल बैश कॉन्फ़िगरेशन है जो मैं हार नहीं सकता था।
1

दुर्भाग्य से, मुझे नहीं लगता कि वर्तमान में यह संभव नहीं है। मुझे यकीन है कि आपने जो शोध किया है, वह इस ओर भी इशारा करता है। यदि आप पूरी तरह से zsh पर स्विच नहीं कर सकते हैं, तो यह समझ में आता है, लेकिन अन्यथा आप फ़िज़ को देखना चाहते हैं, जिसमें मछली जैसी कुछ विशेषताएं शामिल हैं, हालांकि यह फरवरी से अपडेट नहीं किया गया है, इसलिए शायद zsh-syntax-highlighting लिंक आपने जो प्रदान किया है वह अधिक मजबूत होगा।
वॉइसथो

1
यह बाश सीखने के लिए बेहद फायदेमंद होगा, क्योंकि यह पूरे तरीके से खेलने की अनुमति देता है। बस आसानी से यह जानना कि आप एक विशेष चरित्र से बचना भूल गए हैं, मूल्यवान होगा।
सिराप

जवाबों:


8

बैश readlineइंटरैक्टिव इनपुट के लिए उपयोग करता है , इसलिए सिंटैक्स हाइलाइटिंग को उस प्रोग्राम में लागू करना होगा। मुझे इस तरह की सुविधा को कैसे कोड करना है, इसके बारे में एक Google समूह चर्चा में पाया गया ।

मछली शेल अपने स्वयं के लाइन संपादक का उपयोग करता है जो उस कार्यक्रम के लिए विशिष्ट है, और इसे सीधे पोर्ट नहीं किया जा सकता है।

आप पा सकते हैं कि zshयह बहुत मार के समान है, और इसका लाइन एडिटर विस्तार योग्य है । मैंने zsh में इस सुविधा को सक्षम करने के लिए zsh-syntax-highlighting पाया ।


0

जीएनयू बैश (या जीएनयू रीडलाइन) में सिंटैक्स हाइलाइटिंग प्राप्त करने का कोई सरल तरीका नहीं है , लेकिन यह बिलियन कमांड का उपयोग करके शेल कार्यों के लिए सभी उपयोगकर्ता इनपुट को बाइंड करके स्क्रिप्ट में अपने स्वयं के लाइन एडिटर को लागू करना संभव है bind -x 'BYTE: SHELL-COMMAND'। अपने स्वयं के पंक्ति संपादक में वाक्य रचना हाइलाइटिंग की सुविधा को एकीकृत करना संभव है।

वास्तव में मैंने ble.shवाक्य रचना हाइलाइटिंग और ऑटो-सुझाव जैसी सुविधाओं के साथ एक लाइन संपादक लागू किया । यह बैश 3.0--5.0 को सपोर्ट करता है। चूँकि यह (लगभग) शुद्ध बैश लिपियों में लिखा गया है, आप केवल sourceलिपि में लिख सकते हैं ~/.bashrc। यहाँ ble.shbashrc में सेटअप करने के लिए एक नमूना है ( विवरण के लिए README देखें):

$ git clone https://github.com/akinomyoga/ble.sh.git
$ cd ble.sh
$ make
$ make INSDIR="$HOME/.local/share/blesh" install
# bashrc

# Add the following line at the beginning of bashrc
[[ $- == *i* ]] &&
  source "$HOME/.local/share/blesh/ble.sh" --attach=none

# ... other bashrc settings ...

# Add the following line at the end of bashrc
((_ble_bash)) && ble-attach

नोट : मुझे पता है कि कभी-कभी स्वयं के उत्पादों के लिंक के साथ प्रश्नों का उत्तर देना आत्म-प्रचार और अविश्वसनीय माना जाता है, इसलिए मैं इस प्रश्न का उत्तर देने से बचता रहा हूं। हालांकि, कोई अन्य समाधान लंबे समय तक दिखाई नहीं दिया, और इस सवाल में भी कई विचार हैं (जो इसकी महत्वपूर्ण मांग को दर्शाता है)। इसलिए मैंने आज इस सवाल का जवाब देने का फैसला किया। निम्नलिखित मेटा प्रश्नों / उत्तरों का उल्लेख करते हुए, मैंने पहले इस विचार का वर्णन किया और एक उदाहरण कार्यान्वयन के रूप में मेरी परियोजना के लिए एक लिंक प्रदान किया।

हां, मुझे यह स्वीकार करना होगा कि यह वास्तव में आत्म-प्रचार है , लेकिन मेरा मानना ​​है कि यह उन लोगों की मदद करता है जो सुविधा चाहते हैं। यदि कोई समस्या है, तो मैं इसकी सराहना करूंगा यदि आप मुझे टिप्पणी द्वारा बता सकते हैं।


-1

मुझे नहीं लगता कि सिंटैक्स हाइलाइटिंग शेल स्तर पर होनी चाहिए, लेकिन इंटरफ़ेस स्तर पर (बस मेरी राय-और किसी और को ऐसा लगता है-), इसलिए मैं टर्मिनल या अपने पसंदीदा कंसोल के लिए "प्लगइन्स" में देखूंगा, उदाहरण के लिए इस प्लग इन के लिए केट मदद कर सकता है, या यह अन्य जो नैनो में सिंटैक्स हाइलाइटिंग प्रदान करता है

यहाँ अभी भी टर्मिनल में हाइलाइटिंग सिंटैक्स के बारे में अधिक चर्चा है:

अन्य उपनाम ls = 'ls -G' को .bash_profile में जोड़ें।

हालांकि यहां बेहतर तरीके से समझाया गया है कि कैसे

आशा करता हूँ की ये काम करेगा


11
ऐसा लगता है कि आप उत्तर दे रहे हैं कि संपादकों में हाइलाइटिंग सिंटैक्स कैसे सेट किया जाए, शेल में नहीं। Ls-colorization भी "वाक्यविन्यास" हाइलाइटिंग नहीं है।
काइल स्ट्रैंड

मुझे लगता है कि आप समाधान से अधिक शब्दार्थों पर ध्यान केंद्रित कर रहे हैं, लिंक से कोड के साथ और सुझाए गए समाधान से मुझे बैश में रंग मिलते हैं, जो मुझे विश्वास है कि ओपी क्या जानना चाहता है
प्यूरफैन

10
मूल प्रश्न वास्तव में वास्तविक वाक्य रचना हाइलाइटिंग के बारे में काफी स्पष्ट है। यह मछली खोल के स्क्रीनशॉट और अंतिम वाक्य दोनों द्वारा दिखाया गया है: "मैं टर्मिनल पर दर्ज किए गए वास्तविक पाठ को उजागर करना चाहता हूं। कमांड, कोष्ठक, उद्धरण, आदि।"
काइल स्ट्रैंड

9
जैसा कि मैंने कहा, यह "वाक्यविन्यास" हाइलाइटिंग नहीं है। वे lsफ़ाइल प्रकार के आधार पर कमांड के आउटपुट को उजागर कर रहे हैं , जिसका शेल सिंटैक्स से कोई लेना-देना नहीं है।
काइल स्ट्रैंड

2
Zsh ( github.com/zsh-users/zsh-syntax-highlighting ) और मछली ( fishshell.com/docs/current/tutorial.html ) दोनों में सिंटैक्स हाइलाइटिंग है, यह प्रश्न स्पष्ट रूप से बैश के लिए एक समान विशेषता के बारे में पूछ रहा है। यह एक पूरी तरह से वैध अनुरोध है कि एक सुविधा के लिए पूछें जो "लागू करने के लिए कठिन है और लगातार बनाए रखें" खासकर जब यह पहले से ही अन्य गोले में मौजूद है
ब्रैंडन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.