Ssh बाहर निकलने / लॉगआउट के बाद टर्मिनल के "रीसेट" रंग


21

जब मैं एक दूरस्थ सर्वर में ssh करता हूं, तो मुझे बदलने के लिए टर्मिनल के रंग पसंद हैं। मैं settermइसे प्राप्त करने के लिए अपने रिमोट ~ / .bashrc फ़ाइल का उपयोग करता हूं। हालाँकि, जब मैं exit, टर्मिनल रंग स्थानीय लोगों के लिए रीसेट नहीं होते हैं।

मैंने समस्या हल की, लेकिन मुझे यकीन नहीं है कि यह सबसे अच्छा समाधान है। यह वही है जिसके साथ मैं आ सकता था।

दूरस्थ सर्वर पर ~ / .bash_logout पर, मैंने डाला:

echo -e "\033[0m"
/usr/bin/clear

जिज्ञासा से बाहर: क्या किसी को बेहतर तरीके से पता है? (मुझे http://edoceo.com/liber/linux-bash-shellecho -e "\033[0m" से लाइन मिली )


2
मैं आपको tputरंगों को बदलने के लिए उपयोग करने की सलाह देता हूं । इसे देखो।
राम

आप कौन से रंग सेट कर रहे हैं और कैसे? क्या आप अपने संकेत ( PS1) का मतलब है ?
टेराडॉन

जवाबों:


37

बेहतर:
tput sgr0आम तौर पर के बराबर हैecho -en "\e[0m"

अंतर यह है कि अगर एएनएसआई के अलावा टर्मिनल प्रकार अन्य है, तो ट्रूट का उपयोग करना अनुकूल होगा - और इसे ठीक से स्थापित किया गया है।

man 5 terminfo अधिक कोड का उपयोग करने के लिए।

वहां आपको 'रीसेट' मिलेगा, इसलिए tput resetकाम करना चाहिए।


$ इको-ई "\ ई [7 मी टेस्ट \ ई [0 मी"  
 TEST   
$ इको-ई "$ (tput Rev) टेस्ट $ (tput sgr0)"  
 TEST   
$   

(टेस्ट प्रिंट में पृष्ठभूमि / अग्रभूमि रंग की अदला-बदली होनी चाहिए, यहाँ नहीं दिखाई जा सकती - केवल "अनुकरण")


इसके लिए एक और विकल्प मिला , एक कम geeky तरीका:

उपयोग-लिनेक्स (ubuntu पर) पैकेज में setterm(शेल उपयोगिता) शामिल है।

टाइप करें setterm --helpऔर आपको उपलब्ध विकल्प मिलेंगे।


के वास्तविक उत्पादन tput sgr0

$ tput sgr0 | od -t x1z
0000000 1b 28 42 1b 5b 6d                                >.(B.[m<
0000006

... इस बात पर निर्भर करता है कि आपका टर्मिनल कैसे सेट किया गया है, जैसे

$ set | grep TERM
TERM=xterm-256color

ऊपर के लिए।


$ infocmp एएनएसआई
    फ़ाइल से infocmp के माध्यम से पुनर्निर्माण किया: / lib / termfo / a / ansi
एएनआई | एएनआई / पीसी-टर्म रंग के साथ संगत,
    am, mc5i, mir, msgr,
    रंग # 8, रंग # 80, यह # 8, रेखाएं # 24, एनसीवी # 3, जोड़े # 64,
    ACSC = + \ 020 \, \ 021- \ 030. ^ Y0 \ 333` \ 004A \ 261f \ 370g \ 361h \ 260j \ 331k \ 277l \ 332m \ 300n \ 305o ~ पी \ 304q \ 304r \ 304s_t \ 303u \ 264V \ 301w \ 302x \ 263y \ 363z \ 362 {\ 343 | \ 330} \ 234 ~ \ 376,
    bel = ^ G, पलक = \ E [5 मी, बोल्ड = \ ई [1 मी, सीबीटी = \ ई [जेड, स्पष्ट = \ ई [एच \ ई [जे],
    cr = ^ M, cub = \ E [% p1% dD, cub1 = \ E [D, cud = \ E [% p1% dB, cud1 = \ E [B
    cuf = \ E [% p1% dC, cuf1 = \ E [C, cup = \ E [% i% p1% d;% P2% dH;
    cuu = \ E [% p1% dA, cuu1 = \ E [A, dch = \ E [% p1% dP, dch1 = \ E [P
    dl = \ E [% p1% dM, dl1 = \ E [M, ech = \ E [% p1% dX, ed = \ E [J, el = \ E [के;
    el1 = \ E [1K, होम = \ E [H, hpa = \ E [% i% p1% dG, ht = \ E [I, hts = \ EH
    ich = \ E [% p1% d @, il = \ E [% p1% dL, il1 = \ E [L, ind = ^ J,
    Indn = \ E [% p1% dS, invis = \ E [8m, kbs = ^ H, kcbt = \ E [Z, kcub1 = \ E [D
    kcud1 = \ E [B, kcuf1 = \ E [C, kcuu1 = \ E [A, khome = \ E [H, kich1 = \ E [L
    mc4 = \ E [4i, mc5 = \ E [5i, nel = \ r \ E [S, op = \ E [39; 49 m;
    rep =% p1% c \ E [% P2% {1}% -% db, Rev = \ E [7m, rin = \ E [% p1% dT
    rmacs = \ E [10m, rmpch = \ E [10m, rmso = \ E [m, rmul = \ E [m
    s0ds = \ E (B, s1ds = \ E) B, s2ds = \ E * B, s3ds = \ E + B,
    सेटैब = \ ई [४% पी १% डीएम, सेटाफ = \ ई [३% पी १% डीएम,
    SGR = \ ई [0;? 10%% p1% टी; 7%;?%% p2% टी; 4%;?%% p3% टी; 7%;?%% p4% टी; 5%;%? % p6% टी, 1%;?%% p7% टी, 8%;?%% p9% टी, 11%; मी,
    sgr0 = \ E [0; 10 m, smacs = \ E [11m, smpch = \ E [11m, smso = \ E [7m,
    smul = \ E [4m, tbc = \ E [3G, u6 = \ E [% i% d;% dR, u7 = \ E [6n;
    u8 = \ E [?% [? 0123456789] c, u9 = \ E [c, vpa = \ E [% i% i% p1% dd,

SEE ALSO (man pages):
       tic(1) infocmp(1), captoinfo(1), infotocap(1), toe(1),  
       ncurses(3NCURSES), term(5).  terminfo(5).

अधिक अन्वेषण करें, यहाँ से शुरू करें शायद https://en.wikipedia.org/wiki/Terminfo
प्रोग्रामर का ncursor के लिए गाइड - 16 पुस्तकें

नोट: ncurses termcap, termfo और पाठ्यक्रम शाप के लिए इंटरफेस प्रदान करता है।


echo -e "\e \033 \x1b " | od -t x1z- कौन सा सबसे अधिक पठनीय है?
हन्नू

tput sgr0से कुछ अलग लौटाता है \e[0m, इसे a=$(tput sgr0); set | grep ^a=देखें : और परिणाम देखें। क्या आप यह भी बता सकते हैं कि इसके लिए समकक्ष setterm विकल्प क्या है \e[0m?
सेबमा

ध्यान दें कि \e[0mया बराबर \e[mएएनएसआई प्रकार के टर्मिनलों के लिए है, अगर आपका टर्मिनल एएनएसआई नहीं है तो tput sgr0 आपको पूरी तरह से कुछ अलग दे सकता है। आप एएनएसआई टर्मिनलों के लिए भी सुनिश्चित नहीं हो सकते हैं, क्योंकि आप जो वास्तव में उपयोग कर रहे हैं, वह टर्मो डेटाबेस में अलग तरीके से स्थापित हो सकता है।
हन्नू

TERM=ansi a=$(tput sgr0); set | grep ^a=और परिणाम है a=$'\E[0;10m'। यह अलग दिखता है\e[0m
सेबमा

हाँ? "आप एएनएसआई टर्मिनलों के लिए भी सुनिश्चित नहीं हो सकते हैं, क्योंकि आप जो वास्तव में उपयोग कर रहे हैं, वह टर्मो डेटाबेस में अलग तरीके से स्थापित हो सकता है।" जैसा कि आप ऊपर देख सकते हैं, उस वेरिएंट में \e(B\e[m- अंतर की उम्मीद है!
हन्नू

17

मेरा मानना ​​है कि आप "रीसेट" कंसोल कमांड के लिए देख रहे हैं


2
रीसेट के साथ समस्या यह है कि यह सभी कंसोल सामग्री को मिटा देता है, और कभी-कभी यह वह नहीं है जो आप चाहते हैं।
niglesias 19

3

आप इसे दूरस्थ .bash_logout में अधिक उपयोग करने पर पा सकते हैं:

tput init

यह अच्छा हो सकता है कि यह हर .bash_logout पर एक सामान्य अच्छे अभ्यास के रूप में हो (और शायद ~ ~ लाभकारी पर भी)


2

यदि आप अपने इच्छित रंग को दूरस्थ खाते के ~ / .bashrc पर रखते हैं तो इसे लॉगिन पर प्रभावी होना चाहिए और बाहर निकलने के लिए अपनी स्थानीय सेटिंग्स पर वापस लौटना चाहिए।


मैं भी ऐसा सोचा था। लेकिन, जब वे ssh से बाहर निकले, तो वे पीछे नहीं लौटे। शायद यह इसलिए है क्योंकि मैं .bashrc (GNOME टर्मिनल का उपयोग करके) में सेटरम का उपयोग कर रहा था। क्या आप .bashrc में कलर स्कीम सेट करने की एक अलग विधि का उपयोग करते हैं?
dgo.a

यदि आप GNOME का उपयोग कर रहे हैं, तो मैं मान रहा हूँ कि आप लिनक्स चलाते हैं। मैं उबंटू का उपयोग करता हूं, लेकिन मुझे लगता है कि यह प्रक्रिया डिस्ट्रोस के समान है। आप फ़ाइल का बैकअप ले सकते हैं और फिर उसे टेक्स्ट एडिटर में खोल सकते हैं और पीएस 1 = कहे जाने वाले लाइन पर शुरू होने वाले कंटेंट को एडिट कर सकते हैं। आप नॉवेल्ल . com / coolsolutions / tools / 17142.html पर जानकारी प्राप्त कर सकते हैं । यह आपको .bashrc फाइल के बारे में जानना चाहता है।
यिट्ज़चेक

1
उह, नहीं। टर्मिनल सेटिंग उस टर्मिनल पर आधारित नहीं है जो आप कर रहे हैं। वे (anthromorphizing!) परवाह नहीं करते अगर आप स्थानीय, दूरस्थ, स्वाहिली या कुछ भी काम कर रहे हैं। यह एक साधारण राज्य मशीन है। चूंकि आपने इसे किसी चीज़ में बदलने के लिए एक कमांड का उपयोग किया है ... आपको इसे किसी और चीज़ में बदलने के लिए एक कमांड का उपयोग करना होगा। .Bash_logout समाधान सबसे अच्छा तरीका है, जब तक कि आप अपने ssh कमांड को लपेटने के लिए कोई अन्य / फ़ंक्शन लिखना नहीं चाहते। Blech। आसान, अपनी सेटिंग्स (जो भी वे कर रहे हैं) को अपने PS1 प्रॉम्प्ट आउटपुट का हिस्सा बनाएं। जब आप एक मशीन में लॉग इन करते हैं, तो यह बदल जाएगा, लॉग आउट करें, पुराना संकेत फिर से बहाल होगा।
लोर्निक्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.