Just a few obsevations on side issues...
Bob Proulx writes:
> Rodolfo Borges wrote:
>
> > cat <<EOF >> ~/.bashrc
> > function mv() {
> > local target="${!#}"
> > local dir
> > if [[ "$target" =~ '/$' ]]; then
> > dir="$target"
> > else
> > dir="$(dirname "$target")"
> > fi
> > test -d "$dir" || mkdir -vp "$dir"
> > $(which mv) "$@"
> > }
> > EOF
>
> Very good! I see that you have a solution to your problem.
>
> As a side comment I don't see the point of:
> > $(which mv) "$@"
I think that's needed because otherwise the shell function would end
up calling itself recursively, since it's named `mv' too.
> The 'which' command is another one of those simple but not very
> portable commands that does different things on different systems.
Since Rodolfo is assuming bash as his shell, he could have used:
$(type -P mv) "$@"
instead, which is more "portable" because it just uses bash builtins.
> In the simple case of reporting where the command is found on PATH
> the use here is redundant since the command would otherwise simply
> be found on PATH.
> mv "$@"
No, this would call the `mv' function, since shell functions take
precedence over external commands in bash.
Regards,
Stefano