Un sacco di domande simili, ma non riesco a trovare nulla che corrisponda esattamente.
Sto usando il terminale predefinito (in Yosemite) in SSH in una VM. Il terminale della VM è impostato per utilizzare correttamente TERM=xterm-256color
, e 256 colori funzionano localmente sulla VM con le stesse impostazioni del terminale, ma i colori non lo raggiungeranno tramite la connessione SSH. Qualcuno ha idea di cosa serve per far sì che Terminal ritiri l'output come normali sequenze a 256 colori?
Tutto quello che voglio qui è capire perché i codici di escape a 256 colori vengono ignorati in Terminal.app quando arrivano su una connessione SSH. E, naturalmente, per farlo smettere di ignorare le sequenze di fuga.
Probabilmente informazioni eccessive:
La VM esegue Windows 7, la shell è bash su cygwin, il server ssh è bitvise.
Sto esaminando 3 casi - localmente su bash OSX nativo in Terminal.app, localmente nella bash VM in MinTTY, e nella VM tramite SSH in Terminal.app.
infocmp xterm-256color
produce risultati identici in tutti e tre i casi e tput colors
riporta 256 in tutti i casi.
(tput setaf 200 && echo pink) > pink
produce i risultati identici in tutti e tre i casi:
$ hexdump -C pink
00000000 1b 5b 33 38 3b 35 3b 32 30 30 6d 70 69 6e 6b 0a |.[38;5;200mpink.|
00000010
cat pink
in Terminal.app (localmente, non SSH out ovunque) o in MinTTY sulla VM stampa il testo rosa previsto. cat pink
in Terminal.app mentre SSHed nella VM produce il testo grigio chiaro predefinito.
La connessione SSH è configurata con EscapeChar none
, quindi i dati dovrebbero essere puliti in modo binario (cambiando questa impostazione non ha fatto differenza).
Le preferenze in Terminal.app sono impostate come xterm-256color
, anche se non credo che dovrebbero fare alcuna differenza.
Qualche idea su ciò che sta mangiando la sequenza di escape fallirà? Non sto usando altro che plain ol bash per shell, no screen
o tmux
(a meno che Terminal.app lo usi automaticamente / internamente).