Voici mon code terminal:
root@mehedi-Inspiron-1545:/home/mehedi/SD Card/sdcard/10.5.50.31:2121/PhoneStorage/Download# ls -al
total 46676
drwxrwxr-x 3 mehedi mehedi 4096 জুল 11 05:36 .
drwxrwxr-x 13 mehedi mehedi 4096 জুল 11 05:33 ..
-rw-rw-r-- 1 mehedi mehedi 83277 জুল 10 10:18 17861803_1540974315927302_7704865319494415873_n.jpg
drwxrwxr-x 2 mehedi mehedi 4096 জুল 10 10:18 Adobe Reader
-rw-rw-r-- 1 mehedi mehedi 18952 জুল 10 10:18 config.bin
-rw-rw-r-- 1 mehedi mehedi 407930 জুল 10 10:18 download_20170115_010150.jpeg
-rw-rw-r-- 1 mehedi mehedi 66275 জুল 10 10:18 DVB-T-w-Gliwicach-kierunki-2014.02.17.jpg
-rw-rw-r-- 1 mehedi mehedi 3395403 জুল 10 10:19 Nasi_Lemak,_Mamak,_Sydney.jpg
Quelqu'un peut-il maintenant me dire comment supprimer le dossier nommé. et .. ces deux ont été copiés depuis ma carte SD.
Ce sont des notations Linux standard pour le répertoire courant (.
) et le répertoire parent (..
). Ils n'ont rien à voir avec Android ou carte SD. Ce n'est qu'un comportement de système de fichiers standard, et ils existent pour chaque répertoire du système de fichiers.
$ pwd
/home/xieerqi/testdir/parent
$ ls -a
./ ../
# going to . directory doesn't do anything, you remain in same place
$ cd .
$ pwd
/home/xieerqi/testdir/parent
# going to .. brings you up one level to parent folder
$ cd ..
$ pwd
/home/xieerqi/testdir
Une exception importante est qu'avec /
répertoire racine, le ..
pointera vers lui-même, car il n'y a pas de répertoire supérieur vers lequel aller.
Vous ne pouvez pas non plus les supprimer (ce qui n'aurait aucun sens, car vous essayez de vous débarrasser de votre répertoire de travail actuel ou de son parent):
$ pwd
/home/xieerqi/testdir/parent
$ rm -r .
rm: refusing to remove '.' or '..' directory: skipping '.'
$
Alors, que devez-vous faire à leur sujet? Rien. Ils font partie du paquet Linux, pour ainsi dire. Ce n'est pas cassé, alors n'essayez pas de le réparer.
Utilisation fréquente de .
est via ./
notation. Cela peut être utilisé dans le cas où vous exécuteriez un script ou un exécutable dans votre répertoire de travail actuel comme ./myscript.sh
ou comme argument à commander, signifiant un fichier dans le répertoire courant, comme ls ./myfile.txt
. La dernière approche est souvent utilisée avec globstar pour étendre à plusieurs noms de fichiers dans le répertoire actuel, tels que ls ./*
. Cette approche est particulièrement utile avec les noms de fichiers qui peuvent contenir des -
et donc ces noms de fichiers peuvent être mal interprétés par des commandes comme arguments, tandis que ./-myfile.txt
évite ce problème.
Il est également important de noter que, puisque les noms de fichiers contenant le premier point sont considérés comme masqués sous Linux, ces deux répertoires de "pointeurs" peuvent être vus si vous spécifiez explicitement pour la commande que vous utilisez pour traiter les noms de fichiers masqués (sauf si votre commande, telle que find
le fait par défaut).
Voir aussi: https://unix.stackexchange.com/a/63087/85039
Ce sont des "liens durs" gérés par Linux lui-même.
Créons un répertoire et examinons ses détails:
$ mkdir dir1
$ ls -ld dir1
drwxrwxr-x 2 ravexina ravexina 4096 Jul 11 19:14 dir1/
faites attention au nombre "2", c'est le nombre de liens vers ce répertoire (dir1
) dont l'un est le nom du répertoire lui-même et l'autre est le .
à l'intérieur.
Créons un nouveau répertoire à l'intérieur de dir1
:
$ mkdir dir1/new-dir
maintenant regardez les détails de dir1:
$ ls -ld dir1
drwxrwxr-x 3 ravexina ravexina 4096 Jul 11 19:14 dir1/
Le nombre de liens est devenu "3", et c'est à cause de ..
à l'intérieur de new-dir
qui pointe vers le dir
.
Il existe différentes utilisations pour ces deux liens, par exemple avec ..
vous pouvez vous déplacer relativement dans les répertoires.
L'un des usages les plus importants de .
consiste à exécuter un script Shell dans un répertoire, que se passe-t-il lorsque vous exécutez un script nommé for.sh
juste en tapant son nom? eh bien, Shell pensera que vous essayez d'exécuter une commande nommée foo.sh
, il le recherchera, ne le trouvera pas et génère une erreur, en utilisant ./script
vous indiquez au Shell quel fichier vous souhaitez exécuter.