web-dev-qa-db-ja.com

バックスペースのエコー

Bashでバックスペースをエコーすることは可能ですか?

何かのようなもの

echo $'stack\b'

stacを出力すべきではありませんか?または、何か不足していますか?

より具体的には、私はそれを以下で使用したいと思います:

ls | wc -l; echo $'\b items'
27
sidyll

_\b_はカーソルを左に移動しますが、文字は消去しません。消去したい場合はスペースを出力してください。

一部のディストリビューションでは、echoの_-e_スイッチを使用する必要がある場合もあります。

_  -e     enable interpretation of backslash escapes
_

だからそれは次のようになります

_ echo -e 'stack\b '
_

また、files=(*) ; echo "${#files[@]} items"

したがって、バックスペースに関する実際の質問に答えるために、これはバックスペースをシミュレートします。

echo -e "\b \b"

キャラクターを1つ戻し、スペースをエコーし​​てそこにあるすべてのキャラクターを上書きし、再び戻します。つまり、前のキャラクターを削除します。ただし、1行戻ることはないので、その前の出力では新しい行が作成されません。

echo -n "blahh"; echo -e "\b \b"
5
rawbone

それは正確にあなたが求めているものではありませんが、イグナシオの答えの行では、この場合に使用できます:

echo "$(ls | wc -l) items"

AFAIKでは、前の文字を削除する文字を印刷することはできません。16進数がバックスペースに対応する文字を印刷することもできません。ただし、前に戻って空白スペースを印刷して削除できます。 cputを使用すると、多くのことができ、画面のどこにでも印刷できます。

1
Robert Vila