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.


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 }