• everett@lemmy.ml
    link
    fedilink
    arrow-up
    10
    arrow-down
    1
    ·
    13 hours ago

    That head/tail thing is kind of a goofy argument. For one thing they aren’t duals; tail is naturally more complex because the end of a file often changes and the application can optionally keep showing you the new output. Also, the fact that they’re separate applications in the first place is arguably better than the a one-application approach, which would always require a command line switch to select between outputting the start or end of a file. And finally, while I guess this could vary between implementations of head and tail, mine has identical switches for all the common options.

    • hirihit640@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      7
      ·
      8 hours ago

      They could have been two commands that call a single parent command with different options. For example, imagine if cat had an option -N to restrict the number of lines that was printed, and also an option -t to start from the end. head would just proxy to cat -N and tail would proxy to cat -N -t. Combining the three into a single implementation reduces total LoC and opportunity for bugs. Also reduces total maintenance burden.

      I believe busybox is like this actually - a ton of Unix commands in a single package. It’s used by Alpine Linux, a tiny and performance linux distro commonly used by docker containers.

      • Kairos@lemmy.today
        link
        fedilink
        arrow-up
        2
        ·
        7 hours ago

        Busybox is literally just a bundle. That’s its whole purpose. It doesn’t reimplement anything.