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.
  • acsawdey@fosstodon.orgA acsawdey@fosstodon.org

    @gsuberland one-liners like that are pretty excellent. I tend use awk for stuff like that sh command at the end, I think it doesn't require quite so many parens and you also probably don't need the cut because you can just use $11 in awk. Plus you can do summary statistics and print out in END{ }.

    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
    #4

    @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 1 Reply Last reply
    0
    • 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
                                          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