假设我想将整个 /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
仅复制符号链接。