今天執行composer的時候看到命令窗口出現的提示里面有的關鍵性部分帶有顏色,於是很好奇研究了一下,在這里記錄下來
其實在命令行輸出帶顏色字體主要是使用的 ANSI 轉義字符實現的,我們先看個例子:
<?
echo "\033[38;5;1m紅色文字\033[0m";
顯示:
在終端中,ANSI定義了用於屏幕顯示的Escape屏幕控制碼,其格式為:
\033[38;5;1m紅色文字\033[0m
代表開始設置標簽
代表設置完成標簽
代表設置參數
代表要顯示的字符
這里開始標簽和結束標簽都是固定的,開始標簽是 “\033[” 結束標簽是 “m” 其中參數部分的含義可以按照下表中的參數來設置
代碼 | 作用 | 備注 |
---|---|---|
0 | 重置/正常 | 關閉所有屬性。 |
1 | 粗體或增加強度 | |
2 | 弱化(降低強度) | 未廣泛支持。 |
3 | 斜體 | 未廣泛支持。有時視為反相顯示。 |
4 | 下划線 | |
5 | 緩慢閃爍 | 低於每分鍾150次。 |
6 | 快速閃爍 | MS-DOS ANSI.SYS;每分鍾150以上;未廣泛支持。 |
7 | 反顯 | 前景色與背景色交換。 |
8 | 隱藏 | 未廣泛支持。 |
9 | 划除 | 字符清晰,但標記為刪除。未廣泛支持。 |
10 | 主要(默認)字體 | |
11–19 | 替代字體 | 選擇替代字體{\displaystyle n-10}![]() |
20 | 尖角體 | 幾乎無支持。 |
21 | 關閉粗體或雙下划線 | 關閉粗體未廣泛支持;雙下划線幾乎無支持。 |
22 | 正常顏色或強度 | 不強不弱。 |
23 | 非斜體、非尖角體 | |
24 | 關閉下划線 | 去掉單雙下划線。 |
25 | 關閉閃爍 | |
27 | 關閉反顯 | |
28 | 關閉隱藏 | |
29 | 關閉划除 | |
30–37 | 設置前景色 | 參見下面的顏色表。 |
38 | 設置前景色 | 下一個參數是5;n 或2;r;g;b ,見下。 |
39 | 默認前景色 | 由具體實現定義(按照標准)。 |
40–47 | 設置背景色 | 參見下面的顏色表。 |
48 | 設置背景色 | 下一個參數是5;n 或2;r;g;b ,見下。 |
49 | 默認背景色 | 由具體實現定義(按照標准)。 |
51 | Framed | |
52 | Encircled | |
53 | 上划線 | |
54 | Not framed or encircled | |
55 | 關閉上划線 | |
60 | 表意文字下划線或右邊線 | 幾乎無支持。 |
61 | 表意文字雙下划線或雙右邊線 | |
62 | 表意文字上划線或左邊線 | |
63 | 表意文字雙上划線或雙左邊線 | |
64 | 表意文字着重標志 | |
65 | 表意文字屬性關閉 | 重置60 –64 的所有效果。 |
90–97 | 設置明亮的前景色 | aixterm(非標准)。 |
100–107 | 設置明亮的背景色 | aixterm(非標准)。 |
根據表格我們可以看出 設置的參數 38表示設置前景色5表示顏色的設置模式表示的是256種顏色 1表示使用的那種顏色
除了設置顏色屬性外我們還可以設置下划線等其他屬性,而且並不是每種屬性都需要設置多個參數,例如下划線屬性我們直接添加個4就可以啦
<?php echo "\033[38;5;1;4m紅色文字\033[0m";
注意:由於各個系統終端的不同,所以有的設置是不起作用的或者效果會有所差異,最終效果以實際的顯示效果為准!