テキストエディタにcatコマンドとは異なる内容が表示されるのはなぜですか?

テキストエディタにcatコマンドとは異なる内容が表示されるのはなぜですか?

私は走る:

$ man cd > mancd
$ cat mancd

これは期待どおりに表示されます。しかし、VSCodeとvimでファイルを開くとまったく異なります。

ここに画像の説明を入力してください。

ここに画像の説明を入力してください。

これが起こる理由とマニュアルページをファイルに正しくリダイレ​​クトする方法。

ベストアンサー1

^H上記のスクリーンショットには多くの内容が含まれています。Ctrl+はHASCII 08文字AKAを生成することを意味します。バックスペースキー。文字を印刷するときにカーソルを戻るバックスペースキーそれから同じ文字を上書きする それから現れる暗い。これが方法です太字機械式タイプライターに実装されました。さまざまな最新の電子端末もこれをサポートし、多くのCLIツールがテキストの書式設定に使用します。ANSIシーケンスによって。 。 。スタート脱出する08(ASCII 27)は、カーソルの位置や点滅、色、斜体などのテキスト形式のプロパティを変更するためにも一般的に使用されます27制御文字

catこのバイトについて何も知らない。ただ通り過ぎる生バイトストリームターミナルまたはパイプラインの次の項目に移動します。端末はこれらの制御文字を知っているので、テキストを正しく表示します。ただし、viVSコードは端末ではなく、制御文字をウィンドウ内に表示する前に変換して、予期しない制御文字が画面や端末を乱すのを防ぎます。

制御文字を無効にしてプレーンテキストのみを出力するには、使用しているツールのオプションを確認してください。知っておくべきmanことControlling formatted outputマンページのセクション。次のことを試してくださいman --ascii cd

ただし、ほとんどのプログラムは、制御文字を出力する必要があるかどうかを知るために、出力タイプを自動的に決定します。たとえば、ほとんどのGNUツールはまたは--colorなどのオプションを使用します。またこれです:lsgrepman

  • MAN_KEEP_FORMATTING

    通常、出力が端末(ファイルやパイプなど)として指定されていない場合は、特殊なツールなしで結果を読みやすくするために型文字が削除されます。ただし、$MAN_KEEP_FORMATTINGNULL以外の値に設定すると、これらの書式文字は保持されます。これは、書式設定文字を解釈できるmanラッパーに役立ちます。

したがって、フォーマットがman異なる場合や、一部のフォーマットオプションがエイリアスまたは環境変数で指定されているため、出力をテキストファイルにリダイレクトしてもフォーマットが出力されます。

バラより

おすすめ記事