私はそれを弾きたいです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
バックスペース文字であることがわかります。開始:output
less
./directory-
./directory-
./directory-
したがって、質問は次のようになります。
- なぜ
vim
他のテキストエディタ(試行nano
と試みemacs
)は前の文字を削除して説明せずにバックスペースキーを表示しますが、less
バックスペースキーを表示するのですか? - エディタが
\n
改行文字の代わりに文字を印刷しないのはなぜですか? - バックスペースキーを印刷することとキーボードのバックスペースキーを押すことの違いは何ですか(キーボードのバックスペースキーを押すと実際に文字が削除されます)。
どこでも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
下線が引かれます(一部の端末では異なる色で印刷されます)。x
x\b_
printf "H\b_e\b_r\b_e\b_'s\bs Johnny!" | less
エディタが改行の代わりに\ n文字を印刷しないのはなぜですか?
彼らはこれを行うことができます。たとえば、:set list
inを使用すると、改行はとして印刷vi
され、$
タブはとして印刷されます^I
。
バックスペースを印刷することとキーボードのバックスペースキーを押すことの違いは何ですか(キーボードのバックスペースキーを押すと実際に文字が削除されます)。
ハードタイプの端末(紙に印刷)でバックスペースを印刷すると、キャリッジが左に1位置移動するため、次の文字は書く、既にペーパーの内容を削除する代わりに。ガラス(CRT)とアナログ端子の位置を左に動かして文字を書くと、文字が完全に置き換えられるため、「消去」効果があります。しかし、\b
それ自体は何も削除されません。 notprintf "123\b\n"
印刷されます。123
12
後者は、一部の入力文字を編集/制御コマンドとして解釈するttyドライバの機能です(全リストはerase
、、、、-参照、またはマニュアルページを参照)。werase
intr
kill
stty(1)
termios(3)
バックスペースキーも機能しますいいえ常に\b
/ ^H
(BS) 文字を生成します。ほとんどの場合\x7f
/ ^?
(DEL)です。
ただし、必要な値に設定できます。
$ stty erase '#'
今すぐクリックすると、#
unix v7と同様に古い文字が削除されます。