ハッシュ記号(#)が、バイナリを連結した後にポンド記号(£)に変わりました


42

これは私のbashプロンプトがどのように見えるかを示しています。

古いbashプロンプト

それから私はおそらくそれほど賢くない何かをしました、私はしましたcat /bin/bash。そして今、私のbashプロンプトは、ハッシュ記号(#)の代わりにポンド記号(£)が付いたこのように見えます。ファイル内のハッシュ記号にも影響します。以下を参照してください。

ファイル内のポンド記号

これを元に戻す方法はありますか?

編集:この質問では、「bashプロンプトを変更する方法は?」ではなく、「bashプロンプトが自動的に変更されました。復元するにはどうすればよいですか?」

.bashrc興味がある人のために完了します。



1
(タイトルの編集の自由度を少し上げて、問題の原因を取り上げました。好きなように編集または元に戻します。)
ilkkachu

9
など、プロンプトファイルがまだのための文字コードが含まれています#\x23。端末が\x23として解釈するようになっただけです£
デルタブ

4
面白い部分は、「ポンド」がアメリカ人(およびおそらく他の国籍?)のハッシュシンボルの別の名前であるということです。英語... =)
jpmc26

1
これはどの端末プログラムで行われましたか?
SnoringFrog

回答:


102

端末は、制御コマンドとして一連の異なる文字シーケンスを受け入れて実行します。たとえば、すべてのカーソル移動はそれらを使用して行われます。一部のコードは、色の設定、または代替文字セットの使用を端末に指示するなど、永続的な変更を行います。実行可能ファイルおよびその他のバイナリファイルには、これらのコマンドを表すバイトが含まれている可能性が高いため、バイナリファイルを端末にダンプすると、迷惑な副作用が生じる可能性があります。制御コードのいくつかについては、例えばこちらをご覧ください。

これの歴史的背景は、もともと、端末は画面とキーボードを備えたかなりダムなデバイスであり、シリアルポートを介して実際のコンピューターに接続したことです。それ以前は、キーボードを備えたプリンターでした。コマンドバイトからデータバイトを分離するためのプロトコルはあまりなかったため、コマンドは端末に「インライン」で渡されました。(むしろ、エスケープコードと制御文字がプロトコルでした。)システムが今日考案された場合、データとコマンドの間の明確な分離があると仮定するかもしれません。

ターミナルウィンドウを閉じるか、エミュレータを強制終了する代わりに、同様のコマンド(または複数)を送信してターミナルを正常なデフォルトにリセットするresetコマンドを使用できます。

何がハッシュをパウンド変化させるのか正確にはわかりません。(しかし、@ Random832はそうです、その答えを見てください。)私はすべての文字を線画グリフに変えることができる「代替文字セット」にもっと精通しています。それが起こったとしても、キーボードからの入力は通常変更されずに通過するためresetEnter、文字が文字化けしているかまったく表示されていなくても書き込みは機能します。(プロンプトが多数の行に変換されるのと比較すると、わずかな効果しかありません。)


1
詳細な説明ありがとうございます。必要な評判が得られたらすぐに投票します。
-lhermann

2
cat /dev/urandomDebianインストールコンソール(レンガのハードウェアを思い起こさせる画面解像度)で最初に試したとき、オーバーフローを引き起こしたと思い、すぐに「すべての変更を破棄してマシンを再起動する」ボタンに進みました。今では、それが「意図された機能」であることを知っています。
wizzwizz4

2
これは、現在望ましくない歴史的に意図された機能です。一部の(すべて良い)ターミナルエミュレーターは、UTF-8環境で実行する場合、レガシーキャラクタセットスイッチエスケープを無効にする必要がありますが、そうするかどうか、およびデフォルトではない場合のオプションのアクティブ化方法については十分に文書化されておらず、不定。
R ..

78

記録のために、これが発生した理由と、ターミナルを閉じずに(およびreset失敗した場合)修正する方法について回答するには:

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

だから、あなたはいくつかの一致出力シーケンスにより、端末、そこにバイナリファイルを印刷する場合ESC ( A、[または多分ESC ) Aおよび^N]端子に接続されています。これは、通常のステータスに設定するシーケンスを印刷することにより、手動で元に戻すことができます。

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

詳細を知らずに、このようなことを推測しました。ご説明ありがとうございます。あなたのような人が周りにいるのは素晴らしいことです!
-lhermann

1
ああ、カモメはÄとÖの代わりに...そして、OS Xのターミナルは、2016年にその交換をサポートします。
イルッカチュ

@ilkkachuいくつかの端末は、そうでない場合は、それらを(私はパテを知っている、と私はまた、Linuxコンソールを考えて)UTF-8が使用されているときにISO 2022(以外の他の配列と言うので、それらを拒否サポートすることESC % @)はサポートされてはならない状態の間UTF-8をサポートするために使用されます。したがって、より多くのアプリケーションが線描画にUTF-8を使用するように強制されると、最終的に消えてしまう可能性があります[これは、この機能の実際に最も広く使用されています。 ]。
Random832

20
これらのエスケープシーケンスを覚えるのは簡単です。「A」はイギリスを表し、「B」は「アメリカ人」を表します:D
egmont

8
@egmont私はこれを掘り下げましたが、結局のところ、それらはISOに登録された順番で順番に割り当てられます。1は、古い国際参照バージョン[with ¤for $]が@であり、その後、英国バージョンがたまたまアメリカのバージョンより前のバージョンになっています。それらのすべてのリストについては、itscj.ipsj.or.jp / itscj_english / index.html参照してください。
Random832

30

ターミナルを閉じて、新しいターミナルを開きます。


19
してはいけません。質問は有効です。多分誰かがこれがなぜ起こったのかを詳細に説明するでしょう。これはBashの穴でなければなりません。£#呼び出されるのと同じキーの下にありますAlt。どういうわけか、Altバッシュにとどまった。とにかく、あなたは適切な説明を待つことができます。あるいは、私の答えに満足したら、チェックをクリックして受け入れてください。
トマス

1
むしろ、Bashではなく、ターミナルプログラムで。GUI以外のコマンドラインで同じことを試してみましたが、それは永遠にループします。
トマス

5
@Xalorous、彼はときに問題が出現していること、質問状態cat/bin/bash端子に。
-ilkkachu

2
Random832は実際に何が起こったのかについて良い説明をしました
lhermann

16
これはやり過ぎです-セッションに保持したい状態がある場合はどうでしょうか?X端末ではなくコンソールの場合はどうなりますか? reset仕事に最適なツールです。
ペリシンチオン



7

端末を閉じて再度開いたり、リセットしたりする必要はありません!リセットは機能しますが、これは適切な方法ではありません!

ターミナルのスクロールバックバッファをクリア/消去するだけです。そのためには、次のコマンドを使用します。

$ echo -ne '\0033\0143'

1
この奇跡の説明はありますか?
トマス

1
@tomasはい、確かに。-eが有効な場合、実行することで読み取ることができるいくつかのシーケンスを認識します。man echoそのうちの1つは\0NNN、8進数値NNNのバイトを表します。実際、ターミナルセッションをリセットする必要はなく、スクロールバックバッファをクリアするだけです。そして、私が言ったコマンドは必要な仕事をするでしょう。たとえば、MacOS Xを使用している場合、ターミナルの使用中にメニューバーに[編集]があり、[スクロールバックまたは⌥⌘Kをクリア]などのオプションがあります。
FarazX

5
シーケンス\033\143はESC c、Reset to Initial State:「VT100を初期状態、つまり電源を入れた後の状態にリセットします。これにより、電源投入時セルフテストが実行され、INIT Hが簡単に断言してください。」
デルタブ

1
@deltab私はESCについて言及するのを忘れていました。
FarazX

1
@tomas表示されるはずのないファイル(たとえば、バイナリファイル)を表示しようとすると、端末は奇妙で厄介な動作をします。多くのLinuxユーザーはリセットを行いますが、ターミナルセッションをリセットする必要はなく、スクロールバックバッファーをクリアする必要があるため、これは最適なオプションではありません。
-FarazX
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.