क्या होस्टनेम के आधार पर मेरा टर्मिनल बैकग्राउंड बदल सकता है?


17

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

अगर मैं अपने स्थानीय मशीन पर हूँ, तो क्या मैं किसी उत्पादन वेब सर्वर, या अन्य होस्ट को निर्दिष्ट कर सकता हूँ, जिन्हें मैं बदल सकता हूँ, लाल रंग बदल सकता हूँ?


एक विचार, टर्मिनल सेटिंग्स को संभालने वाले पर्यावरण चर के लिए परिवर्तन की स्क्रिप्ट। प्रत्येक स्थान के लिए एक स्क्रिप्ट बनाएं जिसे आप आमतौर पर ssh करते हैं और उस स्क्रिप्ट की सेटिंग में परिवर्तन शामिल करते हैं, यहां एक गाइड है जो मदद कर सकता है: cyberciti.biz/faq/… - इस तरह से आप केवल एक स्क्रिप्ट चला सकते हैं जो न केवल कनेक्ट करेगा आपके लिए, लेकिन उस विशेष सत्र के लिए टर्मिनल को अनुकूलित करेगा।
MaQleod

1
उबंटू साइट पर एक ही सवाल है: askubuntu.com/questions/13705/… माइंड, मैं आपको दोष नहीं देता, मुझे पहली बार में यह नहीं मिला :)
स्टीफनो

जवाबों:


9

जब भी कोई उपनाम उपयोग किया जाता है, तो कमांड चलाने के लिए आप ssh / config के स्थानीय विकल्प का उपयोग कर सकते हैं। मैं उपयोग करता हूं

host hostname
    user myusername
    localcommand xtermcontrol --bg '#abc'

यह xtermcontrol और आपके टर्म xterm पर निर्भर करता है। संभवतः अन्य शर्तों के लिए अन्य ऐप्स हैं।

इस दृष्टिकोण के साथ एकमात्र समस्या यह है कि यह तब होता है जब आप ssh कहते हैं। रंग परिवर्तन को पूर्ववत करने के लिए कुछ भी नहीं है। मैंने इसे ssh के चारों ओर एक फंक्शन लपेटकर किया है, लेकिन इसकी कमियां भी हैं।

function ssh() {
  FG=$(xtermcontrol --get-fg)
  BG=$(xtermcontrol --get-bg)
  $(which ssh) "$@"
  xtermcontrol --fg="$FG"
  xtermcontrol --bg="$BG"
}

7

ऐसा नहीं लगता है कि कमांड-लाइन से मौजूदा विंडो में एक नया टैब जोड़ने केgnome-terminal लिए कोई कार्यक्षमता है । लेकिन जो आप चाहते हैं उसे पूरा करने के लिए कुछ विकल्प हैं।

प्रति कमांड प्रोफाइल

gnome-terminalप्रत्येक होस्ट के लिए एक नई प्रोफ़ाइल बनाएँ जिसमें आप SSH होंगे। यदि आपके पास केवल कुछ होस्ट हैं जिन्हें आप नियमित रूप से कनेक्ट करते हैं, तो यह सबसे सरल हो सकता है। प्रत्येक प्रोफ़ाइल में एक अलग शीर्षक, अग्रभूमि रंग, पृष्ठभूमि रंग, कस्टम कमांड और परिभाषित अन्य सेटिंग्स हो सकती हैं। फिर आप File -> Open Tabचयनित प्रोफ़ाइल के साथ एक नया टैब खोलने के लिए उपयोग कर सकते हैं ।

पुन: प्रयोज्य प्रोफ़ाइल

एक नया gnome-terminalप्रोफ़ाइल बनाने के लिए उपयोग किया जाएगा जो एक नई विंडो खोलने के लिए हर बार जब आप एक अलग SSH होस्ट से कनेक्ट करना चाहते हैं (इस AskUbuntu के उत्तर के आधार पर कि स्टेफानो ने बताया)। यदि आप कई अलग-अलग मेजबानों से अक्सर जुड़ते हैं तो यह अच्छा होगा। यह आपको अलग-अलग gnome-terminalखिड़कियों के बीच अंतर करने की अनुमति नहीं देगा जहां आप पृष्ठभूमि / अग्रभूमि रंगों पर पूरी तरह से अलग-अलग होस्ट से जुड़े हैं, लेकिन आपके पास प्रति विंडो एक अलग शीर्षक होगा।

  1. gnome-terminalप्रोफ़ाइल के File -> New Profileआधार पर एक नया प्रोफ़ाइल ( ) बनाएं Defaultऔर इसे "रिमोटहॉस्ट" कहें (नोट, "रिमोटहॉस्ट" में कोई रिक्त स्थान कमांड को आसान बनाने के लिए नहीं है)।
  2. Title and Commandटैब के तहत , बदलें:
    1. Initial title: "रिमोट होस्ट" के लिए
    2. When terminal commands set their own titles: सेवा Replace initial title
  3. Colorsटैब के तहत , बदलें:
    1. सही का निशान हटाएँ Use colors from system theme
    2. Build-in schemes: सेवा Custom
    3. Text color:और Background color:अपने चयन के रंग के लिए। ध्यान रखें कि कुछ कमांड (जैसे ls) अपने आउटपुट के लिए रंगों का उपयोग करते हैं और आप ऐसे रंग नहीं चुनना चाहते हैं जिससे आउटपुट को पढ़ना मुश्किल हो जाए।
  4. Closeअपनी नई प्रोफ़ाइल को बचाने के लिए बटन पर क्लिक करें ।
  5. अब आप gnome-terminalकमांड का उपयोग करके प्रत्येक दूरस्थ SSH होस्ट के लिए एक नई विंडो खोल सकते हैं gnome-terminal --window-with-profile=RemoteHost -t "Some Remote SSH Host" -x ssh user@somehost-tविकल्प सेट gnome-terminalविंडो शीर्षक और -xविकल्प टर्मिनल में कमांड लाइन के बाकी निष्पादित करता है। आप aliasकुल कीस्ट्रोक्स को छोटा करने के लिए भी कर सकते हैं ।

कमांड लाइन

मैंने पाया इस ब्लॉग प्रविष्टि निम्न स्क्रिप्ट का उपयोग करता है के साथ xdotoolऔर wmctrlआदेश (वे Ubuntu पर डिफ़ॉल्ट रूप से स्थापित नहीं किया गया है, ताकि आप उन्हें पहले स्थापित करने के लिए आवश्यकता हो सकती है) का उपयोग करने के gnome-terminal Ctrl+ Shift+ tवर्तमान में एक नया टैब खोलने के लिए कीबोर्ड शॉर्टकट gnome-terminalखिड़की । यह एक विशिष्ट प्रोफ़ाइल के साथ एक नया टैब खोलने और आपके लिए कुछ कमांड निष्पादित करने के लिए संशोधित किया जा सकता है।

#!/bin/bash
# Path: /usr/local/bin/gnome-terminal
if [ "x$*" != "x" ]; then
  /usr/bin/gnome-terminal "$@"
else
  pgrep -u "$USER" gnome-terminal | grep -qv "$$"
  if [ "$?" == "0" ]; then
    WID=`xdotool search --class "gnome-terminal" | head -1`
    xdotool windowfocus $WID
    xdotool key ctrl+shift+t
    wmctrl -i -a $WID
  else
    /usr/bin/gnome-terminal
  fi
fi

अन्य

आप रचनात्मक हो सकते हैं और कुछ अन्य चीजों की कोशिश कर सकते हैं।

यह सुपरयूजर उत्तर मूल रूप से "स्क्रिप्ट-फू" कलाबाजों के एक बिट का उपयोग करता है एक अस्थायी gnome-terminalप्रोफ़ाइल बनाने के लिए जो एक नई विंडो खोलने के लिए उपयोग किया जाता है। यह आपके उपयोग के लिए संशोधित किया जा सकता है।

आप शायद इस StackOverflow Q & A और अधिक "लिपि-फू" कलाबाज़ का उपयोग गतिशील रूप से gnome-terminalशीर्षक को बदलने के लिए कर सकते हैं जब भी आप किसी दूरस्थ होस्ट के लिए SSH। यह पृष्ठभूमि / अग्रभूमि रंग परिवर्तनों के रूप में प्रमुख नहीं होगा, लेकिन यह Terminalहर समय एक मानक शीर्षक से बेहतर होगा ।


6

यह सूक्ति में काम करेगा, यदि आप प्रत्येक ssh सत्र के लिए एक नई सूक्ति-टर्मिनल विंडो का उपयोग करने के लिए तैयार हैं।

  1. एक नया प्रोफ़ाइल बनाएं (अलग पृष्ठभूमि रंग के साथ) जिसे "रिमोट" कहा जाता है

  2. निम्नलिखित में डालें .bash_aliases, या.bashrc

    ### add to .bash_aliases, for differentiating between local and remote hosts 
    sshhelper() {
       gnome-terminal --window-with-profile=Remote -x bash -c "ssh $1";
    }
    alias sshc=sshhelper
    

अब "रिमोट" प्रोफाइल के साथ sshc remote-machineएक नया सूक्ति टर्मिनल सत्र खोलता है । यह स्थानीय और दूरस्थ प्रोफाइल के बीच अंतर करेगा।

एकाधिक प्रोफ़ाइल / होस्ट समायोजित करने के लिए, कई प्रोफ़ाइल बनाएं और .bash_aliasesइसके बजाय कुछ इस तरह रखें :

### add to .bash_aliases, for differentiating between multiple remote hosts
sshhelper() {
    HOST=`echo $1 | cut -d'@' -f2`

    case $HOST in
        Production )  PROFILE="Red" ;;
        Test )        PROFILE="Green" ;;
        # ... if you have more cases ...
        *)           PROFILE="Default" ;;
    esac

    gnome-terminal --window-with-profile=$PROFILE -x bash -c "ssh $1";
}

# alias ssh=sshhelper    # this will "override" the ssh command, but may break other stuff!
alias sshc=sshhelper

अब sshc Production"रेड" प्रोफ़ाइल sshc Testका उपयोग करके एक नया सत्र विंडो खोलेगा, "ग्रीन" प्रोफ़ाइल का उपयोग करके एक नया सत्र विंडो खोलेगा, और अन्य होस्ट "डिफ़ॉल्ट" प्रोफ़ाइल का उपयोग करेंगे।


2

स्टैक से सभी जानकारी एकत्र करना *** यहाँ पर सबसे सरल उपाय है जो मैंने टकसाल मेट + मेट टर्मिनल (सूक्ति के लिए) के लिए पाया है।

  1. मेट टर्मिनल में अलग-अलग पृष्ठभूमि के साथ, दूसरे प्रोफाइल को परिभाषित करते हैं।
  2. जांचें कि क्या डिफ़ॉल्ट कुंजियाँ काम करती हैं Alt + PageDown / Alt + PageUp, प्रोफाइल और पृष्ठभूमि को भी बदलना चाहिए।
  3. sudo apt get install xdotool

अब आप संशोधित कर सकते हैं / etc / ssh / ssh_config, ताकि यह प्रत्येक ssh सत्र स्थापित होने के बाद प्रोफ़ाइल को बदल सके:

Host *
  PermitLocalCommand yes
  LocalCommand xdotool key Alt+Page_Down

अब टर्मिनल में प्रत्येक ssh कनेक्शन स्थापित होने के बाद, प्रोफ़ाइल को बदल दिया जाएगा और आप डेटाबेस के उत्पादन के लिए अवांछित sql अद्यतन कभी नहीं डालेंगे।

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

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