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.
-
Playlist download with yt-dlp with all my best settings, adding playlist index as track number.
-
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.
-
Desktop file contents for when I need to create one for an appimage
-
The script I used to bind audio output switching to a hotkey
-
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.


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.
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]?
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 fooSo yes you could alias your yt-dlp commands and invoke the alias with the URL.
Yeah. This is my alias to download music from YouTube
alias yt-dmus='yt-dlp -x --audio-format opus "$@"'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.Not that I know of
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 }