जवाबों:
मैं उद्धृत करता हूं:
user title
कोड हटा दिया गया था 1 सेgnome-terminal 3.14
। भागने के अनुक्रम का उपयोग करके शीर्षक सेट करने का केवल एक ही तरीका है - जैसेbash
:PROMPT_COMMAND='echo -ne "\033]0;YOUR TITLE GOES HERE\007"'
1: सूक्ति बग 724110 और सूक्ति बग 740188 देखें ।
gnome-shell
। यह एक नई विंडो या टैब में एक नया टर्मिनल खोलने के लिए मेनू भी गायब हो गया (लेकिन आप अभी भी शॉर्टकट के माध्यम से कर सकते हैं। क्यों? एक बड़े स्मार्ट बटन के साथ सब कुछ बदलें: एक क्लिक करें और यह कुछ भी करता है!)
.bashrc
समाधान किर्बी द्वारा प्रस्तावित मेरे लिए काम किया:
set-title(){
ORIG=$PS1
TITLE="\e]2;$@\a"
PS1=${ORIG}${TITLE}
}
तो मेरे संकेत से: $ set-title test-title
set-title "longer and "
:echo $PS1 \[\e]0; \u@\h: \w \a\]\u@\h:\w\[\033[m\]$(__git_ps1)$ \e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a
Control + Z
, फिर set-title X
, फिर fg
प्रक्रिया को फिर से शुरू करने के लिए कर सकते हैं।
मैं विश्वास नहीं कर सकता कि उन्होंने इस तरह के उपयोगकर्ता के अनुकूल सुविधा को हटा दिया।
मैं ROXTerm ( http://roxterm.sourceforge.net ) पर स्विच कर रहा हूं , जो अच्छी तरह से काम करता है। यह उबंटू में पैक किया गया है:
sudo apt-get install roxterm
फिर, डायनासोर अपने तरीके से जारी रखने ;-)
मैंने उपर्युक्त सुझाव के अनुसार रॉक्सटर्म की कोशिश की है, अच्छे परिणाम के साथ। लेकिन मैं MATE टर्मिनल पर आ गया, जो MATE प्रोजेक्ट का हिस्सा है, जो 15.04 को Gnome 2 की निरंतरता है:
sudo apt-get install mate-terminal
यह टर्मिनल गनोम टर्मिनल कोड पर आधारित है।
टिप्पणी: सूक्ति टर्मिनल देवों की मानसिकता को समझना कठिन है। टर्मिनल टैब्स को नाम देने के लिए "कैसे" के बारे में वहाँ बहुत चर्चा है, और कैसे सही होना मुश्किल है। यदि ऐसा है, तो उपयोगकर्ता को उनका नाम देना कठिन क्यों है? बहुत स्मार्ट नहीं है।
अब मैंने एक दिन के बेहतर हिस्से के लिए इसकी जांच की है और अंत में इस शीर्षक को स्थापित करने का एक तरीका खोज लिया है। यह पलायन अनुक्रमों के माध्यम से किया जाता है जो कि \ e] 0 से शुरू होता है; और एक बीईएल चरित्र (= \ 007 = \ a) के साथ समाप्त होता है। जैसा कि मैंने ऊपर कहा था, इस तरह के एस्केप सीक्वेंस के माध्यम से शेल एप्लिकेशन से टर्मिनल एप्लिकेशन तक संचार बहुत सीमित है, बहुत सीमित है।
इसके बारे में ऊपर से:
PROMPT_COMMAND='echo -ne "\e]0;YOUR TITLE GOES HERE\a"'
यह काम कर सकता है , लेकिन यह हमेशा नहीं होता है। PROMPT_COMMAND
एक चर है जो सामग्री हर बार जब आप एक आदेश भेजते हैं, तो यह इस क्रम को भी भेजता है। हालाँकि, यह PS1 चर में एक एस्केप अनुक्रम द्वारा ओवरराइड किया जा सकता है, जो कमांड लाइन प्रॉम्प्ट सेट करता है। यही कारण है कि यहाँ ऊपर का कोई प्रभाव नहीं था।
एक पुराने उबंटू इंस्टॉलेशन से मैंने इसे पकड़ा, जो कमांड प्रॉम्प्ट (दायाँ भाग, के बाद ]
) सेट करता है और आवश्यक एस्केप सीक्वेंस भी छोड़ता है (बायां हिस्सा, ऊपर और सहित ]
):
PS1="\[\e]0;\u@\h: \w\a\]\u@\h:\w\$ "
यह संभावना बेहतर प्रदर्शन करती है, क्योंकि $PROMPT_COMMAND
हर बार व्याख्या करने की आवश्यकता नहीं है । इसके कई और विकल्प भी हैं, क्योंकि बैश के यहां अधिक एस्केप सीक्वेंस हैं, उदाहरण के \u
लिए, वर्तमान उपयोगकर्ता नाम के \W
लिए, वर्तमान निर्देशिका नाम के लिए या \w
वर्तमान कार्यशील निर्देशिका के पूरे पथ के लिए, वैकल्पिक रूप से केवल संख्या में अंतिम कुछ तक छंटनी की जाती है $PROMPT_DIRTRIM
। PROMPTING
बैश मैन पेज में अध्याय देखें । यह भी ध्यान रखें कि भागने का क्रम इसके अलावा \[
और \]
यहाँ से घिरा हुआ है ।
एक निश्चित शीर्षक सेट करने के लिए, यह काम करता है:
PS1="\[\e]0;YOUR TITLE GOES HERE\a\]\u@\h:\w\$ "
का आनंद लें!
अपनी जांच के दौरान मैंने गनोम-टर्मिनल स्रोत कोड को समझने की कोशिश की, जो वीटीटी स्रोत कोड की ओर जाता है और वहाँ शीर्षक सेटिंग और भागने के क्रम को पढ़ने के लिए समर्थन को सुरक्षा जोखिम माना जाता है: यहां देखें (केस 20, केस 21) और यहां ("विंडो शीर्षक रिपोर्टिंग")।
PS1
कस्टम कमांड प्रॉम्प्ट सेट करने जैसे अन्य उपयोगों के लिए पिछली किसी भी परिभाषा को मिटा देता है । मैंने मौजूदा PS1
सामग्री पर आपके भागने के क्रम को जोड़ने की कोशिश की और यह काम करने लगता है। इस तरह: PS1+="\[\e]0;YOUR TITLE GOES HERE\a\]\u@\h:\w\$ "
ऊपर दिखाए गए अनुसार $ PROMPT_COMMAND सेट करना यहाँ शून्य प्रभाव रखता है। कोई आश्चर्य नहीं, क्योंकि बैश टर्मिनल और मूल प्रक्रियाओं के अंदर चलता है (यहाँ: सूक्ति-टर्मिनल) एक यूनिक्स जैसे ओएस पर एक बच्चे के पर्यावरण को नहीं पढ़ सकता है। कुछ और अधिक सरल का उपयोग करना, जैसे
PROMPT_COMMAND='echo bla'
कार्यान्वित गूंज bla , और कुछ नहीं होता है।
संपादित करें: किसी को भागने के क्रम में इसे लपेटना है, मेरा दूसरा जवाब देखें। बच्चे के वातावरण को पढ़ने के बावजूद संभव नहीं है, इन दृश्यों के माध्यम से माता-पिता के लिए कुछ संचार वापस आ गया है।
गनोम बग 740188 में वे .bashrc में एक शीर्षक () फ़ंक्शन को परिभाषित करने के बारे में बात करते हैं। प्रत्येक टैब के लिए एक अलग खोला गया? गंभीर बदसूरत हैकिंग आगे, यदि संभव हो तो सब पर!
यहां तक कि Stackexchange पर अन्य स्पष्टीकरण $ PS1 सेट करने के बारे में बात करते हैं (और उठो)। क्षमा करें, नहीं, यह शीर्षक नहीं है, यह कमांड प्रॉम्प्ट है।
संक्षेप में: उन्होंने वरीयताओं के संवाद में थोड़ा सा स्थान बचाने के लिए इसे मरम्मत से परे गड़बड़ कर दिया। हे भगवान
अब, एक डेवलपर निर्णय वापस लेने का एकमात्र मौका एक गंभीर गंदगी को हटाने के लिए है, अन्यथा वे आपकी बग रिपोर्ट को सेकंड में बंद कर देते हैं (कई बार कई बार कोशिश की गई)। हम यह शिटस्टॉर्म कैसे बनाएंगे?