ログインする前にカラーコードエスケープシーケンスを送信できますか?

ログインする前にカラーコードエスケープシーケンスを送信できますか?

コンソールの色を指定しようとしましたが、ルートで次の成功を収めました.bash_profile

echo -en "\e]P7000000"
echo -en "\e]P0F0F0F0"
clear

問題は、これがルートが初めてログインしたときにのみ開始されることです。mingetty正しいコンソールカラーを自動的に設定する方法はありますか?提案されたソリューションは、ほとんどのシステムと同様に、RHEL6とRHEL7(つまりsystemd)で動作する必要があります。これは、ターミナルエミュレータやSSH以外の一般的なコンソールカラーに関するものです(電子は関係がなく、後者がユーザー設定の問題と見なされることに同意します)。

ベストアンサー1

あなたは置くことができます言葉コメントに示されているように文字をエスケープします/etc/issue(Red Hatは時々これを行います)。クイックテスト後は動作しますが、テキスト。背景は無色です。 viでは、テキストは次のようになります。

^[]P7000000^[]P0F0F0F0\S
Kernel \r on an \m

結果は次のとおりです。

CentOS 7コンソールウィンドウのスクリーンショット

画面が消去されると、色がウィンドウを塗りつぶします。例えば、

^[]P7000000^[]P0F0F0F0^[[2J\S
Kernel \r on an \m

その中にはviに挿入された^[ASCII文字とエスケープ文字があります。escapecontrolV

修正は、問題が発生したときに機械で修理できる /etc/issue限り比較的安全です。ログインする前にファイルを印刷してください。sshmingettyssh

しかし、同じように修正したいかもしれません/etc/motd(結局、それも印刷されます。) しかし、これは問題を引き起こします。スクリプトで一度\e交換すると言葉ASCIIエスケープ文字

echo -en "\e]P7000000"
echo -en "\e]P0F0F0F0"

あなたは得るでしょう

escape]P7000000
escape]P0F0F0F0

エスケープシーケンス標準(ECMA-48)は、escape]次のように指定します。オペレーティングシステムコマンドこれは〜になります文字列終端。 Linuxコンソールの実装では使用できません。 .sshを使用して誤って終了したエスケープシーケンスを印刷しようとすると、ssh/etc/motdに接続すると興味深く混乱する端末ロックが発生する可能性がありますxterm。 resourcesに回避策(少なくともxtermの場合)がありますbrokenLinuxOSC

追加資料:

おすすめ記事