Escape-Characters
閃爍程式碼(轉義程式碼)已被刪除?
根據Bash 提示:顏色和格式(ANSI/VT100 控制序列)我嘗試在我的程序中啟動閃爍程式碼,但可能已經消除了閃爍程式碼。這是真的嗎?
如果不是真的,請幫助我使用閃爍程式碼。
閃爍功能取決於終端(或終端仿真器)。您將使用的大多數終端都接受 ECMA-48 中記錄的控制序列,例如兼容 VT100。控制序列可以
- 導致給定終端閃爍,或
- 顯示為特定顏色,或
- 簡單地被給定的終端忽略
應用程序通常使用終端描述(terminfo 或 termcap)。如果終端描述沒有說明如何閃爍,那麼應用程序也不會知道。
如果您的電腦有
infocmp
(用於 terminfo),那將顯示終端描述中列出 的功能。bash
只查找blink
— 使用 termcap 名稱,因為它是一個 termcap 應用程序。更一般地說,terminfo 還可以描述如何使用閃爍sgr
(這在 termcap 描述中不可用)。例如,這是一個 terminfo 描述
vt100
:> infocmp vt100 # Reconstructed via infocmp from file: /usr/local/ncurses/share/terminfo/v/vt100 vt100|vt100-am|dec vt100 (w/advanced video), am, mc5i, msgr, xenl, xon, cols#80, it#8, lines#24, vt#3, acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, clear=\E[H\E[J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C$<2>, cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA, cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>, enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=^J, ka1=\EOq, ka3=\EOs, kb2=\EOr, kbs=^H, kc1=\EOp, kc3=\EOn, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kent=\EOM, kf0=\EOy, kf1=\EOP, kf10=\EOx, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOt, kf6=\EOu, kf7=\EOv, kf8=\EOl, kf9=\EOw, lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m$<2>, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m$<2>, rmul=\E[m$<2>, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<2>, sgr0=\E[m\017$<2>, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m$<2>, smul=\E[4m$<2>, tbc=\E[3g,
對應的 termcap 是
> infocmp -Cr vt100 # Reconstructed via infocmp from file: /usr/local/ncurses/share/terminfo/v/vt100 vt100|vt100-am|dec vt100 (w/advanced video):\ :5i:am:bs:ms:xn:xo:\ :co#80:it#8:li#24:vt#3:\ :@8=\EOM:DO=\E[%dB:K1=\EOq:K2=\EOr:K3=\EOs:K4=\EOp:K5=\EOn:\ :LE=\E[%dD:RA=\E[?7l:RI=\E[%dC:SA=\E[?7h:UP=\E[%dA:\ :ac=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~:\ :ae=^O:as=^N:bl=^G:cb=\E[1K:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\ :cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:do=^J:\ :eA=\E(B\E)0:ho=\E[H:k0=\EOy:k1=\EOP:k2=\EOQ:k3=\EOR:\ :k4=\EOS:k5=\EOt:k6=\EOu:k7=\EOv:k8=\EOl:k9=\EOw:k;=\EOx:\ :kb=^H:kd=\EOB:ke=\E[?1l\E>:kl=\EOD:kr=\EOC:ks=\E[?1h\E=:\ :ku=\EOA:l1=pf1:l2=pf2:l3=pf3:l4=pf4:le=^H:mb=\E[5m:\ :md=\E[1m:me=\E[0m:mr=\E[7m:nd=\E[C:pf=\E[4i:po=\E[5i:\ :ps=\E[0i:rc=\E8:rs=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\ :..sa=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<2>:\ :sc=\E7:se=\E[m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I:ue=\E[m:\ :up=\E[A:us=\E[4m:
(您可以在描述中看到它
blink
的termcap 名稱)。mb
所以…如果您沒有看到閃爍的文本,那可能是 (a) 終端本身或 (b) 終端描述。
進一步閱讀: