Unlink (remove) directory symlink

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

Posted 2018-06-07T09:19:27.507

Reputation: 550

unlink is not the opposite of ls -s. It is basically same as rm (in this case. rm has more powers.). – ctrl-alt-delor – 2018-06-07T09:56:32.387

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 – 2018-06-07T09:58:05.070

@ctrl-alt-delor doesn't rm -r delete the contents of linked diretory? – alex – 2018-06-07T09:59:46.753

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 – 2018-06-07T10:05:53.790

Answers

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

Posted 2018-06-07T09:19:27.507

Reputation: 38 429

I see, this makes sense. And works obviously. Thanks – alex – 2018-06-07T09:25:15.497

-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

Posted 2018-06-07T09:19:27.507

Reputation: 1