Ssh पर रंगीन टर्मिनल कैसे प्राप्त करें?


53

जब मैं ssh को रिमोट मेजबानों पर जोड़ता हूं तो सब कुछ सिर्फ एक फ़ॉन्ट / रंग है। मैं ऐसे रंग लेना चाहूंगा जैसे मैं स्थानीय रूप से करता हूं जैसे कि निष्पादन योग्य के लिए हरा और सिम्बलिंक्स के लिए नीला आदि। और जब मैं एसआईटी होस्ट पर $ git भिन्नता रखता हूं तो यह दिखाता है कि मैं रंगों के साथ भिन्न हूं =)


क्या वह उबंटू सर्वर है जिससे आप जुड़ रहे हैं?
Stefano Palazzo

@ स्टेफानो-पलाज़ो: डेबियन को।
दीमा

जवाबों:


35

क्योंकि यह सर्वर पर xterm था, मुझे लगा कि कुछ गड़बड़ है .bashrc

और सचमुच में! ls --color=autoकेवल तभी काम करता है जब आप TTY से जुड़े हों। बस के लिए सब कुछ बदल रहा है --colorमें .bashrcदूरस्थ होस्ट और सब कुछ पर सुंदर रंग में है।


42
यदि आपने कहा कि आप जहां --color = auto डालते हैं, तो यह इस जवाब को बहुत मदद करेगा । सर्वर पर .bashrc? क्या आज्ञा?
rfay

8
चूंकि यह एक पुराना प्रश्न है जो अभी भी प्रासंगिक है, मैं सिर्फ उबंटू सिस्टम पर जोड़ना चाहता था, डिफ़ॉल्ट .bashrc में एक केस स्टेटमेंट है जो परिभाषित करता है कि किन शर्तों को रंग की अनुमति है। यदि आप अपने .bashrc में "case" $ TERM $ "लाइन में," xterm) को जोड़कर color_prompt = yes ;; "पाते हैं। रंग भी सक्षम करेगा। इसके अलावा, आप "force_color_prompt = yes" लाइन को विश्व स्तर पर हमेशा के लिए सक्षम कर सकते हैं।
ई। में माइक ई

2
यह माइक ई की टिप्पणी थी जिसने इसे मेरे लिए तय किया,
फ्रैंक स्काइवर

3
मैं उलझन में हूं। इसका क्या मतलब है "सब कुछ बदलकर बस - रंग"? क्या मैं एक उदाहरण देख सकता हूं?
still_dreaming_1

1
क्या आप लोग स्थानीय होस्ट, रिमोट होस्ट या दोनों के बारे में बात कर रहे हैं?
आदम

19

यह मेरे लिए काम किया:

ssh -t my_host my_command

-tकुंजी थी। समझाया हुआ


यह पूरी तरह से काम करता है, और एक बंद कार्यों के लिए बहुत सुविधाजनक है। धन्यवाद!
XtraSimplicity

जब मैंने su -ssh कनेक्शन प्रॉम्प्ट में कमांड किया, तो मैंने
कलर्स

10

लगता है जैसे रंग ~/.bashrcमेरे लिए पहले से ही सेट थे और मुद्दा यह है कि ssh bashrc फ़ाइल का उपयोग नहीं करता है। आप निम्नलिखित को जोड़कर अपने ssh सत्र में bashrc का उपयोग कर सकते हैं ~/.bash_profile:

if [ -f ~/.bashrc ]; then
      . ~/.bashrc
fi

1
यह मेरे लिए काम करता है, और इसे पूरा करने का एक सरल और कुशल तरीका था!
flith

7

जब आप इसे कनेक्ट करते हैं तो सर्वर पर आपके XTERM env वैरिएबल की सामग्री क्या होती है?

~ > export | grep -i term
TERM=xterm

$ निर्यात | मैं अवधि घोषित -x अवधि = "टर्म" grep
Dima

4

मेरे मामले में, लापता हिस्से में रंगीन एलएस, जीआरपी आदि थे, जिन्हें .bashrc फ़ाइल में उपनाम जोड़कर जोड़ा जा सकता है:

alias ls='ls --color=auto'
alias grep='grep --color=auto'

आदि।


2

मैंने ~./bashrcसेटिंग्स बदलने की कोशिश की (स्थानीय और दूरस्थ सर्वर दोनों पर), लेकिन यह काम नहीं करता था।

तब मैंने देखा कि ~/.bashrcअगर मैं इसे ssh से कनेक्ट करता हूं तो रिमोट सर्वर भी निष्पादित नहीं होता है। इसलिए मैंने ~/.bashrcरिमोट सर्वर को रिमोट सर्वर के पुटीनिन्गif [ -f ~/.bashrc ]; then . ~/.bashrc fi~/.bash_profile द्वारा निष्पादित किया ( https://stackoverflow.com/questions/820517/bashrc-at-ssh-login पर आधारित )।

तो इस समाधान को ~/bashrcसीधे किसी भी फाइल को बदलने की आवश्यकता नहीं थी, लेकिन इसके लिए ~/bash_profileरिमोट सर्वर की फाइल बदलने की आवश्यकता थी ताकि रिमोट सर्वर की ~/bashrcफाइल निष्पादित हो जाए।


उबंटू डिफ़ॉल्ट रूप से उपयोग करता है .profileऔर नहीं .bash_profile, और डिफ़ॉल्ट .profileस्रोत करता है .bashrc
मुरु

वह सही है। लेकिन .profilessh के माध्यम से लॉग इन करने पर डिफ़ॉल्ट रूप से निष्पादित होता है?
च्रिस ५४४

हाँ। बशर्ते आपने इसका उपयोग करके ओवरराइड नहीं किया हो .bash_profile, .profileलॉगिन शेल के रूप में शुरू होने पर इसे चलाएं। और SSH लॉगिन शेल के रूप में बैश करना शुरू कर देता है।
मुरु

यह सही है जो ~/.profileमौजूद नहीं है तो पढ़ा नहीं जाता ~/.bash_profileहै। लेकिन ~/.bash_profileडिफ़ॉल्ट रूप से Ubuntu पर मौजूद नहीं है?
च्रिस ५४४

मेरी पहली टिप्पणी फिर से देखें। नहीं, यह नहीं है। उबटन का उपयोग करता है .profile
मुरु

2

चूँकि रंगों को सीधे काम करते हुए ठीक किया गया था, इसलिए मैंने force_color_prompt=yesफ़ाइल में सिर्फ अन-अन-लाइन को ही शामिल किया ~/.bashrc, जिससे मुझे ssh पर भी रंग मिले:

# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
force_color_prompt=yes

(उबंटू 18.04 एलटीएस)


अपवित्र, यह सबसे सीधा-सीधा समाधान प्रतीत होता है।
Snwflk

1

मेरी स्थिति में, मैंने हाल ही में स्थापित किया है chef-localऔर इसने मुझे एक पंक्ति जोड़ने के लिए कहा है .bash_profile। जब मैं साइन इन .bashrcकरता हूं, तो कभी भी लोड नहीं करता, क्योंकि यह देखा था .bash_profile

मैंने क्या किया था .bash_profile:

source .bashrc
export PATH="/opt/chefdk/embedded/bin:$PATH"

मैंने लॉग आउट किया और वापस अपने रंगीन टर्मिनल को तुरंत प्राप्त किया।


0

ऊपर "माइक ई" की एक टिप्पणी है जिसमें मेरे लिए जवाब है, लेकिन यह केवल पढ़ने के लिए कठिन नहीं है, यह पता लगाना कठिन है कि अगर आप .bashrcबहुत उपयोग नहीं करते हैं तो उसका क्या मतलब है - और मैं डॉन ' टी।

लगभग थोड़ा पेंच करने के बाद, मुझे ~/.bashrcमशीन पर निम्नलिखित पंक्तियों को बदलकर वांछित परिणाम प्राप्त हुए जिन्हें मैं ssh के साथ लॉग इन कर रहा था:

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color|*-256color) color_prompt=yes;;
esac

सेवा:

# set a fancy prompt (non-color, unless we know we "want" color)
case "$TERM" in
    xterm-color|*-256color) color_prompt=yes;;
    xterm) color_prompt=yes;;
esac

मैं सोच रहा हूं कि मैं पहली पंक्ति में "रंग" के बाद "xterm" जोड़ सकता हूं, या चारों ओर खोद सकता हूं और पता लगा सकता हूं कि ssh "xterm-color" के बजाय "xterm" का उपयोग क्यों कर रहा था और वह बदल गया, लेकिन यह काम करता है और मैं अभी और काम करना है।


0

प्रॉक्सी से कनेक्ट करते समय मैं अपना रंग खो रहा था, TERM=dumbइसलिए मैंने इसे ठीक किया:

ssh myproxy "ssh pi@localhost -p 5000 -tt 'TERM=xterm bash'"

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