2012-08-06 7 views
37

मैक ओएस एक्स शेर में टर्मिनल ऐप में मुझे एक अजीब समस्या का सामना करना पड़ रहा है। जब मैं टेक्स्ट की एक लंबी लाइन में प्रवेश करता हूं जो टर्मिनल विंडो के किनारे तक पहुंचने पर अगली पंक्ति में लपेटना चाहिए, तो यह ऊपर की रेखा से टेक्स्ट के शीर्ष पर टाइप करना जारी रखता है।ओएस एक्स टर्मिनल टेक्स्ट खुद के शीर्ष पर स्टैकिंग

से पहले अपने पाठ खिड़की किनारे तक पहुँच जाता है:

before

पाठ के बाद खिड़की किनारे तक पहुँच जाता है:

यहाँ कुछ स्क्रीनशॉट मदद करने के लिए इस मुद्दे को दर्शाते हैं

after

मैंने उपयोगी होने पर मेरे टेक्स्ट और विंडो सेटिंग्स के स्क्रीनशॉट भी प्रदान किए हैं।

पाठ सेटिंग्स:

text

विंडो सेटिंग: की पेशकश की किसी भी सहायता के लिए पहले से

window

धन्यवाद। मेरे पास थोड़ी देर के लिए यह मुद्दा था और बस इसके आसपास कभी नहीं मिला। यह वास्तव में गधे में दर्द हो रहा है जब मैं उन चीज़ों में जाता हूं जिनके लिए बड़े grep कमांड और लंबे पथ नाम की आवश्यकता होती है।

+1

क्या आपने 'PS1' पर्यावरण चर के लिए कम फैंसी मान की कोशिश की है? 'निर्यात PS1 = '>' का प्रयास करें; reset'। – hamstergene

+0

@hamstergene जब मैंने उस आदेश को चलाया और टाइप करना शुरू किया, तो यह ठीक से काम कर रहा था। एक नई विंडो खोलना हालांकि इसे एक ही मुद्दे में वापस रखता है। मैं इस आदेश से परिचित नहीं हूं लेकिन ऐसा लगता है कि यह चाल है। क्या आप इसे स्थायी परिवर्तन कैसे करें इस बारे में आगे बता सकते हैं? धन्यवाद! थोड़ा सा शोध करने के बाद – Daryn

+0

@hamstergene मैंने यह पता लगाया कि यह क्या कह रहा था। मैंने कभी इसे अनुकूलित करने के बारे में सोचा नहीं था और [यह एक ठोस संसाधन प्रतीत होता है] (http://www.thegeekstuff.com/2008/09/bash-shell-ps1-10-examples-to-make-your-linux-prompt तरह-एंजेलीना जोली-/)। – Daryn

उत्तर

47

PS1 पर्यावरण चर निर्धारित करता है कि खोल का संकेत कैसा दिखता है। man bash इस पर पूरा दस्तावेज देता है। (वास्तव में उनमें से कई अलग-अलग तरीकों से हैं)।

है कि यह स्थापित करने के किया जा सकता है, आम तौर पर ~/.profile, ~/.bashrc, /etc/profile या /etc/bashrc में से एक फ़ाइलों की संख्या रहे हैं।

यदि आपके पास रंग कोड या अन्य नियंत्रण अनुक्रम हैं, तो आपको उन्हें \[ और \] से ठीक से लपेटना होगा (और सामान्य पाठ को लपेटना नहीं है), अन्यथा लाइन संपादन आपके मामले में गड़बड़ हो सकता है। मैं डिफ़ॉल्ट मान पर PS1 को रीसेट करने का सुझाव देता हूं फिर आइटम द्वारा रंग वापस आइटम को ध्यान से जोड़ना।

उदाहरण के लिए:

PS1='\[\033[1m\033[32m\]\[email protected]\h \w\[\033[0m\]\$ ' 
     ^^^^^^^^^^^^^^^   ^^^^^^^ 

रंग आदेशों को रेखांकित किया गया है। ध्यान दें कि वे \[ \] से घिरे हुए हैं। एएनएसआई:

+0

मैंने वास्तव में इस से ऊपर एक उत्तर जोड़ा जो कि आपकी टिप्पणी पर आधारित था, लेकिन इसे उत्तर के रूप में चुना क्योंकि आपने इसे गहराई से समझाया और आपने मुझे समाधान खोजने के लिए प्रारंभिक जानकारी प्रदान की। मुझे यकीन नहीं है कि मेरी मूल पीएस 1 सेटिंग्स को परिभाषित किया गया था, लेकिन मैंने अपना '.bash_profile' संपादित किया और उचित टेक्स्ट जोड़ा। यह पहले से स्थापित करने और चाल करने के लिए जो कुछ भी स्थापित कर रहा था उसे ओवरराइड करें। – Daryn

+1

इसके लिए धन्यवाद। किसी कारण से हर दूसरी वेबसाइट में मुझे गलत रंग कोड थे (शायद यह सिर्फ ओएसएक्स है)। ओएसएक्स में यह 100% ठीक से काम करता है। – rosslebeau

+0

यह मेरे लिए खूबसूरती से काम करता है ~ –

1

hamstergene के मार्गदर्शन के साथ मैं यह समझने में सक्षम था कि इसे कैसे अच्छा खेलना है। this Geek Stuff guide और this It's Me Tommy tutorial का उपयोग करके, मैं यह निर्धारित करने में सक्षम था कि मैं अपना पीएस 1 टेक्स्ट कैसे प्रदर्शित करना चाहता था। इसे और अधिक सरलीकृत करने के लिए इसे बदलना अजीब ओवरलैपिंग टेक्स्ट समस्या को समाप्त कर रहा था जिसमें मैं दौड़ रहा था।

से पहले:

before

के बाद:

after

मैं बस मेरी .bash_profile संपादित और निम्न पंक्ति कहा:

export PS1="[\[email protected]\h] > "; 

तब मैं चला गया और खिड़की के रंगों को अच्छे उपाय के लिए बदल दिया क्योंकि मैं कर सकता हूं।

6

मैं एक ही समस्या है, मैं अगर आप

बदल उन्नत>अनुकरण> के रूप में टर्मिनल घोषित पाया।

यह रंगीन पीएस 1 समस्या हल करता है। साथ मैक टर्मिनल

लेकिन एक अजीब व्यवहार बनाता है: मैं @koiyu जवाब के साथ मेरी समस्या का समाधान मिल गया।

https://apple.stackexchange.com/questions/37001/strange-behavior-in-terminal-with-custom-bash-profile/37036#37036

+1

प्रदान किया गया लिंक मेरे लिए समस्या हल करता है, आपके कंसोल व्यवहार को नष्ट करने से बचने के लिए '\ e [...' प्रारूप के साथ उपयोग किए गए रंग उचित बचने के अनुक्रमों की आवश्यकता है \ \ \ \ [\ \ \ ''। – RndmTsk

4

मैं वजह से गलत तरीके से रंग कोड का उपयोग करने के लिए एक ही मुद्दा किया करते थे। यहां मेरा पीएस 1 है जिसने इस मुद्दे को हल किया। इसके अलावा यदि आप जीआईटी का उपयोग करते हैं, तो यह उस गिट शाखा को दिखाने में सहायक होगा जो आप काम कर रहे हैं और यदि आपका कामकाजी पेड़ गंदा है या नहीं। इसे अपने .profile या .bash_profile

# Git branch in prompt. 
parse_git_branch() { 
    git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/' 
} 

parse_git_dirty() { 
    st=$(git status 2>/dev/null | tail -n 1) 
    if [[ $st == "" ]]; then 
     echo '' 
    elif [[ $st == "nothing to commit (working directory clean)" ]]; then 
     echo '' 
    elif [[ $st == 'nothing added to commit but untracked files present (use "git add" to track)' ]]; then 
     echo '?' 
    else 
     echo '*' 
    fi 
} 

# coloring the terminal comman line 
SB_GREEN="\[\033[1;32m\]" 
SB_BLUE="\[\033[1;34m\]" 
SB_RED="\[\033[1;31m\]" 
SB_NOCOLOR="\[\033[0m\]" 
export PS1="$SB_GREEN\[email protected]\h$SB_NOCOLOR: $SB_BLUE\w$SB_GREEN\$(parse_git_branch)$SB_RED\$(parse_git_dirty)$SB_NOCOLOR $ " 

आशा है कि इससे मदद मिलती है।

+0

धन्यवाद, आप सबसे अच्छे हैं! – bora89

0

मूल मुद्दा PS1 में एक नई लाइन नहीं था था

आमतौर पर (FYI इस में चल रहे किसी के लिए) अपने को अनुचित तरीके से भाग निकले रंग कोड है, लेकिन अगर इसकी नहीं है कि इसकी आप में एक नई लाइन है कि आपके ps1

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