Let's say I have a function in Bash:
function ll {
command ls -l $*
}
so it is to make ll
works like ls -l
. Most of the cases, it will work, but
ls -l "ha ha"
can work for the file with name ha ha
, but
ll "ha ha"
will fail, because it is taken to be
ls -l ha ha
Is there a way to make this work? I think we could have made it
function ll {
command ls -l "$@"
}
(note that "$@"
is different from "$*"
, with "$@"
meaning individually quoted, while "$*"
means all quoted in one string)
But then, ll -t "ha ha"
would become ls -l "-t" "ha ha"
, which actually works, but is kind of weird, and I am not sure if it may break down in some cases.
Is there another way to make it work, and another thing is, I think in the function, command ls -l "$@"
and ls -l "$@"
is the same? (command
is just to run the program directly and not call any possible bash function to prevent recursion from happening?)