GNU bug report logs -
#5926
feature request: mv -p to create missing target dir
Previous Next
Full log
Message #25 received at 5926 <at> debbugs.gnu.org (full text, mbox):
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
This bug report was last modified 10 years and 218 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.