Dans une fenêtre de terminal, j'ai tapé:
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 sert juste pour utiliser une machine Windows juste avant.
Quelqu'un sait où il aurait pu aller?
Il n’est allé nulle part, c’est dans le répertoire courant. Il a été renommé ....
(quatre points).
Comme tout nom de fichier ayant un .
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
).
Laissez-moi le décomposer, vous avez exécuté mv filename ..\..
, les deux premiers points signifieraient le répertoire parent s'il était ../
, mais vous avez utilisé la barre oblique inverse ..\
qui indique à Shell d'échapper au caractère suivant, mais un 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 aurez donc quatre points ....
en tant que nom de fichier.
Pour revenir au nom précédent (d'origine), exécutez mv .... filename
.
Exécutez mv .... filename
pour le renommer. (mv ..\.. filename
fonctionnerait aussi, mais le \
est superflu - comme c'était le cas dans votre commande d'origine.)
.
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.\
en tant que 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 mise en œuvre des entrées .
et ..
). Par conséquent, dans votre commande, \.
était équivalent à .
..
. Étant donné que ....
commence par .
, l'exécution de ls
sans l'indicateur -A
ou -a
ne l'a pas révélé.il est toujours dans le même répertoire, juste un fichier 'caché' maintenant. Vous pouvez le récupérer par "mv .... nomfichier".