GNU bug report logs - #5926
feature request: mv -p to create missing target dir

Previous Next

Package: coreutils;

Reported by: Rodolfo Borges <rodolfo.borges <at> gmail.com>

Date: Sun, 11 Apr 2010 14:10:02 UTC

Severity: wishlist

Done: Bob Proulx <bob <at> proulx.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Jim Meyering <jim <at> meyering.net>
To: Stefano Lattarini <stefano.lattarini <at> gmail.com>
Cc: 5926 <at> debbugs.gnu.org, Rodolfo Borges <rodolfo.borges <at> gmail.com>, bob <at> proulx.com
Subject: bug#5926: feature request: mv -p to create missing target dir
Date: Mon, 26 Apr 2010 11:32:27 +0200
Stefano Lattarini wrote:
> 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.

Using env is the most portable, at the expense
of a fork (compared to bash's "command"):

  env mv "$@"




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.