web-dev-qa-db-fra.com

Que signifient les champs de la sortie ls -al?

La commande ls -al Affiche la sortie suivante;

-rwxrw-r--    10    root   root 2048    Jan 13 07:11 afile.exe

Quels sont tous les champs de l'affichage précédent?

240
Mr. White

Dans l'ordre de sortie;

-rwxrw-r--    1    root   root 2048    Jan 13 07:11 afile.exe
  • autorisations de fichiers,
  • nombre de liens,
  • le nom du propriétaire,
  • groupe de propriétaires,
  • taille du fichier,
  • heure de la dernière modification, et
  • nom de fichier/répertoire

Les autorisations de fichier sont affichées comme suit;

  • le premier caractère est - ou l ou d, d indique un répertoire, une ligne représente un fichier, l est un lien symbolique (ou lien logiciel) - type spécial de fichier
  • trois jeux de caractères, trois fois, indiquant les autorisations pour le propriétaire, le groupe et autres:
    • r = lisible
    • w = inscriptible
    • x = exécutable

Dans votre exemple -rwxrw-r--, cela signifie que la ligne affichée est:

  • un fichier normal (affiché comme -)
  • lisible, inscriptible et exécutable par le propriétaire (rwx)
  • lisible, accessible en écriture, mais non exécutable par groupe (rw-)
  • lisible mais non inscriptible ou exécutable par d'autres (r--)
236
Flyk

La sortie de la commande "ls" dépend de la version de "ls", des options utilisées, de la plate-forme utilisée, etc. Il ressort de votre exemple que vous l'utilisez à partir d'un un * x typique (tel que Linux), et probablement en utilisant une version "ls" moderne typique. Dans quel cas:

-rwxrw-r--    10    root   root 2048    Jan 13 07:11 afile.exe
?UUUGGGOOOS   00  UUUUUU GGGGGG ####    ^-- date stamp and file name are obvious ;-)
^ ^  ^  ^ ^    ^      ^      ^    ^
| |  |  | |    |      |      |    \--- File Size
| |  |  | |    |      |      \-------- Group Name (for example, Users, Administrators, etc)
| |  |  | |    |      \--------------- Owner Acct
| |  |  | |    \---------------------- Link count (what constitutes a "link" here varies)
| |  |  | \--------------------------- Alternative Access (blank means none defined, anything else varies)
| \--\--\----------------------------- Read, Write and Special access modes for [U]ser, [G]roup, and [O]thers (everyone else)
\------------------------------------- File type flag

Je ne sais pas pourquoi votre nombre de liens est si élevé pour l'exemple de fichier que vous avez répertorié. Certaines plateformes ont une étrange notion de ce qui constitue un "lien". Ceux-ci incluent généralement des liens durs et des liens symboliques, ainsi que des entrées de répertoire (c'est pourquoi les répertoires ont souvent un nombre élevé de liens - son parent a un lien, le répertoire a un lien vers lui-même dans le ., et chacun de ses sous-répertoires a un lien de retour via ..).

Certaines versions et/ou drapeaux de ligne de commande listeront le nombre de blocs utilisés au lieu du nombre d'octets; un système de fichiers avec une taille de bloc de 1024 octets répertoriera toutes les tailles jusqu'à 1024 octets comme "1", ce qui signifie qu'un bloc est utilisé, de 1025 à 2048 comme "2", en utilisant 2 blocs, etc. Mais la liste des tailles de bloc par défaut (sans utiliser explicitement une option de ligne de commande) est rare sur la plupart des machines un * x modernes.

L'indicateur d'accès spécial/alternatif est généralement un espace vide, mais sur certaines plates-formes, il peut être utilisé pour indiquer qu'il existe des modes d'accès spéciaux/alternatifs (tels que les listes de contrôle d'accès et les descripteurs de sécurité sur WIN32, etc.), et varie considérablement - consultez votre manuel , pages de manuel, outil d'information ou autre.

Les indicateurs d'autorisations (mode) (UUUGGGOOO) sont trois ensembles de trois caractères, où le premier ensemble est "Utilisateur" (c.-à-d. Propriétaire), le deuxième ensemble est "Groupe" et le troisième ensemble est "Autres" (c.-à-d. Tout le monde ; toute personne qui n'est ni propriétaire ni groupe). Les trois indicateurs d'autorisations de chaque ensemble sont généralement r ou - ce qui signifie que l'utilisateur/le groupe/les autres peuvent lire le fichier (r) ou non (-), suivi de w ou - indiquant s'ils peuvent écrire dans le fichier (vous pouvez avoir des fichiers dans lesquels vous pouvez écrire, mais pas lire, aussi bizarre que cela puisse paraître!), et le troisième caractère est un indicateur "fourre-tout" pour les autres modes, généralement quelque chose comme x pour execute (pour les répertoires, cela signifie que vous pouvez essayer d'accéder au contenu du répertoire), ou - pour aucun. Parfois, vous pouvez rencontrer un s ou S pour les programmes setuid et/ou setgid, ou d'autres caractères moins courants; consultez votre documentation "ls" pour les caractères de mode qu'elle affichera.

Enfin, le tout premier caractère est le type de fichier; généralement l'un de: d pour le répertoire, l pour un lien symbolique (les liens durs s'affichent normalement sans caractère spécial), ou - pour un fichier normal. Il existe de nombreux autres types de fichiers, mais moins courants, pour divers systèmes de fichiers. Ces dix premiers caractères (type de fichier et autorisations) sont discutés sur Wikipedia . Encore une fois, votre documentation vous dira exactement quel type de types de fichiers votre commande prend en charge et affiche.

BTW, si vous ne trouvez pas de page man/info pour "ls" lui-même ("man ls"/"info ls"), essayez de chercher dans le paquet "coreutils" ("info coreutils"). Notez également que parmi les plates-formes les plus courantes, les plates-formes Microsoft ont tendance à ne pas se traduire très bien en sortie "ls", donc vous pouvez voir un comportement étrange, des indicateurs ou d'autres informations inhabituelles dans la sortie, selon la façon dont votre version de "ls" était compilé, contre quoi il était lié, etc.

Une autre mise en garde: l'horodatage du fichier correspond généralement à la date/heure de la dernière utilisation du fichier modifié, et non à l'heure de création du fichier. En fait, sur un système de fichiers un * x-ish, il n'y a pas d'enregistrement de l'heure de création du fichier; le champ ctime ne signifie PAS "heure de création" comme il le fait sur les systèmes de fichiers FAT/NTFS, mais signifie plutôt "heure de suspension de l'inode [C]" - l'heure à laquelle l'inode lui-même a été modifié pour la dernière fois. Les horodatages "mtime" (dernier [M] odifié) et atime (dernier [A] cédé/lu) sont les mêmes sur les deux systèmes - bien que la précision (FAT a une granularité de deux secondes, par exemple) et le fuseau horaire puissent varier .

98
C. M.

Sur les systèmes GNU, il est décrit dans la page d'informations ls de façon très détaillée. Tout ce que vous aviez à faire pour le trouver: il suffit d'ouvrir man ls et recherchez dans le lien de fin de la documentation complète: info coreutils 'ls invocation'.

En voici une citation:

`-l'
`--format=long'
`--format=verbose'
     In addition to the name of each file, print the file type, file
     mode bits, number of hard links, owner name, group name, size, and
     timestamp (*note Formatting file timestamps::), normally the
     modification time.  Print question marks for information that
     cannot be determined.

     Normally the size is printed as a byte count without punctuation,
     but this can be overridden (*note Block size::).  For example, `-h'
     prints an abbreviated, human-readable count, and
     `--block-size="'1"' prints a byte count with the thousands
     separator of the current locale.

     For each directory that is listed, preface the files with a line
     `total BLOCKS', where BLOCKS is the total disk allocation for all
     files in that directory.  The block size currently defaults to 1024
     bytes, but this can be overridden (*note Block size::).  The
     BLOCKS computed counts each hard link separately; this is arguably
     a deficiency.

     The file type is one of the following characters:

    `-'
          regular file

    `b'
          block special file

    `c'
          character special file

    `C'
          high performance ("contiguous data") file

    `d'
          directory

    `D'
          door (Solaris 2.5 and up)

    `l'
          symbolic link

    `M'
          off-line ("migrated") file (Cray DMF)

    `n'
          network special file (HP-UX)

    `p'
          FIFO (named pipe)

    `P'
          port (Solaris 10 and up)

    `s'
          socket

    `?'
          some other file type

     The file mode bits listed are similar to symbolic mode
     specifications (*note Symbolic Modes::).  But `ls' combines
     multiple bits into the third character of each set of permissions
     as follows:

    `s'
          If the set-user-ID or set-group-ID bit and the corresponding
          executable bit are both set.

    `S'
          If the set-user-ID or set-group-ID bit is set but the
          corresponding executable bit is not set.

    `t'
          If the restricted deletion flag or sticky bit, and the
          other-executable bit, are both set.  The restricted deletion
          flag is another name for the sticky bit.  *Note Mode
          Structure::.

    `T'
          If the restricted deletion flag or sticky bit is set but the
          other-executable bit is not set.

    `x'
          If the executable bit is set and none of the above apply.

    `-'
          Otherwise.

     Following the file mode bits is a single character that specifies
     whether an alternate access method such as an access control list
     applies to the file.  When the character following the file mode
     bits is a space, there is no alternate access method.  When it is
     a printing character, then there is such a method.

     GNU `ls' uses a `.' character to indicate a file with an SELinux
     security context, but no other alternate access method.

     A file with any other combination of alternate access methods is
     marked with a `+' character.
31
rush

La première colonne est le mode de fichier, la colonne suivante est le nombre de liens du fichier, les troisième et quatrième sont le nom du propriétaire et le groupe auquel appartient le fichier. La colonne suivante indique le nombre d'octets du fichier (certaines implémentations ls ont un -h option pour voir ces informations sous une forme plus conviviale). Les deux dernières colonnes indiquent l'horodatage et le nom du fichier. Vous lirez la page de manuel pour plus d'informations.

3
David Martínez