バイナリをキャプチャした後、ハッシュ記号(#)はポンド記号(£)になります。

バイナリをキャプチャした後、ハッシュ記号(#)はポンド記号(£)になります。

これが私のbashプロンプトの外観です。

古いbashプロンプト

それから私はあまり賢くないことをしましたcat /bin/bash。私のbashプロンプトは、ポンド記号(#)の代わりにポンド記号(£)を使用して次のようになります。ファイル内のハッシュ記号にも影響します。ここを参照してください。

ポンドログインファイル

これを復元する方法を知っていますか?

編集する:この質問は、「Bashプロンプトをどのように変更しますか?」と尋ねるのではなく、「Bashプロンプトが自然に変更されました。どのように復元できますか?」と尋ねます。

十分.bashrc興味のある方のために。

答え1

端末は、様々な文字列を制御命令として受け入れて実行する。たとえば、すべてのカーソル移動はそれを使用して行われます。いくつかのコードは、色を設定したり、端末に代替文字セットを使用するように指示するなど、恒久的な変更を実行します。実行可能ファイルやその他のバイナリには、これらのコマンドを表すバイトが含まれる可能性が高いため、バイナリを端末にダンプすると不快な副作用が発生する可能性があります。たとえば、参照してください。ここ一部の制御コードの場合。

歴史的な背景は、最初に端末がかなり大きかったということです。画面とキーボードを備えた愚かなデバイス、シリアルポートを介して物理コンピュータに接続します。それ以前はキーボード付きのプリンタでした。命令バイトからデータバイトを分離するプロトコルはあまりないので、命令は端末に「インライン」で送信される。 (あるいは、エスケープコードと制御文字がプロトコルです。)システムが今日設計されている場合、データとコマンドはより明確に区別されると思うかもしれません。

ターミナルウィンドウを閉じたりエミュレータを終了する代わりに、次のコマンドを使用できます。reset注文する、同様のコマンドを送信して端末を通常のデフォルトに戻します。

ハッシュが変更される原因が正確に何であるかわかりません。 (しかし@Random832はそうです。彼らの答えを見てください.) 私は、すべての文字を線画の文字の形に変更する「代替文字セット」に慣れています。これが起こってもキーボード入力は通常変わらないため、resetEnter文字がゴミとして現れたりまったく現れなくても、書き込みは機能します。 (プロンプトが複数行に変わることに比べて効果はわずかです。)

答え2

記録のためにこれが起こる理由と、端末を閉じずに問題を解決する方法への答え(reset失敗した場合):

多くの端末で機能としてサポートVT220彼らは端末をシミュレートしています。国別の文字セットに基づいてISO 646そしてISO 2022。特に、何らかの理由で他の文字セットがサポートされていなくても、ポンド通貨記号がASCII番号記号と同じ位置にある英国文字セットをサポートするのが一般的です。

したがって、バイナリファイルを端末に印刷すると、偶然にもシーケンスESC ( A(またはおそらくESC ) Aおよび^N)が端末に出力されます。これは、通常の状態に設定したシーケンスを印刷することで手動でキャンセルできます。

printf '\e(B\e)0\x0f'

答え3

端末を閉じて新しい端末を開きます。

答え4

stty saneresetこの問題も解決されたようです。

関連情報