Hacker News new | past | comments | ask | show | jobs | submit login

That over writes though. It doesn't delete.

Foofoo\rbar\r

Should show as

barfoo

With the cursor over the start of that line.




If there's no newline, cat won't output one, and bash will put the prompt right after:

    [dale@host ~]$ echo -n "hi" > test
    [dale@host ~]$ cat test
    hi[dale@host ~]$

If you add a \r, then the cursor goes back to the start of the line, and the prompt overwrites the "hi".

    [dale@host ~]$ echo -en "hi\r" > test
    [dale@host ~]$ cat test
    [dale@host ~]$


Yeah except the file ends in \r so the OP may have had their prompt longer than any of the lines (e.g. [user@hostname cwd] $) such that they couldn’t tell.


depends on the terminal


What terminal interprets "\r" as "clear the line"? I would have thought that is considered a bug.


most of them do. it's what a /r means. it's how cli programs can easily output a spinning wheel/similar for busy status.


You want to know how I know you never wrote your own C program or terminal emulator?

/r means "slash, then the letter r". \r means carriage return, which doesn't clear the line, just moves the cursor to the left margin. Unless you're on an Apple ][, in which case CHR$(13) moves to the beginning of the next line, but still doesn't clear anything. And CHR$(4) is where the real magic happens, but it has to follow a CHR$(13)!

]PRINT CHR$(4) + "INIT HELLO"


you're absolutely right. It's impossible that I've ever written any C, and just fat fingered the / and \.

...

Point is, \r goes to the beginning of the line, without going to the next one, as you reiterated, so you can output a spinner using

    -
    /
    -
    \


No, "\r" means return the cursor to the start of the line without clearing the line.

Try this:

  $ echo -ne "ooo\rf\n"
  foo
If a "\r" cleared the line, you would just see a "f", not a "foo".


isn't that what I said?


You want to know how I know you never wrote your own text editor?

Carriage return is a carriage return, not a delete or backspace or clear line.


>Carriage return is a carriage return

To be fair it isn't.

On typewriters it also adds a new line. On Mac, it is (used to be?) the new line character.

I don't know how non vt terminals handled it.


who said anything about clearing? I just meant that \r goes to the beginning of the line, so you can output a busy spinner


> What terminal interprets "\r" as "clear the line"? I would have thought that is considered a bug.

>> most of them do. it's what a /r means. it's how cli programs can easily output a spinning wheel/similar for busy status.

You did.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: