Does anybody else have a library of saved commands/scripts? What’s in it? How do you organize it? Is there anything you’d want to share that other people might find helpful?

I do. I keep it in VS Code and store complicated (for me) stuff that I can’t remember or worry I might not.

  1. Playlist download with yt-dlp with all my best settings, adding playlist index as track number.

  2. Ffmpeg metadata cleaner for music. Searching title for a bunch of specific strings to remove, setting the band, album, etc. and saving these in a new folder.

  3. Desktop file contents for when I need to create one for an appimage

  4. The script I used to bind audio output switching to a hotkey

  5. How to use ADB for when android blocks sideloading the normal way and I inevitably forget what Android Debug Bridge is or how to use it.

Linux Mint btw. Also yes, I am a noob.

  • Egonallanon@feddit.uk
    link
    fedilink
    arrow-up
    5
    ·
    8 hours ago

    My go to is sticking what I can in my profile and making aliased commands for them all. Don’t have many for Linux quite yet but my PS profile is lapsed with dozens of these.

    • ALoafOfBread@lemmy.mlOP
      link
      fedilink
      arrow-up
      2
      ·
      7 hours ago

      This should be the next step for me. When you do aliased commands, can they take arguments? Like to download a playlist with yt-dlp, could i do download-playlist [URL]?

      • fratermus@piefed.social
        link
        fedilink
        English
        arrow-up
        2
        ·
        edit-2
        6 hours ago

        When you do aliased commands, can they take arguments? Like to download a playlist with yt-dlp, could i do download-playlist [URL]?

        They don’t take arguments in the sense that functions do but in bash at least they are passed on as part of the expanded string. Pasted from bash:

        alias argtest='echo arg is'  
        argtest foo  
        arg is foo  
        

        So yes you could alias your yt-dlp commands and invoke the alias with the URL.

        • thingsiplay@lemmy.ml
          link
          fedilink
          arrow-up
          1
          ·
          7 hours ago

          alias e='echo "${@}"' Wait a second, Bash does not process arguments in alias. This is an incredible trick new to me! All the years I was writing a function to accomplish that. I wonder if there is any drawback to this technique.

      • thingsiplay@lemmy.ml
        link
        fedilink
        arrow-up
        1
        ·
        edit-2
        6 hours ago

        Aliases themselves do not take arguments. You can write Bash function for that case. Here is a “simple” example. I leave the comments there explaining the command too:

        treegrep
        treegrep() {
            # grep:
            #   --recursive             like --directories=recurse
            #   --files-with-match      print only names of FILEs with selected lines
            # tree:
            #   --fromfile              Reads paths from files (.=stdin)
            #   -F                      Appends '/', '=', '*', '@', '|' or '>' as per ls -F.
        
            grep --recursive --files-with-match "${@}" |
                tree --fromfile -F
        }
        
        yesno

        You can also set variables to be local to the function, meaning they do not leak to outside or do not get confused with variables from outside the function:

        # usage: yesno [prompt]
        # example:
        #   yesno && echo yes
        #   yesno Continue? && echo yes || echo no
        yesno() {
            local prompt
            local answer
            if [[ "${#}" -gt 0 ]]; then
                prompt="${*} "
            fi
            read -rp "${prompt}[y/n]: " answer
            case "${answer}" in
            [Yy0]*) return 0 ;;
            [Nn1]*) return 1 ;;
            *) return 2 ;;
            esac
        }