누군가 이것을 설명 할 수 있습니까? 을 사용하고 gnome-terminal
있습니다. 먼저, 몇 가지 정보 :
# 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
확장 된 색상 세트에 대한 코드를 작성하는 간단한 스크립트를 작성했습니다.
# 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
xterm
생성 된 스크립트를 실행할 때 기본 터미널 에뮬레이터 에도 불구하고 240 개의 색상을 모두 볼 수 있습니다. 왜? 나는 변경해야합니다 생각 $TERM
에 xterm-256color
처음.
답변
TERM
환경 변수는, 사용자가 프로그램을 알 수있는 방법 (예, emacs
, grep
, less
, ls
,와 vim
) 어떤 종류가 매개 변수를 알 수 있도록 그들이 어떤 능력이 있고 무엇을 포함,에 실행중인 터미널의 이스케이프 시퀀스 들은 액세스하려면 발행해야합니다. 이것은 일반적으로 소프트웨어가이를 스스로 판단하기가 너무 어렵 기 때문에 존재합니다 (사용자 가 외부 터미널 을 통해 컴퓨터와 인터페이스 하고 데이터 케이블로만 컴퓨터에 연결된 경우에는 거의 불가능했습니다 ).
gnome-terminal
터미널과 유사한 서비스를 사용자에게 제공하는 프로그램과 사용자가 터미널 내에서 실행하는 프로그램입니다.
gnome-terminal
에 설정된 환경 변수를 인식 할 수있다 자사 가 (호출하기 전에, 환경 DISPLAY
명백한 예이다)하지만, 그 아래 실행중인 프로세스에 설정된 환경 변수에 대한 지식이 없습니다.
따라서 gnome-terminal
모든 기능이 있습니다. 명령 줄 옵션, 기존 환경, 구성 파일 및 창 프레임의 대화 상자를 통해 창 외부 TERM
의 셸 을 변경 하여 외부 적으로 조정하거나 제한 할 수 있습니다 . 256 색을 표시 할 수 있으면 256 색을 표시 할 수 있으며 적절한 이스케이프 시퀀스를 보내서 그렇게 할 수 있습니다. 그러나로 TERM
설정 한 한 xterm
실행하는 프로그램은 8 색 가능 터미널에서 실행되고 있다고 알려주
므로 요청 (이스케이프 시퀀스)을 해당 기능으로 제한합니다 . 당신은 설정해야 TERM
하는 xterm-256color
, 사용하지 않도록gnome-terminal
256 개 색을 표시하지만, 같은 프로그램을 얘기 grep
하고 ls
하는 질문 8 개 이상의 색상을 사용하도록.