2

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?

alex
  • 731
  • 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 07 '18 at 09: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 07 '18 at 09:58
  • @ctrl-alt-delor doesn't rm -r delete the contents of linked diretory? – alex Jun 07 '18 at 09: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 07 '18 at 10:05

2 Answers2

3

./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
-1

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.

WRJ
  • 101