• AeonFelis@lemmy.world
    link
    fedilink
    arrow-up
    5
    ·
    5 hours ago
    • Write programs that do one thing and do it well.
    • Write programs to work together.
    • Write programs to handle text streams, because that is a universal interface.

    I guess none of these apply when reading files is involved?

  • Atlas_@lemmy.world
    link
    fedilink
    arrow-up
    50
    ·
    22 hours ago

    You can actually change the functionality of some punctuation, such as is used in my favorite command

    :()::;:

  • UltraHamster64@lemmy.world
    link
    fedilink
    arrow-up
    56
    arrow-down
    1
    ·
    1 day ago

    I heard one popular glorp youtuber say “Only glorp hemptets ship into mleb” Bitch I ship into blep all I fucking want, it’s more readable, and I piss whenever I fucking can. I piss two pisses before I piss two pisses, and then I piss more

    Yes I know putting two pisses in a row will break your bone. I’ve done it several times before by accident.

    implying I give a fuck

  • 9point6@lemmy.world
    link
    fedilink
    arrow-up
    19
    ·
    1 day ago

    Cat into grep lets you insert something between the file read and grep if you need to without having to reorder anything

    • Quantenteilchen@discuss.tchncs.de
      link
      fedilink
      arrow-up
      2
      ·
      4 hours ago

      Which is also exactly what said youtuber said in the same video (assuming this is about who I think it is!).

      They also made such reasonable statements as “I also pipe cat into grep when on the command line and playing around with my pipelines, but when it comes to writing full bash scripts to do useful work, think about using grep directly.” (not an exact quote btw!)

    • fartographer@lemmy.world
      link
      fedilink
      arrow-up
      4
      ·
      17 hours ago

      I prefer less until I find myself using less over and over again until I finally use cat so that I can just scroll up and review whatever I’m looking for.

      Is it the best or right way to do things? Nope, but it gets the job done just as good as anything else I do.

      And, it goes without saying, I do a terrible job of all of it.

        • jayands@lemmy.world
          link
          fedilink
          arrow-up
          2
          ·
          8 hours ago

          The subtle difference is that your $SHELL is responsible for opening (and, iirc, parsing?) the file when you use \<, versus the $EDITOR being the responsible entity.

          • ulterno@programming.dev
            link
            fedilink
            English
            arrow-up
            1
            ·
            3 hours ago

            Oh I get it now.
            Also, for some reason setting vi as $EDITOR, it is not able to load the contents of the file, unlike vim that does.

  • Da Bald Eagul@feddit.nl
    link
    fedilink
    arrow-up
    15
    ·
    edit-2
    19 hours ago

    Ok but what is supposed to be bad about grepping into cat? I don’t get it

    Edit: thanks for the replies all, I didn’t know you could add a file as an argument in grep. Makes sense now :)

    • __hetz@sh.itjust.works
      link
      fedilink
      arrow-up
      8
      ·
      19 hours ago

      It’s less relatable now, and the technology was fucking stupid to begin with, but: Imagine printing out a document and feeding the sheets into a fax machine instead of just sending the file directly to the machine.

      Or using a cassette tape adapter to play music from your phone through a stereo system when that system has a built-in Aux port you could plug directly into (“Useless Use Of Cassette?”).

      cat’ing into grep, and a handful of other programs people commonly pipe into from cat, is pointless when grep can be called directly against a file. cat is being run for no reason; a useless use of cat (uuoc). It means fuckall for most people today but I imagine it could’ve been an actual concern when hardware was much more limited and multiple users were connecting to a single system.

    • swicano@programming.dev
      link
      fedilink
      arrow-up
      16
      ·
      24 hours ago

      The video I saw was saying cat into grep is totally fine in day to day life do whatever comes out of your fingertips naturally, but if you’re making a bash script for others to use, use grep args because cat pipe grep can do some strange stuff with error handling. Which I have no experience with, but sounds reasonable

    • expr@programming.dev
      link
      fedilink
      arrow-up
      17
      ·
      edit-2
      1 day ago

      cat file.txt | grep foo is unnecessary and a bit less efficient, because you can do grep foo file.txt instead. More generally, using cat into a pipe is less efficient than redirecting the file into stdin with <, like grep foo < file.txt.

    • IngeniousRocks (They/She) @lemmy.dbzer0.com
      link
      fedilink
      arrow-up
      18
      ·
      edit-2
      18 hours ago

      Grep can accept input from stdin as with a piped cat, but I it can also just call the file directly.

      In 99.999% obviously made up stat is obvious of situations its fine.

      The real issue is a piped cat into grep will fork the process. Why open two process threads when one would do the job?

      Edit: it was mentioned by @swicano@programming.dev but to expand a bit: piping cat into grep can also mask quite a few errors. It masks them because of how the shell handles error reporting on piped processes. IIRC, if the file is missing for example, you won’t necessarily know that because while cat will throw a not-found error, that gets piped into grep who gladly accepts the error (which was piped to stdin) as its input and greps through the error, reporting back that your content wasn’t found in the search material, not that the file was missing.

      • CallMeAl (Not AI)@piefed.zip
        link
        fedilink
        English
        arrow-up
        1
        ·
        5 hours ago

        cat sends its error via stderr so it won’t go into the pipe (or grep). you will see the cat error on your terminal, unless you have redirected stderr to stdout

    • chrash0@lemmy.world
      link
      fedilink
      arrow-up
      2
      ·
      1 day ago

      i think the alternative is to use grep args. but ya know i’m living in the future using nushell’s open command and ripgrep so the argument is just kinda adorable

  • Gray_Warden@mander.xyz
    link
    fedilink
    arrow-up
    10
    ·
    24 hours ago

    I understood a couple of those words. None of the technical ones, but some of them! They were expletives… But I understood them!

  • Coriza@lemmy.world
    link
    fedilink
    arrow-up
    3
    ·
    edit-2
    22 hours ago

    How parsing (as in programming languages and commands) works is so interesting and is so hard for people to grasp and is really interesting to see how what you think is obvious is not for most people. I saw it all the time when teaching cs102. It is so hard to explain the difference that a blank space makes and why sometimes it is necessary and why sometimes it is not.

    That is all to say I find it really interesting and funny when OP says double pipe, because of course it looks like double pipe, you gonna tell me That || is something completely different than a single | ?