ファイルの内容はアプリケーションで構成されます。

ファイルの内容はアプリケーションで構成されます。

私はそれを弾きたいですfind -fprintf。何をしているのかわからない場合は、名前を付けたファイルに書き込むのと同じです-fprintf-printf

次のコマンドを実行すると、

find -maxdepth 1 -type d  -fprintf output "%p\b\n"

output私は(vimほとんどすべてのテキストエディタを使用して)次のようになります。

.^H
./directory-1^H
./directory-2^H
./directory-3^H

^Hバックスペース文字であることがわかります。開始:outputless

./directory-
./directory-
./directory-

したがって、質問は次のようになります。

  1. なぜvim他のテキストエディタ(試行nanoと試みemacs)は前の文字を削除して説明せずにバックスペースキーを表示しますが、lessバックスペースキーを表示するのですか?
  2. エディタが\n改行文字の代わりに文字を印刷しないのはなぜですか?
  3. バックスペースキーを印刷することとキーボードのバックスペースキーを押すことの違いは何ですか(キーボードのバックスペースキーを押すと実際に文字が削除されます)。

どこでもSSHを使用せずにマイコンピュータ(ノートブック)で実行します。 konsoleとtmuxでGNU / Linux Ubuntu 16.04 LTSを使用してください。

ベストアンサー1

vimやその他のテキストエディタ(nanoとemacsを使用)でバックスペースキーを解釈せずに前の文字を削除して表示しますが、それより少ないのはなぜですか?

彼らはなぜこのようなことをするのですか? FWIW、ブラウザも同様です:-)

$ printf "<html>foo\bbar</html>" > /tmp/foo.html
$ firefox /tmp/foo.html

*foo*ミニマークダウンなど、編集者が解釈する必要がある他の種類のマークアップはありますか**bar**

バックスペースキーは、前の文字を「削除」するだけでなく、おおよその書式less設定文字としても機能することに注意してください。は太字で印刷され、x\bx下線が引かれます(一部の端末では異なる色で印刷されます)。xx\b_

printf "H\b_e\b_r\b_e\b_'s\bs Johnny!" | less

エディタが改行の代わりに\ n文字を印刷しないのはなぜですか?

彼らはこれを行うことができます。たとえば、:set listinを使用すると、改行はとして印刷viされ、$タブはとして印刷されます^I

バックスペースを印刷することとキーボードのバックスペースキーを押すことの違いは何ですか(キーボードのバックスペースキーを押すと実際に文字が削除されます)。

ハードタイプの端末(紙に印刷)でバックスペースを印刷すると、キャリッジが左に1位置移動するため、次の文字は書く、既にペーパーの内容を削除する代わりに。ガラス(CRT)とアナログ端子の位置を左に動かして文字を書くと、文字が完全に置き換えられるため、「消去」効果があります。しかし、\bそれ自体は何も削除されません。 notprintf "123\b\n"印刷されます。12312

後者は、一部の入力文字を編集/制御コマンドとして解釈するttyドライバの機能です(全リストはerase、、、、-参照、またはマニュアルページを参照)。weraseintrkillstty(1)termios(3)

バックスペースキーも機能しますいいえ常に\b/ ^H(BS) 文字を生成します。ほとんどの場合\x7f/ ^?(DEL)です。

ただし、必要な値に設定できます。

$ stty erase '#'

今すぐクリックすると、#unix v7と同様に古い文字が削除されます。

おすすめ記事