我发现--strip-trailing-slashes
该命令的选项mv
令人困惑。
根据 GNU 官方手册,此选项“当源参数可能有尾部斜杠并指定指向目录的符号链接时很有用”。所以我尝试以下操作:
$ mkdir a
$ ln -s a b
$ mv --strip-trailing-slashes b/ c
我得到了mv: cannot move 'b' to 'c': Not a directory
,而我希望b
被重命名为c
.
我是否误解了这个选项?有如何使用此选项的示例吗?
答案1
该命令mv
有时可能会变得混乱。
mv
命令有两种选择二参数:
mv one two
其一,也是默认设置,是将文件 one
进入目录two
。
如果目录two
不存在,则mv one two
可能被解释为移动文件 one
到文件 two
(重命名)。当然,如果文件two
已经存在,可能会提示用户是否要覆盖它(或其他选项)。
好像这个选项--strip-trailing-slash
用的时候意思是lock into moveone
文件变成一个目录(不是重命名)。
如果您在使用时仍想重命名目录--strip-trailing-slash
,则必须声明不存在目录:
mv -T one two
例子:
$ mkdir one
$ ln -s one two
$ mv two/ yes
mv: cannot move 'two/' to 'yes': Not a directory
$ mv --strip-trailing-slash two/ yes
mv: cannot move 'two' to 'yes': Not a directory
$ mv -T --strip-trailing-slash two/ yes
$ ls -la
total 12
drwxr-xr-x 3 isaac isaac 4096 Jul 01 03:38 .
drwxr-xr-x 6 isaac isaac 4096 Jul 01 03:37 ..
drwxr-xr-x 2 isaac isaac 4096 Jul 01 03:38 one
lrwxrwxrwx 1 isaac isaac 3 Jul 01 03:38 yes -> one