Honestly I had no idea what ctrl+d even did, I just knew it was a convenient way for me to close all the REPL programs I use. The fact that it is similar to pressing enter really surprised me, so I wanted to share this knowledge with you :)

  • tuna@discuss.tchncs.deOP
    link
    fedilink
    arrow-up
    5
    arrow-down
    2
    ·
    1 day ago
    $ cat
    You sound very nice :)
    You sound very nice :)
    Bye<ctl-d>Bye
    
    Oh wait, and cool too
    Oh wait, and cool too
    <ctl-d>
    $ 
    

    The Ctl-D didn’t end the file when i typed “Bye” :( it only worked when I pressed Ctl-D on its own line. So how does cat know that it should ignore the EOF character if there is some text that comes before it?

    What Ctl-D does is flush the input to the program, and the program sees how big that input is. If the length of the input is 0 that is interpreted as EOF. So Ctl-D is like Enter because they both flush the input, but Ctl-D is unlike Enter because it does not append a newline before flushing, and as a consequence you can send empty input (aka an EOF “character”) with Ctl-D.