(정말 쓸데없는) 터미널에 무한으로 무지개 그라데이션 만들기! (명령어도 길어서 스크린 잠금하지 않은 동료 터미널에 무지개를 띄우려 해도 한글자씩 입력하다가 결국 들켜버리고 만다!!!)
yes "$(seq 231 -1 16)" | while read i; do printf "\x1b[48;5;${i}m\n"; sleep .02; done
Shell
복사
명령어 분석
•
yes : 반복해서 명령어를 출력한다. 영원히!
yes 'All Work and No Play makes Jack a dull boy'
Shell
복사
•
seq : 일련의 연속된 숫자를 출력한다.
◦
seq 1 3 : 1부터 3까지, 1씩 증가되는 숫자의 연속.
> seq 1 3
1
2
3
Shell
복사
•
while… : while 반복문 안에 담긴 명령어를 수행한다.
따라서, 위 명령어의 "$(seq 231 -1 16)" 는, 231부터 16까지 1씩 감소하는 숫자의 연속을 출력하고, yes 명령어로 인해 무한하게 출력이 진행되며, while 은 seq 명령어의 인자를 받아 printf 명령어에서 먼가 흑마법을 실행한다… 그렇다면 printf 에 작성된 저 외계어는 과연 무엇일까?
그것은 바로 ANSI Color Codes!!! ANSI 코드를 사용하여 프롬프트 텍스트의 글자의 색을 바꿀 수 있다!!!
•
x1b[48;5;[n]m\n 은 배경색을 출력하는 코드이다. n의 범위는 0부터 255까지이며, 0부터 15는 기본 컬러 테이블, 232부터 255는 그레이스케일 컬러 테이블, 중간의 숫자들은 256 컬러 테이블이다. 참고로 \x1b[38;5;[n]m\n 은 글자색을 출력하는 코드로, 글자에 특정한 색을 입히고자 한다면, printf "\x1b[38;5;53mHello\n" 와 같이 입력하면 된다.