Khi đã b t đ u quen v i l p trình trên Linux, ph n ti p theo s là v n đ v màu s c. n gián ngôn ng l p trình script ch cung c p l nh echo hay printf đ in m t chu i
52
ra màn hình console tr ng đen mà thôi. L p trình liên quan đ n màu s c ph i s d ng đ n ngôn ng biên d ch nh C/c++ ch ng ? Không h n th , v i script, ng i l p trình có th hi n th đ m i s c màu mà card màn hình và máy tính h tr .
5.1. Màu ch
Hãy đ ý đ n l nh ls khi s d ng Linux. ls có th li t kê tên th m c v i r t nhi u màu s c b t m t, ví d các t p tin th c thi đ c hi n th b ng màu xanh lá cây, t p tin nén là màu đ , t p thông th ng là màu tr ng, tên t p nh nh *.gif hay *.jpg là màu h ng ... Không ch có l nh ls, l nh echo c ng có th th c hi n đ c đi u này. n gi n ch c n thêm vào chu i k t xu t c a l nh echo ký hi u đi u khi n escape c ng v i s hi u c a màu mu n th hi n cho chu i trên màn hình. Hãy th gõ chu i sau t dòng l nh:
$echo -e " \033 [35m Hello Color ~033 [0m"
K t qu ? Chu i Hello Color xu t hi n v i màu h ng. i u này là do mã đi u khi n escape\033 th c hi n. Mã này t ng đ ng v i chu i ^[ hay s hexa 0x1B. Khi Linux x lý l nh và nh n đ c chu i đi u khi n này, nó s xem các ký t chu i theo sau là m t dây l nh đi u khi n. Nh ng l nh này có th làm đ c r t nhi u chuy n. đây ta có th l i d ng, yêu c u Linux x lý màu s c c a chu i v n b n k t xu t b ng l nh [m ti p theo. S 32 tr c m th hi n màu ch . Các ký t theo sau m là v n b n s k t xu t. N u mu n khôi ph c v tr ng thái màu ban đ u, dùng chu i [0m. Do v y trong l nh:
$echo -e “\033[35mHello Color \033 [0m”
Cách di n gi i nh sau: hãy th c hi n l nh (\033) in chu i màu h ng ([35m) n i dung chu i là Hello Color, sau đó hãy khôi ph c tr l i màu ban đ u [0m. N u không khôi ph c v tr ng thái màu tr c đó thì có th m t s l nh chu n sau đó s k t xu t v i cùng màu ch mà đã đnh.
Ví d :
$echo -e “\033 [32m This is green text" $echo -e “And this”
$echo -e " \033[0m Now we are back to normal.”
N u mu n, có th in các màu ph i h p v i nhau trong cùng m t chu i c a dòng nh ví d sau:
$echo - e "\033[032m Green text \033[34m and Blue "
Chu i đi u khi n escape không ch gi i h n dùng trong script, hàm printf c a C c ng có th th c hi n đ c đi u này. N u mu n hi n th màu s c ra màn hình console đ n gi n không c n dùng thêm th vi n nào c , trong C có th vi t:
printf (“l\033[34m This is blue . \033 [0m\n" ); Hay trong Perl:
Printf “\033[34m This is blue. \033 [0m\n" ;
M t s màu ch chu n có th s d ng đ c li t kê trong b n sau:
Mã đi u khi n Màu 30 en 31 32 Xanh lá cây 33 Nâu 34 Xanh n c bi n
53
35 H ng
36 Xanh da tr i
37 Xám
Ví d sau s in ra m t lo t các màu đ tham kh o for color in 30 31 32 33 34 35 36 37 echo -e "\033 [$Colorm This is color text" done
echo -e "\033 [0m"
5.2. Thu c tính v n b n
Còn có th k t h p các thu c tính cho phép ch đ m (bold) hay nh p nháy (blink) v i nhau. Các thu c tính k t h p đ c đ t cách nhau b ng đ u ch m ph y (;).
Ví d l nh sau s in ra chu i đ m màu nâu:
$echo -e "\033[33;1m This is bold ana red text \033[0m"
i v i màn hình EG th ng thu c tính bold làm cho ch chuy n sang màu sáng. Ví d nh màu nâu s chuy n sang màu vàng, màu xám s chuy n sang sáng tr ng. M t vài thu c tính khác khá thông d ng nh : 0 đ t v thu c tính bình th ng, 5 đ t thu c tính nh p nháy, 7 đ o màu, 25 t t màu nh p nháy ...
5.3. Màu n n
Có th đ t màu n n cho chu i k t xu t thay cho n n đen c a màn hình console. Ví d , đ t ch đ trên n n tr ng nh sau:
$echo -e “\033 [47 ; 31m Red on white. \033 [Om"
đây đ t màu n n và màu ch cách nhau b ng d u ch m ph y (;). D i đây là danh sách các màu n n s d ng h u h t trên các màn hình console
Mã đi u khi n Màu 40 en 41 42 Xanh lá cây 43 Nâu 44 Xanh n c bi n 45 H ng 46 Xanh da tr i 47 Tr ng Ví d
54
6. K T CH NG
Ch ng gi i thi u các k thu t c b n cách l p trình shell, m t th m nh truy n th ng c a UNIX/Linux. Làm quen v i l p trình shell là làm quen v i công c qu n tr h th ng, mà các nhà chuyên nghi p hay s d ng, trong khi k t h p v i các ti n ích t o ra t C/C++ hay Perl, PHP …Có th nói l p trình shell là không th thi u đ c khi s d ng UNIX/Linux. Tài li u này ch nh ph n d o đ u, có th tìm hi u sâu các sách chuyên cho shell trong môi tr ng UNIX.