누군가 이것을 설명할 수 있나요? 나는 그것을 사용하고 있습니다 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
.
답변1
환경 TERM
변수는 사용자가 프로그램(예: emacs
, grep
, , less
및 ls
) vim
에 실행 중인 터미널 유형을 알려주는 방법입니다.이스케이프 시퀀스액세스하려면 배포가 필요합니다. 이러한 상황은 일반적으로 소프트웨어가 이를 스스로 결정하기 어렵기 때문에 발생합니다(사용자가단말기외부에 있으며 데이터 케이블을 통해서만 컴퓨터에 연결됩니다.
gnome-terminal
사용자에게 터미널과 같은 서비스를 제공하는 프로그램과 사용자가 터미널에서 실행하는 프로그램을 말합니다.
gnome-terminal
아마도 환경 변수 세트를 알고 있을 것입니다.그것은환경이 호출되기 전에( DISPLAY
이것은 분명한 예입니다), 그 환경에서 실행되는 프로세스에 설정된 환경 변수에 대해서는 전혀 모릅니다.
그러므로 gnome-terminal
당신이 할 수 있는 능력이 무엇이든 당신은 가지고 있습니다. 이는 명령줄 옵션, 기존 환경, 구성 파일 및 창 프레임의 대화 상자 등을 통해 외부적으로 조정/제한할 수 있지만 TERM
창 내의 셸에서는 변경할 수 없습니다. 256색을 표시할 수 있으면 256색을 표시할 수 있으며 적절한 이스케이프 시퀀스를 전송하여 표시할 수 있습니다. 그러나 당신이 실행하는 프로그램은 8가지 색상을 지원하는 터미널에서 실행되고 TERM
있다고 xterm
믿을 것입니다.
따라서 요청(이스케이프 시퀀스)을 다음 기능으로 제한합니다.. 256색 표시를 활성화하는 것이 아니라 프로그램 에 다음과 같은 것을 알리려면 TERM
로 설정해야 합니다 .xterm-256color
gnome-terminal
grep
ls
묻다8가지 이상의 색상을 사용합니다.