“fichier mv” et maintenant il manque

32

Dans une fenêtre de terminal, je tapais:

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

Maintenant, je ne le trouve pas. Disparu. J'ai effectué des recherches et examiné des fichiers supprimés récupérables. Rien. Poof. me apprendra à l'aide d'une machine Windows juste avant.

Quelqu'un sait où il aurait pu aller?

    
posée John 22.04.2015 - 00:10
la source

3 réponses

70

Il n’est allé nulle part, c’est dans le répertoire courant. Il a été renommé en .... (quatre points).

Comme tout nom de fichier ayant . devant est traité comme un fichier caché, il est donc devenu caché. Donc, si vous faites ls , vous ne le trouverez pas. Comme toujours, vous avez besoin de l'option -a (ou -A ) de ls pour afficher les fichiers cachés, à savoir ls -a (ou ls -A ). "/ P>

Laissez-moi le décomposer, vous avez exécuté mv filename ..\.. , les deux premiers points signifieraient le répertoire parent s’il s’agissait de ../ , mais vous avez utilisé la barre oblique inverse ..\ qui indique que le shell échappe au caractère suivant, mais point . n'a pas de signification particulière pour shell. Ainsi, il le traitera comme un . littéral et le dernier . sera également ajouté. Vous avez donc quatre points .... comme un nom de fichier.

Pour revenir au nom précédent (d'origine), exécutez mv .... filename .

    
réponse donnée heemayl 22.04.2015 - 00:17
la source
13

Exécutez mv .... filename pour le renommer. ( mv ..\.. filename fonctionnerait aussi, mais le \ est superflu, comme dans votre commande d'origine.)

  • Le fichier n'a pas été supprimé. C'est pourquoi la recherche de fichiers supprimés récupérables ne l'a pas trouvé.
  • Comme dans Windows, les entrées . et .. sont présentes dans chaque répertoire et font référence aux répertoires "actuel" et "parent", respectivement. Mais contrairement à Windows, les séquences de plus de deux points n’ont aucune signification particulière. Bien que ce soit inhabituel, vous êtes parfaitement libre de nommer un fichier ordinaire avec un nom composé uniquement de points, à condition qu’il soit long d’au moins trois points.
  • Contrairement à Windows, dans Ubuntu, le shell utilise \ comme caractère d'échappement, garantissant que le shell traite littéralement le caractère suivant plutôt que de lui attribuer une signification particulière. Le caractère . n'a pas de signification particulière dans le shell (en particulier, le shell n'est pas responsable de la bonne utilisation des entrées . et .. ). Par conséquent, dans votre commande, \. était équivalent à . .
  • Comme "dit heemayl , la plupart des utilitaires ne montrent pas les fichiers et les répertoires dont le nom commence par . . Comme .... commence par . , exécuter ls sans le drapeau -A ou -a ne l'a pas révélé.
réponse donnée Eliah Kagan 22.04.2015 - 00:24
la source
5

il est toujours dans le même répertoire, juste un fichier 'caché' maintenant. Vous pouvez le récupérer par "mv .... nomfichier".

    
réponse donnée Bruce 22.04.2015 - 00:21
la source

Lire d'autres questions sur les étiquettes