DCS制御文字の無効化

DCS制御文字の無効化

ファイル名の難解な文字は時々奇妙なエラーを引き起こす可能性があります。私は最近バックアップファイルを操作していましたが、rsyncプロセスの開始から数分後にすべてのステータス出力が停止したことがわかりました。もう少し調べてみると、ファイル名にアジア文字が含まれていて原因であることがわかりました。シンボルの1つにUnicode値があり、0x0090私のシェルはこれを次のように解釈したいと思います。制御文字DCS。その後、対応するST文字(値)がないため、0x009Cすべての出力が停止します。完了すると、rsyncその後にエクスポートされるすべてのテキストがただちに端末にオーバーフローします。

マニュアルページを参照しましたが、stty実行中にその特殊記号の機能を一時的に削除する方法が見つかりませんでしたrsync。これらの役割を無効にする方法はありますか?

答え1

理想的には、rsyncは印刷可能な文字のみを印刷する必要があります。

そうでない場合は、cat -vバッファリングによってわずかな待ち時間が発生しても、フィルタユーティリティ(たとえば)を介してrsyncの出力をパイプできます。また、UTF-8でエンコードされたC1または0x90バイトをキャプチャするのに十分スマートであるかどうかはわかりませんcat -v(どのバイトが発生するのかわかりません)。

関連情報