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
  • 689
  • 3
  • 11
  • 20
  • `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
Kamil Maciorowski
  • 69,815
  • 22
  • 136
  • 202
-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
  • 1