Você precisa citá-lo para protegê-lo da expansão do shell.
ls ~ # list your home directory
ls "~" # list the directory named ~
ls \~ # list the directory named ~
A mesma coisa com rm , rmdir , etc. O shell muda ~ para /home/greg antes de passá-lo para os comandos, a menos que você cite ou escape dele. Você pode ver isso com echo :
anthony@Zia:~$ echo ~
/home/anthony
anthony@Zia:~$ echo \~
~
Você precisará ser cuidadoso, porque rm -Rf ~ seria um desastre. Sugiro que, se tiver dúvidas, primeiro renomeie-o ( mv -i \~ newname ), então você pode examinar newname para ter certeza de que deseja excluí-lo e excluí-lo.