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