2011-12-22 12 views
35

मैंने हाल ही में iTerm2 पर स्विच किया है और इसे प्यार किया है। मैं सोच रहा हूं कि अगर आपके पास पर्यावरण/विशिष्ट मशीन के अनुरूप होने के लिए प्रोफ़ाइल का उपयोग करने का कोई तरीका है।iTerm 2 प्रोफाइल

कहें कि क्या मैं अपने मैक पर एक विंडो में कार्य कर रहा हूं, प्रोफ़ाइल डिफ़ॉल्ट रूप से प्रदर्शित होती है, लेकिन अगर मैं मशीन में ssh (dev0 कहता हूं), iTerm पर प्रोफ़ाइल प्रोफाइल dev0 पर अपडेट हो जाएगी। एक बार जब मैं dev0 के साथ समाप्त हो गया हूं और बाहर निकलें, तो प्रोफ़ाइल फिर से डिफ़ॉल्ट पर स्विच हो जाएगी।

मुझे एहसास है कि जब भी मैं किसी अन्य मशीन में एसएसएच करना चाहता हूं तो विशिष्ट कार्य खोलना है और इसमें अंतर करने का एक तरीका है, लेकिन यदि कनेक्शन बंद है तो आपको पृष्ठभूमि के बजाय पाठ के आधार पर नोटिस करना होगा खिड़की का

क्या यह संभव है? यदि नहीं, तो यह सुविधा कैसे जोड़ा जा सकता है, और क्या कोई तरीका है जिससे मैं योगदान कर सकता हूं?

+0

यह एक अच्छा सवाल है, लेकिन मुझे सच में यकीन नहीं है कि यह स्टैक ओवरफ्लो पर है या नहीं। – sosborn

+0

आप सही हैं मैं अभी समुदाय में शामिल हो गया हूं, क्या सुपरयूसर में इसे स्थानांतरित करने का कोई तरीका है? –

+3

सुपरयूसर पर कम से कम एक प्रश्न है जो टिप्पणियों में इस प्रश्न का संदर्भ देता है :) http://superuser.com/questions/1052305/mac-osx-terminal-change-background-color-on-login-to- अलग- सर्वर? noredirect = 1 # comment1475057_1052305 –

उत्तर

48

iTerm2 एक कस्टम एस्केप कोड का समर्थन करता है जो फ्लाई पर प्रोफाइल को बदलता है। इसे अपने .bashrc या .bash_profile में रखें।

<esc>]50;SetProfile=X^G 

जहां एक्स प्रोफ़ाइल है। उदाहरण के लिए,, एक "फू" कहा जाता है के लिए प्रोफ़ाइल को बदलने के लिए हमें इस खोल स्क्रिप्ट:

#!/bin/bash 
echo -e "\033]50;SetProfile=Foo\a" 

इसे वापस बदलने के जब आप प्रस्थान करें, वापस डिफ़ॉल्ट करने के लिए ~/.bash_logout में प्रोफ़ाइल को बदलने के लिए कोड डाल दिया।

+0

किसी और के लिए बस इसके साथ कोई समस्या जो इसे पढ़ती है: यदि आप अपने एसएसएच सत्रों को घोंसला देते हैं, तो आपको दूसरे एसएसएच से लॉग आउट करने के बाद पुनः स्रोत (। ~/.bashrc) करना होगा अपने पहले में मैं आमतौर पर ऐसा नहीं करता लेकिन मुझे लगता है कि मैं दूरस्थ रूप से काम कर रहा हूं। –

+0

क्या इस तरह की डिफ़ॉल्ट प्रोफ़ाइल सेट करना संभव है? मैंने 'SetDefaultProfile' की कोशिश की, लेकिन यह काम नहीं किया। –

+0

बस भागने वाले कोडों की इस सूची को मिला, दिलचस्प रूप से - SetProfile सूचीबद्ध नहीं है .. मुझे आश्चर्य है कि वहां और क्या छिपा हुआ है .. http://www.iterm2.com/#/section/documentation/escape_codes –

0

मुझे यह वही इच्छा थी और यह पाया गया कि यह एप्लिकेशन की वरीयताओं में iTerm 2 (1.0.0.2013031 9 बनाएँ) में पूरा किया जा सकता है।

आप अपनी डिफ़ॉल्ट के लिए जा रहा द्वारा पूर्व निर्धारित तुलना में एक अलग पूर्व निर्धारित के साथ एक प्रोफ़ाइल (जैसे कि एक दूरस्थ प्रोफ़ाइल) या लेन-:

प्रोफाइल -> ओपन प्रोफाइल प्रोफ़ाइल का चयन करें और संपादित करें क्लिक करें प्रोफाइल के लिए ... जाओ रंग टैब और लोड प्रीसेट में सूची से इस प्रोफ़ाइल के लिए प्रीसेट चुनें ...

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

  1. पसंद
  2. वरीयताएँ-> कुंजी जिसका कार्रवाई प्रोफाइल के साथ नई विंडो है

मेरी डिफ़ॉल्ट प्रोफ़ाइल एक है में एक नया प्रोफाइल शॉर्टकट कुंजी बनाने में एक नया एक प्रोफाइल बनाना काला पृष्ठभूमि लेकिन कभी-कभी यह मुझे एक सफेद पृष्ठभूमि रखने में मदद करता है। मैं अपनी डिफ़ॉल्ट प्रोफ़ाइल डुप्लिकेट करता हूं और नई प्रोफ़ाइल DefaultLight नाम देता हूं। मेरी डिफ़ॉल्ट प्रोफ़ाइल पर मैं कुंजी टैब पर जाता हूं जहां मैं एक नई प्रोफ़ाइल शॉर्टकट कुंजी बनाता हूं जिसका कीबोर्ड शॉर्टकट^+ cmd + n है, जिसका कार्य प्रोफ़ाइल के साथ नई विंडो है, और जिसका प्रोफ़ाइल डिफ़ॉल्ट है।

prefrences को सहेजने के बाद, cmd + n एक काले रंग की पृष्ठभूमि के साथ एक नई विंडो खुलता है और^+ cmd + n एक सफेद पृष्ठभूमि के साथ एक नई विंडो खुलता है।

कीबोर्ड शॉर्टकट कुंजी प्राथमिकता में प्रोफ़ाइल कार्रवाई के साथ एक नया टैब भी है यदि आप इसे और भी लेने में रुचि रखते हैं।

6

zsh उपयोगकर्ताओं

के लिए कहते हैं कि तुम 2 प्रोफाइल, एक का नाम मैक (अपनी प्राथमिक मशीन के लिए) और linux (अपने रिमोट मशीन)

के लिए एक जब प्रवेश करने देता है सत्र, हमें हमारी प्रोफ़ाइल

  1. रिमोट से कनेक्ट करने के लिए zsh को बताने की आवश्यकता है linux
  2. ~/.zshrc में तत्काल प्रभाव के लिए echo -e "\033]50;SetProfile=linux\a"
  3. स्रोत अपनी फ़ाइलें जोड़ें: source ~/.zshrc
  4. अपने नए विषय iterm सत्र के भीतर दिखाई देना चाहिए।

जब सत्र बाहर निकलने के लिए, हम

  1. linux ~/.zlogout में दूरस्थ linux
  2. से कनेक्ट जोड़ने हमारे मूल प्रोफ़ाइल पर वापस स्विच करने के लिए zsh बताने की आवश्यकता निम्नलिखित
if [ "$SHLVL" = 1 ]; then 
    echo -e "\033]50;SetProfile=mac\a" 
    clear 
fi 

अब आप < 3 के साथ प्रोफाइल स्वैप कर सकते हैं।

अगर आप पार्टी का उपयोग कर रहे हैं, मेरा मानना ​​है कि चरण समान हैं, लेकिन आप के बजाय संशोधित करेगा ~/.bashrc और ~/.bash_logout

डेमो

demo of session based profiles in iterm2

10

नवीनतम iTerm2 रात (2.9.20150329- बिल्ड रात के समय लिखने के समय) आपको आसानी से ऐसा करने की अनुमति देता है। आप इसे here डाउनलोड कर सकते हैं।

एक बार जब आप स्थापित किया है और इसे खोला: ssh के माध्यम से अपने दूरस्थ मशीन में

  1. प्रवेश करें और iTerm2 (एप्लिकेशन मेनू) पर क्लिक करें>शैल एकता स्थापित करें। यह curl के साथ एक स्क्रिप्ट डाउनलोड करेगा और इसे स्थापित करेगा। अपनी स्थानीय मशीन पर भी ऐसा ही करें।
  2. पर जाएं>प्रोफाइल
  3. अपनी स्थानीय मशीन के लिए एक नया प्रोफ़ाइल बनाएं। अपनी जरूरतों को पूरा करने के लिए इसे अनुकूलित करें (पृष्ठभूमि रंग, नाम, आदि बदलें)
  4. उन्नत टैब पर जाएं और नीचे स्क्रॉल करें।
  5. में स्वचालित प्रोफ़ाइल स्विचिंग, '+' पर क्लिक करें और अपनी स्थानीय मशीन का होस्टनाम जोड़ें।होस्ट मशीन वह है जिसे आप लक्ष्य मशीन पर echo $HOST चलाते समय प्राप्त करते हैं। यह हमेशा आपके द्वारा दिखाई देने वाला नहीं होता है।
  6. इस बार अपनी दूरस्थ मशीन के लिए, और इसे अनुकूलित करें, एक और प्रोफ़ाइल बनाएं।
  7. में दूरस्थ मशीन का होस्टनाम जोड़ें स्वचालित प्रोफ़ाइल स्विचिंग।
  8. अब, यदि आप रिमोट मशीन में एसएसएच करते हैं, तो आपकी प्रोफ़ाइल बदल जाएगी, और यदि आप exit एसएसएच सत्र से बाहर हैं, तो आप अपनी स्थानीय प्रोफ़ाइल पर वापस आ जाएंगे।

आप इस समाधान को @esod's answer के साथ सहजता से जोड़ सकते हैं।
नोट: यह तब तक मेरे लिए काम नहीं करता जब तक कि मैंने डिफ़ॉल्ट प्रोफ़ाइल का उपयोग करने के बजाय विशेष रूप से डेस्कटॉप के लिए प्रोफ़ाइल नहीं बनाई।

अधिक जानकारी के लिए the documentation देखें।

+1

उत्कृष्ट, बहुत संक्षिप्त उत्तर । चूंकि मेरा कंप्यूटर एक काम कंप्यूटर है, ~ स्वचालित प्रोफ़ाइल स्विचिंग ~ विकल्प के तहत, मैंने मेजबान नाम बनाम @myusername बनाम चुना है क्योंकि 'echo $ HOST खाली था', यह एक कार्य कंप्यूटर था, और मैं नहीं चाहता था मेरे होस्ट नाम को संपादित करें। –

0

मेरे मामले में, मुझे इस सुविधा को लागू करने के लिए मेरे मेजबान की सेटिंग के साथ Yohaï Berreby's answer को गठबंधन करने की आवश्यकता है।

  1. स्वचालित प्रोफ़ाइल स्विचिंग में, '+' पर क्लिक करें और अपनी स्थानीय मशीन का होस्टनाम जोड़ें। मेजबाननाम वह है जिसे आप लक्ष्य मशीन पर echo $ HOST चलाते समय प्राप्त करते हैं। यह हमेशा आपके द्वारा दिखाई देने वाला नहीं होता है।

मेरे मचान सर्वर $ होस्ट सेट नहीं है और मेजबान नाम है:

[[email protected] ~]$ hostname 
alveo-staging 

लेकिन मैं alveo-staging के रूप में होस्ट नाम के साथ नियम निर्धारित नहीं कर सकते। क्योंकि वास्तव में अलवी-स्टेजिंग वास्तविक होस्टनाम (alveo-staging.xxx) का एक उपनाम है, जिसे /etc/hosts में सेट किया जा सकता है।

तो इसका त्वरित समाधान * वाइल्डकार्ड का उपयोग करना है, नियम को *staging* के रूप में सेट करने के लिए।

फिर यह काम करता है।

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