Elektrine lite

← Feed

@thingsiplay@lemmy.ml

Post #2206260

2026-04-01 15:04 UTC

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 } ``` :::

Replies (1)

  • @ALoafOfBread@lemmy.ml 2026-04-02 13:44

    This is what I ended up doing, and it works great. I knew about aliases, but didn't really use them at all - I didn't know about bash functions though. So now I have a few functions in .bashrc for short things and am just aliasing shell scripts for easy access to more complex tbings I don't want cluttering the file

    Open ##2206262