Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (Cyborg)
  • No Skin
Collapse
Brand Logo

CIRCLE WITH A DOT

  1. Home
  2. Uncategorized
  3. I feel like I'm getting better at shell fu.

I feel like I'm getting better at shell fu.

Scheduled Pinned Locked Moved Uncategorized
29 Posts 14 Posters 0 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • gsuberland@chaos.socialG gsuberland@chaos.social

    shells / coreutils could really use a built in way to parse and convert timespans, though. there's some limited ability within gnu versions of it, but it's kinda awkward and I can't use them anyway 'cos I'm on BSD.

    gsuberland@chaos.socialG This user is from outside of this forum
    gsuberland@chaos.socialG This user is from outside of this forum
    gsuberland@chaos.social
    wrote last edited by
    #5

    the main annoyance I have with shell stuff is how the command names defy discoverability.

    "I would like to flush my current shell history to the history file"

    "ok run fc -W"

    "huh. what does fc stand for?"

    "fix command"

    "... ok"

    asmcbain@woof.techA gsuberland@chaos.socialG elithebearded@fed.qaz.redE mmu_man@m.g3l.orgM 4 Replies Last reply
    1
    0
    • gsuberland@chaos.socialG gsuberland@chaos.social

      the main annoyance I have with shell stuff is how the command names defy discoverability.

      "I would like to flush my current shell history to the history file"

      "ok run fc -W"

      "huh. what does fc stand for?"

      "fix command"

      "... ok"

      asmcbain@woof.techA This user is from outside of this forum
      asmcbain@woof.techA This user is from outside of this forum
      asmcbain@woof.tech
      wrote last edited by
      #6

      @gsuberland but sometimes they lead to fun stuff:

      `git push -fu [...]`

      😁

      1 Reply Last reply
      0
      • gsuberland@chaos.socialG gsuberland@chaos.social

        the main annoyance I have with shell stuff is how the command names defy discoverability.

        "I would like to flush my current shell history to the history file"

        "ok run fc -W"

        "huh. what does fc stand for?"

        "fix command"

        "... ok"

        gsuberland@chaos.socialG This user is from outside of this forum
        gsuberland@chaos.socialG This user is from outside of this forum
        gsuberland@chaos.social
        wrote last edited by
        #7

        I also hate that shell builtins don't have manpages. I have looked up the justification for this and I find it deeply unsatisfying.

        classabbyamp@chaos.socialC funkylab@mastodon.socialF f3715h@rubber.socialF tj@altelectron.org.ukT sludgephd@mastodon.socialS 8 Replies Last reply
        0
        • gsuberland@chaos.socialG gsuberland@chaos.social

          I feel like I'm getting better at shell fu. I'm not necessarily "optimal" at it, but I'm figuring stuff out.

          last night's zsh one-liner, put together on my phone no less:

          find -s /dev -name 'da*' -exec smartctl -a {} \; | grep Power_On_Hours | cut -w -f 11 | xargs -n 1 -I {} sh -c 'echo $(( ({}-({}%(24*365))) / (24*365) ))y $(( ( {} - ({}-({}%(24*365))) ) / 24 ))d' \;

          it shows me how many power-on hours my disks have based on SMART data, converted into years and days.

          classabbyamp@chaos.socialC This user is from outside of this forum
          classabbyamp@chaos.socialC This user is from outside of this forum
          classabbyamp@chaos.social
          wrote last edited by
          #8

          @gsuberland smartctl has a json output option, which would mean jq could give something maybe more readable, but the format it emits is kinda annoying... it's like tables as json

          gsuberland@chaos.socialG 1 Reply Last reply
          0
          • gsuberland@chaos.socialG gsuberland@chaos.social

            I also hate that shell builtins don't have manpages. I have looked up the justification for this and I find it deeply unsatisfying.

            classabbyamp@chaos.socialC This user is from outside of this forum
            classabbyamp@chaos.socialC This user is from outside of this forum
            classabbyamp@chaos.social
            wrote last edited by
            #9

            @gsuberland in zsh, it's all one page, zshbuiltins(1)

            gsuberland@chaos.socialG 1 Reply Last reply
            0
            • gsuberland@chaos.socialG gsuberland@chaos.social

              I also hate that shell builtins don't have manpages. I have looked up the justification for this and I find it deeply unsatisfying.

              funkylab@mastodon.socialF This user is from outside of this forum
              funkylab@mastodon.socialF This user is from outside of this forum
              funkylab@mastodon.social
              wrote last edited by
              #10

              @gsuberland not on their own; bash builtins share one giant manpage you never want when you get it, and never when you want it. man test.
              zsh has `man zshbuiltins`.

              gsuberland@chaos.socialG 1 Reply Last reply
              0
              • classabbyamp@chaos.socialC classabbyamp@chaos.social

                @gsuberland smartctl has a json output option, which would mean jq could give something maybe more readable, but the format it emits is kinda annoying... it's like tables as json

                gsuberland@chaos.socialG This user is from outside of this forum
                gsuberland@chaos.socialG This user is from outside of this forum
                gsuberland@chaos.social
                wrote last edited by
                #11

                @classabbyamp yeah you could do

                smartctl -a -j /dev/da0 | jq '.ata_smart_attributes.table[] | select(.name=="Power_On_Hours") | .raw.value'

                but the grep and cut was shorter here

                1 Reply Last reply
                0
                • classabbyamp@chaos.socialC classabbyamp@chaos.social

                  @gsuberland in zsh, it's all one page, zshbuiltins(1)

                  gsuberland@chaos.socialG This user is from outside of this forum
                  gsuberland@chaos.socialG This user is from outside of this forum
                  gsuberland@chaos.social
                  wrote last edited by
                  #12

                  @classabbyamp what a mess

                  1 Reply Last reply
                  0
                  • funkylab@mastodon.socialF funkylab@mastodon.social

                    @gsuberland not on their own; bash builtins share one giant manpage you never want when you get it, and never when you want it. man test.
                    zsh has `man zshbuiltins`.

                    gsuberland@chaos.socialG This user is from outside of this forum
                    gsuberland@chaos.socialG This user is from outside of this forum
                    gsuberland@chaos.social
                    wrote last edited by
                    #13

                    @funkylab which then makes it impossible to search >_<

                    funkylab@mastodon.socialF 1 Reply Last reply
                    0
                    • gsuberland@chaos.socialG gsuberland@chaos.social

                      @funkylab which then makes it impossible to search >_<

                      funkylab@mastodon.socialF This user is from outside of this forum
                      funkylab@mastodon.socialF This user is from outside of this forum
                      funkylab@mastodon.social
                      wrote last edited by
                      #14

                      @gsuberland yep, exaxtly my gripe. `man zsh-for` or even `man zsh for` would be possible on modern `man`s

                      1 Reply Last reply
                      0
                      • gsuberland@chaos.socialG gsuberland@chaos.social

                        @acsawdey I've tried to use awk a few times but I find the syntax non-obvious (in a similar way to perl) so it never sticks

                        honestly `python -c` would probably be easier for me to remember lol

                        brouhaha@mastodon.socialB This user is from outside of this forum
                        brouhaha@mastodon.socialB This user is from outside of this forum
                        brouhaha@mastodon.social
                        wrote last edited by
                        #15

                        @acsawdey @gsuberland
                        Awk is a bit awkward, but it's a piece of cake compared to Perl. But I, too, prefer Python.

                        acsawdey@fosstodon.orgA 1 Reply Last reply
                        0
                        • brouhaha@mastodon.socialB brouhaha@mastodon.social

                          @acsawdey @gsuberland
                          Awk is a bit awkward, but it's a piece of cake compared to Perl. But I, too, prefer Python.

                          acsawdey@fosstodon.orgA This user is from outside of this forum
                          acsawdey@fosstodon.orgA This user is from outside of this forum
                          acsawdey@fosstodon.org
                          wrote last edited by
                          #16

                          @brouhaha @gsuberland well, yes for anything other than 1-liners I too prefer python. But awk somehow is very amenable to doing tiny things like this:

                          awk '{count[$0]++} END{for(x in count) { printf("%-10d %s\n",count[x],x) } } ' | sort -n

                          paul_ipv6@infosec.exchangeP 1 Reply Last reply
                          0
                          • gsuberland@chaos.socialG gsuberland@chaos.social

                            I also hate that shell builtins don't have manpages. I have looked up the justification for this and I find it deeply unsatisfying.

                            f3715h@rubber.socialF This user is from outside of this forum
                            f3715h@rubber.socialF This user is from outside of this forum
                            f3715h@rubber.social
                            wrote last edited by
                            #17

                            @gsuberland consider toybox?

                            gsuberland@chaos.socialG 1 Reply Last reply
                            0
                            • gsuberland@chaos.socialG gsuberland@chaos.social

                              the main annoyance I have with shell stuff is how the command names defy discoverability.

                              "I would like to flush my current shell history to the history file"

                              "ok run fc -W"

                              "huh. what does fc stand for?"

                              "fix command"

                              "... ok"

                              elithebearded@fed.qaz.redE This user is from outside of this forum
                              elithebearded@fed.qaz.redE This user is from outside of this forum
                              elithebearded@fed.qaz.red
                              wrote last edited by
                              #18

                              @gsuberland

                              I use fc (through aliases) all the time and I have never heard a good explanation of the name.

                              100% agreed discoverability is a huge problem in shell commands, built-in or not. I wrote a tool, "nums",then literally years later found out that "seq" does almost the same thing. Mine is only better in being smart about zero padding: "nums 01-10" pads, "nums 1-10" doesn't

                              1 Reply Last reply
                              0
                              • R relay@relay.an.exchange shared this topic
                              • gsuberland@chaos.socialG gsuberland@chaos.social

                                I also hate that shell builtins don't have manpages. I have looked up the justification for this and I find it deeply unsatisfying.

                                tj@altelectron.org.ukT This user is from outside of this forum
                                tj@altelectron.org.ukT This user is from outside of this forum
                                tj@altelectron.org.uk
                                wrote last edited by
                                #19
                                @gsuberland this annoys me so much. Even more when I get the builtin man page for something that is also a standalone tool. Which has a man page
                                1 Reply Last reply
                                0
                                • f3715h@rubber.socialF f3715h@rubber.social

                                  @gsuberland consider toybox?

                                  gsuberland@chaos.socialG This user is from outside of this forum
                                  gsuberland@chaos.socialG This user is from outside of this forum
                                  gsuberland@chaos.social
                                  wrote last edited by
                                  #20

                                  @F3715H I read the readme and it isn't clear to me what toybox is. it also exclusively mentions Linux, which I don't use.

                                  1 Reply Last reply
                                  0
                                  • gsuberland@chaos.socialG gsuberland@chaos.social

                                    I also hate that shell builtins don't have manpages. I have looked up the justification for this and I find it deeply unsatisfying.

                                    sludgephd@mastodon.socialS This user is from outside of this forum
                                    sludgephd@mastodon.socialS This user is from outside of this forum
                                    sludgephd@mastodon.social
                                    wrote last edited by
                                    #21

                                    @gsuberland in fish, this just works. Probably required a blood sacrifice of them though.

                                    1 Reply Last reply
                                    0
                                    • gsuberland@chaos.socialG gsuberland@chaos.social

                                      I also hate that shell builtins don't have manpages. I have looked up the justification for this and I find it deeply unsatisfying.

                                      gsuberland@chaos.socialG This user is from outside of this forum
                                      gsuberland@chaos.socialG This user is from outside of this forum
                                      gsuberland@chaos.social
                                      wrote last edited by
                                      #22

                                      note: I am not asking for advice, I am simply stating a problem with the default state of things.

                                      1 Reply Last reply
                                      0
                                      • gsuberland@chaos.socialG gsuberland@chaos.social

                                        I also hate that shell builtins don't have manpages. I have looked up the justification for this and I find it deeply unsatisfying.

                                        brhfl@digipres.clubB This user is from outside of this forum
                                        brhfl@digipres.clubB This user is from outside of this forum
                                        brhfl@digipres.club
                                        wrote last edited by
                                        #23

                                        @gsuberland yeppppp, one of the messiest, most frustrating-for-no-good-reason issues with shell scripting imo

                                        1 Reply Last reply
                                        0
                                        • R relay@relay.infosec.exchange shared this topic
                                        • gsuberland@chaos.socialG gsuberland@chaos.social

                                          I also hate that shell builtins don't have manpages. I have looked up the justification for this and I find it deeply unsatisfying.

                                          dragonarchitect@rubber.socialD This user is from outside of this forum
                                          dragonarchitect@rubber.socialD This user is from outside of this forum
                                          dragonarchitect@rubber.social
                                          wrote last edited by
                                          #24

                                          @gsuberland I think they supposedly do but the manpages for the builtins have always been infuriatingly unintuitive to find for me.

                                          It's impossible for my shit ass adhd working memory to remember what all of the sections of the manpages hold what kind of information and yet the manpages are the standard go-to reference for everything shell like it's supposed to be innate knowledge to shell touchers. 😕

                                          1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups