로그인하기 전에 색상 코드 이스케이프 시퀀스를 보낼 수 있습니까?

로그인하기 전에 색상 코드 이스케이프 시퀀스를 보낼 수 있습니까?

콘솔 색상을 지정하려고 하는데 루트에서 다음과 같은 성공을 거두었습니다 .bash_profile.

echo -en "\e]P7000000"
echo -en "\e]P0F0F0F0"
clear

문제는 이것이 루트가 처음 로그인할 때만 시작된다는 것입니다. mingetty올바른 콘솔 색상을 자동으로 설정하는 방법이 있습니까 ? 제안된 솔루션은 대부분의 시스템과 마찬가지로 RHEL6 및 RHEL7(즉, systemd)에서 작동해야 합니다. 이는 터미널 에뮬레이터나 SSH가 아닌 일반 콘솔 색상에 관한 것입니다(전자는 관련이 없으며 후자가 사용자 구성 문제로 간주된다는 데 동의합니다).

답변1

당신은 넣을 수 있습니다단어주석에 제안된 대로 문자를 이스케이프하십시오 /etc/issue(Red Hat은 때때로 이 작업을 수행합니다). 빠른 테스트 후에는 작동하지만텍스트. 배경은 무색이다. vi에서 텍스트는 다음과 같습니다.

^[]P7000000^[]P0F0F0F0\S
Kernel \r on an \m

결과는 다음과 같습니다.

CentOS 7 콘솔 창 스크린샷

화면이 지워지면 색상이 창을 채웁니다. 예를 들어,

^[]P7000000^[]P0F0F0F0^[[2J\S
Kernel \r on an \m

그 중에는 vi에 삽입된 ^[ASCII 문자 와 이스케이프 문자가 있습니다.escapecontrolV

수정은 문제가 발생했을 때 기계에서 수리할 수 있는 /etc/issue한 비교적 안전합니다 . 로그인하기 전에 파일을 인쇄하세요 .sshmingettyssh

그러나 같은 방식으로 수정하고 싶을 수도 있습니다 /etc/motd(결국,저것도 인쇄됩니다.) 그러나 이는 문제를 야기합니다. 스크립트에서 일단 \e교체하면단어ASCII 이스케이프 문자

echo -en "\e]P7000000"
echo -en "\e]P0F0F0F0"

당신은 얻을 것이다

escape]P7000000
escape]P0F0F0F0

이스케이프 시퀀스 표준(ECMA-48)은 escape]다음 과 같이 명시합니다.운영 체제 명령이것은 ~이 될 것이다문자열 종결자. Linux 콘솔 구현에서는 사용할 수 없습니다. .ssh를 사용하여 잘못 종료된 이스케이프 시퀀스를 인쇄하려고 하면 /etc/motdssh에 연결하면 흥미롭고 혼란스러운 터미널 잠금이 발생할 수 있습니다 xterm. resources 에 해결 방법(적어도 xterm의 경우)이 있습니다 brokenLinuxOSC.

추가 자료:

관련 정보