What's the difference between 'cp -rvf /bin/ ./rmlater/' and 'cp -rvf /bin ./rmlater/'?
Say I’d like to copy the whole /bin into my ./rmlater folder
cp -rvf /bin/ ./rmalterworks as what I want
- But I just found, without the trailing slash of source,
cp -rvf /bin ./rmaltergives only an empty folder
- However when I tried another source folder without the trailing slash,
cp -rvf ./Desktop ./rmlater/and it still copys the files
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' ...
So any expert could let me know what’s the matter?
/bin is a symlink to
/bin with no trailing slash corresponds to the symlink itself,
/bin/ with a trailing slash corresponds to the target directory.
On top of that, by default
cp doesn’t follow symlinks when recursing by default. So
cp -rvf /bin/ ./rmalter
copies the directory (and its contents), but
cp -rvf /bin ./rmalter
only copies the symlink.