シェルコマンド履歴に印刷できない文字が誤って侵入するのを防ぎ、修復する方法は?

シェルコマンド履歴に印刷できない文字が誤って侵入するのを防ぎ、修復する方法は?
$ history
...
  242  yum whatprovides */bin/xdotool
  243  yum provides */bin/xdotool
  244  yum provides xdotool
  245  yum whatprovides xdotool
  246  yum whatprovides xdotool

プロンプトによると:

up

[root@localhost Downloads]# yum whatprovides xdotool

up

[root@localhost Downloads]# yum whatprovidesxdotool

up

[root@localhost Downloads]# yumtprovidesxdotool

up

[root@localhost Downloads]# yumtprovides*/bin/xdotool

up

[root@localhost Downloads]# yumwhattprovides*/bin/xdotool

最初に呼び出されたコマンドには、(Unicodeボックス文字)で表される印刷できない文字がありますが、これは私の端末には表示されず、文字スペースを占有しません。私の端末には以下が表示されます。

yum whatprovides xdotool

そうではありません:

yum whatprovides ☐xdotool

使用cat -A:

$ history | cat -A
...
 246  yum whatprovides M-BM-^Vxdotool $

私はWindows 10でCygwinを実行しておりmintty、シェルを介してFedora 29に接続しています。

私はシステムデフォルトを使用しています。

$ echo $PS1
[\u@\h \W]\$

私はこれが以下に関連していると思います。

https://unix.stackexchange.com/a/31643/81989

PS1にあるとき、bashは記録をスクロールしたときに正しく再描画できるように印刷された文字数を計算します。これがbashに[および]特殊文字がある理由です。これはbashに含まれている文字を印刷できないことを示し、必要に応じてプロンプトを再描画する方法をbashが見つけるのに役立ちます。

履歴に印刷できない文字が原因でエラーが発生したと思います。

私はこれがどのように、なぜ起こるのか理解したいのですが、次のことも知りたいです。

  • どのオプションを使用できますか?履歴を消去せずに回復できますか?
  • 今後このようなことが発生しないように、コマンド履歴からこれらの文字を削除するようにBashを設定できますか?
  • 問題のキャラクターが誰であるかを知る方法はありますか?

しかし、印刷できない文字をコマンド履歴に保存すると、どのような利点がありますか?この問題に直面するたびに、常に面倒です。

ベストアンサー1

おすすめ記事