Tại sao xterm hiển thị 256 màu (không phải xterm-256color)?


11

Ai đó có thể giải thích điều này? Tôi đang sử dụng gnome-terminal. Đầu tiên, một số thông tin:

# echo $TERM
xterm

# infocmp xterm
Reconstructed via infocmp from file: /lib/terminfo/x/xterm
colors#8, cols#80, it#8, lines#24, pairs#64

# tput colors
8

Tôi đã viết tập lệnh đơn giản để tạo mã cho bộ màu mở rộng:

# Output file (current directory) and text.
OFILE='xterm256_colors_test.sh'
OFILE_COLORS='terminal_256_colors'
OTEXT='Sed ut perspiciatis unde omnis iste natus error sit voluptatem...'

# Clearing the contents from previous runs.
if [ -e $OFILE ] || [ -e $OFILE_COLORS ]
then
  > $OFILE
  > $OFILE_COLORS
fi

# Bang!
echo -e '#!/bin/bash\n' | tee --append $OFILE $OFILE_COLORS &> /dev/null
echo -e "\necho -e \"" | tee --append $OFILE &> /dev/null

# \x1b is a control character changing behaviour of the shell.
# It is also the <Ctrl+V><Esc> sequence.
for i in {016..255}; do
  echo -e "\x1b[38;5;${i}m $OTEXT $i \x1b[0m" >> $OFILE
  echo -e "color${i}=\"\[\033[38;5;${i}m\]\"" >> $OFILE_COLORS
done

# End of echo.
echo '"' | tee --append $OFILE &> /dev/null

# The file should be executable.
chmod +x $OFILE

Mặc dù xtermtrình giả lập thiết bị đầu cuối cơ bản khi tôi chạy tập lệnh được tạo, tôi có thể thấy tất cả 240 màu. Tại sao? Tôi nghĩ tôi nên thay đổi $TERMđể xterm-256colorđầu tiên.

Câu trả lời:


18

Các TERMbiến môi trường là một cách mà bạn, người dùng, có thể nói chương trình (ví dụ emacs, grep, less, ls, và vim) những loại thiết bị đầu cuối mà họ đang chạy trên, do đó họ sẽ biết các thông số của nó, bao gồm cả những gì khả năng nó có và những gì trình tự thoát họ cần phát hành để truy cập chúng. Điều này tồn tại bởi vì quá khó, nói chung, phần mềm tự xác định điều này (và gần như không thể khi người dùng giao tiếp với máy tính qua các thiết bị đầu cuối bên ngoài và chỉ được kết nối với máy tính bằng cáp dữ liệu).

gnome-terminallà một chương trình cung cấp các dịch vụ giống như thiết bị đầu cuối cho người dùng và các chương trình mà người dùng chạy trong thiết bị đầu cuối.  gnome-terminalcó thể nhận thức được các biến môi trường được đặt trong môi trường của nó , trước khi nó được gọi ( DISPLAYlà ví dụ rõ ràng), nhưng nó không có kiến ​​thức về các biến môi trường được đặt trong các quy trình đang chạy trong nó.

Vì vậy, gnome-terminalcó bất cứ khả năng nào nó có. Có thể điều chỉnh / hạn chế các bên ngoài này, ví dụ, thông qua các tùy chọn dòng lệnh, môi trường tồn tại trước, các tệp cấu hình và các hộp thoại trong khung cửa sổ, nhưng không phải bằng cách thay đổi TERMtrong trình bao trong cửa sổ. Nếu nó có khả năng hiển thị 256 màu, thì nó có khả năng hiển thị 256 màu và bạn sẽ có thể khiến nó làm như vậy bằng cách gửi cho nó các chuỗi thoát thích hợp. Nhưng, miễn là bạn đã TERMcài đặt xterm, các chương trình bạn chạy sẽ tin rằng bạn đang nói với họ rằng họ đang chạy trong một thiết bị đầu cuối có khả năng tám màu, và vì vậy họ sẽ hạn chế yêu cầu của họ (các chuỗi thoát) đối với các khả năng đó . Bạn cần phải thiết lập TERMđể xterm-256color, không để cho phépgnome-terminalđể hiển thị 256 màu, nhưng để nói với các chương trình như greplsđể hỏi nó để sử dụng nhiều hơn 8 màu sắc.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.