Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 06/06/2015, à 12:59

LePetitApprenti

Explication ls -C [RESOLU]

Bonjour,
Je regarde gentiment l'ensemble des options de la commande ls et je ne comprends pas ce que fait l'option -C
Dans la man on peut lire la chose suivante,

-C     list entries by columns

Je ne comprends pas ce que veux dire le concept d’entrée.
Ce que j'avais compris du concept d'entrée au premier abord c'est que cela liste les différents répertoires/fichiers permettant d’accéder a l'endroit ou l'on se trouve.
Pour vérifier cela j'ai fait la chose suivant:

Dans le bureau j'ai créé deux répertoires qui sont Testfils1 et Testfils2 et j'ai mis exactement le même contenu dans ces deux répertoires via un copier coller.
Ce contenu est un répertoire que j'ai appelé Toto.

Pour mieux visualiser ci dessous:

pierro@Cocotte:~/Bureau/Test/Testfils1/Toto$
pierro@Cocotte:~/Bureau/Test/Testfils2/Toto$

Ensuite je me place dans Toto (peu importe lequel) et lorsque je fait la commande ls -aC je pensais voir, la liste des entrées permettant d'accéder à Toto, c'est a dire, les deux répertoires Testfils1, Testfils2 et le répertoire courant Toto.
Mais il n'en n'ai rien à chaque fois que je fais la commande ls -aC peux importe ou je suis j'ai toujours le même résultat qui est ci dessous,

pierro@Cocotte:~/Bureau/Test/Testfils1/Toto$ ls -aC
.  ..

Si j'ai bien compris le "." et le ".." symbolise le répertoire courant et le répertoire père c'est a dire "Toto" et "Testfils1" mais pourquoi je en vois pas également "Testfils2" ?
Testfils2 est bien une entrée me permettant d’accéder au répertoire Toto.

Sinon je ne comprends pas l utilité d'une telle commande.
Es ce que quelqu 'un peux m'éclairer sur le sujet ?

Dernière modification par LePetitApprenti (Le 10/06/2015, à 22:00)

Hors ligne

#2 Le 06/06/2015, à 13:11

pingouinux

Re : Explication ls -C [RESOLU]

Bonjour,
Tes 2 répertoires Toto sont 2 répertoires différents, même s'ils ont le même nom.
Les entrées sont ici les fichiers et répertoires se trouvant dans ton répertoire courant. L'option -C les liste par colonnes (il faut lire d'abord la 1ère colonne, puis la 2ème, ...).
Si tu veux trouver les différents chemins menant aux répertoires Toto (à partir de Bureau, par exemple) :

find ~/Bureau -type d -name Toto

Ajouté :
Une commande pratique pour voir l'arborescence :

tree ~/Bureau

Dernière modification par pingouinux (Le 06/06/2015, à 13:14)

Hors ligne

#3 Le 06/06/2015, à 13:50

credenhill

Re : Explication ls -C [RESOLU]

hello
si la sortie de ls est redirigée, ls affiche une seule colonne, avec -C on maintient des colonnes

$ ls
a  b  c  d  e
$ ls | more
a
b
c
d
e
$ ls -C | more
a  b  c  d  e
$ ls > x
$ cat x
a
b
c
d
e
x
$ ls -C > x
$ cat x
a  b  c  d  e  x

Dernière modification par credenhill (Le 06/06/2015, à 13:54)

Hors ligne

#4 Le 06/06/2015, à 15:23

LePetitApprenti

Re : Explication ls -C [RESOLU]

pingouinux, je comprends mieux maintenant c'est vrai que si je fait une modification dans un des répertoires Toto.
Ces mêmes modifications ne se font pas dans l'autre.
Ceci prouve bien que du point de vue du FS les deux répertoires sont bien distincts.

Si le nom n'indique pas le répertoire comment alors connaître le "vrai répertoire" dans lequel on se trouve ?

D'ailleurs les inodes sont bien différents:

pierro@Cocotte:~/Bureau/Test/Testfils1$ ls -i
1052430 Toto
pierro@Cocotte:~/Bureau/Test/Testfils2$ ls -i
1052431 Toto

credenhill,
L'affichage de ls par défaut se fait par colonne c'est pour ça qu'on ne vois pas de différence entre entre ls et ls -C comme ci dessous,

pierro@Cocotte:~$ ls 
Bureau  Documents  Images  Modèles  Musique  Public  Téléchargements  Vidéos
pierro@Cocotte:~$ ls -C
Bureau  Documents  Images  Modèles  Musique  Public  Téléchargements  Vidéos

Mais on la voit très bien avec l’opérateur d'indirection, merci de me l'avoir montrer smile

Les fichiers "." et ".." sont en réalité des liens physiques qui pointe sur le même inode.
Pouvez vous me le confirmer, comme je découvre je ne suis pas très sure de moi.

Si je veux que les modifications de l'un se fasse également sur l'autre il faut que les deux fichiers aient le même inode.
Et si je veux que ces deux fichiers soient à des endroits différents dans l'arborescence il faut qu'il aient des répertoires différents.
Comment faire cela alors ?

Je sais que l'on dévie de la question initiale mais ceci est très liés et va à l'encontre de une seule question a la fois.
Préféreriez vous que je face une autre discussion ?

Hors ligne

#5 Le 06/06/2015, à 16:10

pingouinux

Re : Explication ls -C [RESOLU]

Si le nom n'indique pas le répertoire comment alors connaître le "vrai répertoire" dans lequel on se trouve ?

pwd

Les fichiers "." et ".." sont en réalité des liens physiques qui pointe sur le même inode.

Non. Il peut arriver que le n° d'inode soit le même quand . et .. sont sur 2 partitions différentes. Par exemple / et /tmp quand /tmp est sur une partition à part.

Si je veux que les modifications de l'un se fasse également sur l'autre il faut que les deux fichiers aient le même inode.

Oui pour les liens physiques

ln rep1/fichier rep2/fichier

Non pour les liens symboliques

ln -s rep1/fichier rep2/fichier

Hors ligne

#6 Le 06/06/2015, à 21:37

LePetitApprenti

Re : Explication ls -C [RESOLU]

La commande pwd retourne un chemin absolu et non un répertoire donc la je ne te suis pas pingouinoux roll

Pour l'instant essayons de nous concentrer sur un et un seul FS.
Je galère déjà avec un seul lol
Mais je range cela dans un coin de ma tête wink

Ce que j'ai compris,
les fichiers "." et ".." sont des fichiers qui pointent touts deux vers le meme fichier Toto.
les fichier "." et ".." sont differents car "." est le nom du fichier Toto dans le repertoire Toto alors que ".." est le nom du fichier Toto dans le repertoire parent.

On dit alors que . et .. sont des liens car ils ont des noms différents mais pointent bien vers le même fichier qui est Toto.

Lorsque je fais un cd .. voici ce qui se passe en fin ce que j'ai compris:
- le FS grâce à la table des répertoires vois la correspondance entre le nom c'est a dire ".." et le numéro d'inode du fichier
- le FS connais donc le numéro d'inode du répertoire parent et l on peux se placer dedans

Es ce que c'est bien cela ou bien je ne comprends rien ?

Mais comment le FS connait touts les fichiers qui sont contenu dans un repertoire ?

Micp, merci pour toutes ces précision,  jusqu’à allocation des processeurs de la commande ls et la modification du flux de sorti mais je n'ai pas vraiment compris grand chose.
C'est trop poussé pour moi pour le moment.
Je veux juste comprendre le principe de fonctionnement et ensuite je verrai les formats d'affichage et les commandes.

Hors ligne

#7 Le 06/06/2015, à 21:49

MicP

Re : Explication ls -C [RESOLU]

LePetitApprenti a écrit :


Micp, merci pour toutes ces précision,  jusqu’à allocation des processeurs de la commande ls et la modification du flux de sorti mais je n'ai pas vraiment compris grand chose.
C'est trop poussé pour moi pour le moment.
Je veux juste comprendre le principe de fonctionnement et ensuite je verrai les formats d'affichage et les commandes.

Ok, je vais alléger le fil en supprimant mon message précédent et je garde son contenu chez moi au cas où.
C'est pas la peine d'alourdir le fil, pour toi et ceux qui le liraient plus tard, avec un énorme message comme ça. smile

Hors ligne

#8 Le 06/06/2015, à 22:13

LePetitApprenti

Re : Explication ls -C [RESOLU]

MicP, c’était super intéressant et c'est lorsque l'on ne comprends pas des choses que ca donne envie d'aller plus loin.
Libre a toi de le laisser, en tout cas merci de me l'avoir montrer.

Es ce que tu peux me dire comment le FS connaît les fichiers qui sont dans un repertoire ?

Hors ligne

#9 Le 07/06/2015, à 06:41

MicP

Re : Explication ls -C [RESOLU]

...Es ce que tu peux me dire comment le FS connaît les fichiers qui sont dans un repertoire ?...

Je ne sais pas comment répondre à cette question sans expliquer le fonctionnement des systèmes de fichiers puisque c'est lui qui déterminera comment il va gérer les répertoires et les fichiers qu'on lui donnera et que c'est à nous de décider quels fichiers nous mettrons dans les répertoires que nous créeront.

Dernière modification par MicP (Le 07/06/2015, à 06:43)

Hors ligne

#10 Le 10/06/2015, à 21:59

LePetitApprenti

Re : Explication ls -C [RESOLU]

Je pense avoir compris comment fonctionne désormais un système de fichier du moins sur le principe.
Vu ce que je fais pour le moment cette explication me suffit.
La réponse a la question était simple le FS connaît l'inode du fichier parent ".."
Ensuite le système de fichier consulte la table des répertoires et ainsi connaît le nom qui correspond a cet inode.
Il va ensuite rechercher/afficher touts les inodes qui ont ce nom en commun.
Ceci correspond simplement à la liste des fichiers qui sont dans un repertoire fixé.
Je pense que c est pas trop mal comme explication sans rentrer dans les appels systèmes et tt le reste avec une vu paysage big_smile

Hors ligne