Hello,
Currently, 'cp', 'mv' and 'ln' share the same basic syntax, that is to
say the following:
cp [OPTION] SOURCE DEST
mv [OPTION] SOURCE DEST
ln [OPTIONS] TARGET LINK_NAME
Which is the same exact rule, and is consistent.
While this is perfect for 'cp' and 'mv', I claim that it shouldn't be
the case for 'ln'.
This analysis comes from experience, a discussion from linuxfr.org
(French), and also from a design point of view.
These 3 operations are verbs, and we could read those commands as "copy
source to destination", "move source to destination" and "link source to
destination".
But a big part of the French population at least, would tend to read the
link verb as "create a link (named) A pointing on B". This is annoying,
because it is quite the opposite, and either people make the mistake and
retry, or need to read the "ln --help" each time, or create a way to
remember what is the right order, but in the end tend to confuse, and
make a mistake too.
Therefore, I would like to offer the possibility to use "ln" with
arguments in the reverse order, given an option, say "--reverse-order/-R".
In this case, the command would act like this:
ln --reverse-order LINK_NAME TARGET
This new option would ensure that no script or tool depending on "ln"
would break, while allowing some people to use it this way.
Jiehong