Shell 출력 색상 및 제어에 대한 심층적인 이해

高洛峰
풀어 주다: 2023-03-05 14:58:01
원래의
1396명이 탐색했습니다.

머리말

ls 명령을 사용하여 파일을 나열하면 다양한 파일 유형이 다른 색상으로 표시된다는 것은 누구나 알고 있습니다. 그렇다면 이러한 컬러 텍스트 출력을 어떻게 얻을 수 있습니까? 쉘을 사용하든 C 언어를 사용하든 대답은 복잡하지 않습니다.

1. Shell에서의 구현 방법

먼저 Shell에서 구현하는 방법에 대해 알아보겠습니다. 이는 echo 명령을 사용하여 수행할 수 있습니다. 다음 예를 참조하세요.

echo -e "33[32mHello, world!"
로그인 후 복사

터미널에 이 명령을 입력하면 시스템에서 "Hello, world!"를 출력합니까? green? 뿐만 아니라 후속 명령 프롬프트도 녹색으로 바뀌었나요? 걱정하지 말고 내 말을 들어보세요. echo 명령의 -e 옵션은 백슬래시 이스케이프 문자(즉)에 대한 터미널의 해석을 활성화합니다. 따옴표 안의 33은 틀에 얽매이지 않는 문자 시퀀스를 안내하는 데 사용됩니다. 여기서 기능은 출력 속성의 설정을 안내하는 것입니다. 다음 [32m은 전경색을 녹색으로 설정하는 것이며 문자 m은 설정된 속성 카테고리를 나타내고 숫자는 나타냅니다. 속성 값.

설정은 개별적으로 사용할 수 있습니다. 예:

echo -e "33[0m"
로그인 후 복사

이 명령줄의 기능은 속성을 기본값으로 복원하는 것입니다. 즉, 0m 설정 항목은 기본값을 복원하는 데 사용됩니다. 이제 터미널에서 모든 것이 제대로 작동하고 있나요?

이것을 이해하고 나면 나머지는 쉽습니다. 이 명령을 사용하면 텍스트 전경색 설정 외에도 다양한 속성을 설정할 수 있습니다.

기타 설정은 아래와 같습니다.

33[0m 关闭所有属性
33[1m 设置高亮度
33[4m 下划线
33[5m 闪烁
33[7m 反显
33[8m 消隐
33[30m 至 33[37m 设置前景色
33[40m 至 33[47m 设置背景色
33[nA 光标上移n行
33[nB 光标下移n行
33[nC 光标右移n行
33[nD 光标左移n行
33[y;xH设置光标位置
33[2J 清屏
33[K 清除从光标到行尾的内容
33[s 保存光标位置
33[u 恢复光标位置
33[?25l 隐藏光标
33[?25h 显示光标
로그인 후 복사

각 숫자가 나타내는 색상은 다음과 같습니다.

단어 배경색 범위: 40----49

40: 검정색

41: 진홍색

42: 녹색

43: 노란색

44: 파란색

45: 보라색

46: 진한 녹색

47: 흰색

문자 색상: 30------------39

30: 검정

31: 빨간색

32: 녹색

33: 노란색

34: 파란색

35: 보라색

36 : 진한 녹색

37 : 흰색

또한, 같은 종류의 여러 설정 항목은 중간에 세미콜론(;)을 넣어 함께 묶을 수 있습니다. 분리.

은 다음과 같습니다.

echo -e "33[20;1H33[1;4;32mHello,world33[0m"
로그인 후 복사

이 명령 줄은 먼저 커서를 터미널 33[20;1H의 1열 20줄로 이동한 다음 33[ 1;4; 32m은 텍스트 속성을 강조 표시, 밑줄 및 녹색으로 설정한 다음 Hello, world를 출력합니다. 마지막으로 33[0m은 터미널 속성을 기본값으로 반환하므로 명령이 실행된 후에는 명령 프롬프트가 변경되지 않습니다. 완료되었습니다.

위 명령어의 조합을 통해 복잡한 터미널 출력 제어가 가능합니다.

2. C 프로그래밍에서는 어떻게 구현하나요?

위의 Shell 구현 방법을 이해하고 나면 C로 구현하는 것은 매우 간단합니다. 위의 echo -e를 대체하려면 printf 함수만 사용하면 된다고 할 수 있습니다. 다음 예를 참조하세요.

int color = 32;
 
printf("33[20;1H33[1;4;%dmHello, world.33[0m", color);
로그인 후 복사

이 예는 셸의 마지막 예와 유사합니다. 단, 여기서 색상 값은 color 변수를 통해 전달되어 지정됩니다(물론 직접 지정할 수도 있습니다).

3. Lenovo

이것을 보면 다른 프로그래밍 언어에서도 비슷한 방법을 사용하여 터미널 출력을 제어할 수 있는지 궁금하실 것입니다. 대답은 '예'입니다! 예를 들어, Python의 경우 출력은 다음과 같습니다.

color=32
 
print “33[20;1H33[1;4;%dHello, world.33[0m"%color
로그인 후 복사

이 예제의 효과는 위의 C 예제와 동일합니다.

요약

이 글의 내용이 모두의 공부나 업무에 조금이나마 도움이 되었으면 좋겠습니다. 의사 소통을 위해 메시지를 남길 수 있습니다.

Shell 출력 색상 및 제어 관련 글에 대한 좀 더 자세한 이해를 원하시면 PHP 중국어 홈페이지를 주목해주세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!