Post #2206257
2026-04-01 14:26 UTC
Replies (3)
-
@fratermus@piefed.social 2026-04-01 15:50
> 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.
-
@MyNameIsRichard@lemmy.ml 2026-04-01 14:53
Yeah. This is my alias to download music from YouTube `alias yt-dmus='yt-dlp -x --audio-format opus "$@"'`
-
@thingsiplay@lemmy.ml 2026-04-01 15:04
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: ::: spoiler treegrep ```bash 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 } ``` ::: ::: spoiler 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: ```bash # 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 } ``` :::