• Caveman@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    3 months ago

    g-push which is alias for

    git push origin `git branch --show`
    

    Which I’m writing on my phone without testing or looking

  • lluki@feddit.org
    link
    fedilink
    arrow-up
    0
    ·
    3 months ago

    xdg-open FILE - opens a file with the default GUI app. I use it for example to open PDFs and PNG. I have a one letter alias for that. It can also open a file explorer in the current directory xdg-open . . Should work on any compliant desktop environment (gnome/kde).

  • pemptago@lemmy.ml
    link
    fedilink
    English
    arrow-up
    0
    ·
    3 months ago

    I went a little overboard and wrote a one-liner to accurately answer this question

    history|cut -d " " -f 5|sort|uniq -c|sort -nr|head -5
    

    Note: history displays like this for me 20622 2023-02-18 16:41:23 ls I don’t know if that’s because I set HISTTIMEFORMAT='%F %T ' in .bashrc, or if it’s like that for everyone. If it’s different for you change -f 5 to target the command. Use -f 5-7 to include flags and arguments.

    My top 5 (since last install)

       2002 ls
       1296 cd
        455 hx
        427 g
        316 find
    

    g is an alias for gitui. When I include flags and arguments most of the top commands are aliases, often shortcuts to a project directory.

    Not to ramble, but after doing this I figured I should alias the longest, most-used commands (even aliasing ls to l could have saved 2002 keystrokes :P) So I wrote another one-liner to check for available single characters to alias with:

    for c in a b c d e f g h i j k l m n o p q r s t u v w x y z; do [[ ! $(command -v $c) ]] && echo $c; done
    

    In .bash_aliases I’ve added alias b='hx ${HOME}/.bash_aliases' to quickly edit aliases and alias r='source ${HOME}/.bashrc' to reload them.

      • pemptago@lemmy.ml
        link
        fedilink
        English
        arrow-up
        0
        ·
        3 months ago

        Yup! Migrated from VSCodium; wanted to learn a modal editor but didn’t have the time or confidence to configure vim or neovim. It’s been my go-to editor for 2+ years now.

        • MigratingtoLemmy@lemmy.world
          link
          fedilink
          English
          arrow-up
          0
          ·
          3 months ago

          I’ve been using vi (just the basics) for ~4 years, I don’t think I could be arsed to pick up the keybindings the other way around lol. I’ve heard very good things about Helix, of course

          • HeartyOfGlass@lemm.ee
            link
            fedilink
            English
            arrow-up
            0
            ·
            3 months ago

            As another longtime Vi user - I had a hell of a time & wound up switching back lol

            I think for a lot of folks Helix would be intuitive. Vi has her hooks in me, though.

      • anonymouse2@sh.itjust.works
        link
        fedilink
        arrow-up
        0
        ·
        3 months ago

        Let’s say, for example, you have a directory of files named x01-001; x01-002; x02-001; x02-002; x03-001… and so on.

        I want to create subdirectories for each ‘x’ iteration and move each set to the corresponding subdirectory. My loop would look like this:

        for i in {1…3}; do mkdir Data_x0$i && mv x0$i* Data_x0$i; done

        I’ve also been using it if I need to rename large batches of files quickly.

        • friend_of_satan@lemmy.world
          link
          fedilink
          English
          arrow-up
          0
          ·
          3 months ago

          Check out rename

          $ touch foo{1..5}.txt
          $ rename -v 's/foo/bar/' foo*
          foo1.txt renamed as bar1.txt
          foo2.txt renamed as bar2.txt
          foo3.txt renamed as bar3.txt
          foo4.txt renamed as bar4.txt
          foo5.txt renamed as bar5.txt
          $ rename -v 's/\.txt/.text/' *.txt
          bar1.txt renamed as bar1.text
          bar2.txt renamed as bar2.text
          bar3.txt renamed as bar3.text
          bar4.txt renamed as bar4.text
          bar5.txt renamed as bar5.text
          $ rename -v 's/(.*).text/1234-$1.txt/' *.text
          bar1.text renamed as 1234-bar1.txt
          bar2.text renamed as 1234-bar2.txt
          bar3.text renamed as 1234-bar3.txt
          bar4.text renamed as 1234-bar4.txt
          bar5.text renamed as 1234-bar5.txt
          
          • electric_nan@lemmy.ml
            link
            fedilink
            arrow-up
            0
            ·
            3 months ago

            In your second example, it looks like you have an escape character before the first ‘dot’, but not the second one. Is this a typo, or am I misunderstanding the command?

            • friend_of_satan@lemmy.world
              link
              fedilink
              English
              arrow-up
              0
              ·
              edit-2
              3 months ago

              It’s not a typo. The first section of the regex is a matching section, where a dot means “match any character”, and an escaped dot is a literal dot character. The second section is the replacement section, and you don’t have to escape the dot there because that section isn’t matching anything. You can escape it though if it makes the code easier to read.

              rename is written in Perl so all Perl regular expression syntaxes are valid.

              However, your comment did make me realize that I hadn’t escaped a dot in the third example! So I fixed that.

        • tetris11@lemmy.ml
          link
          fedilink
          arrow-up
          0
          ·
          edit-2
          3 months ago

          xargs is also fun, and assuming your for loop doesn’t update anything out of the loop, is highly parallelizable

          The equivalent of the same command, that handles 10 tasks concurrently, using %% as a variable placeholder.

          seq 1 100 | xargs -I'%%' -P 10 sh -c 'mkdir Data_X0%% && mv x0%%* Data_X0%%;'
          

          But for mass renaming files, dired along with rectangle-select and multicursors within Emacs is my goto.

    • JackbyDev@programming.dev
      link
      fedilink
      English
      arrow-up
      0
      ·
      3 months ago

      Is that easier than typing clear? Also, not sure why you’d say something like that about people’s age. Anyone using terminals today is often going to run into weird quirks of them being around for decades even if they’re young.

  • plumcreek@lemmy.ml
    link
    fedilink
    English
    arrow-up
    0
    ·
    3 months ago

    qmv -f do ${dir}

    … for quickly moving and renaming files. The default ‘qmv’ opens up your preferred text editor with a list of the source and destination name of the directory of files you want to move/rename. The ‘-f do’ tells the command we only want to see/edit the [d]estination [o]nly. If you need to rename/move a bunch of files, it’s much quicker to do it in vim (at least for me).