~によるとBashのヒント:色とフォーマット(ANSI / VT100制御シーケンス)私のプログラムで点滅コードを有効にしようとしましたが、点滅コードが削除されている可能性があります。これは本当ですか?
そうでない場合は、ちらつきコードを助けてください。
答え1
これ点滅する機能は端末(または端末エミュレータ)によって異なります。使用されるほとんどの端末は、VT100互換性など、ECMA-48に文書化された制御シーケンスを許可します。制御シーケンスは
- 特定の端末で点滅が発生したり、
- 特定の色で表示されるか、
- 与えられた端末では単に無視されます
アプリケーションは通常、端末記述(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:
(説明に示すように、termcapの名前はblink
です。)mb
だから…見なかったら点滅する(a)端末自体、または(b)端末記述である可能性があるテキスト。
追加資料:
答え2
printf '\033[5mHello\033[0m\n'
生産する:
点滅するテキスト
- 素晴らしいレトロな用語1.1.1
- 基本端子5.3.4
- GNOME端末3.32.1
- konsole5 18.12.3
- ペアリング端子 1.22.1
- ネモターミナル4.0.0
- qターミナル0.14.0
- rxvt-Unicode 9.22
- セント0.8.1
- ターミネーター 1.91
- xfce4-ターミナル 0.8.7.4
- xterm 344
- ウシ 3.0.5
- macOS:ターミナルとiTerm2(プロファイル>テキスト>テキストレンダリングで有効になっている場合)
背景色で強調表示
- FreeBSD 12コンソール
- エテム
- Windows:mintty(Cygwinで使用)、PuTTY
前景色で強調表示
- Emacs Terminal 5.3.4
- Windows: TeraTerm
逆方向ビデオ入力
- ミスターxvt
効果なし
- Linuxコンソール
- Solaris 11.4 コンソール
- グアケ 0.8.8
- LilyTerms 0.9.9.2
- 用語1.5.1
- LX端子0.3.2
- RoxTerm 3.7.3
- シロアリ 2.9.6
- macOS:iTerm2(明示的に有効になっていない場合)
答え3
時には設定が隠されています。深い端末エミュレータの設定で。
ITerm2から:
- 優先事項( ⌘,)
- プロフィール
- 暗さ (->現在のプロフィール)
- テキスト
- テキストレンダリング
- ✓ 点滅するテキストを許可
答え4
私はこれを探していました。私はRed Hat Linuxを使用しています。多くの実験の終わりに、echo -e "\ e [5m Hello world \ e [0m")はグラフィックモード(Ctrl + alt + F7など)で点滅しないことがわかりました。 ctrl+alt+F1からctrl+alt+F6までのコマンドラインモードでのみ機能します。