Response to a recent claim that Ctrl+D in the terminal is like pressing Enter. It kind of is but it’s also misleading to say so without further explanation.
I often exit a shell with ctrl+d. And I often see if a shell is still connected by pressing enter. They are definitely not equivalent.
👆
Let’s say it together: No, it isn’t
Betteridge strikes again
Describing the outcomes in terms of functions over shell states, as you have, is the quickest and most transparent way of demonstrating that they aren’t the same.
The article was a fun “scenic route” to the same conclusion, though.
Control-D gives a hex value of 0x04, where as ENTER or CR gives a hex value of 0x0d,
they are not the same. Control D returns the carriage on old tty machines, on many modern linux platforms it is treated as CRLF, that is carriage return and a linefeed. Control-D indicates end of file or end of transmission.Ctrl+D sends EOF, so no it’s not like enter.
Yes, I agree. But the dispute is what ‘sends EOF’ actually means. The article I respond to claims Ctrl+D doesn’t send EOF but is like Enter except that new line character is not sent. This is, in some sense true, but as I explain also misleading.
Isn’t ctrl-m the “enter” equivalent?
Yes. So is Ctrl+J actually. Ctrl+J corresponds to line feed (LF) and Ctrl+M corresponds to carriage return (CR) ASCII characters. They are typically treated the same way.
Found it in the classic The UNIX Programming Environment from 1984:
But then, this is for return, which technically isn’t “enter”, but nowadays they are sort of interpreted the same by programs?