“cp -rvf /bin/ ./rmlater/”和“cp -rvf /bin ./rmlater/”之间有什么区别?

“cp -rvf /bin/ ./rmlater/”和“cp -rvf /bin ./rmlater/”之间有什么区别?

假设我想将整个 /bin 复制到我的 ./rmlater 文件夹中

  • cp -rvf /bin/ ./rmalter按照我想要的方式工作
  • 但我刚刚发现,没有源尾部斜杠,cp -rvf /bin ./rmalter只给出一个空文件夹
  • 但是,当我尝试另一个没有尾部斜杠的源文件夹时,cp -rvf ./Desktop ./rmlater/它仍然复制文件
debian$ cp -rvf /bin ./rmlater/
'/bin' -> './rmlater/bin'
debian$ find ./rmlater/
./rmlater/
./rmlater/bin
debian$ rm -rvf rmlater/*
removed 'rmlater/bin'
debian$ cp -rvf ./Desktop ./rmlater/
'./Desktop' -> './rmlater/Desktop'
'./Desktop/chrome_via_proxy.desktop' -> './rmlater/Desktop/chrome_via_proxy.desktop'
'./Desktop/chrome.desktop' -> './rmlater/Desktop/chrome.desktop'
...

所以有高手可以告诉我这是怎么回事吗?

答案1

/bin是到 的符号链接/usr/bin/bin没有尾部斜杠的对应于符号链接本身,/bin/有尾部斜杠的对应于目标目录。

最重要的是,默认cp情况下递归时不遵循符号链接。所以

cp -rvf /bin/ ./rmalter

复制目录(及其内容),但是

cp -rvf /bin ./rmalter

仅复制符号链接。

相关内容