Eu percebi isso. Tudo o que fiz foi mudar o nome para que ele começasse com o .., e isso o escondia do comando "ls".
Eu pensei que eu estava movendo um subdiretório para cima, para que fosse um irmão de seu pai. Mas agora é completamente invisível. Já passou?
Aqui está o comando que eu usei:
mv parentdir/mydir ../mydir
Se ../mydir já existia, você o moveu para ../mydir/mydir . Caso contrário, está em ../mydir .
Em um comando como esse, os caminhos são relativos ao diretório de trabalho atual (a menos que o caminho comece com / , nesse caso, é um caminho absoluto). Então o seu comando não disse mv para tornar mydir um irmão de parentdir , você disse para fazer mydir um irmão do diretório de trabalho.
O que você queria fazer era um desses dois:
# make parentdir/mydir to be a sibling of parentdir
$ mv parentdir/mydir ./
$ ls -1
parentdir
mydir
# make parentdir/mydir to be a sibling of parentdir
$ ( cd parentdir ; mv mydir ../ )
$ ls -1
parentdir
mydir
Ao executar um comando como cp , scp , mv e similares, em que o segundo argumento é um diretório, é mais seguro finalizá-lo com /. , para que você e o comando saibam que você está procurando por um diretório lá. Por exemplo, em vez de fazer isso:
$ mv /opt/foo /temp
Eu faria:
$ mv /opt/foo /temp/.
e receba a mensagem de erro:
mv: cannot move '/opt/foo' to '/temp/.': No such file or directory
porque, claro, eu quis digitar /tmp/. . Se eu tivesse executado o primeiro comando, teria mudado silenciosamente - e sem querer - o nome do diretório.
Tags command-line linux