According to man:
If -e is in effect, the following sequences are recognized:
\b backspace
So I would expect echo -e "word\b" to produce wor output. But yet:
$ echo -e "wor\bd"
wod
$ echo -e "word\b"
word
What's the reason behind this?
According to man:
If -e is in effect, the following sequences are recognized:
\b backspace
So I would expect echo -e "word\b" to produce wor output. But yet:
$ echo -e "wor\bd"
wod
$ echo -e "word\b"
word
What's the reason behind this?
Since this can't be marked a duplicate of an SO question, I guess it's valid to put an answer here in U&L.
\b moves the cursor back one character, but it doesn't erase that character. A final character printed would overwrite the character.
$ echo -e "hello world\bX"
hello worlX
\b can be summed up to: replace the previous character with the next next one. But since there is no next one in word\b (it seems to ignore newline), leave it as it is.
– SantaXL
Oct 07 '19 at 18:40
X in my example because the terminal's in cooked mode. You'll notice that if you type a command, scroll to the beginning or middle, and then hit enter, not just the part of the line left of the enter is sent; the whole command will be. \b is best summed up as 'move the character back one cursor' . It does not replace anything automatically, but the next output to the terminal that isn't some special control character, if any, will end up replacing it.
– erik258
Oct 08 '19 at 03:10
echo -ne "hello world\b" produces hello worl. echo -e "hello\n\bworld" prints hello <newline> world - it seems like \b does not work if the following char is a newline
– SantaXL
Oct 21 '19 at 20:45