Bashでバックスペースをエコーすることは可能ですか?
何かのようなもの
echo $'stack\b'
stac
を出力すべきではありませんか?または、何か不足していますか?
より具体的には、私はそれを以下で使用したいと思います:
ls | wc -l; echo $'\b items'
_\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"
それは正確にあなたが求めているものではありませんが、イグナシオの答えの行では、この場合に使用できます:
echo "$(ls | wc -l) items"
AFAIKでは、前の文字を削除する文字を印刷することはできません。16進数がバックスペースに対応する文字を印刷することもできません。ただし、前に戻って空白スペースを印刷して削除できます。 cputを使用すると、多くのことができ、画面のどこにでも印刷できます。