Terminal ve SSH'deki renkleri devre dışı bırak


11

Yerel Linux makinem böyle renkli terminal çıktısına sahip;

resim açıklamasını buraya girin

I SSH bir pfSense / BSD kutusuna zaman bu gibi renkleri değiştirir;

resim açıklamasını buraya girin

SSH'den renkli yerel terminal çıkışı olmayan bir makineye ve oradan bu pfSense / FreeBSD kutusuna SSH'ye bile renkli çıktı sağlar ve istenmeyen renkli çıktı /

Yerel olarak değiştirebileceğim bir şey var mı, böylece yerel makinemden veya bir aracı makineden pfSense kutusuna SSH yaptığımda, istemcim uzak renk ayarlarını yok sayacak. İdeal olarak sadece siyah beyaz, iki tonlu standart arka plan ve metin renginde kalmak ister miyim?


Hangi terminal uygulamasını kullanıyorsunuz?
gertvdijk

1
Burada Mint Linux 13 kullanıyorum, bu yüzden Xfce Terminal Emulator 0.4.8.
jwbensley

Bunun istediğini biliyorum, ama terminal ayarlarınızı siyah bir arka plan üzerinde beyaz [veya açık gri] metne değiştirmeyi düşündünüz mü? Çoğu şeyin birlikte çalışacağı şekilde tasarlanan temel renk şeması budur. Veya uzak makinedeki bilgi istemi ayarlarınızı (muhtemelen .bash_profile içinde) daha iyi renklere veya hiç renge sahip olmayacak şekilde değiştirebilirsiniz.
Random832

1
Normalde TERM=xterm-mono ssh user@hostbu ayarı uzak ortamda almak gibi bir şey yaparım .
ott--

Yanıtlar:


7

Terminalinizdeki renkler görünür, çünkü tty, terminalinize renkleri değiştirmesini söylemek için ANSI kodlu kontrol dizileri gönderir. Bazıları, çoğu terminal uygulaması değilse, bunu yok sayacak ve tüm metni tek bir renkte gösterecek şekilde yapılandırılabilir.

İçinde xterm, -cmseçeneği kullanabilirsiniz . Konsole için, tüm renklerin eşlemesi aynı olabilir. XFCE terminal uygulamanız benzer seçeneklere sahip olabilir.


Bu cevap bazı durumlarda yardımcı olabilir, ancak gerçekten bir cevap değildir. Belirtildiği gibi "Terminalinizdeki renkler görünür çünkü tty, terminalinize renkleri değiştirmesini söylemek için ANSI kodlu kontrol dizileri gönderir". SSH'nin TTY sağlayabileceği için, SSH'nin renkleri görmezden gelmesi de mümkün olmalıdır. Bunun nasıl yapıldığına dair bir fikrin var mı?
patrik

SSH gerçekten tty üzerindeki verilere müdahale edecek şekilde tasarlanmamıştır. SSH, üzerinde çalıştırabileceğiniz bir kanal kurar, bu kanal üzerinden veri değiştirmeyi hiç içermesi gerektiğini düşünmüyorum . Bununla birlikte, böyle bir kanalın kurulum süresi boyunca hangi ortam değişkenlerinin istemciden sunucuya geçirildiği gibi bağlam ve meta veriler sağlar.
gertvdijk

7

TERMDeğişkeni uyumlu ancak renk desteği olmayan bazı girdilerle değiştirmek işe yarayabilir. Sevmek:

TERM=xterm-old

Temel olarak, TERMFreeBSD sistemi termcap veya terminfo veritabanı tarafından TERM=the-term tput colors, pozitif bir sayı döndürmeyen ve GNU ls için, biri dircolors -p | grep -x 'TERM the-term'hiçbir şey döndürmeyen bir bilinene ihtiyacınız vardır . Terminalin bunu destekleyip desteklemediğine bakılmaksızın, renk kaçış dizileri veren uygulamalar için çalışmayabilir.

Alternatif olarak, screen(zsh sözdizimi) gibi renkleri devre dışı bırakmak için GNU kullanabilirsiniz :

screen -c =(printf %s\\n "termcapinfo * 'AF=\E[1m:AB=\E[7m'") ssh ...

Bu , ön plan rengini ayarlama girişimleri için kalın ve arka planı ayarlama girişimleri için ters çevirme olanağı sağlar.

Sanırım hepsi FreeBSD'nin terminal arka planının siyah (veya en azından karanlık) olduğunu varsayar. xtermBunun yerine kullandığınız yerde xfce-terminal, farklı renk profilleri ayarlamak için arka plan ve ön plan rengini ve / veya renkleri tek tek dinamik olarak değiştirebilirsiniz. Bu kaçış dizileriyle yapılır, ancak xtermcontrolbunu kolaylaştıran komutu da kullanabilirsiniz .


Bunu denedim - benim için çalışmıyor. export TERM=vt100önceki ls --colorrenklendirilmiş çıktıyı gösterir.
gertvdijk

@gertvdijk İyi bir nokta. GNU ls'de varsayılan olarak sabit kodların vt100renk desteğine sahip bir terminal olduğu bir hata var gibi görünüyor . xterm-oldBu sorunu olmayan ama FreeBSD üzerinde bir terminfo girişi olmayabilir bunu yaptım .
Stéphane Chazelas

Diğer programların da renk çıkmasını engellemez - yani byobu. Ubuntu 12.04 btw kullanıyorum.
gertvdijk

1
@gertvdijk. Dediğim gibi. Yalnızca $TERMkaçış dizilerini kodlamak yerine iyi çalışan programlar ve termcap / terminfo veritabanlarını (curses veya diğer terminal API'leri aracılığıyla) kullanır.
Stéphane Chazelas

EOF'dan sonra terminal durumunu değiştirebilen tüm kaçış dizilerini kaldırmak için ne kullanabilirim?
Janus Troelsen

2

Kaldırmak için aşağıdaki komutu yazın:

$ ls --color=none

veya unaliaskaldırmak için kullanın :

$ unalias ls

1
Bu sadece lskomedi için değil mi?
jwbensley

ls "ls --color = tty" olarak adlandırılmıştır
Len

Evet. Biliyorum. Ama tüm terminal çıktım sadece lskomut değil, renkli çıktıdır, bu yüzden önceki yorumuma göre: bu sadece lsrenkli çıktı üretmeyi durduracak değil , diğer her şey yine de renkli olacak mı?
jwbensley

evet sadece ls kısmı
Len

1
xterm kullanıyor musun? xterm -cm
Len

1

Eğer ~ / .bashrc değiştirmek istemiyorsanız durumda eminim gibi bir şey içerir export PS2=.....+colors......:

Linux Konsolunda, linux-m1b için "Gri / Beyaz / Siyah ve Dim" veya linux-m2 için "Yeşil / Beyaz / Siyah ve Mavi" (vintage!) Olarak tek renkli TERM=linux-m1bveya TERM=linux-m2almayı deneyin ...

Putty ile (Mac kullanıcıları için bir bağlantı noktası var) kullanın TERM=putty-m1bve TERM=putty-m2bunun yerine ...

Bu tam olarak ihtiyacınız olanı yapacak ama: Bunun için yakın zamanda bir terminfo veritabanına ihtiyacınız olacak veya gerekirse oradan alacaksınız: wget http://canal.chez.com/linux.ti ; tic -x linux.ti

Alex. Not: xterm-mono artık mevcut değil.


-1

İlk olarak, varsayılan takma adınızı kontrol edin:

alias

alias ls-'ls --color=auto

Eğer işe yaramazsa ve hızlı bir çözüm gerekiyorsa. Bunu deneyin lsve awkpipolayın:

vi /usr/local/bin/list
#!/bin/bash
ls $1
exit

izinleri ayarlamak 744.
Bunun için güvenli bir yer /usr/local/bin , PATH'ınızın içerdiğinden emin olun /usr/local/bin.

Tekrar takdir kullanın.

Bir şey… renkler dizinleri işaretlemek içindir… ls="ls --color=auto"yaprakları sadece isimleri kapatmak … ls -aFya ls -Fda dizin isimlerini ekler /. Bu yüzden farkında olmanızı öneririm. Yapabilirsin alias ls="ls -aF"ya da alias ls="ls -F".


2
Bu cevap orijinal soruya nasıl cevap verir?
jwbensley

Stack Overflow'a hoş geldiniz! Tura katılmanızı tavsiye ederim .
Stephen Rauch
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.