Grimoire-Command.es

GNU+Linux command memo

Memo_1 : parcourir les dossiers et lister les fichiers

D’après l’édition 11 des travaux d’Alain Leaper, 2018-04-10
Licence GPL

1. pwd : affiche le chemin du répertoire courant depuis la racine

$ pwd

Indique le répertoire courant dans l’arborescence des répertoires

/home/$utilisateur/…

2. ls : liste le contenu du répertoire courant

$ ls

Liste le contenu (sous-répertoires et fichiers) du répertoire courant

Quelques options : ls -l, ls -a, ls -R

$ ls -l
-rw-r--r--  1 alain alain   18 jan 28 10:38 monFichier

Premier caractère (ici -) :

  • - : fichier ordinaire

  • d : répertoire (directory)

  • l : lien symbolique

  • b : périphérique en mode bloc (exemple un disque dur)

  • c : périphérique en mode caractère (exemple un port série)

Ensuite, par groupes de 3 caractères (pris dans cet ordre), indiquent les droits :

  • r : lecture (read)

  • w : écriture (write)

  • x : exécution du fichier (pour un répertoire, droit d’y accéder)

  • - indique l’absence de droit (mis à la place d’un de ces 3 caractères)

Ensuite : le nombre de liens, le nom du propriétaire, le nom du groupe principal, la taille en octets (bytes), la date de création ou modification (mois jour heure) si l’année n’est pas précisée, il s’agit de l’année courante, le nom du fichier.

Sortie console Légende

-

type

rw-

droits du propriétaire (user)

r--

droits du groupe (group)

r--

droits des autres (other)

1

nombre de liens en dur (links)

alain

nom du propriétaire

alain

nom du groupe

4096

taille (size)

18 jan 28 10:38

date de dernière modification

monFichier

nom du fichier

Un fichier peux être présent dans plusieurs répertoires différents à la fois, et/ou donc avoir plusieurs noms. Il a alors un nombre de liens égal à son nombre de noms.

pour les périphériques la taille est remplacée par les numéros Majeur, mineur
En résumé

Le fichier monfichier a été créé/modifié le 28 janvier de cette année à 10h38, sa taille est de 18 octets. Son propriétaire est alain comme son groupe, il possède 1 lien.

C’est un fichier ordinaire, son propriétaire a les droits en lecture, écriture, mais pas de le faire exécuter, son groupe a les droits en lecture seulement (pas en écriture, ni exécution) les autres ont les droits en lecture seulement (pas en écriture, ni exécution).

☙❦❧

$ ls -a (1)
1 liste tous les fichiers, y compris les fichiers cachés commençant par "." (point)

. .. monFichier

  • . : indique le répertoire courant

  • .. : indique le répertoire parent

$ ls -R (1)
1 liste de manière récursive les sous-répertoires et leurs fichiers

Cette commande donne comme sortie :

 .:
 monFichier  sous_rep

 ./sous_rep:
 fic1

Ici: le répertoire courant contient monfichier et sous_rep qui lui-même est un répertoire puisqu’il contient le fichier fic1.

Il est possible de combiner ces options (ordre indifférent) :

$ ls -aRl
.:
total 16
drwxr-xr-x  3 alain alain 4096 mai  8 17:52 .
drwxr-xr-x 20 alain alain 4096 mai  8 10:41 ..
-rw-r--r--  1 alain alain   18 jan 28 10:38 monFichier
drwxr-xr-x  2 alain alain 4096 mai  8 19:20 sous_rep

./sous_rep:
total 28
drwxr-xr-x 2 alain alain 4096 mai  8 19:20 .
drwxr-xr-x 3 alain alain 4096 mai  8 17:52 ..
-rw-r--r-- 1 alain alain   11 mai  8 17:23 fic1
-rw-r--r-- 1 alain alain   13 mai  8 18:29 fic2
-rw-r--r-- 1 alain alain   38 mai  8 18:36 fic3
-rw-r--r-- 1 alain alain 5314 mai  8 19:19 fic4

Total indique un nombre de bloc de 1024 octets (1ko), sachant qu’un fichier entre 1 et 4096 octets occupe 4096 octets, soit 4 blocs. De 4097 à 8192 ⇒ 8 blocs, etc.

Petit calcul, sous_rep contient :

  • 2 répertoire (. et ..) 2 x 4 = 8 blocs

  • 3 "petits" fichier : 3 x 4 = 12 blocs

  • 1 "gros" fichier (4096 < fic4 < 8192) = 8 blocs

total: 8 + 12 + 8 = 28 blocs

l’option -R permet de repérer les gros fichiers, mais pas les gros répertoires ! Le répertoire parent de sous_rep n’indique que 16 blocs. Pour repérer l’espace disque effectivement occupé par un répertoire, la commande 'du' ci-dessous est plus pratique.

Autres options :

$ ls -sSRh
  • s : indiquer la taille

  • S : classement par taille de fichiers (ordre croissant, si -rS ⇒ ordre décroissant)

  • R : récursif (idem ci-dessus)

  • h : donne les tailles en Ko, Mo, Go

  • n : remplace les noms propriétaires et groupes par leur numéros (uid, gid)

3. cd : changement de répertoire (change directory)

$ cd ..

On passe alors dans le répertoire parent du répertoire courant.

$ cd (1)
$ pwd
1 sans argument

/home/alain

Sans argument, passage dans le répertoire personnel du propriétaire du compte.

$ cd /etc/default
$ pwd

/etc/default

4. file : renvoie la nature d’un fichier

$ file /bin/cat
/bin/cat: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.8, stripped

Donc un fichier binaire, inutile d’éditer un tel fichier avec un éditeur de texte !

$ file /var

/var: directory

$ file /etc/hosts

/etc/hosts: UTF-8 Unicode English text

5. df : renvoie l’occupation des partitions

$ df

La réponse dépend des choix faits à l’installation…

Quelques options :

  • -h : donne les tailles en Ko, Mo, Go

  • -T : donne les types des partitions

6. du : renvoie l’occupation du répertoire spécifié et de ses sous-répertoires

$ du -ch /tmp
4,0K	/tmp/.font-unix
4,0K	/tmp/ssh-73OnzW2HKqXX
4,0K	/tmp/.ICE-unix
4,0K	/tmp/systemd-private-b3aa6dce2e844352bed9c2217f80e08a-rtkit-daemon.service-VUtSSk
4,0K	/tmp/pip-gdb4_rzd-unpack
4,0K	/tmp/vFKyLyX
24K	/tmp
24K	total
$ du -ch (1)
1 sans argument, implique le répertoire courant

Quelques options :

  • -h : donne les tailles en Ko, Mo, Go

  • -c : totalise l’espace occupé