bashzshaliasconditional-operatorzsh-alias

Bash Alias with ternary?


Still dipping my toes in bash coding and trying to crate a 1 liner alias to:

I've gotten this far with 2 different versions, but they both result in the same thing; WITH a parameter added it works fine; without a parameter it isn't getting the * added and the command says it requires a parameter. So for some reason the "if true" part is not filling the $a var, but the "else" part does fill it.

alias perms="a=$(if [ -z '$@' ]; then *; else $@; fi) stat -c '%a - %n' $a"

alias perms="a=$([[ -z '$1' ]] && '*' || $1) stat -c '%a - %n' $a"

Solution

  • This should be a function. (Most things people try to use aliases for should be functions.)

    perms () {
      if [ $# -eq 0 ]; then
        stat -c '%a -%n' *
      else
        stat -c '%a - %n' "$@"
      fi
    }