I did:

ln -s /DATA/ ./base_DATA/

and I'd like to unlink. Simply:

unlink ./base_DATA

but... unlink: cannot unlink './base_DATA': Is a directory

According to this answer (and many other online) the problem is usually the trailing space in the unlink command. But I get this error regardless.

Any ideas how to tackle this?

  • unlink is not the opposite of ls -s. It is basically same as rm (in this case. rm has more powers.). – ctrl-alt-delor Jun 7 '18 at 9:56
  • If using gnu ln then consider using the -t and -T option. They are designed to make the arguments to cp, mv, and ln unambiguous. – ctrl-alt-delor Jun 7 '18 at 9:58
  • @ctrl-alt-delor doesn't rm -r delete the contents of linked diretory? – alex Jun 7 '18 at 9:59
  • rm -r will remove a directory and everything in it. It will also remove a single file (including a symlink). rm can also take a list of filenames. unlink excepts one filename, and only removes single files. Note: nether delete, they remove/unlink directory entries. If a file has zero references (no entry in any directory, no open files), then it is deleted. – ctrl-alt-delor Jun 7 '18 at 10:05

./base_DATA/ is a normal directory that existed before. Your ln command created a symlink inside it. The symlink is ./base_DATA/DATA. You can unlink it:

unlink ./base_DATA/DATA
  • I see, this makes sense. And works obviously. Thanks – alex Jun 7 '18 at 9:25

on Red Hat, when you had directory A and did

ln -s A B

successfully, and now would like to unlink B do:

mv A AA

rm B

mv AA A

and you are back to your original directory name A without the soft link.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.