“arquivo mv” e agora está faltando

32

Em uma janela de terminal, digitei:

mv filename ..\..      [Note the wrong slash.]

Agora não consigo encontrar. Foi. Eu executei algumas pesquisas e examinei arquivos apagáveis recuperáveis. Nada. Poof. Me serve bem para usar uma máquina Windows antes.

Alguém sabe onde ele poderia ter ido?

    
por John 22.04.2015 / 00:10

3 respostas

70

Não deu em nada, está no diretório atual. Foi renomeado como .... (quatro pontos).

Como qualquer nome de arquivo com . na frente é tratado com um arquivo oculto, ele fica oculto. Então, se você fizer ls , você não encontrará. Como sempre, você precisa da opção -a (ou -A ) de ls para visualizar os arquivos ocultos, ou seja, ls -a (ou ls -A ) para vê-los.

Deixe-me dividi-lo, você executou mv filename ..\.. , os dois primeiros pontos significariam o diretório pai se ele fosse ../ , mas você usou a barra invertida ..\ , o que indica que o shell escapará do próximo caractere, mas O ponto . não tem nenhum significado especial para shell. Então, ele tratará como um literal . e o último . também adicionado, então você tem quatro pontos .... como um nome de arquivo.

Para voltar ao nome anterior (original), execute mv .... filename .

    
por heemayl 22.04.2015 / 00:17
13

Execute mv .... filename para renomeá-lo. ( mv ..\.. filename também funcionaria, mas o \ é supérfluo - como no seu comando original).

  • O arquivo não foi excluído, e é por isso que a pesquisa por arquivos apagados recuperáveis não o encontrou.
  • Como no Windows, as entradas . e .. estão presentes em todos os diretórios e referem-se aos diretórios "atual" e "pai" respectivamente. Mas ao contrário do Windows, sequências de mais de dois pontos não têm nenhum significado especial. Embora seja incomum, você está perfeitamente livre para nomear um arquivo comum com um nome que consiste inteiramente de pontos, desde que tenha pelo menos três pontos.
  • Ao contrário do Windows, no Ubuntu, o shell usa \ como um caractere de escape, garantindo que o shell trate o caractere a seguir, literalmente, em vez de fornecer um significado especial. O caractere . não possui um significado especial no shell (em particular, o shell não é responsável por fazer com que as entradas . e .. funcionem). Portanto, no seu comando, \. era equivalente a . .
  • Como heemayl diz , por padrão a maioria dos utilitários não mostra arquivos e diretórios cujos nomes começam com . . Como .... começa com . , executar ls sem a sinalização -A ou -a não revelou isso.
por Eliah Kagan 22.04.2015 / 00:24
5

ainda está no mesmo diretório, apenas um arquivo 'oculto' agora. Você pode recuperá-lo por "mv .... filename".

    
por Bruce 22.04.2015 / 00:21