रंग दिखाने के लिए SSH वन-लाइनर कमांड प्राप्त करें


6

मैं SSH वन-लाइनर कमांड पर रंगीन टेक्स्ट आउटपुट को सक्षम करना चाहता हूं, लेकिन मैं इसे OS X, Ubuntu 14.10 या OpenSUSE 12.2 पर काम करने के लिए नहीं ला सकता।

अगर मैं एक सर्वर में टाइप करता हूं और कहता हूं, ls --color=auto प्रॉम्प्ट में, यह ठीक काम करता है, अलग-अलग रंगों में डायरेक्टरीज़, सिम्लिंक और रेगुलर फाइल्स दिखाते हुए, अगर मैं एक ही सिस्टम पर ssh वन-लाइनर में कमांड डालता हूँ: ssh user@host "ls --color=auto", आउटपुट रंगीन नहीं है।

टाइपिंग echo $TERM मुझे देता है xterm-256color चाहे मैं इसे वन-लाइनर स्टेटमेंट में डालूं या नहीं।

यह मुख्य रूप से रिमोट-बिल्ड पर कलर-कोडिंग त्रुटियों और चेतावनियों के लिए है, लेकिन इसे हर चीज के लिए सक्षम किया जाना अच्छा होगा।

कोई सलाह?

जवाबों:


10
ssh user@host "ls --color=auto"

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

आप के साथ ssh चला सकते हैं -t एक टर्मिनल आवंटित करने के लिए विकल्प। निम्नलिखित रंगों को प्रिंट करना चाहिए:

ssh -t user@host "ls --color=auto"

अगर ssh गैर-अंतःक्रियात्मक रूप से चलाया जा रहा है, और स्वयं का स्थानीय आउटपुट टर्मिनल पर नहीं जा रहा है, तो यह एकल को अनदेखा कर देगा -t झंडा। इस मामले में, आप निर्दिष्ट कर सकते हैं -t दूरस्थ प्रणाली पर TTY आवंटित करने के लिए ssh को मजबूर करने के लिए एक से अधिक बार:

ssh -tt user@host "ls --color=auto"

0

मैं उपयोग करने का सुझाव दूंगा --color=always ls के मामले में, रंग को मजबूर करने के लिए। और अन्य एप्लिकेशन में रंग हैं, जो रंग का समर्थन करते हैं, लेकिन समर्थन नहीं करते हैं --color=value, आप भी कोशिश कर सकते हैं ssh <host> -t "TERM=${TERM} <command>"

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