Didn’t know about auto populating search queries, abbreviations, string scripting, and using private mode.

  • Cris@lemmy.world
    link
    fedilink
    English
    arrow-up
    4
    ·
    edit-2
    2 days ago

    I’m glad you mentioned nushell (it sounds like) is a more poweruser thing. Someone recommended it in place of fish in another thread and I was curious to check it out, but it sounds like not at all what I want or need as a fish user and that saves me the trouble of trying to make heads or tails of a terminal tool I don’t understand

    But it looks like a cool project and I’m glad it exists for people like you! 😊

    • Laser@feddit.org
      link
      fedilink
      arrow-up
      1
      ·
      8 hours ago

      I’m glad you mentioned nushell (it sounds like) is a more poweruser thing.

      It serves a different niche. nushell is very good for working with structured data. fish on the other hand is a “conventional” shell that’s not POSIX compliant. I guess that’s why they call it “a command line shell for the 90s” because it doesn’t incorporate modern concepts, it’s just more convenient than POSIX shells.

      This results in some notable differences: nushell for example has actual data types (https://www.nushell.sh/book/types_of_data.html, though they are dynamically typed by default).

      All this doesn’t mean that one is better than the other. I use fish daily and just sometimes dabble in nushell because most of my workflow doesn’t require all the stuff nu offers.

      • Cris@lemmy.world
        link
        fedilink
        English
        arrow-up
        1
        ·
        7 hours ago

        The only thing I really care about is my terminal having a slightly more approachable user friendly ux when I need to do things in the terminal that can’t be done graphically.

        I’m generally a fairly non-techincal (by linux community standards) design nerd. I’m not even sure what strucrued data would really mean, so I’m pretty sure it’s not useful to my usecase lol

        When I need to run random shell commands I found on the internet like the non-technical, bad-life-decision-maker that I am I can just run them through bash instead 🤷

        The only thing I miss from bash is things like !! Which I think fish is in the process of adding (there’s a keyboard shortcut that I think allows you to fill the same need but I find it harder to remember and have been having fun using opendoas in place of sudo, which the shortcut uses by default)

        • Laser@feddit.org
          link
          fedilink
          arrow-up
          1
          ·
          4 hours ago

          I’m not even sure what strucrued data would really mean, so I’m pretty sure it’s not useful to my usecase lol

          Probably not, but to give an easy example:

          ~> ls | where modified >= (date now) - 30day
          ╭───┬───────────┬──────┬────────┬────────────╮
          │ # │   name    │ type │  size  │  modified  │
          ├───┼───────────┼──────┼────────┼────────────┤
          │ 0 │ Downloads │ dir  │ 4,0 kB │ 4 days ago │
          │ 1 │ Musik     │ dir  │ 4,0 kB │ a week ago │
          ╰───┴───────────┴──────┴────────┴────────────╯
          

          Here, ls doesn’t just return a string representing directory content as text, but a table where each file is an entry with attributes that have their own data type (e.g. size is Filesize while modified is Datetime). That’s why I’m able to filter based on one of them; that part isn’t part of ls, but of the shell itself. In a classic shell, this filtering would need to be handled in the originating binary in its own specific way, or you’d need to parse its output, transform it using tools like sed and awk etc. This here is a special case because ls is built into the shell; for non-builtin commands, if they offer it, you can have them output structured data as json or something else and read it into nu, like

          ~> ip -j a | from json | where {|device| $device.address? != null and $device.addr_info? != [] and $device.link_type =~ "ether"} | get addr_info.0 | select -o local broadcast scope
          ╭───┬────────────────────────────────────────┬─────────────────┬────────╮
          │ # │                 local                  │    broadcast    │ scope  │
          ├───┼────────────────────────────────────────┼─────────────────┼────────┤
          │ 0192.168.178.72192.168.178.255global │
          │ 12001:9e8:4727:2c00:3071:91ff:fed1:9e26 │                 │ global │
          │ 2 │ fdaa:66e:6af0:0:3071:91ff:fed1:9e26    │                 │ global │
          │ 3 │ fe80::3071:91ff:fed1:9e26              │                 │ link   │
          ╰───┴────────────────────────────────────────┴─────────────────┴────────╯
          

          It’s kind of cool, but I don’t need it that often either, so I just play around with it when I feel like it.