Rất nhiều câu hỏi tương tự, nhưng tôi dường như không thể tìm thấy bất cứ điều gì phù hợp chính xác.
Tôi đang sử dụng Terminal mặc định (trong Yosemite) để SSH vào VM. Thiết bị đầu cuối của VM được thiết lập để sử dụng TERM=xterm-256color
đúng cách và 256 màu hoạt động cục bộ trên VM với cùng cài đặt thiết bị đầu cuối, nhưng màu sắc sẽ không vượt qua kết nối SSH. Có ai có ý tưởng gì về việc đưa Terminal vào xử lý đầu ra như các chuỗi màu 256 bình thường không?
Tất cả những gì tôi muốn ở đây là tìm hiểu tại sao mã thoát 256 màu bị bỏ qua trong Terminal.app khi chúng đi qua kết nối SSH. Và, tất nhiên, để làm cho nó ngừng bỏ qua các chuỗi thoát.
Có thể thông tin quá mức:
VM đang chạy windows 7, shell là bash trên cygwin, ssh server là bitvise.
Tôi đang xem xét 3 trường hợp - cục bộ trên bash OSX gốc trong Terminal.app, cục bộ trong bash VM trong MinTTY và trong VM thông qua SSH trong Terminal.app.
infocmp xterm-256color
tạo ra kết quả giống hệt nhau trong cả ba trường hợp và tput colors
báo cáo 256 trong mọi trường hợp.
(tput setaf 200 && echo pink) > pink
tạo ra kết quả giống hệt nhau trong cả ba trường hợp:
$ 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
hoặc trong Terminal.app (cục bộ, không được SSH ở bất cứ đâu) hoặc trong MinTTY trên VM in ra văn bản màu hồng dự kiến. cat pink
trong Terminal.app trong khi SSH ra VM tạo ra văn bản màu xám nhạt mặc định.
Kết nối SSH được cấu hình với EscapeChar none
, vì vậy dữ liệu sẽ xuất hiện mặc dù nhị phân sạch (việc thay đổi cài đặt này không có sự khác biệt).
Các tùy chọn trong Terminal.app được đặt thành báo cáo xterm-256color
, mặc dù tôi không nghĩ rằng điều đó sẽ tạo ra bất kỳ sự khác biệt nào.
Bất kỳ ý tưởng về những gì đang ăn trình tự thoát để thất bại? Tôi không sử dụng bất cứ thứ gì ngoài bash ol đơn giản cho shell, không screen
hoặc tmux
(trừ khi Terminal.app sử dụng nó tự động / nội bộ).