Symlink

試圖找到 –strip-trailing-slashes 的例子

  • July 1, 2020

我發現命令的--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.

我誤解了這個選項嗎?是否有任何範例說明如何使用此選項?

該命令mv有時可能會變得混亂。

兩個mv參數的命令有兩種選擇:

mv one two

一,也是預設的,是將文件 one移動到目錄two中。

如果目錄two不存在,則mv one two可以解釋為將文件 one移動到文件 two(重命名)。當然,如果文件two已經存在,可能會提示使用者是否要覆蓋它(或其他選項)。

似乎使用該選項時--strip-trailing-slash,其含義是鎖定將one 文件移動到目錄中(而不是重命名)。

如果您在使用時仍想重命名目錄--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

引用自:https://unix.stackexchange.com/questions/595994