Table des matières

Niveau : Utilisateur Numéro de la Leçon Dernière Modification
1/4 <progrecss 2/5 style=inline /> 2020/01/30 03:28

Commandes de Base et Outils de Manipulation de Fichiers Texte

<note> Vous êtes actuellement connecté(e) en tant que root dans votre terminal. Avant de procéder plus loin, tapez la commande exit et appuyez sur la touch ↵ Entrée. </note>

La commande stty -a

Dès votre connexion à un système Linux, Il est conseillé de lancer la commande suivante

$ stty –a [Entrée]

Faites attention à utiliser des minuscules. En effet Linux différencie les minuscules et les majuscules.

trainee@opensuse:~> stty -a
speed 38400 baud; rows 24; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?;
swtch = M-^?; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc ixany imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke

Dans l’information qui s’affiche à l’écran, cherchez la chaîne intr =. Si la valeur est «Del», il faut utiliser la touche Suppr au lieu de la commande ^C pour interrompre un programme en cours d’exécution dans un terminal.

Options de la commande

Les options de cette commande sont :

trainee@opensuse:~> stty --help
Utilisation : stty [-F DEVICE] | --file=DEVICE] [SETTING]...
         ou : stty [-F DEVICE | --file=DEVICE] [-a|--all]
         ou : stty [-F DEVICE | --file=DEVICE] [-g|--save]
Affiche ou modifie les caractéristiques du terminal.

  -a, --all          affiche toutes les paramètres actuels dans un format
                     humainement lisible
  -g, --save         affiche toutes les paramètres actuels dans un format
                     lisible par « stty »
  -F, --file=DEVICE  utilise le périphérique spécifié au lieu de stdin
      --help     affiche l'aide et quitte
      --version  affiche des informations de version et quitte

Un « - » optionnel avant SETTINGS indique une négation. Un * indique des
paramètres non-POSIX. Le système sous-jacent détermine les paramètres
applicables.

Caractères spéciaux :
* dsusp CHAR    CHAR émettra un signal d'arrêt de terminal une fois le tampon
                d'entrée vidé
  eof CHAR      CHAR émettra une fin de fichier (pour arrêter l'entrée)
  eol CHAR      CHAR arrêtera la ligne
* eol2 CHAR     CHAR alternatif pour arrêter la ligne
  erase CHAR    CHAR supprimera le dernier caractère saisi
  intr CHAR     CHAR émettra un signal d'interruption
  kill CHAR     CHAR supprimera la ligne actuelle
* lnext CHAR    CHAR entrera le prochain caractère entre guillemets
  quit CHAR     CHAR émettra un signal de fin
* rprnt CHAR    CHAR ré-affichera la ligne actuelle
  start CHAR    CHAR redémarrera la sortie après l'avoir arrêtée
  stop CHAR     CHAR arrêtera la sortie
  susp CHAR     CHAR émettra un signal d'arrêt de terminal
* swtch CHAR    CHAR permettra de basculer à une couche différente du shell
* werase CHAR   CHAR supprimera le dernier mot saisi

Paramètres spéciaux :
  N             initialise les vitesses d'entrée et de sortie à N bauds
* cols N        indique au kernel que le terminal a N colonnes
* columns N     identique à « cols N »
  ispeed N      initialise la vitesse d'entrée à N
* line N        utilise la discipline de ligne N
  min N         avec -icanon, initialise à N le nombre de caractères
                nécessaires pour obtenir une lecture complète
  ospeed N      initialise la vitesse de sortie à N
* rows N        indique au kernel que le terminal a N lignes
* size          affiche le nombre de lignes et de colonnes selon les paramètres
                du kernel
  speed         affiche la vitesse du terminal
  time N        avec -icanon, initialise le délai d'inactivité de lecture à
                N dizièmes de seconde

Paramètres de contrôle :
  [-]clocal     inhibe les signaux de contrôle du modem
  [-]cread      autorise la réception sur l'entrée
* [-]crtscts    autorise RTS/CTS handshaking
  csN           initialise la taille des caractères à N bits,
                N variant entre [5..8]
  [-]cstopb     utilise 2 bits d'arrêt par caractère (un avec « - »)
  [-]hup        émet un signal de déconnexion quand le dernier processus ferme
                le lien tty
  [-]hupcl      identique à [-]hup
  [-]parenb     génère le bit de parité pour la sortie et traite l'entrée avec
                un bit de parité implicite
  [-]parodd     utilise une parité impaire (paire avec « - »)

Paramètres d'entrée :
  [-]brkint     break provoque un signal d'interruption
  [-]icrnl      transforme le retour de chariot en saut de ligne
  [-]ignbrk     ignore les caractères break
  [-]igncr      ignore le retour de chariot
  [-]ignpar     ignore les caractères ayant des erreurs de parité
* [-]imaxbel    émet un bip et ne vide pas le tampon d'entrée plein lors de
                l'arrivée d'un caractère
  [-]inlcr      transforme le saut de ligne en retour de chariot
  [-]inpck      autorise la vérification de la parité à l'entrée
  [-]istrip     met à zéro le bit haut (8e) des caractères en entrée
 * [-]iutf8      présume que les caractères en entrée sont codés en UTF-8
* [-]iuclc      transforme les majuscles en minuscules
* [-]ixany      permet à n'importe quel caractère de relancer l'affichage
                sur la sortie, pas uniquement le caractère de redémarrage
  [-]ixoff      autorise l'envoi d'un caractère d'arrêt/départ
  [-]ixon       autorise le contrôle de flux XON/XOFF
  [-]parmrk     indique les erreurs de parité par une séquence de
                caractères (255-0)
  [-]tandem     identique à [-]ixoff

Paramètres de sortie :
* bsN           style du délai de retour arrière, N parmi [0..1]
* crN           style du délai du retour de chariot, N parmi [0..3]
* ffN           style du délai du saut de page, N parmi [0..1]
* nlN           style du délai du saut de ligne, N parmi [0..1]
* [-]ocrnl      transforme un retour de chariot par un saut de ligne
* [-]ofdel      utilise des caractères d'effacement comme caractère
                de remplissage au lieu de caractères nuls
* [-]ofill      utilise le remplissage de caractères au lieu du délai par
                minuterie
* [-]olcuc      traduit les minuscules en majuscules
* [-]onlcr      traduit le saut de ligne en retour de chariot-saut de ligne
* [-]onlret     le saut de ligne génère un retour de chariot
* [-]onocr      n'affiche pas un retour chariot en première colonne
  [-]opost      post-traitement de sortie
* tabN          style du délai de tabulation horizontale, N parmi [0..3]
* tabs          identique à tab0
* -tabs         identique à tab3
* vtN           style du délai de tabulation verticale, N parmi [0..1]

Paramètres locaux :
  [-]crterase   écho du caractère « erase » comme séquence
                retour arrière-espace-retour arrière
* crtkill       supprime toute ligne en respectant les paramètres « echoprt » et
                « echoe »
* -crtkill      supprime toute ligne en respectant les paramètres « echoctl » et
                « echok »
* [-]ctlecho    écho des caractères de contrôle par une notation en
                chapeau (« ^c »)
  [-]echo       écho des caractères en entrée
* [-]echoctl    identique à [-]ctlecho
  [-]echoe      identique à [-]crterase
  [-]echok      écho d'un saut de ligne après un caractère d'annulation
* [-]echoke     identique à [-]crtkill
  [-]echonl     écho d'un saut de ligne même s'il n'y pas d'écho des autres
                caractères
* [-]echoprt    écho des caractères d'effacement par retour arrière, entre
                « \ » et « / »
  [-]icanon     autorise les caractères spéciaux
                « erase », « kill », « werase », et « rprnt »
  [-]iexten     autorise les caractères spéciaux non-POSIX
  [-]isig       autorise les caractères spéciaux
                « interrupt », « quit », et « suspend »
  [-]noflsh     désactive la vidange après réception des caractères
                « interrupt » et « quit »
* [-]prterase   identique à [-]echoprt
* [-]tostop     arrête les tâches d'arrière plan qui essaient d'écrire sur le
                terminal
* [-]xcase      avec « icanon », protège les majuscules avec « \ »

Paramètres de combinaison :
* [-]LCASE      identique à [-]lcase
  cbreak        identique à -icanon
  -cbreak       identique à icanon
  cooked        identique à brkint ignpar istrip icrnl ixon opost isig
                icanon, eof et eol selon leur valeur par défaut
  -cooked       identique à raw
  crt           identique à echoe echoctl echoke
  dec           identique à echoe echoctl echoke -ixany intr ^c erase 0177
                kill ^u
* [-]decctlq    identique à [-]ixany
  ek            réinitialiser les caractères erase et kill à leur valeur
                par défaut
  evenp         identique à parenb -parodd cs7
  -evenp        identique à -parenb cs8
* [-]lcase      identique à xcase iuclc olcuc
  litout        identique à -parenb -istrip -opost cs8
  -litout       identique à parenb istrip opost cs7
  nl            identique à -icrnl -onlcr
  -nl           identique à icrnl -inlcr -igncr onlcr -ocrnl -onlret
  oddp          identique à parenb parodd cs7
  -oddp         identique à -parenb cs8
  [-]parity     identique à [-]evenp
  pass8         identique à -parenb -istrip cs8
  -pass8        identique à parenb istrip cs7
  raw           identique à -ignbrk -brkint -ignpar -parmrk -inpck -istrip
                -inlcr -igncr -icrnl  -ixon  -ixoff  -iuclc  -ixany
                -imaxbel -opost -isig -icanon -xcase min 1 fois 0
  -raw          identique à cooked
   sane          identique à cread -ignbrk brkint -inlcr -igncr icrnl -iutf8
                  -ixoff -iuclc -ixany imaxbel opost -olcuc -ocrnl onlcr
                  -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
                  isig icanon iexten echo echoe echok -echonl -noflsh
                  -xcase -tostop -echoprt echoctl echoke, tous les caractères
                  spéciaux avec leur valeur par défaut.

Prend en charge la ligne « tty » reliée à l'entrée standard. En l'absence
d'argument, affiche la vitesse, la discipline de ligne et les modifications
appliquées par « stty sane ». Dans les paramètres, CHAR est pris littéralement,
ou codé comme ^c, 0x37, 0177 ou 127 ; les valeurs spéciales comme ^- ou
indéfinies sont utilisées pour inhiber les caractères spéciaux.

Signalez les anomalies de « stty » à <bug-coreutils@gnu.org>
Page d'accueil de « GNU coreutils » : <http://www.gnu.org/software/coreutils/>
Aide générale sur les logiciels GNU : <http://www.gnu.org/gethelp/>
Traduction de « stty » à <http://translationproject.org/team/fr.html>
Pour une documentation complète, lancer « info coreutils 'stty invocation' »

La commande date

Cette commande affiche la date et l’heure de la machine. La commande peut aussi être utilisée pour régler la date du système :

trainee@opensuse:~> date
lun. nov.  7 11:44:24 CET 2011

Options de la commande

Les options de cette commande sont :

trainee@opensuse:~> date --help
Utilisation : date [OPTION]... [+FORMAT]
         ou : date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
Affiche la date actuelle selon le FORMAT spécifié ou initialise la date système.

  -d, --date=STRING        affiche la date selon le format STRING, sans « now »
  -f, --file=DATEFILE      identique à --date pour chaque ligne de DATEFILE
  -r, --reference=FILE      affiche la dernière heure de modification de FILE
  -R, --rfc-2822            affiche la date et l'heure selon le format RFC 2822.
                            Exemple, Mon, 07 Aug 2006 12:34:56 -0600
      --rfc-3339=TIMESPEC  affiche la date et l'heure selon le format RFC-3339.
                           TIMESPEC=`date', `seconds', ou `ns' pour
                           la date et l'heure selon la précision voulue.
                           Les éléments date et heure sont séparés par
                           une simple espace, 2006-08-07 12:34:56-06:00
  -s, --set=STRING         initialise la date selon STRING
  -u, --utc, --universal   affiche ou initialise le système de temps universel
      --help     affiche l'aide et quitte
      --version  affiche des informations de version et quitte

FORMAT contrôle l'affichage. Les séquences interprétées sont :

  %%   un caractère %
  %a   les noms abrégés des jours de la semaine (p. ex. lun.)
  %A   les noms complets localisés des jours de la semaine (p. ex. lundi)
  %b   les noms abrégés localisés des mois (p. ex. janv.)
  %B   les noms complets localisés des mois (p. ex. janvier)
  %c   la date et l'heure localisées (p. ex. mar. 28 avril 2009 08:37:32 CEST)
  %C   century; like %Y, except omit last two digits (e.g., 20)
  %d   day of month (e.g., 01)
  %D   date; same as %m/%d/%y
  %e   day of month, space padded; same as %_d
  %F   la date complète, identique à %Y-%m-%d
  %g   les deux derniers chiffres de l'année du numéro de semaine ISO (voir %G)
  %G   l'année correspondant au numéro de semaine ISO (voir %V) ; normalement\
       utile seulement avec %V
  %h   identique à %b
  %H   heure (00..23)
  %I   heure (01..12)
  %j   jour de l'année (001..366)
  %k   heure ( 0..23)
  %l   heure ( 1..12)
  %m   mois (01..12)
  %M   minute (00..59)
  %n   un retour à ligne
  %N   nanosecondes (000000000..999999999)
  %p   indicateur localisé AM ou PM en majuscules (blanc si inconnu)
  %P   identique à %p mais en minuscules
  %r   heure locale au format 12-heure (p. ex. 11:11:01 PM)
  %R   heure en format 24-heure identique à %H:%M
  %s   secondes depuis 1970-01-01 00:00:00 UTC
  %S   secondes (00..60)
  %t   une tabulation
  %T   l'heure, identique à %H:%M:%S
  %u   le jour de la semaine (1..7) ; 1 représente le lundi
  %U   le numéro de la semaine de l'année, avec le dimanche comme premier jour
       de la semaine (00..53)
  %V   le numéro de la semaine ISO, avec le lundi comme premier jour de la
       semaine (01..53)
  %w   le jour de la semaine (0..6), avec 0 étant le dimanche
  %W   le numéro de la semaine, avec le lundi comme premier jour de la semaine
       (00..53)
  %x   représentation localisée de la date (p. ex. 12/31/99)
  %X   représentation localisée de l'heure (p. ex. 23:13:48)
  %y   les deux derniers chiffres de l'année (00..99)
  %Y   l'année
  %z   +hhmm numeric time zone (e.g., -0400)
  %:z  +hh:mm numeric time zone (e.g., -04:00)
  %::z  +hh:mm:ss numeric time zone (e.g., -04:00:00)
  %:::z  numeric time zone with : to necessary precision (e.g., -04, +05:30)
  %Z   alphabetic time zone abbreviation (e.g., EDT)

By default, date pads numeric fields with zeroes.
Les drapeaux optionnels suivants peuvent suivre « % » :

  -  (hyphen) ne remplit pas le champs
  _  (underscore) remplit avec espace
  0  (zero) remplit avec zéro
  ^  emploie majuscule si possible
  #  emploie la casse opposée si possible

Après chaque drapeau suit un champ optionnel de largeur, sous la forme 
d'un nombre décimal ainsi que modificateur optionnel tel que :
E pour utiliser la représentation locale alternative si disponible, ou
O pour utiliser la représentation locale alternative de symboles numériques si
disponible.

Signalez les anomalies de « date » à <bug-coreutils@gnu.org>
Page d'accueil de « GNU coreutils » : <http://www.gnu.org/software/coreutils/>
Aide générale sur les logiciels GNU : <http://www.gnu.org/gethelp/>
Traduction de « date » à <http://translationproject.org/team/fr.html>
Pour une documentation complète, lancer « info coreutils 'date invocation' »

La commande who

Cette commande affiche les utilisateurs connectés au système:

trainee@opensuse:~> who
trainee  :0           2011-10-20 15:41 (console)
trainee  console      2011-10-20 15:41 (:0)
trainee  pts/0        2011-10-20 15:44 (:0)

<note important> La première ligne démontre que l'utilisateur trainee est connecté au premier terminal graphique (:0) généré à partir du premier terminal texte (tty1). La deuxième ligne démontre que l'utilisateur trainee est connecté au pseudo-terminal texte généré par l'application Terminal GNOME (pts/0). </note>

Options de la commande

Les options de cette commande sont :

trainee@opensuse:~> who --help
Utilisation : who [OPTION]... [ FILE | ARG1 ARG2 ]
Affiche des informations sur les utilisateurs connectés.

  -a, --all        identique à -b -d --login -p -r -t -T -u
  -b, --boot       affiche l'heure du dernier démarrage système
  -d, --dead       affiche la liste des processus morts
  -H, --heading    affiche les en-têtes de colonne des lignes
  -l, --login       affiche le processus de login du système
      --lookup      utilise la forme canonique des noms d'hôte via DNS
  -m                seulement le nom d'hôte et d'utilisateur associé à stdin
  -p, --process     affiche la liste des processus lancés par init
  -q, --count       affiche tous noms de connexion des utilisateurs connectés
  -r, --runlevel    affiche le niveau d'exécution actuel
  -s, --short       affiche seulement le nom, la ligne et l'heure (par défaut)
  -t, --time        affiche le dernier changement d'heure du système
  -T, -w, --mesg    ajoute le statut du message de l'utilisateur avec +, - ou ?
  -u, --users       affiche la liste des utilisateurs actifs
      --message     identique à -T
      --writeable   identique à -T
      --help     affiche l'aide et quitte
      --version  affiche des informations de version et quitte

Si FILE n'est pas spécifié, utilise /var/run/utmp. /var/log/wtmp en tant que FILE est usuel.
Si ARG1 ARG2 sont renseignés, -m est supposé, « am i » ou « mom likes » sont
usuels.

Signalez les anomalies de « who » à <bug-coreutils@gnu.org>
Page d'accueil de « GNU coreutils » : <http://www.gnu.org/software/coreutils/>
Aide générale sur les logiciels GNU : <http://www.gnu.org/gethelp/>
Traduction de « who » à <http://translationproject.org/team/fr.html>
Pour une documentation complète, lancer « info coreutils 'who invocation' »

La commande df

Cette commande affiche l'espace disque libre sur chacun des unités montés (connectés au système):

trainee@opensuse:~> df
Sys. de fichiers      1K-blocs   Utilisé    Dispo. Uti% Monté sur
rootfs                 5036544   4560316    220384  96% /
devtmpfs                500816       188    500628   1% /dev
tmpfs                   506160       148    506012   1% /dev/shm
/dev/sda2              5036544   4560316    220384  96% /
/dev/sda1               108075     29334     73161  29% /boot

Les unités sont en blocs. Afin d'humaniser la sortie, il est possible d'utiliser l'option -h. Une option est aussi connue sous le nom parameter, switch ou flag :

trainee@opensuse:~> df -h
Sys. de fichiers    Taille  Uti. Disp. Uti% Monté sur
rootfs                4,9G  4,4G  216M  96% /
devtmpfs              490M  188K  489M   1% /dev
tmpfs                 495M  148K  495M   1% /dev/shm
/dev/sda2             4,9G  4,4G  216M  96% /
/dev/sda1             106M   29M   72M  29% /boot

Options de la commande

Les options de cette commande sont :

trainee@opensuse:~> df --help
Utilisation : df [OPTION]... [FILE]...
Affiche des informations sur le système de fichiers sur lequel chaque
chaque FILE réside ou de tous les systèmes de fichiers par défaut.

Les arguments obligatoires pour les options longues le sont aussi pour les
options courtes.
  -a, --all             include dummy file systems
  -B, --block-size=SIZE  scale sizes by SIZE before printing them.  E.g.,
                           `-BM' prints sizes in units of 1,048,576 bytes.
                           See SIZE format below.
      --total           produce a grand total
  -h, --human-readable  print sizes in human readable format (e.g., 1K 234M 2G)
  -H, --si              likewise, but use powers of 1000 not 1024
  -i, --inodes          liste les informations des « inodes » au lieu des blocs
  -k                    identique à --block-size=1K
  -l, --local           limite le parcours au système des fichiers local
      --no-sync         n'effectue pas de synchronisation avant d'obtenir les
                        informations d'utilisation (par défaut)
  -P, --portability     utilise le format de sortie POSIX
      --sync            invoque sync avant d'obtenir les informations 
                        d'utilisation
  -t, --type=TYPE       limite le parcours aux systèmes de fichier de type TYPE
  -T, --print-type      affiche le type du système de fichiers
  -x, --exclude-type=TYPE  limite le parcours aux systèmes de fichiers 
                        différents du type TYPE
  -v                    (ignorée)
      --help     affiche l'aide et quitte
      --version  affiche des informations de version et quitte

Les valeurs sont affichées selon les unités du premier SIZE parmi --block-size
et les variables d'environnement DF_BLOCK_SIZE, BLOCK_SIZE and BLOCKSIZE.
Dans le cas contraire, les unités par défaut sont 1 024 octets (ou 512 si
POSIXLY_CORRECT est défini).

SIZE peut être (ou un entier optionnellement suivi par) l'une des valeurs
suivantes : kB 1000, K 1024, MB 1000*1000, M 1024*1024 et ainsi de suite pour
G, T, P, E, Z et Y.

Signalez les anomalies de « df » à <bug-coreutils@gnu.org>
Page d'accueil de « GNU coreutils » : <http://www.gnu.org/software/coreutils/>
Aide générale sur les logiciels GNU : <http://www.gnu.org/gethelp/>
Traduction de « df » à <http://translationproject.org/team/fr.html>
Pour une documentation complète, lancer « info coreutils 'df invocation' »

La commande free

Cette commande affiche les détails de la mémoire disponible :

trainee@opensuse:~> free
             total       used       free     shared    buffers     cached
Mem:       1012320     896604     115716          0      90100     503080
-/+ buffers/cache:     303424     708896
Swap:      2047996          0    2047996

Au contraire de la commande précédente, l'option -h ne sert pas à humaniser la sortie. Dans le cas présent, cette option fait apparaître l'aide de la commande :

trainee@opensuse:~> free -h
free: invalid option -- 'h'
usage: free [-b|-k|-m|-g] [-l] [-o] [-t] [-s delay] [-c count] [-V]
  -b,-k,-m,-g show output in bytes, KB, MB, or GB
  -l show detailed low and high memory statistics
  -o use old format (no -/+buffers/cache line)
  -t display total for RAM + swap
  -s update every [delay] seconds
  -c update [count] times
  -V display version information and exit

L'aide de la commande nous informe que l'option -m permettra une sortie en Mo :

trainee@opensuse:~> free -m
             total       used       free     shared    buffers     cached
Mem:           988        874        114          0         87        491
-/+ buffers/cache:        295        693
Swap:         1999          0       1999

La sortie ci-dessus nous informe qu'il y a :

  • 988 Mo de mémoire physique au total,
  • 874 Mo (295+87+491) de mémoire physique utilisée et 114 Mo de mémoire physique libre,
  • 1 999 Mo de mémoire swap avec 0 Mo utilisée.

Options de la commande

Les options de cette commande sont :

trainee@opensuse:~> free --help
free: invalid option -- '-'
usage: free [-b|-k|-m|-g] [-l] [-o] [-t] [-s delay] [-c count] [-V]
  -b,-k,-m,-g show output in bytes, KB, MB, or GB
  -l show detailed low and high memory statistics
  -o use old format (no -/+buffers/cache line)
  -t display total for RAM + swap
  -s update every [delay] seconds
  -c update [count] times
  -V display version information and exit

La commande whoami

Cette commande affiche le nom associé à l'UID courant effectif, autrement dit, le nom de votre compte courant :

trainee@opensuse:~> whoami
trainee

Devenez maintenant l'administrateur root :

trainee@opensuse:~> su -
Mot de passe : fenestros

<note important> Notez que le mot de passe saisi ne sera pas visible. </note>

Saisissez maintenant la commande whoami de nouveau :

opensuse:~ # whoami
root

<note important> Notez maintenant que vous êtes root. </note>

Saisissiez en suite la commande exit pour redevenir l'utilisateur trainee :

opensuse:~ # exit
logout

Options de la commande

Les options de cette commande sont :

trainee@opensuse:~> whoami --help
Utilisation : whoami [OPTION]...
Affiche le nom de l'utilisateur associé à l'ID effectif actuel.
Identique à « id -un ».

      --help     affiche l'aide et quitte
      --version  affiche des informations de version et quitte

Signalez les anomalies de « whoami » à <bug-coreutils@gnu.org>
Page d'accueil de « GNU coreutils » : <http://www.gnu.org/software/coreutils/>
Aide générale sur les logiciels GNU : <http://www.gnu.org/gethelp/>
Traduction de « whoami » à <http://translationproject.org/team/fr.html>
Pour une documentation complète, lancer « info coreutils 'whoami invocation' »

La commande pwd

Cette commande affiche le répertoire courant de travail :

trainee@opensuse:~> pwd
/home/trainee

Options de la commande

Les options de cette commande sont :

trainee@opensuse:~> help pwd
pwd: pwd [-LP]
    Print the name of the current working directory.
    
    Options:
      -L	print the value of $PWD if it names the current working
    	directory
      -P	print the physical directory, without any symbolic links
    
    By default, `pwd' behaves as if `-L' were specified.
    
    Exit Status:
    Returns 0 unless an invalid option is given or the current directory
    cannot be read.

La commande cd

Cette commande permet de changer de répertoire courant pour le répertoire passé en argument à la commande :

trainee@opensuse:~> cd /tmp
trainee@opensuse:/tmp> pwd
/tmp

Options de la commande

Les options de cette commande sont :

trainee@opensuse:/tmp> help cd
cd: cd [-L|-P] [dir]
    Change the shell working directory.
    
    Change the current directory to DIR.  The default DIR is the value of the
    HOME shell variable.
    
    The variable CDPATH defines the search path for the directory containing
    DIR.  Alternative directory names in CDPATH are separated by a colon (:).
    A null directory name is the same as the current directory.  If DIR begins
    with a slash (/), then CDPATH is not used.
    
    If the directory is not found, and the shell option `cdable_vars' is set,
    the word is assumed to be  a variable name.  If that variable has a value,
    its value is used for DIR.
    
    Options:
        -L	force symbolic links to be followed
        -P	use the physical directory structure without following symbolic
    	links
    
    The default is to follow symbolic links, as if `-L' were specified.
    
    Exit Status:
    Returns 0 if the directory is changed; non-zero otherwise.
<code>

=====La commande ls=====

Cette commande permet de lister le contenu d'un répertoire passé en argument à la commande. Si aucun argument n'est spécifié, la commande liste le contenu du répertoire courant :

<code>
trainee@opensuse:/tmp> ls
hsperfdata_trainee                keyring-eNDXzS       pulse-ThNmqyY7uQEz             virtual-trainee.61wRJA
icedteaplugin-trainee             mozilla-media-cache  SimpleHelp1674393770722982080  virtual-trainee.Cufrrn
jar_cache6202297203218743135.tmp  netx-native-25662    SimpleHelp2670031095574134323  virtual-trainee.KXFvE2
jar_cache7316512180383045650.tmp  netx-native-63491    tracker-trainee                virtual-trainee.L5gYXn
keyring-386sie                    orbit-gdm            unique                         virtual-trainee.pMhhgn
keyring-39MtBR                    orbit-trainee        vboxguest-Module.symvers       virtual-trainee.QVeXhm
keyring-4Q8xoi                    plugtmp              virtual-trainee.0Eb5WF         virtual-trainee.WzpGmw
keyring-6DhwTd                    pulse-l0HmhbrKIQBb   virtual-trainee.0pd1zs

Options de la commande

Les options de cette commande sont :

trainee@opensuse:/tmp> ls --help
Utilisation : ls [OPTION]... [FILE]...
Affiche les informations à propos des FILE(s) (du répertoire actuel par défaut).
Trie les entrées alphabétiquement si aucune des options -cftuvSUX ou --sort
n'est utilisées.
Les arguments obligatoires pour les options longues le sont aussi pour les
options courtes.
  -a, --all                  n'ignore pas les entrées débutant par .
  -A, --almost-all           n'inclut pas dans la liste . et ..
      --author               avec -l, affiche l'auteur de chaque fichier
  -b, --escape               affiche les caractères non-graphiques par des
                             échappements selon le style C
      --block-size=SIZE      scale sizes by SIZE before printing them.  E.g.,
                               `--block-size=M' prints sizes in units of
                               1,048,576 bytes.  See SIZE format below.
  -B, --ignore-backups       do not list implied entries ending with ~
  -c                         with -lt: sort by, and show, ctime (time of last
                               modification of file status information)
                               with -l: show ctime and sort by name
                               otherwise: sort by ctime
  -C                         liste les noms en colonnes
      --color[=WHEN]         colore la sortie. Par défaut, WHEN est défini à
                             « always » (toujours) mais peut aussi être
                             « never » (jamais) ou « auto » (automatique).
  -d, --directory            liste les noms de répertoires plutôt que leur
                             contenu et ne déréférence pas les liens symboliques
  -D, --dired                génére une sortie adaptée pour le mode « dired » de
                             Emacs
  -f                         ne trie pas, active -aU, désactive -ls --color
  -F, --classify             ajoute un indicateur (parmi */=>@|) aux entrées
      --file-type            identique mais sans ajout de « * »
      --format=WORD          « across » -x (croisé),
                             « commas » -m (avec virgules),
                             « horizontal » -x (horizontal),
                             « long » -l (long),
                             « single-column » -1 (colonne simple),
                             « verbose » -l (verbeux),
                             « vertical » -C (vertical)
      --full-time            identique à -l --time-style=full-iso
  -g                         identique à -l mais n'affiche pas le propriétaire
      --group-directories-first
                             regroupe les répertoires avant les fichiers.
                             augmente avec l'option a --sort, mais tout usage
                             de --sort=none (-U) inhibe le regroupement
  -G, --no-group             dans une longue liste, n'affiche pas les noms de
                             groupe
  -h, --human-readable       avec -l affiche les tailles dans un format lisible
                             par un humain (p. ex. 1K, 234M ou 2G)
      --si                   similaire, mais utilise une puissance de 1 000 au
                             lieu de 1 024
  -H, --dereference-command-line
                             suit les liens symboliques de la ligne de commande
      --dereference-command-line-symlink-to-dir
                             suit chaque lien symbolique de la ligne de commande
                             qui pointe vers un répertoire
      --hide=PATTERN         ne liste pas les entrées implicites concordant
                             avec le PATTERN de shell (surdéfini par -a ou -A)
      --indicator-style=WORD  ajoute un indicateur de type à chaque entrée, en
                              respectant le style indiqué par WORD :
                              « none » (aucun suffixe, par défaut),
                              « slash » (barre oblique, comme l'option -p),
                              « file-type » (type de fichier, comme --file-type)
                              ou « classify » (classé, commme l'option -F)
  -i, --inode                affiche le numéro d'index de chaque fichier
  -I, --ignore=PATTERN       ne liste pas les entrées implicites concordant avec
                             le PATTERN du shell
  -k                         identique à --block-size=1K
  -l                         utilise le format long d'affichage
  -L, --dereference          affiche les informations des fichiers référencés
                             par les liens symboliques plutôt que sur le lien
                             symbolique lui-même
  -m                         remplit la largeur avec une liste d'entrées
                             séparées par des virgules
  -n, --numeric-uid-gid      identique à -l mais liste les valeurs numériques
                             des ID d'utilisateur et de groupe
  -N, --literal              affiche les noms bruts (sans traiter les caractères
                             de contrôle spécialement par exemple)
  -o                         identique à -l mais ne liste pas les informations
                             de groupe
  -p, --indicator-style=slash
                             ajoute l'indicateur « / » aux répertoires
  -q, --hide-control-chars   affiche « ? » au lieu de caractères non-graphiques
      --show-control-chars   affiche les caractères non graphiques tel quel (par
                             défaut)
  -Q, --quote-name           encapsule chaque nom d'entrée entre guillemets
      --quoting-style=WORD   utilise le style d'encapsultation défini par
                             WORD : « literal », « shell », « shell-always »,
                             « c » ou « escape »
  -r, --reverse              inverse l'ordre de tri
  -R, --recursive            liste récursivement les sous-répertoires 
  -s, --size                 affiche la taille d'allocation de chaque fichier,
                             en blocs
  -S                         trie selon la taille des fichiers
      --sort=WORD            trie selon WORD au lieu du nom :
                             « none » (aucun, -U),
                             « extension » (extension, -X),
                             « size » (taille, -S), « date » (date, -t),
                             « version » (version, -v)
      --time=WORD            avec -l, affiche la date selon WORD au lieu de
                             la date de modification :
                             « atime » -u, « access » -u, « use » -u,
                             « ctime » -c, ou « status » -c ; utilise la date
                             spécifiée comme clé de tri si --sort=time
      --time-style=STYLE     avec -l, affiche les dates selon STYLE :
                             « full-iso », « long-iso », « iso », « locale »,
                             « +FORMAT ». FORMAT est interprété comme « date » ;
                             si FORMAT est FORMAT1<nouvelle ligne>FORMAT2,
                             FORMAT1 s'applique aux fichiers non récents et
                             FORMAT2 aux fichiers récents ;
                             si STYLE est préfixé par « posix- », STYLE prend
                             seulement effet en dehors de la localisation POSIX
  -t                         trie selon la date de modification
  -T, --tabsize=COLS         utilise des tabulations à chaque COLS au lieu de 8
  -u                         avec -lt, affiche et tri selon la date d'accès
                             avec -l, affiche la date d'accès et tri par nom
                             sinon tri selon la date d'accès
  -U                         ne trie pas, liste les entrées dans l'ordre du
                             répertoire
  -v                         tri naturel des numéros (de versions) dans le texte
  -w, --width=COLS           définit la largeur de l'écran au lieu de la valeur
                             actuelle
  -x                         liste les entrées en ligne au lieu de colonne
  -X                         trie alphabétiquement selon les extension des
                             entrées
  -Z, --context              affiche les contextes de sécurité SELinux de
                             chaque fichier
  -1                         liste un fichier par ligne
      --help     affiche l'aide et quitte
      --version  affiche des informations de version et quitte

SIZE peut être (ou un entier optionnellement suivi par) l'une des valeurs
suivantes : kB 1000, K 1024, MB 1000*1000, M 1024*1024 et ainsi de suite pour
G, T, P, E, Z et Y.

L'utilisation de la couleur pour distinguer les types de fichier est désactivée
par défaut et avec --color=never (jamais). Avec color=auto, ls émet des codes
couleur seulement quand la sortie standard est connectée à un terminal. La
variable d'environnement LS_COLORS peut modifier les paramètres. Utilisez la
commande dircolors pour le définir.

Statut de sortie :
 0  si OK,
 1  si problème mineur (p. ex. impossible d'accéder à un sous-répertoire),
 2  si problème majeur (p. ex. impossible d'accéder à un argument de ligne de
    commande).

Signalez les anomalies de « ls » à <bug-coreutils@gnu.org>
Page d'accueil de « GNU coreutils » : <http://www.gnu.org/software/coreutils/>
Aide générale sur les logiciels GNU : <http://www.gnu.org/gethelp/>
Traduction de « ls » à <http://translationproject.org/team/fr.html>
Pour une documentation complète, lancer « info coreutils 'ls invocation' »

La commande touch

Cette commande sert à modifier l'horodatage de la date de dernière modification du contenu (mtime) et la date du dernier accès (atime), d'un ou de plusieurs fichiers passé(s) en argument(s), selon la date courante. Si le(s) fichier(s) n'existe(nt) pas, il(s) est (sont) créé(s) :

trainee@opensuse:/tmp> touch test
trainee@opensuse:/tmp> ls
hsperfdata_trainee                keyring-eNDXzS       pulse-ThNmqyY7uQEz             virtual-trainee.0pd1zs
icedteaplugin-trainee             mozilla-media-cache  SimpleHelp1674393770722982080  virtual-trainee.61wRJA
jar_cache6202297203218743135.tmp  netx-native-25662    SimpleHelp2670031095574134323  virtual-trainee.Cufrrn
jar_cache7316512180383045650.tmp  netx-native-63491    test                           virtual-trainee.KXFvE2
keyring-386sie                    orbit-gdm            tracker-trainee                virtual-trainee.L5gYXn
keyring-39MtBR                    orbit-trainee        unique                         virtual-trainee.pMhhgn
keyring-4Q8xoi                    plugtmp              vboxguest-Module.symvers       virtual-trainee.QVeXhm
keyring-6DhwTd                    pulse-l0HmhbrKIQBb   virtual-trainee.0Eb5WF         virtual-trainee.WzpGmw

Options de la commande

Les options de cette commande sont :

trainee@opensuse:/tmp> touch --help
Utilisation : touch [OPTION]... FILE...
Met à jour la date d'accès et de modification de chaque FILE à l'heure actuelle.

Un argument FILE qui n'existe pas est créé vide, sauf si -c ou -h est spécifié.

Une chaîne d'argument FILE à - est géré spécifiquement et fait que touch
change la date du fichier associé à la sortie standard.

Les arguments obligatoires pour les options longues le sont aussi pour les
options courtes.
  -a                     modifie seulement la date d'accès
  -c, --no-create        ne crée aucun fichier
  -d, --date=STRING      analyse STRING et l'utilise au lieu de la date actuelle
  -f                     (ignorée)
  -h, --no-dereference   affecte les liens symboliques au lieu des fichiers
                         référencés (utile seulement sur les systèmes permettant
                         de changer le propriétaire d'un lien symbolique)
  -m                     modifie uniquement la date de modification
  -r, --reference=FILE  utilise la date de ce fichier au lieu de la date
                        actuelle
  -t STAMP              utilise [[CC]AA]MMJJhhmm[.ss] au lieu de la date
                        actuelle
  --time=WORD           modifie le temps indiqué :
                        WORD est « access », « atime » ou « use » ; équivalent
                        à -a
                        WORD est « modify », « mtime » ; équivalent à -m
      --help     affiche l'aide et quitte
      --version  affiche des informations de version et quitte

Notez que les options -d et -t acceptent différents formats de date et d'heure.

Signalez les anomalies de « touch » à <bug-coreutils@gnu.org>
Page d'accueil de « GNU coreutils » : <http://www.gnu.org/software/coreutils/>
Aide générale sur les logiciels GNU : <http://www.gnu.org/gethelp/>
Traduction de « touch » à <http://translationproject.org/team/fr.html>
Pour une documentation complète, lancer « info coreutils 'touch invocation' »

La commande echo

Cette commande écrit les arguments vers la sortie standard (autrement dit à l'écran) :

trainee@opensuse:/tmp> echo fenestros
fenestros

Options de la commande

Les options de cette commande sont :

trainee@opensuse:/tmp> help echo
echo: echo [-neE] [arg ...]
    Write arguments to the standard output.
    
    Display the ARGs on the standard output followed by a newline.
    
    Options:
      -n	do not append a newline
    
    Exit Status:
    Returns success unless a write error occurs.

La commande cp

La commande cp permet de copier une source vers une destination ou de multiples sources vers un répertoire :

trainee@opensuse:/tmp> cp test ~
trainee@opensuse:/tmp> ls -l ~
total 44
drwxr-xr-x  2 trainee users 4096 17 mai   15:25 bin
drwxr-xr-x  2 trainee users 4096 24 mai   10:15 Bureau
drwxr-xr-x  2 trainee users 4096 24 mai   10:15 Documents
drwxr-xr-x  2 trainee users 4096 24 mai   10:15 Images
drwxr-xr-x  2 trainee users 4096 24 mai   10:15 Modèles
drwxr-xr-x  2 trainee users 4096 24 mai   10:15 Musique
drwxr-xr-x  2 trainee users 4096 24 mai   10:15 Public
drwxr-xr-x  2 trainee users 4096 17 mai   15:25 public_html
drwxr-xr-x+ 2 root    root  4096 17 oct.  19:08 rep1
drwxr-xr-x  2 trainee users 4096 24 mai   10:15 Téléchargements
-rw-r--r--  1 trainee users    0  7 nov.  13:17 test
drwxr-xr-x  2 trainee users 4096 24 mai   10:15 Vidéos

<note important> Notez l'utilisation du caractère ~ (tilde) qui est un caractère spécial indiquant le répertoire personnel de l'utilisateur courant, dans ce cas /home/trainee. </note>

Options de la commande

Les options de cette commande sont :

trainee@opensuse:/tmp> cp --help
Utilisation : cp [OPTION]... [-T] SOURCE DEST
         ou : cp [OPTION]... SOURCE... DIRECTORY
         ou : cp [OPTION]... --target-directory=DIRECTORY SOURCE...
Copie la SOURCE vers DEST, ou de multiples SOURCES vers DIRECTORY.

Les arguments obligatoires pour les options longues le sont aussi pour les
options courtes.
  -a, --archive                same as -dR --preserve=all
      --attributes-only        don't copy the file data, just the attributes
      --backup[=CONTROL]       make a backup of each existing destination file
  -b                           like --backup but does not accept an argument
      --copy-contents          copy contents of special files when recursive
  -d                           same as --no-dereference --preserve=links
  -f, --force                  si un fichier de destination existe et ne peut
                               être ouvert alors le supprime et essaie à
                               nouveau (redondant si l'option -n est utilisée)
  -i, --interactive            demande confirmation avant d'écraser (surcharge
                               une précédente option -n)
  -H                           suit les liens symboliques de ligne de commande
                               dans SOURCE
  -l, --link                   lie les fichiers au lieu de les copier
  -L, --dereference            toujours suivre les liens symboliques dans SOURCE
  -n, --no-clobber             n'écrase pas un ficier existant (surchage une
                               précédente option -i)
  -P, --no-deference           ne jamais suivre les liens symboliques dans 
                               SOURCE
  -p                           identique à --preserve=mode,ownership,timestamps
      --preserve[=ATTR_LIST]   préserve les attributs spécifiés (par défaut
                               « mode,ownership,timestamps ») et si posssible
                               les attributs additionels « context, links, 
                               xattr, all »
      --no-preserve=ATTR_LIST  ne préserve pas les attributs spécifiques
      --parents                utilise le nom de fichier source complet sous
                               DIRECTORY
  -R, -r, --recursive          copie récursivement les répertoires
      --reflink[=WHEN]         contrôle les copies clones/COW (Copy On Write).
                               Voir ci-dessous.
      --remove-destination     supprime chaque fichier de destination existant
                               avant de tenter de l'ouvrir (par opposition avec
                               --force)
      --sparse=WHEN            contrôle la création des fichiers dispersés.
                               Voir ci-dessous.
      --strip-trailing-slashes enlève les « / » de terminaison de chaque
                               argument SOURCE
  -s, --symbolic-link        crée des liens symboliques au lieu d'une copie
  -S, --suffix=SUFFIX        écrase le suffixe usuel d'archivage
      --target-directory=DIRECTORY  copie tous les arguments SOURCE dans 
                                    RÉPERTOIRE
  -T, --no-target-directory  traite DEST comme un fichier normal
  -u, --update                 copie seulement quand le fichier SOURCE est plus
                               récent que le fichier de destination ou quand le
                               fichier de destination est manquant
  -v, --verbose                explique ce qui est fait
  -x, --one-file-system        reste sur ce système de fichiers
      --help     affiche l'aide et quitte
      --version  affiche des informations de version et quitte

Par défaut, les fichiers SOURCE dispersés sont détectés par le biais
d'une heuristique grossière et le fichier DEST correspondant est aussi
construit de façon dispersée. Il s'agit du comportement sélectionné par 
l'option --sparse=auto. Spécifiez --sparse=always pour créer un fichier
DEST dispersé lorsque le fichier SOURCE contient une assez longue séquence
d'octets de valeur zéro.
Utilisez --sparse=never pour inhiber la création de fichiers dispersés.

Le suffixe d'archive est « ~ », sauf s'il est définit autrement avec --suffix ou
SIMPLE_BACKUP_SUFFIX. La méthode du contrôle de version peut être sélectionnée
par l'option --backup ou par la variable d'environnement VERSION_CONTROL.
Les valeurs sont les suivantes :

  none, off       n'archive jamais (même si --backup est utilisé)
  numbered, t     effectue des archives numérotées
  existing, nil   numérote si des archives numérotées existent déjà, se
                  comporte comme « simple » dans le cas contraire 
  simple, never   effectue toujours des archives simples

Un cas spécial où « cp » archive SOURCE lorsque les options « force » et
« backup » sont utilisées et que SOURCE et DEST portent le même nom qu'un
fichier standard existant.

Signalez les anomalies de « cp » à <bug-coreutils@gnu.org>
Page d'accueil de « GNU coreutils » : <http://www.gnu.org/software/coreutils/>
Aide générale sur les logiciels GNU : <http://www.gnu.org/gethelp/>
Traduction de « cp » à <http://translationproject.org/team/fr.html>
Pour une documentation complète, lancer « info coreutils 'cp invocation' »

La commande file

Cette commande permet de connaître le type d'un fichier:

trainee@opensuse:/tmp> file ~/test
/home/trainee/test: empty

<note important> Notez que la commande vous indique le type de fichier en fonction de son contenu. Dans l'exemple précédent, puisque le fichier est vide, la commande file ne peut pas indiqué le type de fichier. </note>

Redirigez, en utilisant le caractère >, la sortie de la commande echo vers le fichier /home/trainee/test de façon à ce que ce dernier contient le texte fenestros :

trainee@opensuse:/tmp> echo "fenestros" > ~/test

En utilisant de nouveau la commande file, celle-ci est capable de vous indiquer le type de fichier :

trainee@opensuse:/tmp> file ~/test
/home/trainee/test: ASCII text

Options de la commande

Les options de cette commande sont :

trainee@opensuse:/tmp> file --help
Usage: file [OPTION...] [FILE...]
Determine type of FILEs.

      --help                 display this help and exit
  -v, --version              output version information and exit
  -m, --magic-file LIST      use LIST as a colon-separated list of magic
                               number files
  -z, --uncompress           try to look inside compressed files
  -b, --brief                do not prepend filenames to output lines
  -c, --checking-printout    print the parsed form of the magic file, use in
                               conjunction with -m to debug a new magic file
                               before installing it
  -e, --exclude TEST         exclude TEST from the list of test to be
                               performed for file. Valid tests are:
                               ascii, apptype, compress, elf, soft, tar, tokens, troff
  -f, --files-from FILE      read the filenames to be examined from FILE
  -F, --separator STRING     use string as separator instead of `:'
  -i, --mime                 output MIME type strings (--mime-type and
                               --mime-encoding)
      --apple                output the Apple CREATOR/TYPE
      --mime-type            output the MIME type
      --mime-encoding        output the MIME encoding
  -k, --keep-going           don't stop at the first match
  -L, --dereference          follow symlinks (default)
  -h, --no-dereference       don't follow symlinks
  -n, --no-buffer            do not buffer output
  -N, --no-pad               do not pad output
  -0, --print0               terminate filenames with ASCII NUL
  -p, --preserve-date        preserve access times on files
  -r, --raw                  don't translate unprintable chars to \ooo
  -s, --special-files        treat special (block/char devices) files as
                             ordinary ones
  -C, --compile              compile file specified by -m
  -d, --debug                print debugging messages

La commande cat

La commande cat permet de concaténer les fichiers passés en argument, ou de l'entrée standard ( le clavier ), vers la sortie standard ( l'écran ). Dans le cas où il n'y a qu'un seul fichier passé en argument, le contenu de celui-ci est affiché à l'écran :

trainee@opensuse:/tmp> cat ~/test
fenestros

Options de la commande

Les options de cette commande sont :

trainee@opensuse:/tmp> cat --help
Utilisation : cat [OPTION]... [FILE]...
Concatenate FILE(s), or standard input, to standard output.

  -A, --show-all           equivalent to -vET
  -b, --number-nonblank    number nonempty output lines, overrides -n
  -e                       equivalent to -vE
  -E, --show-ends          display $ at end of each line
  -n, --number             number all output lines
  -s, --squeeze-blank      suppress repeated empty output lines
  -t                       équivalent à -vT
  -T, --show-tabs          affiche les caractères TAB comme ^I
  -u                       (ignoré)
  -v, --show-nonprinting   utilise la notation ^ et M-, sauf pour LFD et TAB
      --help     affiche l'aide et quitte
      --version  affiche des informations de version et quitte

En l'absence de FILE ou quand FILE est -, lit l'entrée standard.

Exemples :
  cat f - g  affiche le contenu de f, puis l'entrée standard et ensuite le
            contenu de g.
  cat        copie l'entrée standard vers la sortie standard.

Signalez les anomalies de « cat » à <bug-coreutils@gnu.org>
Page d'accueil de « GNU coreutils » : <http://www.gnu.org/software/coreutils/>
Aide générale sur les logiciels GNU : <http://www.gnu.org/gethelp/>
Traduction de « cat » à <http://translationproject.org/team/fr.html>
Pour une documentation complète, lancer « info coreutils 'cat invocation' »

La commande mv

La commande mv permet déplacer ou de renommer un fichier ou répertoire.

Utilisez la commande mv pour déplacer le fichier test de votre répertoire personnel vers le répertoire courant :

trainee@opensuse:/tmp> mv ~/test .

<note important> Notez l'utilisation du raccourci . pour indiquer le répertoire courant. </note>

Constatez la disparition du fichier test de votre répertoire personnel :

trainee@opensuse:/tmp> ls -l ~
total 44
drwxr-xr-x  2 trainee users 4096 17 mai   15:25 bin
drwxr-xr-x  2 trainee users 4096 24 mai   10:15 Bureau
drwxr-xr-x  2 trainee users 4096 24 mai   10:15 Documents
drwxr-xr-x  2 trainee users 4096 24 mai   10:15 Images
drwxr-xr-x  2 trainee users 4096 24 mai   10:15 Modèles
drwxr-xr-x  2 trainee users 4096 24 mai   10:15 Musique
drwxr-xr-x  2 trainee users 4096 24 mai   10:15 Public
drwxr-xr-x  2 trainee users 4096 17 mai   15:25 public_html
drwxr-xr-x+ 2 root    root  4096 17 oct.  19:08 rep1
drwxr-xr-x  2 trainee users 4096 24 mai   10:15 Téléchargements
drwxr-xr-x  2 trainee users 4096 24 mai   10:15 Vidéos

Utilisez maintenant la commande mv pour renommer le fichier test en TeSt :

trainee@opensuse:/tmp> mv test TeSt

Constatez le bon fonctionnement de votre commande :

trainee@opensuse:/tmp> ls -l
total 144
drwxr-xr-x 2 trainee users  4096  2 août  08:07 hsperfdata_trainee
drwx------ 2 trainee users  4096 28 juil. 11:22 icedteaplugin-trainee
-rw-r--r-- 1 trainee users     0  2 août  08:07 jar_cache6202297203218743135.tmp
-rw-r--r-- 1 trainee users     0  2 août  08:07 jar_cache7316512180383045650.tmp
drwx------ 2 trainee users  4096 19 oct.  14:20 keyring-386sie
drwx------ 2 trainee users  4096 24 mai   10:15 keyring-39MtBR
drwx------ 2 trainee users  4096 20 oct.  15:41 keyring-4Q8xoi
drwx------ 2 trainee users  4096  2 août  08:06 keyring-6DhwTd
drwx------ 2 trainee users  4096  1 juin  11:20 keyring-eNDXzS
drwx------ 2 trainee users  4096  7 nov.  12:44 mozilla-media-cache
drwxr-xr-x 2 trainee users  4096 28 juil. 11:16 netx-native-25662
drwxr-xr-x 2 trainee users  4096 28 juil. 11:21 netx-native-63491
drwx------ 2 gdm     gdm    4096 20 oct.  15:41 orbit-gdm
drwx------ 2 trainee users 12288  8 nov.  09:31 orbit-trainee
drwx------ 2 trainee users  4096  7 nov.  12:46 plugtmp
drwx------ 2 gdm     gdm    4096 20 oct.  15:41 pulse-l0HmhbrKIQBb
drwx------ 2 trainee users  4096 20 oct.  15:41 pulse-ThNmqyY7uQEz
drwxr-xr-x 2 trainee users  4096 28 juil. 11:24 SimpleHelp1674393770722982080
drwxr-xr-x 2 trainee users  4096  2 août  08:07 SimpleHelp2670031095574134323
-rw-r--r-- 1 trainee users    10  7 nov.  13:18 TeSt
drwxr-xr-x 2 trainee users  4096 24 mai   10:15 tracker-trainee
drwxr-xr-x 2 root    root   4096 28 juil. 10:57 unique
-rw-r--r-- 1 root    root  17034 28 juil. 11:12 vboxguest-Module.symvers
drwx------ 2 trainee users  4096 19 oct.  11:25 virtual-trainee.0Eb5WF
drwx------ 2 trainee users  4096 24 mai   10:15 virtual-trainee.0pd1zs
drwx------ 2 trainee users  4096  1 juin  11:20 virtual-trainee.61wRJA
drwx------ 2 trainee users  4096  2 août  08:06 virtual-trainee.Cufrrn
drwx------ 2 trainee users  4096 28 juil. 11:14 virtual-trainee.KXFvE2
drwx------ 2 trainee users  4096 20 oct.  15:41 virtual-trainee.L5gYXn
drwx------ 2 trainee users  4096 28 juil. 10:40 virtual-trainee.pMhhgn
drwx------ 2 trainee users  4096  4 oct.  11:04 virtual-trainee.QVeXhm
drwx------ 2 trainee users  4096 19 oct.  14:20 virtual-trainee.WzpGmw

Options de la commande

Les options de cette commande sont :

trainee@opensuse:/tmp> mv --help
Utilisation : mv [OPTION]... [-T] SOURCE DEST
         ou : mv [OPTION]... SOURCE... DIRECTORY
         ou : mv [OPTION]... --target-directory=DIRECTORY SOURCE...
Renomme SOURCE en DEST, ou déplace SOURCE(s) vers DIRECTORY.

Les arguments obligatoires pour les options longues le sont aussi pour les
options courtes.
      --backup[=CONTROL]       archive chaque fichier de destination existant
  -b                           identique à --backup mais n'accepte pas d'argument
  -f, --force                  ne demande pas de confirmation avant d'écraser
  -i, --interactive            demande confirmation avant d'écraser
  -n, --no-clobber             n'écrase pas les fichiers existants
Si vous indiquez plusieurs options parmi -i, -f, -n, seulement la dernière sera
effective.
      --strip-trailing-slashes  enlève les « / » en suffixe de chacun
                                 des arguments SOURCE
  -S, --suffix=SUFFIX          écrase le suffixe usuel d'archivage
  -t, --target-directory=DIRECTORY  déplace tous les arguments SOURCE vers
                               DIRECTORY
  -T, --no-target-directory    traite DEST comme un fichier normal
  -u, --update                 déplace uniquement si le fichier SOURCE est plus
                               récent que le fichier cible ou si aucun fichier
                               cible n'existe
  -v, --verbose                explique ce qui a été réalisé
      --help     affiche l'aide et quitte
      --version  affiche des informations de version et quitte

Le suffixe d'archive est « ~ », sauf s'il est définit autrement avec --suffix ou
SIMPLE_BACKUP_SUFFIX. La méthode du contrôle de version peut être sélectionnée
par l'option --backup ou par la variable d'environnement VERSION_CONTROL.
Les valeurs sont les suivantes :

  none, off       n'archive jamais (même si --backup est utilisé)
  numbered, t     effectue des archives numérotées
  existing, nil   numérote si des archives numérotées existent déjà, se
                  comporte comme « simple » dans le cas contraire 
  simple, never   effectue toujours des archives simples

Signalez les anomalies de « mv » à <bug-coreutils@gnu.org>
Page d'accueil de « GNU coreutils » : <http://www.gnu.org/software/coreutils/>
Aide générale sur les logiciels GNU : <http://www.gnu.org/gethelp/>
Traduction de « mv » à <http://translationproject.org/team/fr.html>
Pour une documentation complète, lancer « info coreutils 'mv invocation' »

La commande mkdir

La commande mkdir permet de créer un répertoire.

Placez-vous dans votre répertoire personnel :

trainee@opensuse:/tmp> cd ~

Créez le répertoire testdir :

trainee@opensuse:~> mkdir testdir

Constatez le bon fonctionnement de votre commande :

trainee@opensuse:~> ls
bin  Bureau  Documents  Images  Modèles  Musique  Public  public_html  Téléchargements  testdir  Vidéos

Options de la commande

Les options de cette commande sont :

trainee@opensuse:~> mkdir --help
Utilisation : mkdir [OPTION]... DIRECTORY...
Crée le(s) répertoire(s) DIRECTORY s'il(s) n'existe(nt) pas.

Les arguments obligatoires pour les options longues le sont aussi pour les
options courtes.
  -m, --mode=MODE   définit l'accès fichier à MODE (comme avec chmod),
                    et non a=rwx - umask
  -p, --parents     pas d'erreur si existant, crée les répertoires parents si
                    nécessaire
  -v, --verbose     affiche un message pour chaque répertoire créé
  -Z, --context=CTX  définit à CTX le contexte de sécurité SELinux de chaque
                     répertoire créé
      --help     affiche l'aide et quitte
      --version  affiche des informations de version et quitte

Signalez les anomalies de « mkdir » à <bug-coreutils@gnu.org>
Page d'accueil de « GNU coreutils » : <http://www.gnu.org/software/coreutils/>
Aide générale sur les logiciels GNU : <http://www.gnu.org/gethelp/>
Traduction de « mkdir » à <http://translationproject.org/team/fr.html>
Pour une documentation complète, lancer « info coreutils 'mkdir invocation' »

La commande rmdir

La commande rmdir permet de supprimer un répertoire vide.

Utilisez la commande rmdir pour supprimer le répertoire testdir :

trainee@opensuse:~> rmdir testdir

Constatez le bon fonctionnement de votre commande :

trainee@opensuse:~> ls
bin  Bureau  Documents  Images  Modèles  Musique  Public  public_html  Téléchargements  Vidéos

Options de la commande

Les options de cette commande sont :

trainee@opensuse:~> rmdir --help
Utilisation : rmdir [OPTION]... DIRECTORY...
Supprime les répertoires DIRECTORY, s'ils sont vides.

      --ignore-fail-on-non-empty
                  ignore les échecs qui sont uniquement dûs à répertoire non
                  vide
  -p, --parents   supprime DIRECTORY et ses parents, p. ex. « rmdir -p a/b/c »
                  est identique à « rmdir a/b/c a/b a »
  -v, --verbose   affiche un diagnostic pour chaque répertoire traité
      --help     affiche l'aide et quitte
      --version  affiche des informations de version et quitte

Signalez les anomalies de « rmdir » à <bug-coreutils@gnu.org>
Page d'accueil de « GNU coreutils » : <http://www.gnu.org/software/coreutils/>
Aide générale sur les logiciels GNU : <http://www.gnu.org/gethelp/>
Traduction de « rmdir » à <http://translationproject.org/team/fr.html>
Pour une documentation complète, lancer « info coreutils 'rmdir invocation' »

La commande rm

La commande rm permet de supprimer un répertoire vide ou non ou un fichier.

Créez d'abord le répertoire testdir1 dans votre répertoire personnel /home/trainee :

trainee@opensuse:~> mkdir testdir1

Changez de répertoire courant vers /tmp :

trainee@opensuse:~> cd /tmp

Créez le fichier vide TeSt :

trainee@opensuse:/tmp> touch TeSt

Injectez la chaîne fenestros dans le fichier TeSt :

trainee@opensuse:/tmp> echo "fenestros" > TeSt

Changez de répertoire courant vers /home/trainee :

trainee@opensuse:/tmp> cd ~

Déplacez le fichier /tmp/TeSt vers /home/trainee/testdir1 :

trainee@opensuse:~> mv /tmp/TeSt ~/testdir1

Constatez que le fichier TeSt est bien présent dans le répertoire ~/testdir1 :

trainee@opensuse:~> ls -lR testdir1/
testdir1/:
total 4
-rw-r--r-- 1 trainee users 10  8 nov.  14:54 TeSt

Supprimez maintenant le répertorie ~/testdir1 ainsi que son contenu :

trainee@opensuse:~> rm -rf testdir1/

Vérifiez la suppression du répertoire ~/testdir1 :

trainee@opensuse:~> ls
bin  Bureau  Documents  Images  Modèles  Musique  Public  public_html  Téléchargements  Vidéos

Options de la commande

Les options de cette commande sont :

trainee@opensuse:~> rm --help
Utilisation : rm [OPTION]... FILE...
Supprime (retire le lien) les fichiers FILE(s).

  -f, --force           ignore les fichiers inexistants, ne demande jamais
  -i                    demande confirmation avant chaque suppression
  -I                    demande confirmation une fois avant de supprimer plus de
                        3 fichiers, ou lors de suppresion recursive. Moins
                        intrusif que -i, tout en protégeant contre la majorité
                        des erreurs
      --interactive[=WHEN]  demande confirmation selon WHEN : « never »
                            (jamais), « once » (une fois, -I), ou « always »
                            (toujours, -i). Sans WHEN, pose la question à chaque
                            fois.
      --one-file-system  quand une hiérarchie est supprimée récursivement, ignore
                         tout répertoire qui est sur un système de fichiers différent
                         de celui de l'argument en question de la ligne de commande
      --no-preserve-root ne traite pas « / » de manière spécifique
      --preserve-root   n'escamote pas « / » (par défaut)
  -r, -R, --recursive   supprime les répertoires et leur contenu récursivement
  -v, --verbose         explique ce qui va être fait
      --help     affiche l'aide et quitte
      --version  affiche des informations de version et quitte

Par défaut, rm ne supprime pas les répertoires. Utilisez l'option --recursive
(-r ou -R) pour supprimer les répertoires, ainsi que l'intégralité de leur
contenu.

Pour supprimer un fichier dont le nom débute par « - », par exemple « -foo »,
utilisez une des commandes suivantes :
  rm -- -foo

  rm ./-foo

Si vous utilisez « rm » pour supprimer un fichier, il est habituellement
possible de récupérer une partie de son contenu, en disposant de suffisamment
d'expertise et de temps. Pour être certain que le contenu ne soit pas
récupérable, envisagez l'utilisation de « shred ».

Signalez les anomalies de « rm » à <bug-coreutils@gnu.org>
Page d'accueil de « GNU coreutils » : <http://www.gnu.org/software/coreutils/>
Aide générale sur les logiciels GNU : <http://www.gnu.org/gethelp/>
Traduction de « rm » à <http://translationproject.org/team/fr.html>
Pour une documentation complète, lancer « info coreutils 'rm invocation' »

La commande sort

Cette commande trie dans le canal d’entrée et retourne à l’écran une liste triée.

Commencez par créer les 4 fichiers aac, abc, bca et xyz :

trainee@opensuse:~> touch aac abc bca xyz

Constatez le bon fonctionnement de votre commande :

trainee@opensuse:~> ls
aac  abc  bca  bin  Bureau  Documents  Images  Modèles  Musique  Public  public_html  Téléchargements  Vidéos  xyz

Triez maintenant la liste du contenu du répertoire courant :

trainee@opensuse:~> ls | sort
aac
abc
bca
bin
Bureau
Documents
Images
Modèles
Musique
Public
public_html
Téléchargements
Vidéos
xyz

<note important> Notez l'utilisation du caractère spécial |, appelé un tube ou encore un pipe. Un tube est utilisé pour présenter sur l'entrée standard de la commande qui suit, la sortie standard de la commande qui précède. </note>

Triez maintenant la liste du contenu du répertoire courant dans le sens inverse :

trainee@opensuse:~> ls | sort -r
xyz
Vidéos
Téléchargements
public_html
Public
Musique
Modèles
Images
Documents
Bureau
bin
bca
abc
aac

Options de la commande

Les options de cette commande sont :

trainee@opensuse:~> sort --help
Utilisation : sort [OPTION]... [FILE]...
         ou : sort [OPTION]... --files0-from=F
Affiche la concaténation triée de tous les FILE(s) sur la sortie standard.

Les arguments obligatoires pour les options longues le sont aussi pour les
options courtes.
Options de tri :

  -b, --ignore-leading-blanks ignore les blancs en en-tête
  -d, --dictionary-order      considére seulement les blancs et les caractères
                              alphanumériques
  -f, --ignore-case           transforme les caractères minuscules en majuscules
  -g, --general-numeric-sort  compare selon la valeur numérique générale
  -i, --ignore-nonprinting    considère seulement les caractères affichables
  -M, --month-sort            compare (inconnu) < « JANV. » < ... < « DÉC. »
  -h, --human-numeric-sort    compare des chiffres humanisés (p. ex. 2K 1G)
  -n, --numeric-sort          compare selon une valeur numérique de type chaîne
  -R, --random-sort           tri par clé de hachage aléatoire
      --random-source=FILE    obtient des octets aléatoires depuis FILE
  -r, --reverse               inverse le résultat des comparaisons
      --sort=WORD             tri selon WORD :
                                general-numeric -g, human-numeric -h, month -M,
                                numeric -n, random -R, version -V
  -V, --version-sort          tri naturel des chiffres (de version) contenu dans
                              le texte

Autres Options :

      --batch-size=NMERGE   fusionne au plus NMERGE entréeS à la fois;
                            pour plus, employez des fichiers temporaires
  -c, --check, --check=diagnose-first  check for sorted input; do not sort
  -C, --check=quiet, --check=silent  like -c, but do not report first bad line
      --compress-program=PROG  compress temporaries with PROG;
                              decompress them with PROG -d
      --debug               annotate the part of the line used to sort,
                              and warn about questionable usage to stderr
      --files0-from=F       read input from the files specified by
                            NUL-terminated names in file F;
                            If F is - then read names from standard input
  -k, --key=POS1[,POS2]     start a key at POS1 (origin 1), end it at POS2
                            (default end of line).  See POS syntax below
  -m, --merge               merge already sorted files; do not sort
  -o, --output=FILE         écrit le résultat dans FILE au lieu de la sortie
                            standard
  -s, --stable              stabilise le tri en désactivant la comparaison de
                            dernier recours
  -S, --buffer-size=SIZE    utilise SIZE pour le tampon mémoire principal
  -t, --field-separator=SEP  use SEP instead of non-blank to blank transition
  -T, --temporary-directory=DIR  use DIR for temporaries, not $TMPDIR or /tmp;
                              multiple options specify multiple directories
      --parallel=N          change the number of sorts run concurrently to N
  -u, --unique              with -c, check for strict ordering;
                              without -c, output only the first of an equal run
  -z, --zero-terminated     termine les lignes avec l'octet 0, 
                            et non pas par un retour de chariot
      --help     affiche l'aide et quitte
      --version  affiche des informations de version et quitte

POS est F[.C][OPTS], où F est le numéro de champ et C la position du caractère
dans le champ ;  chacun à origine 1. Si ni -t ni -b est actif, les caractères d'un
champs sont comptés depuis le début de l'espace précédant. OPTS se compose d'une
option de tri d'une ou plusieurs lettres simples, laquelle écrase
l'ordonnancement global pour cette clé. Si aucune clé n'est donnée,
la ligne entière est utilisée comme clé.

SIZE peut être suivi d'un des suffixes multiplicatifs suivants :
% 1% de mémoire, b 1, k 1024 (par défaut), et ainsi de suite pour M, G, T, P,
E, Z, Y.

Sans FILE, ou quand FILE est -, lit l'entrée standard.

*** AVERTISSEMENT ***
La localisation utilisée dans l'environnement affecte l'ordre du tri.
Utilisez LC_ALL=C pour obtenir un tri selon un ordre traditionnel qui utilise
la valeur native des octets.

Signalez les anomalies de « sort » à <bug-coreutils@gnu.org>
Page d'accueil de « GNU coreutils » : <http://www.gnu.org/software/coreutils/>
Aide générale sur les logiciels GNU : <http://www.gnu.org/gethelp/>
Traduction de « sort » à <http://translationproject.org/team/fr.html>
Pour une documentation complète, lancer « info coreutils 'sort invocation' »

La commande more

Cette commande affiche le contenu d’un fichier texte et l’envoi page par page au canal de sortie à l'aide de la touche Espace :

trainee@opensuse:~> more /etc/group
at:!:25:
audio:x:17:pulse
avahi:!:105:
bin:x:1:daemon
cdrom:x:20:
console:x:21:
daemon:x:2:
dialout:x:16:
disk:x:6:
floppy:x:19:
ftp:x:49:
games:x:40:
gdm:!:109:
kmem:x:9:
lock:x:54:
lp:x:7:
mail:x:12:
maildrop:!:59:
man:x:62:
messagebus:!:104:
modem:x:43:
news:x:13:
nobody:x:65533:
--Plus--(48%)

<note important> L'utilisation de la touche ↵ Entrée permet de défiler le fichier ligne par ligne. L'utilisation de la touche Barre d'espace permet de défiler le fichier écran par écran. L'utilisation de la touche Q permets de revenir au prompt. </note>

<note> La commande less produit un résultat similaire à la commande more. Utilisez la commande less en vous référant à l'aide de la commande avec less - -help. Laquelle des deux commandes vous semble la plus puissante ? </note>

Options de la commande

Les options de cette commande sont :

trainee@opensuse:~> more --help
more : option inconnue « -h »
utilisation : more [-dflpcsu] [+no-de-ligne | +/patron] nom1 nom2 ...

La commande find

Cette commande sert à rechercher un ou des fichiers dans le répertoire courant ou le répertoire spécifié en argument.

Recherchez le fichier acc dans le répertoire courant :

trainee@opensuse:~> find acc
find: `acc': Aucun fichier ou dossier de ce type

<note important> Notez que ce fichier n'existe pas et que le système vous en informe clairement. </note>

Recherchez maintenant le fichier aac dans le répertoire courant :

trainee@opensuse:~> find aac
aac

<note important> Notez que ce fichier existe et que le système vous en informe en vous indiquant son nom. </note>

Options de la commande

Les options de cette commande sont :

trainee@opensuse:~> find --help
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

default path is the current directory; default expression is -print
expression may consist of: operators, options, tests, and actions:

operators (decreasing precedence; -and is implicit where no others are given):
      ( EXPR )   ! EXPR   -not EXPR   EXPR1 -a EXPR2   EXPR1 -and EXPR2
      EXPR1 -o EXPR2   EXPR1 -or EXPR2   EXPR1 , EXPR2

positional options (always true): -daystart -follow -regextype

normal options (always true, specified before other expressions):
      -depth --help -maxdepth LEVELS -mindepth LEVELS -mount -noleaf
      --version -xdev -ignore_readdir_race -noignore_readdir_race

tests (N can be +N or -N or N): -amin N -anewer FILE -atime N -cmin N
      -cnewer FILE -ctime N -empty -false -fstype TYPE -gid N -group NAME
      -ilname PATTERN -iname PATTERN -inum N -iwholename PATTERN -iregex PATTERN
      -links N -lname PATTERN -mmin N -mtime N -name PATTERN -newer FILE
      -nouser -nogroup -path PATTERN -perm [+-]MODE -regex PATTERN
      -readable -writable -executable
      -wholename PATTERN -size N[bcwkMG] -true -type [bcdpflsD] -uid N
      -used N -user NAME -xtype [bcdpfls]
      -context CONTEXT


actions: -delete -print0 -printf FORMAT -fprintf FILE FORMAT -print 
      -fprint0 FILE -fprint FILE -ls -fls FILE -prune -quit
      -exec COMMAND ; -exec COMMAND {} + -ok COMMAND ;
      -execdir COMMAND ; -execdir COMMAND {} + -okdir COMMAND ;

Report (and track progress on fixing) bugs via the findutils bug-reporting
page at http://savannah.gnu.org/ or, if you have no web access, by sending
email to <bug-findutils@gnu.org>.

La commande su

La commande su (Switch User) permet d'assumer l'identité d'un autre utilisateur du système à condition de connaître son mot de passe. Exécutée sans argument, le système suppose que vous souhaitez devenir root :

trainee@opensuse:~> su -
Mot de passe : fenestros
opensuse:~ # 

<note important> Notez que le mot de passe saisi ne sera pas visible. </note>

Options de la commande

Les options de cette commande sont :

opensuse:~ # su --help
Usage: su [OPTION]... [-] [USER [ARG]...]
Change the effective user id and group id to that of USER.

  -, -l, --login               make the shell a login shell
  -c, --command=COMMAND        pass a single COMMAND to the shell with -c
  -f, --fast                   pass -f to the shell (for csh or tcsh)
  -m, --preserve-environment   do not reset environment variables
  -p                           same as -m
  -s, --shell=SHELL            run SHELL if /etc/shells allows it
      --help     display this help and exit
      --version  output version information and exit

A mere - implies -l.   If USER not given, assume root.

Report su bugs to bug-coreutils@gnu.org
GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>
Report su translation bugs to <http://translationproject.org/team/>
For complete documentation, run: info coreutils 'su invocation'

Les commandes locate et updatedb

La commande locate sert à rechercher un ou des fichiers dans l'ensemble du système de fichiers en commençant à la racine (/) en spécifiant une chaîne à rechercher en argumant à la commande. La commande locate utilise une base de données afin d'effectuer sa recherche. Pour construire ou mettre à jour cette base de données avant l'utilisation de la commande pour une recherche, il faut utiliser la commande updatedb en tant que root.

Sous openSUSE, les binaires locate et updatedb ne sont pas installés par défaut. Par conséquent il est nécessaire de les installer :

opensuse:~ # cnf locate
                     
Le programme 'locate' peut être trouvé dans les paquets suivant :
  * findutils-locate [ chemin : /usr/bin/locate, dépôt : zypp (openSUSE-11.4-11.4-0) ]
  * findutils-locate [ chemin : /usr/bin/locate, dépôt : zypp (repo-oss) ]

Try installing with:
    zypper install findutils-locate

L'installation se fait donc avec la ligne de commande suivante :

opensuse:~ # zypper install findutils-locate
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following NEW package is going to be installed:
  findutils-locate 

1 new package to install.
Overall download size: 52.0 KiB. After the operation, additional 132.0 KiB will be used.
Continue? [y/n/?] (y): y
Retrieving package findutils-locate-4.4.2-11.1.i586 (1/1), 52.0 KiB (132.0 KiB unpacked)
Retrieving: findutils-locate-4.4.2-11.1.i586.rpm [done]
Installing: findutils-locate-4.4.2-11.1 [done]
Additional rpm output:
Updating /etc/sysconfig/locate...

Sous openSUSE, la base de données par défaut est /var/lib/locatedb :

opensuse:~ # ls -l /var/lib/locatedb
-rw-r--r-- 1 root root 2006126 Nov  8 15:15 /var/lib/locatedb

<note important> Pour plus d'information concernant le format de la base de données, consultez cette page. </note>

La commande updatedb peut être configurée en éditant son fichier de configuration /etc/sysconfig/locate :

## Path:	Applications/Locate
## Description:	Configuration of updatedb
## Type:	yesno
## Default:	yes
#
# Should updatedb (for locate) be started by cron.daily ("yes" or "no")
#
RUN_UPDATEDB=yes

## Type:	string(nobody,root)
## Default:	nobody
#
# updatedb has a parameter "--localuser".
# It runs the "find" command as this user. Some people think this is a
# security hole if set to 'root' (because some directory information can
# be read which is normally protected). Others think it is useful to hold
# all files in the database.
# So if you want full information in locate db, set RUN_UPDATEDB_AS=root.
# If you want security use RUN_UPDATEDB_AS=nobody.
#
RUN_UPDATEDB_AS=nobody

## Type:	string
## Default:	""
#
# uptdatedb normally only scans local harddisks, but can include net paths
# in the database as well. If you specify directories here, they will be
# scanned.
#
UPDATEDB_NETPATHS=""

## Type:	string
## Default:	"/mnt /cdrom /tmp /usr/tmp /var/tmp /var/spool /proc /media /sys"
#
# uptdatedb can skip directories for its database. The following parameter
# says which ones.
#
UPDATEDB_PRUNEPATHS="/mnt /cdrom /tmp /usr/tmp /var/tmp /var/spool /proc /media /sys"

## Type:	string("",nobody)
## Default:	""
#
# Search net paths as ? (e.g. nobody)
#
UPDATEDB_NETUSER=""

## Type:	string
## Default:	""
#
# updatedb can skip certain filesystem types completely
# this sets the parameter "--prunefs" for updatedb
#
UPDATEDB_PRUNEFS=""

L'utilisation des deux commandes est illustrée ci-après :

opensuse:~ # updatedb
/usr/bin/find: `/home/trainee/.gvfs': Permission denied
opensuse:~ # locate passwd
/etc/apparmor/profiles/extras/usr.bin.passwd
/etc/default/passwd
/etc/pam.d/passwd
/etc/passwd
/etc/passwd.old
/etc/passwd.YaST2save
/etc/postfix/sasl_passwd
/etc/postfix/sasl_passwd.db
/lib/security/pam_unix_passwd.so
/usr/bin/gpasswd
/usr/bin/ldappasswd
/usr/bin/lppasswd
/usr/bin/passwd
/usr/bin/smbpasswd
/usr/bin/vino-passwd
/usr/bin/vncpasswd
/usr/bin/vncpasswd.arg
/usr/bin/yppasswd
/usr/include/rpcsvc/yppasswd.h
/usr/include/rpcsvc/yppasswd.x
/usr/lib/perl5/vendor_perl/5.12.3/i586-linux-thread-multi/rpcsvc/yppasswd.ph
/usr/lib/YaST2/servers_non_y2/ag_passwd
/usr/sbin/chpasswd
/usr/sbin/saslpasswd2
/usr/share/awk/passwd.awk
...

Options des commandes

Les options de la commande updatedb sont :

opensuse:~ # updatedb --help
Usage: /usr/bin/updatedb [--findoptions='-option1 -option2...']
       [--localpaths='dir1 dir2...'] [--netpaths='dir1 dir2...']
       [--prunepaths='dir1 dir2...'] [--prunefs='fs1 fs2...']
       [--output=dbfile] [--netuser=user] [--localuser=user] 
       [--old-format] [--dbformat] [--version] [--help]

Report bugs to <bug-findutils@gnu.org>.

Les options de la commande locate sont :

opensuse:~ # locate --help
Usage: locate [-d path | --database=path] [-e | -E | --[non-]existing]
      [-i | --ignore-case] [-w | --wholename] [-b | --basename] 
      [--limit=N | -l N] [-S | --statistics] [-0 | --null] [-c | --count]
      [-P | -H | --nofollow] [-L | --follow] [-m | --mmap ] [ -s | --stdio ]
      [-A | --all] [-p | --print] [-r | --regex ] [--regextype=TYPE]
      [--max-database-age D] [--version] [--help]
      pattern...

Report bugs to <bug-findutils@gnu.org>.

La commande whereis

La commande whereis permet une recherche de l'emplacement des exécutables, des fichiers de configuration et des manuels pour la commande passée en argument :

opensuse:~ # whereis passwd
passwd: /usr/bin/passwd /etc/passwd /etc/passwd.old /etc/passwd.YaST2save /usr/bin/X11/passwd /usr/share/man/man1/passwd.1ssl.gz /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz

Options de la commande

Les options de cette commande sont :

opensuse:~ # whereis --help
whereis [ -sbmu ] [ -SBM dir ... -f ] name...

La commande which

La commande which permet une recherche de l'emplacement d'un exécutable dans le PATH de l'utilisateur courant et retourne le premier qui est trouvé :

opensuse:~ # which passwd
/usr/bin/passwd

Options de la commande

Les options de cette commande sont :

opensuse:~ # which --help
Usage: which [options] [--] COMMAND [...]
Write the full path of COMMAND(s) to standard output.

  --version, -[vV] Print version and exit successfully.
  --help,          Print this help and exit successfully.
  --skip-dot       Skip directories in PATH that start with a dot.
  --skip-tilde     Skip directories in PATH that start with a tilde.
  --show-dot       Don't expand a dot to current directory in output.
  --show-tilde     Output a tilde for HOME directory for non-root.
  --tty-only       Stop processing options on the right if not on tty.
  --all, -a        Print all matches in PATH, not just the first
  --read-alias, -i Read list of aliases from stdin.
  --skip-alias     Ignore option --read-alias; don't read stdin.
  --read-functions Read shell functions from stdin.
  --skip-functions Ignore option --read-functions; don't read stdin.

Recommended use is to write the output of (alias; declare -f) to standard
input, so that which can show aliases and shell functions. See which(1) for
examples.

If the options --read-alias and/or --read-functions are specified then the
output can be a full alias or function definition, optionally followed by
the full path of each command used inside of those.

Report bugs to <which-bugs@gnu.org>.

La commande uptime

Cette commande nous indique l'heure actuelle, la durée depuis laquelle le système fonctionne, le nombre d'utilisateurs actuellement connectés et la charge système moyenne pour les dernières 1 minute, 5 minutes et 15 minutes :

opensuse:~ # uptime
 16:11pm  up   9:27,  3 users,  load average: 0.20, 0.13, 0.08

Options de la commande

Les options de cette commande sont :

opensuse:~ # uptime --help
Usage: uptime [OPTION]... [FILE]
Print the current time, the length of time the system has been up,
the number of users on the system, and the average number of jobs
in the run queue over the last 1, 5 and 15 minutes.  Processes in
an uninterruptible sleep state also contribute to the load average.
If FILE is not specified, use /var/run/utmp.  /var/log/wtmp as FILE is common.

      --help     display this help and exit
      --version  output version information and exit

Report uptime bugs to bug-coreutils@gnu.org
GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>
Report uptime translation bugs to <http://translationproject.org/team/>
For complete documentation, run: info coreutils 'uptime invocation'

La commande w

Cette commande reprend les informations de la commande uptime et y ajoute des détails sur les utilisateurs connectés via un terminal :

opensuse:~ # w
 16:12:24 up  9:28,  3 users,  load average: 0.13, 0.13, 0.08
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
trainee  :0        20Oct11 ?xdm?   1:50m  0.06s /usr/lib/gdm/gdm-simple-slave --display-id /org/gnome/DisplayManager/Dis
trainee  console   20Oct11 19days  0.00s  0.06s /usr/lib/gdm/gdm-simple-slave --display-id /org/gnome/DisplayManager/Dis
trainee  pts/0     20Oct11  1.00s  0.41s 36.32s gnome-terminal

La valeur JCPU indique le temps processeur utilisé par tous les processus attachés au terminal de la connexion. Cette valeur n'inclut pas les temps des anciens processus en arrière plan.

La valeur PCPU indique le temps processeur utilisé par les processus attachés au terminal de la connexion et actuellement en cours (autrement dit le processus identifié dans la colonne WHAT).

Options de la commande

Les options de cette commande sont :

opensuse:~ # w --help
w: invalid option -- '-'
usage: w -hlsufV [user]
    -h    skip header
    -l    long listing (default)
    -s    short listing
    -n    non truncated listing (large)
    -u    ignore uid of processes
    -f    toggle FROM field (default off)
    -V    display version

La commande uname

Cette commande affiche des informations sur le système :

opensuse:~ # uname -a
Linux opensuse 2.6.37.6-0.5-desktop #1 SMP PREEMPT 2011-04-25 21:48:33 +0200 i686 i686 i386 GNU/Linux
opensuse:~ # uname -s
Linux
opensuse:~ # uname -n
opensuse
opensuse:~ # uname -r
2.6.37.6-0.5-desktop
opensuse:~ # uname -v
#1 SMP PREEMPT 2011-04-25 21:48:33 +0200
opensuse:~ # uname -m
i686
opensuse:~ # uname -p
i686
opensuse:~ # uname -i
i386
opensuse:~ # uname -o
GNU/Linux

Options de la commande

Les options de cette commande sont :

opensuse:~ # uname --help
Usage: uname [OPTION]...
Print certain system information.  With no OPTION, same as -s.

  -a, --all                print all information, in the following order,
                             except omit -p and -i if unknown:
  -s, --kernel-name        print the kernel name
  -n, --nodename           print the network node hostname
  -r, --kernel-release     print the kernel release
  -v, --kernel-version     print the kernel version
  -m, --machine            print the machine hardware name
  -p, --processor          print the processor type or "unknown"
  -i, --hardware-platform  print the hardware platform or "unknown"
  -o, --operating-system   print the operating system
      --help     display this help and exit
      --version  output version information and exit

Report uname bugs to bug-coreutils@gnu.org
GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>
Report uname translation bugs to <http://translationproject.org/team/>
For complete documentation, run: info coreutils 'uname invocation'

La commande du

La commande du peut être utilisée pour afficher la taille des fichiers contenus dans les répertoires passés en arguments. L'utilisation suivante de la commande avec les options -s et -h sur la racine du système affiche la somme des sous-répertoires avec un affichage humanisé en Ko, Mo et Go :

opensuse:~ # du -sh /* 2>/dev/null
8.5M	/bin
24M	/boot
336K	/dev
68M	/etc
76M	/home
134M	/lib
16K	/lost+found
4.0K	/media
4.0K	/mnt
17M	/opt
0	/proc
116K	/root
13M	/sbin
4.0K	/selinux
88K	/srv
0	/sys
7.4M	/tmp
3.7G	/usr
232M	/var

<note important> Notez l'utilisation du code 2>/dev/null. Ce code envoie les erreurs éventuelles, contenues dans le canal 2 appelé le canal des erreurs, à /dev/null de façon à ce que les erreurs n'apparaissent pas à l'écran. Le canal des erreurs sera couvert dans la leçon Le Shell Bash. </note>

Saisissez maintenant la même commande sans le code 2>/dev/null :

opensuse:~ # du -sh /*
8.5M	/bin
24M	/boot
336K	/dev
68M	/etc
du: cannot access `/home/trainee/.gvfs': Permission denied
76M	/home
134M	/lib
16K	/lost+found
4.0K	/media
4.0K	/mnt
17M	/opt
du: cannot access `/proc/11145/task/11145/fd/4': No such file or directory
du: cannot access `/proc/11145/task/11145/fdinfo/4': No such file or directory
du: cannot access `/proc/11145/fd/4': No such file or directory
du: cannot access `/proc/11145/fdinfo/4': No such file or directory
0	/proc
116K	/root
13M	/sbin
4.0K	/selinux
88K	/srv
0	/sys
7.4M	/tmp
3.7G	/usr
232M	/var

<note important> Notez l'apparition des erreurs dans la sortie. </note>

Options de la commande

Les options de cette commande sont :

opensuse:~ # du --help
Usage: du [OPTION]... [FILE]...
  or:  du [OPTION]... --files0-from=F
Summarize disk usage of each FILE, recursively for directories.

Mandatory arguments to long options are mandatory for short options too.
  -a, --all             write counts for all files, not just directories
      --apparent-size   print apparent sizes, rather than disk usage; although
                          the apparent size is usually smaller, it may be
                          larger due to holes in (`sparse') files, internal
                          fragmentation, indirect blocks, and the like
  -B, --block-size=SIZE  scale sizes by SIZE before printing them.  E.g.,
                           `-BM' prints sizes in units of 1,048,576 bytes.
                           See SIZE format below.
  -b, --bytes           equivalent to `--apparent-size --block-size=1'
  -c, --total           produce a grand total
  -D, --dereference-args  dereference only symlinks that are listed on the
                          command line
      --files0-from=F   summarize disk usage of the NUL-terminated file
                          names specified in file F;
                          If F is - then read names from standard input
  -H                    equivalent to --dereference-args (-D)
  -h, --human-readable  print sizes in human readable format (e.g., 1K 234M 2G)
      --si              like -h, but use powers of 1000 not 1024
  -k                    like --block-size=1K
  -l, --count-links     count sizes many times if hard linked
  -m                    like --block-size=1M
  -L, --dereference     dereference all symbolic links
  -P, --no-dereference  don't follow any symbolic links (this is the default)
  -0, --null            end each output line with 0 byte rather than newline
  -S, --separate-dirs   do not include size of subdirectories
  -s, --summarize       display only a total for each argument
  -x, --one-file-system    skip directories on different file systems
  -X, --exclude-from=FILE  exclude files that match any pattern in FILE
      --exclude=PATTERN    exclude files that match PATTERN
  -d, --max-depth=N     print the total for a directory (or file, with --all)
                          only if it is N or fewer levels below the command
                          line argument;  --max-depth=0 is the same as
                          --summarize
      --time            show time of the last modification of any file in the
                          directory, or any of its subdirectories
      --time=WORD       show time as WORD instead of modification time:
                          atime, access, use, ctime or status
      --time-style=STYLE  show times using style STYLE:
                          full-iso, long-iso, iso, +FORMAT
                          FORMAT is interpreted like `date'
      --help     display this help and exit
      --version  output version information and exit

Display values are in units of the first available SIZE from --block-size,
and the DU_BLOCK_SIZE, BLOCK_SIZE and BLOCKSIZE environment variables.
Otherwise, units default to 1024 bytes (or 512 if POSIXLY_CORRECT is set).

SIZE may be (or may be an integer optionally followed by) one of following:
KB 1000, K 1024, MB 1000*1000, M 1024*1024, and so on for G, T, P, E, Z, Y.

Report du bugs to bug-coreutils@gnu.org
GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>
Report du translation bugs to <http://translationproject.org/team/>
For complete documentation, run: info coreutils 'du invocation'

Les commandes lsmod, modprobe, insmod et rmmod

Le noyau ou kernel est la partie du système d'exploitation qui gère les entrées/sorties avec des périphériques. Dans certains cas il est préférable de recompiler le noyau de Linux. La motivation de cette recompilation peut être :

  • la diminution de la taille du noyau,
  • la prise en charge de nouveau matériel,
  • l'ajout de fonctionnalités,
  • l'optimisation du code,
  • la correction de bogues,
  • le besoin d'une fonctionnalité expérimentale.

Dans le cas d'une utilisation courante de Linux, il est cependant préférable de faire appel aux modules. Les modules se trouvent dans le répertoire /lib/modules/<version-du-noyau> :

opensuse:~ # ls /lib/modules/2.6.37.6-0.5-desktop/
build   modules.alias      modules.builtin.bin  modules.devname  modules.symbols      systemtap
kernel  modules.alias.bin  modules.dep          modules.order    modules.symbols.bin  vdso
misc    modules.builtin    modules.dep.bin      modules.softdep  source               weak-updates

<note important> Des modules sont des fonctionnalités et pilotes qui n’ont pas étés intégrés dans le noyau. Ces modules peuvent être chargés et déchargés selon les besoins. </note>

Les commandes pour manipuler les modules sont :

  • lsmod
  • modprobe
  • insmod
  • rmmod

La commande lsmod

Pour consulter la liste des modules chargés, utilisez la commande lsmod :

opensuse:~ # lsmod
Module                  Size  Used by
fuse                   72011  2 
ip6t_LOG                7940  5 
xt_tcpudp               3052  2 
xt_pkttype               960  3 
ipt_LOG                 7845  5 
xt_limit                1753  10 
af_packet              20330  0 
vboxsf                 40320  0 
snd_pcm_oss            48271  0 
snd_mixer_oss          17521  1 snd_pcm_oss
snd_seq                57777  0 
snd_seq_device          6678  1 snd_seq
mperf                   1271  0 
vboxvideo               1276  1 
drm                   191946  2 vboxvideo
edd                     8752  0 
ip6t_REJECT             4192  3 
nf_conntrack_ipv6       8286  3 
nf_defrag_ipv6          9434  1 nf_conntrack_ipv6
ip6table_raw            1203  1 
xt_NOTRACK               864  4 
ipt_REJECT              2200  3 
iptable_raw             1294  1 
iptable_filter          1466  1 
ip6table_mangle         1636  0 
nf_conntrack_netbios_ns     1366  0 
nf_conntrack_ipv4       8584  3 
nf_defrag_ipv4          1281  1 nf_conntrack_ipv4
ip_tables              13128  2 iptable_raw,iptable_filter
xt_conntrack            2480  6 
nf_conntrack           75967  5 nf_conntrack_ipv6,xt_NOTRACK,nf_conntrack_netbios_ns,nf_conntrack_ipv4,xt_conntrack
ip6table_filter         1375  1 
ip6_tables             13404  4 ip6t_LOG,ip6table_raw,ip6table_mangle,ip6table_filter
x_tables               18727  16 ip6t_LOG,xt_tcpudp,xt_pkttype,ipt_LOG,xt_limit,ip6t_REJECT,ip6table_raw,xt_NOTRACK,ipt_REJECT,iptable_raw,iptable_filter,ip6table_mangle,ip_tables,xt_conntrack,ip6table_filter,ip6_tables
dm_mod                 76266  0 
snd_intel8x0           27702  2 
snd_ac97_codec        106769  1 snd_intel8x0
ac97_bus                1082  1 snd_ac97_codec
i2c_piix4              10342  0 
sr_mod                 15048  0 
snd_pcm                88841  3 snd_pcm_oss,snd_intel8x0,snd_ac97_codec
ppdev                   7883  0 
cdrom                  38437  1 sr_mod
joydev                  9578  0 
snd_timer              22055  2 snd_seq,snd_pcm
parport_pc             33763  0 
e1000                 139787  0 
vboxguest             188883  12 vboxsf
sg                     28446  0 
snd                    67246  12 snd_pcm_oss,snd_mixer_oss,snd_seq,snd_seq_device,snd_intel8x0,snd_ac97_codec,snd_pcm,snd_timer
parport                34550  2 ppdev,parport_pc
soundcore               7270  1 snd
snd_page_alloc          8121  2 snd_intel8x0,snd_pcm
pcspkr                  1662  0 
battery                10066  0 
ac                      3227  0 
button                  5497  0 
fan                     2575  0 
processor              36507  0 
thermal                13154  0 
thermal_sys            14790  3 fan,processor,thermal
ata_generic             3015  0 

La commande modprobe

Pour ajouter un module, on peut utiliser la commande insmod ou modprobe. Cette dernière ajoute non seulement le module passé en argument mais également ses dépendances :

opensuse:~ # modprobe ppa
opensuse:~ # lsmod
Module                  Size  Used by
ppa                    10337  0 
fuse                   72011  2 
ip6t_LOG                7940  5 
xt_tcpudp               3052  2 
xt_pkttype               960  3 
ipt_LOG                 7845  5 
xt_limit                1753  10 
...

<note important> ppa est le module pour un Iomega ZIP 100 externe en émulation SCSI via le port parallèle. </note>

<note warning> La commande insmod peut aussi être utilisée pour charger un module en mémoire. Cependant au contraire de modprobe la commande insmod ne tient pas compte des dépendances sur d’autres modules. </note>

Pour supprimer un module, on peut utiliser la commande rmmod ou modprobe -r. Cette dernière essaie de supprimer les dépendances non-utilisées également :

opensuse:~ # modprobe -r ppa
opensuse:~ # lsmod
Module                  Size  Used by
fuse                   72011  2 
ip6t_LOG                7940  5 
xt_tcpudp               3052  2 
xt_pkttype               960  3 
ipt_LOG                 7845  5 
xt_limit                1753  10 
...

<note warning> La commande rmmod ne supprime pas les dépendances installées par la commande modprobe. Pour supprimer le module et les dépendances non utilisées, il convient d'utiliser la commande modprobe avec l'option -r. </note>

Les dépendances des modules sont résolus par la commande modprobe grâce aux fichier /lib/modules/<version-du-noyau>/modules.dep. Ce dernier peut être créé manuellement grâce à la commande depmod :

opensuse:~ # depmod -v
...
/lib/modules/2.6.37.6-0.5-desktop/misc/vboxsf.ko needs "VBoxGuest_RTAssertMsg2Weak": /lib/modules/2.6.37.6-0.5-desktop/misc/vboxguest.ko
/lib/modules/2.6.37.6-0.5-desktop/misc/vboxvideo.ko needs "drm_open": /lib/modules/2.6.37.6-0.5-desktop/kernel/drivers/gpu/drm/drm.ko
/lib/modules/2.6.37.6-0.5-desktop/misc/vboxvideo.ko needs "drm_fasync": /lib/modules/2.6.37.6-0.5-desktop/kernel/drivers/gpu/drm/drm.ko
/lib/modules/2.6.37.6-0.5-desktop/misc/vboxvideo.ko needs "drm_poll": /lib/modules/2.6.37.6-0.5-desktop/kernel/drivers/gpu/drm/drm.ko
/lib/modules/2.6.37.6-0.5-desktop/misc/vboxvideo.ko needs "drm_ioctl": /lib/modules/2.6.37.6-0.5-desktop/kernel/drivers/gpu/drm/drm.ko
/lib/modules/2.6.37.6-0.5-desktop/misc/vboxvideo.ko needs "drm_exit": /lib/modules/2.6.37.6-0.5-desktop/kernel/drivers/gpu/drm/drm.ko
/lib/modules/2.6.37.6-0.5-desktop/misc/vboxvideo.ko needs "drm_init": /lib/modules/2.6.37.6-0.5-desktop/kernel/drivers/gpu/drm/drm.ko
/lib/modules/2.6.37.6-0.5-desktop/misc/vboxvideo.ko needs "drm_vblank_init": /lib/modules/2.6.37.6-0.5-desktop/kernel/drivers/gpu/drm/drm.ko
/lib/modules/2.6.37.6-0.5-desktop/misc/vboxvideo.ko needs "drm_mmap": /lib/modules/2.6.37.6-0.5-desktop/kernel/drivers/gpu/drm/drm.ko
/lib/modules/2.6.37.6-0.5-desktop/misc/vboxvideo.ko needs "drm_core_reclaim_buffers": /lib/modules/2.6.37.6-0.5-desktop/kernel/drivers/gpu/drm/drm.ko
/lib/modules/2.6.37.6-0.5-desktop/misc/vboxvideo.ko needs "drm_release": /lib/modules/2.6.37.6-0.5-desktop/kernel/drivers/gpu/drm/drm.ko
opensuse:~ #
opensuse:~ # more /lib/modules/2.6.37.6-0.5-desktop/modules.dep
kernel/arch/x86/kernel/cpu/mcheck/mce-inject.ko:
kernel/arch/x86/kernel/cpu/cpufreq/powernow-k8.ko: kernel/drivers/acpi/processor.ko kernel/drivers/thermal/thermal_sys.ko
 kernel/arch/x86/kernel/cpu/cpufreq/mperf.ko
kernel/arch/x86/kernel/cpu/cpufreq/mperf.ko:
kernel/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.ko: kernel/drivers/acpi/processor.ko kernel/drivers/thermal/thermal_sys.k
o kernel/arch/x86/kernel/cpu/cpufreq/mperf.ko
kernel/arch/x86/kernel/cpu/cpufreq/powernow-k6.ko:
kernel/arch/x86/kernel/cpu/cpufreq/powernow-k7.ko: kernel/drivers/acpi/processor.ko kernel/drivers/thermal/thermal_sys.ko
kernel/arch/x86/kernel/cpu/cpufreq/longhaul.ko:
kernel/arch/x86/kernel/cpu/cpufreq/e_powersaver.ko:
kernel/arch/x86/kernel/cpu/cpufreq/longrun.ko:
kernel/arch/x86/kernel/cpu/cpufreq/gx-suspmod.ko:
kernel/arch/x86/kernel/cpu/cpufreq/speedstep-ich.ko: kernel/arch/x86/kernel/cpu/cpufreq/speedstep-lib.ko
kernel/arch/x86/kernel/cpu/cpufreq/speedstep-lib.ko:
kernel/arch/x86/kernel/cpu/cpufreq/speedstep-smi.ko: kernel/arch/x86/kernel/cpu/cpufreq/speedstep-lib.ko
kernel/arch/x86/kernel/cpu/cpufreq/p4-clockmod.ko: kernel/arch/x86/kernel/cpu/cpufreq/speedstep-lib.ko
kernel/arch/x86/kernel/cpu/cpufreq/cpufreq-nforce2.ko:
kernel/arch/x86/kernel/cpuid.ko:
kernel/arch/x86/kernel/apm.ko:
kernel/arch/x86/kernel/microcode.ko:
kernel/arch/x86/crypto/aes-i586.ko:
kernel/arch/x86/crypto/twofish-i586.ko: kernel/crypto/twofish_common.ko
kernel/arch/x86/crypto/salsa20-i586.ko:
--More--(0%)

Sous openSUSE, les fichiers se trouvant dans le répertoire /etc/modprobe.d sont utilisés pour spécifier les options éventuelles à passer aux modules lors de leur chargement ainsi que les alias utilisés pour leur faire référence :

opensuse:~ # ls /etc/modprobe.d
00-system.conf               50-bluetooth.conf  50-iwl3945.conf  50-sound.conf            50-tv.conf
10-unsupported-modules.conf  50-ipw2200.conf    50-nvidia.conf   50-sound.conf.YaST2save  99-local.conf
50-blacklist.conf            50-iwagn.conf      50-prism54.conf  50-thinkpad_acpi.conf

C'est le fichier /etc/modprobe.d/00-system.conf qui contient la majorité des configurations importantes :

#
# Copyright (c) 1996-2002 SuSE Linux AG Nuernberg, Germany.
# All rights reserved.
#
# Author: Hubert Mantel <mantel@suse.de>, 1996-2002
#
# Configuration file for loadable modules; used by modprobe
#
# Please don't edit this file. Place your settings into
# /etc/modprobe.d/99-local.conf instead.
#
#
########################################################################
# If you want to use the new autofs4
########################################################################

alias autofs           autofs4


########################################################################
# block dev aliases
########################################################################

# network block device
alias block-major-45      pd
alias block-major-47      pf

########################################################################
# char dev aliases
########################################################################

install char-major-10-134 /bin/true
install char-major-10-135 /bin/true
alias char-major-10-181   toshiba
alias char-major-10-250   sonypi
options sonypi            minor=250

########################################################################
# ISDN
########################################################################
install b1pci /bin/true
install c4 /bin/true
install sc /bin/true
install hisax /bin/true
install hisax_fcpcipnp /bin/true
install hfc4s8s_l1 /bin/true
install hysdn /bin/true
install pcbit /bin/true
install t1pci /bin/true
install divas /bin/true

# NFS
alias nfs4 nfs

# rpc_pipefs
install rpc_pipefs /sbin/modprobe sunrpc

# we don't want ide-scsi handle CD drives (bnc#242009)
options ide-scsi idescsi_nocd=1

# pata_acpi is useful for certain limited cases but it tries to attach any
# controller with IDE class code causing more harm than good if loaded by
# default.  Blacklist it so that it can be used selectively.
blacklist pata_acpi

# "Warning! ehci_hcd should always be loaded before uhci_hcd and ohci_hcd, not
# after" (bnc#449853)
# mkinitrd hints:
# SUSE INITRD: uhci-hcd REQUIRES ehci-hcd
# SUSE INITRD: ohci-hcd REQUIRES ehci-hcd
install uhci-hcd /sbin/modprobe ehci-hcd; /sbin/modprobe --ignore-install uhci-hcd
install ohci-hcd /sbin/modprobe ehci-hcd; /sbin/modprobe --ignore-install ohci-hcd

# libcrc32c calls crypto_alloc_shash("crc32c", 0, 0), which results in a
# request_module("crc32c"), but that dependency is not seen by modpost/depmod
# https://bugzilla.novell.com/552443
# SUSE INITRD: libcrc32c REQUIRES crc32c
 

# end of common part for modprobe.conf
# begin of i386 part for modprobe.conf

alias parport_lowlevel    parport_pc
# disable DMA for parallel port (bnc#180390)
options parport_pc dma=none
# options parport_pc io=0x378 irq=none
# If you have multiple parallel ports, specify them this way:
# options parport_pc io=0x378,0x278  irq=none,none

# Linux ACP modem (Mwave)
alias char-major-10-219 mwave
# options mwave dspirq=10 dspio=0x130 uartirq=3 uartio=0x2f8

# IBM thinkpad tpctl
# see /usr/share/doc/packages/tpctl/
alias char-major-10-170 thinkpad
# options thinkpad enable_smapi=0


# required for DRI support on SiS chips
options sisfb             mode=none mem=12288

# ata_piix can't handle ICH6 in AHCI mode
install ata_piix /sbin/modprobe ahci 2>&1 |:; /sbin/modprobe --ignore-install ata_piix

# QEMU/KVM can handle ACPI Hotplugging
alias dmi:bvnQEMU:bvrQEMU:* acpiphp

# end of i386 part for modprobe.conf

Options de la commande modprobe

Les options de cette commande sont :

opensuse:~ # modprobe --help
modprobe: unrecognized option '--help'
Usage: modprobe [-v] [-V] [-C config-file] [-d <dirname> ] [-n] [-i] [-q] [-b] [-o <modname>] [ --dump-modversions ] <modname> [parameters...]
modprobe -r [-n] [-i] [-v] <modulename> ...
modprobe -l -t <dirname> [ -a <modulename> ...]

La commande modinfo

Il est possible d'obtenir des informations sur un module grâce à la commande modinfo :

opensuse:~ # modinfo ppa
filename:       /lib/modules/2.6.37.6-0.5-desktop/kernel/drivers/scsi/ppa.ko
license:        GPL
srcversion:     B19ED8FD82AFB840F5006C3
depends:        parport
vermagic:       2.6.37.6-0.5-desktop SMP preempt mod_unload modversions 686 

Options de la commande modinfo

Les options de cette commande sont :

opensuse:~ # modinfo --help
Usage: modinfo [-0][-F field][-k kernelversion][-b basedir]  module...
 Prints out the information about one or more module(s).
 If a fieldname is given, just print out that field (or nothing if not found).
 Otherwise, print all information out in a readable form
 If -0 is given, separate with nul, not newline.
 If -b is given, use an image of the module tree.

La commande clear

Cette commande est utilisée pour effacer le contenu de l'écran courant du terminal :

opensuse:~ # clear

opensuse:~ # 

La commande exit

Cette commande ferme le terminal courant.

Options de la commande

Les options de cette commande sont :

opensuse:~ # help exit
exit: exit [n]
    Exit the shell.
    
    Exits the shell with a status of N.  If N is omitted, the exit status
    is that of the last command executed.

La commande logout

Cette commande est utilisée pour se déconnecter d'un terminal de connexion en écrivant les données umtp et wmtp dans les fichiers de journalisation.

Options de la commande

Les options de cette commande sont :

opensuse:~ # help logout
logout: logout [n]
    Exit a login shell.
    
    Exits a login shell with exit status N.  Returns an error if not executed
    in a login shell.

La commande shutdown

La commande utilisée pour arrêter le système est la commande shutdown :

shutdown [-t sec] [-akrhHPfnc] heure [message]

Lors de l'arrêt de la machine, Linux procède, entre autre, aux tâches suivantes :

  • Il previent les utilisateurs
  • Il arrête tous les services
  • Il inscrit toutes les données sur disque
  • Il démonte les systèmes de fichiers

L'utilisation de la commande shutdown peut être accordée à d'autres utilisateurs de root en utilisant le fichier /etc/shutdown.allow

Options de la commande

Les options de cette commande sont :

opensuse:~ # shutdown --help
shutdown: invalid option -- '-'
Usage:	  shutdown [-akrhPHfFnc] [-t sec] time [warning message]
		  -a:      use /etc/shutdown.allow
		  -k:      don't really shutdown, only warn.
		  -r:      reboot after shutdown.
		  -h:      halt after shutdown.
		  -P:      halt action is to turn off power.
		  -H:      halt action is to just halt.
		  -f:      do a 'fast' reboot (skip fsck).
		  -F:      Force fsck on reboot.
		  -n:      do not go through "init" but go down real fast.
		  -c:      cancel a running shutdown.
		  -t secs: delay between warning and kill signal.
		  ** the "time" argument is mandatory! (try "now") **

Parmi les options les plus importantes, on note :

Option Description
-h Arrêter le système
-r Re-démarrer le système
-c Annuler l'opération shutdown en cours
-f Re-démarrer rapidement sans vérifier les systèmes de fichiers
-F Forcer la vérification des systèmes de fichiers lors du prochain démarrage

L'option heure peut prendre plusieurs valeurs :

Valeur Description
hh:mm L'heure à laquelle l'opération aura lieu
+m Nombre de minutes avant que l'opération aura lieu
now L'opération est immédiate

<note warning> Si l'opération est programmée pour dans moins de 5 minutes, les connexions supplémentaires sont interdites. </note>

La commande reboot

Cette commande redémarre le système. Quand le système fonctionne normalement, l'exécution de reboot appelle la commande shutdown -r.

Options de la commande

Les options de cette commande sont :

opensuse:~ # reboot --help
usage: reboot [-n] [-w] [-d] [-f] [-h] [-i]
	-n: don't sync before halting the system
	-w: only write a wtmp reboot record and exit.
	-d: don't write a wtmp record.
	-f: force halt/reboot, don't call shutdown.
	-h: put harddisks in standby mode.
	-i: shut down all network interfaces.

La commande halt

Cette commande arrête le système. Quand le système fonctionne normalement, l'exécution de halt appelle la commande shutdown -h.

Options de la commande

Les options de cette commande sont :

opensuse:~ # halt --help
usage: halt [-n] [-w] [-d] [-f] [-h] [-i] [-p]
	-n: don't sync before halting the system
	-w: only write a wtmp reboot record and exit.
	-d: don't write a wtmp record.
	-f: force halt/reboot, don't call shutdown.
	-h: put harddisks in standby mode.
	-i: shut down all network interfaces.
	-p: power down the system (if possible, otherwise halt).

La commande poweroff

Cette commande arrête le système et coupe l'alimentation électrique. Elle est l'équivalente de la commande halt -p. Quand le système fonctionne normalement, l'exécution de poweroff appelle la commande shutdown -hP.

Options de la commande

Les options de cette commande sont :

opensuse:~ # poweroff --help
usage: poweroff [-n] [-w] [-d] [-f] [-h] [-i]
	-n: don't sync before halting the system
	-w: only write a wtmp reboot record and exit.
	-d: don't write a wtmp record.
	-f: force halt/reboot, don't call shutdown.
	-h: put harddisks in standby mode.
	-i: shut down all network interfaces.

La commande sleep

Cette commande pause le terminal pour le nombre de secondes passé en argument.

Options de la commande

Les options de cette commande sont :

opensuse:~ # sleep --help
Usage: sleep NUMBER[SUFFIX]...
  or:  sleep OPTION
Pause for NUMBER seconds.  SUFFIX may be `s' for seconds (the default),
`m' for minutes, `h' for hours or `d' for days.  Unlike most implementations
that require NUMBER be an integer, here NUMBER may be an arbitrary floating
point number.  Given two or more arguments, pause for the amount of time
specified by the sum of their values.

      --help     display this help and exit
      --version  output version information and exit

Report sleep bugs to bug-coreutils@gnu.org
GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>
Report sleep translation bugs to <http://translationproject.org/team/>
For complete documentation, run: info coreutils 'sleep invocation'

Options et Arguments

Les options sous Linux peuvent être exprimées au format court ou au format long. Plusieurs différences sont importantes à noter.

Premièrement les options courtes sont précédées par un simple tiré -, tandis que les options longues sont précédées par deux tirés .

Un exemple est l'option de l'aide pour la plupart des commandes bash :

  • -h
  • –help

Deuxièmement les options courtes peuvent être combinées tandis que les options longues ne peuvent pas l'être. Par exemple, la ligne de commande ls -l -a -i peut être aussi écrite ls -lai, ls -lia ou encore ls -ali :

opensuse:/tmp # ls -lai
total 176
104001 drwxrwxrwt 34 root    root   4096 Nov  8 16:42 .
     2 drwxr-xr-x 21 root    root   4096 Oct 19 14:20 ..
104700 drwxrwxrwt  2 root    root   4096 Oct 20 15:41 .ICE-unix
105191 -r--r--r--  1 root    root     11 Oct 20 15:01 .X0-lock
104701 drwxrwxrwt  2 root    root   4096 Oct 20 15:01 .X11-unix
106881 srwxr-xr-x  1 trainee users     0 Aug  2 08:07 .com.sun.deploy.net.socket.4492.457798194027358583.AF_UNIX
104881 drwx------  2 trainee users  4096 Oct 20 15:41 .esd-1000
104825 drwx------  2 gdm     gdm    4096 Oct 20 15:41 .esd-107
105321 drwxr-xr-x  2 trainee users  4096 Jul 28 11:24 SimpleHelp1674393770722982080
106886 drwxr-xr-x  2 trainee users  4096 Aug  2 08:07 SimpleHelp2670031095574134323
105159 -rw-r--r--  1 root    root     49 Nov  8 16:35 greptest
106887 drwxr-xr-x  2 trainee users  4096 Aug  2 08:07 hsperfdata_trainee
106884 drwx------  2 trainee users  4096 Jul 28 11:22 icedteaplugin-trainee
106883 -rw-r--r--  1 trainee users     0 Aug  2 08:07 jar_cache6202297203218743135.tmp
106885 -rw-r--r--  1 trainee users     0 Aug  2 08:07 jar_cache7316512180383045650.tmp
105219 drwx------  2 trainee users  4096 Oct 19 14:20 keyring-386sie
104733 drwx------  2 trainee users  4096 May 24 10:15 keyring-39MtBR
107528 drwx------  2 trainee users  4096 Oct 20 15:41 keyring-4Q8xoi
105182 drwx------  2 trainee users  4096 Aug  2 08:06 keyring-6DhwTd
105275 drwx------  2 trainee users  4096 Jun  1 11:20 keyring-eNDXzS
107511 drwx------  2 trainee users  4096 Nov  7 12:44 mozilla-media-cache
106903 drwxr-xr-x  2 trainee users  4096 Jul 28 11:16 netx-native-25662
106986 drwxr-xr-x  2 trainee users  4096 Jul 28 11:21 netx-native-63491
104709 drwx------  2 gdm     gdm    4096 Oct 20 15:41 orbit-gdm
104843 drwx------  2 trainee users 12288 Nov  8 16:06 orbit-trainee
107524 drwx------  2 trainee users  4096 Nov  7 12:46 plugtmp
104870 drwx------  2 trainee users  4096 Oct 20 15:41 pulse-ThNmqyY7uQEz
104731 drwx------  2 gdm     gdm    4096 Oct 20 15:41 pulse-l0HmhbrKIQBb
106981 -rw-r--r--  1 root    root    125 Nov  8 16:42 scriptawk
105002 drwxr-xr-x  2 trainee users  4096 May 24 10:15 tracker-trainee
105181 drwxr-xr-x  2 root    root   4096 Jul 28 10:57 unique
122770 -rw-r--r--  1 root    root  17034 Jul 28 11:12 vboxguest-Module.symvers
107104 drwx------  2 trainee users  4096 Oct 19 11:25 virtual-trainee.0Eb5WF
104956 drwx------  2 trainee users  4096 May 24 10:15 virtual-trainee.0pd1zs
105289 drwx------  2 trainee users  4096 Jun  1 11:20 virtual-trainee.61wRJA
105313 drwx------  2 trainee users  4096 Aug  2 08:06 virtual-trainee.Cufrrn
105304 drwx------  2 trainee users  4096 Jul 28 11:14 virtual-trainee.KXFvE2
107111 drwx------  2 trainee users  4096 Oct 20 15:41 virtual-trainee.L5gYXn
107105 drwx------  2 trainee users  4096 Oct  4 11:04 virtual-trainee.QVeXhm
107109 drwx------  2 trainee users  4096 Oct 19 14:20 virtual-trainee.WzpGmw
104942 drwx------  2 trainee users  4096 Jul 28 10:40 virtual-trainee.pMhhgn
opensuse:/tmp # ls -lia
total 176
104001 drwxrwxrwt 34 root    root   4096 Nov  8 16:42 .
     2 drwxr-xr-x 21 root    root   4096 Oct 19 14:20 ..
104700 drwxrwxrwt  2 root    root   4096 Oct 20 15:41 .ICE-unix
105191 -r--r--r--  1 root    root     11 Oct 20 15:01 .X0-lock
104701 drwxrwxrwt  2 root    root   4096 Oct 20 15:01 .X11-unix
106881 srwxr-xr-x  1 trainee users     0 Aug  2 08:07 .com.sun.deploy.net.socket.4492.457798194027358583.AF_UNIX
104881 drwx------  2 trainee users  4096 Oct 20 15:41 .esd-1000
104825 drwx------  2 gdm     gdm    4096 Oct 20 15:41 .esd-107
105321 drwxr-xr-x  2 trainee users  4096 Jul 28 11:24 SimpleHelp1674393770722982080
106886 drwxr-xr-x  2 trainee users  4096 Aug  2 08:07 SimpleHelp2670031095574134323
105159 -rw-r--r--  1 root    root     49 Nov  8 16:35 greptest
106887 drwxr-xr-x  2 trainee users  4096 Aug  2 08:07 hsperfdata_trainee
106884 drwx------  2 trainee users  4096 Jul 28 11:22 icedteaplugin-trainee
106883 -rw-r--r--  1 trainee users     0 Aug  2 08:07 jar_cache6202297203218743135.tmp
106885 -rw-r--r--  1 trainee users     0 Aug  2 08:07 jar_cache7316512180383045650.tmp
105219 drwx------  2 trainee users  4096 Oct 19 14:20 keyring-386sie
104733 drwx------  2 trainee users  4096 May 24 10:15 keyring-39MtBR
107528 drwx------  2 trainee users  4096 Oct 20 15:41 keyring-4Q8xoi
105182 drwx------  2 trainee users  4096 Aug  2 08:06 keyring-6DhwTd
105275 drwx------  2 trainee users  4096 Jun  1 11:20 keyring-eNDXzS
107511 drwx------  2 trainee users  4096 Nov  7 12:44 mozilla-media-cache
106903 drwxr-xr-x  2 trainee users  4096 Jul 28 11:16 netx-native-25662
106986 drwxr-xr-x  2 trainee users  4096 Jul 28 11:21 netx-native-63491
104709 drwx------  2 gdm     gdm    4096 Oct 20 15:41 orbit-gdm
104843 drwx------  2 trainee users 12288 Nov  8 16:06 orbit-trainee
107524 drwx------  2 trainee users  4096 Nov  7 12:46 plugtmp
104870 drwx------  2 trainee users  4096 Oct 20 15:41 pulse-ThNmqyY7uQEz
104731 drwx------  2 gdm     gdm    4096 Oct 20 15:41 pulse-l0HmhbrKIQBb
106981 -rw-r--r--  1 root    root    125 Nov  8 16:42 scriptawk
105002 drwxr-xr-x  2 trainee users  4096 May 24 10:15 tracker-trainee
105181 drwxr-xr-x  2 root    root   4096 Jul 28 10:57 unique
122770 -rw-r--r--  1 root    root  17034 Jul 28 11:12 vboxguest-Module.symvers
107104 drwx------  2 trainee users  4096 Oct 19 11:25 virtual-trainee.0Eb5WF
104956 drwx------  2 trainee users  4096 May 24 10:15 virtual-trainee.0pd1zs
105289 drwx------  2 trainee users  4096 Jun  1 11:20 virtual-trainee.61wRJA
105313 drwx------  2 trainee users  4096 Aug  2 08:06 virtual-trainee.Cufrrn
105304 drwx------  2 trainee users  4096 Jul 28 11:14 virtual-trainee.KXFvE2
107111 drwx------  2 trainee users  4096 Oct 20 15:41 virtual-trainee.L5gYXn
107105 drwx------  2 trainee users  4096 Oct  4 11:04 virtual-trainee.QVeXhm
107109 drwx------  2 trainee users  4096 Oct 19 14:20 virtual-trainee.WzpGmw
104942 drwx------  2 trainee users  4096 Jul 28 10:40 virtual-trainee.pMhhgn
opensuse:/tmp # ls -ali
total 176
104001 drwxrwxrwt 34 root    root   4096 Nov  8 16:42 .
     2 drwxr-xr-x 21 root    root   4096 Oct 19 14:20 ..
104700 drwxrwxrwt  2 root    root   4096 Oct 20 15:41 .ICE-unix
105191 -r--r--r--  1 root    root     11 Oct 20 15:01 .X0-lock
104701 drwxrwxrwt  2 root    root   4096 Oct 20 15:01 .X11-unix
106881 srwxr-xr-x  1 trainee users     0 Aug  2 08:07 .com.sun.deploy.net.socket.4492.457798194027358583.AF_UNIX
104881 drwx------  2 trainee users  4096 Oct 20 15:41 .esd-1000
104825 drwx------  2 gdm     gdm    4096 Oct 20 15:41 .esd-107
105321 drwxr-xr-x  2 trainee users  4096 Jul 28 11:24 SimpleHelp1674393770722982080
106886 drwxr-xr-x  2 trainee users  4096 Aug  2 08:07 SimpleHelp2670031095574134323
105159 -rw-r--r--  1 root    root     49 Nov  8 16:35 greptest
106887 drwxr-xr-x  2 trainee users  4096 Aug  2 08:07 hsperfdata_trainee
106884 drwx------  2 trainee users  4096 Jul 28 11:22 icedteaplugin-trainee
106883 -rw-r--r--  1 trainee users     0 Aug  2 08:07 jar_cache6202297203218743135.tmp
106885 -rw-r--r--  1 trainee users     0 Aug  2 08:07 jar_cache7316512180383045650.tmp
105219 drwx------  2 trainee users  4096 Oct 19 14:20 keyring-386sie
104733 drwx------  2 trainee users  4096 May 24 10:15 keyring-39MtBR
107528 drwx------  2 trainee users  4096 Oct 20 15:41 keyring-4Q8xoi
105182 drwx------  2 trainee users  4096 Aug  2 08:06 keyring-6DhwTd
105275 drwx------  2 trainee users  4096 Jun  1 11:20 keyring-eNDXzS
107511 drwx------  2 trainee users  4096 Nov  7 12:44 mozilla-media-cache
106903 drwxr-xr-x  2 trainee users  4096 Jul 28 11:16 netx-native-25662
106986 drwxr-xr-x  2 trainee users  4096 Jul 28 11:21 netx-native-63491
104709 drwx------  2 gdm     gdm    4096 Oct 20 15:41 orbit-gdm
104843 drwx------  2 trainee users 12288 Nov  8 16:06 orbit-trainee
107524 drwx------  2 trainee users  4096 Nov  7 12:46 plugtmp
104870 drwx------  2 trainee users  4096 Oct 20 15:41 pulse-ThNmqyY7uQEz
104731 drwx------  2 gdm     gdm    4096 Oct 20 15:41 pulse-l0HmhbrKIQBb
106981 -rw-r--r--  1 root    root    125 Nov  8 16:42 scriptawk
105002 drwxr-xr-x  2 trainee users  4096 May 24 10:15 tracker-trainee
105181 drwxr-xr-x  2 root    root   4096 Jul 28 10:57 unique
122770 -rw-r--r--  1 root    root  17034 Jul 28 11:12 vboxguest-Module.symvers
107104 drwx------  2 trainee users  4096 Oct 19 11:25 virtual-trainee.0Eb5WF
104956 drwx------  2 trainee users  4096 May 24 10:15 virtual-trainee.0pd1zs
105289 drwx------  2 trainee users  4096 Jun  1 11:20 virtual-trainee.61wRJA
105313 drwx------  2 trainee users  4096 Aug  2 08:06 virtual-trainee.Cufrrn
105304 drwx------  2 trainee users  4096 Jul 28 11:14 virtual-trainee.KXFvE2
107111 drwx------  2 trainee users  4096 Oct 20 15:41 virtual-trainee.L5gYXn
107105 drwx------  2 trainee users  4096 Oct  4 11:04 virtual-trainee.QVeXhm
107109 drwx------  2 trainee users  4096 Oct 19 14:20 virtual-trainee.WzpGmw
104942 drwx------  2 trainee users  4096 Jul 28 10:40 virtual-trainee.pMhhgn

La commande ls -l –all –inode ne peut pas être écrite ls -l –allinode :

opensuse:/tmp # ls -l --all --inode
total 176
104001 drwxrwxrwt 34 root    root   4096 Nov  8 16:42 .
     2 drwxr-xr-x 21 root    root   4096 Oct 19 14:20 ..
104700 drwxrwxrwt  2 root    root   4096 Oct 20 15:41 .ICE-unix
105191 -r--r--r--  1 root    root     11 Oct 20 15:01 .X0-lock
104701 drwxrwxrwt  2 root    root   4096 Oct 20 15:01 .X11-unix
106881 srwxr-xr-x  1 trainee users     0 Aug  2 08:07 .com.sun.deploy.net.socket.4492.457798194027358583.AF_UNIX
104881 drwx------  2 trainee users  4096 Oct 20 15:41 .esd-1000
104825 drwx------  2 gdm     gdm    4096 Oct 20 15:41 .esd-107
105321 drwxr-xr-x  2 trainee users  4096 Jul 28 11:24 SimpleHelp1674393770722982080
106886 drwxr-xr-x  2 trainee users  4096 Aug  2 08:07 SimpleHelp2670031095574134323
105159 -rw-r--r--  1 root    root     49 Nov  8 16:35 greptest
106887 drwxr-xr-x  2 trainee users  4096 Aug  2 08:07 hsperfdata_trainee
106884 drwx------  2 trainee users  4096 Jul 28 11:22 icedteaplugin-trainee
106883 -rw-r--r--  1 trainee users     0 Aug  2 08:07 jar_cache6202297203218743135.tmp
106885 -rw-r--r--  1 trainee users     0 Aug  2 08:07 jar_cache7316512180383045650.tmp
105219 drwx------  2 trainee users  4096 Oct 19 14:20 keyring-386sie
104733 drwx------  2 trainee users  4096 May 24 10:15 keyring-39MtBR
107528 drwx------  2 trainee users  4096 Oct 20 15:41 keyring-4Q8xoi
105182 drwx------  2 trainee users  4096 Aug  2 08:06 keyring-6DhwTd
105275 drwx------  2 trainee users  4096 Jun  1 11:20 keyring-eNDXzS
107511 drwx------  2 trainee users  4096 Nov  7 12:44 mozilla-media-cache
106903 drwxr-xr-x  2 trainee users  4096 Jul 28 11:16 netx-native-25662
106986 drwxr-xr-x  2 trainee users  4096 Jul 28 11:21 netx-native-63491
104709 drwx------  2 gdm     gdm    4096 Oct 20 15:41 orbit-gdm
104843 drwx------  2 trainee users 12288 Nov  8 16:06 orbit-trainee
107524 drwx------  2 trainee users  4096 Nov  7 12:46 plugtmp
104870 drwx------  2 trainee users  4096 Oct 20 15:41 pulse-ThNmqyY7uQEz
104731 drwx------  2 gdm     gdm    4096 Oct 20 15:41 pulse-l0HmhbrKIQBb
106981 -rw-r--r--  1 root    root    125 Nov  8 16:42 scriptawk
105002 drwxr-xr-x  2 trainee users  4096 May 24 10:15 tracker-trainee
105181 drwxr-xr-x  2 root    root   4096 Jul 28 10:57 unique
122770 -rw-r--r--  1 root    root  17034 Jul 28 11:12 vboxguest-Module.symvers
107104 drwx------  2 trainee users  4096 Oct 19 11:25 virtual-trainee.0Eb5WF
104956 drwx------  2 trainee users  4096 May 24 10:15 virtual-trainee.0pd1zs
105289 drwx------  2 trainee users  4096 Jun  1 11:20 virtual-trainee.61wRJA
105313 drwx------  2 trainee users  4096 Aug  2 08:06 virtual-trainee.Cufrrn
105304 drwx------  2 trainee users  4096 Jul 28 11:14 virtual-trainee.KXFvE2
107111 drwx------  2 trainee users  4096 Oct 20 15:41 virtual-trainee.L5gYXn
107105 drwx------  2 trainee users  4096 Oct  4 11:04 virtual-trainee.QVeXhm
107109 drwx------  2 trainee users  4096 Oct 19 14:20 virtual-trainee.WzpGmw
104942 drwx------  2 trainee users  4096 Jul 28 10:40 virtual-trainee.pMhhgn
opensuse:/tmp # ls -l --allinode
ls: unrecognized option '--allinode'
Try `ls --help' for more information.

<note important> Par convention, les options prenant un argument ne sont pas combinées avec les autres options. </note>

Expressions Régulières

La manipulation de fichiers textes utilise des expressions régulières. Sous Linux il existe deux types d'expressions régulières :

  • expressions régulières basiques, appelées ERb,
    • utilisées par les commandes vi, grep, expr et sed,
  • expressions régulières étendues, appelées ERe,
    • utilisées par les commandes egrep ( grep -E ) et awk.

Les expressions régulières utilisent des caractères spéciaux. Certains caractères sont communs aux Erb et aux Ere :

Caractère spécial Description
^ Trouver la chaîne au début de la ligne
$ Trouver la chaîne à la fin de la ligne
\ Annuler l'effet spécial du caractère suivant
[ ] Trouver n'importe quel des caractères entre les crochets
[^] Exclure les caractères entre crochets
. Trouver n'importe quel caractère sauf à la fin de la ligne
* Trouver 0 ou plus du caractère qui précède
\< Trouver la chaîne au début d'un mot
\> Trouver la chaîne à la fin d'un mot

ERb

Certains caractères spéciaux sont spécifiques aux ERb :

Caractère spécial Description
\{a,b\} Trouver de a à b occurrences de ce qui précède
\{a\} Trouver exactement le nombre a d'occurrences de ce qui précède
\{a,\} Trouver le nombre a ou plus d'occurrences de ce qui précède
\(ERb) Mémoriser une ERb
\1 Rappeler la première ERb mémorisée
\2, \3 … Rappeler la deuxième ERb mémorisée, rappeler la troisième ERb mémorisée etc

ERe

Certains caractères spéciaux sont spécifiques aux ERe :

Caractère spécial Description
? Trouver 0 ou 1 occurrence de ce qui précède
+ Trouver 1 ou n d'occurrences de ce qui précède
{a,b} Trouver de a à b occurrences de ce qui précède
{a} Trouver exactement le nombre a d'occurrences de ce qui précède
{a,} Trouver le nombre a ou plus d'occurrences de ce qui précède
() Faire un ET des expressions régulières entre les paranthèses
| Faire un OU des expressions régulières se trouvant de chaque côté du pipe

Outils de Manipulation de Fichiers Texte

La commande grep

La commande grep peut être utilisée pour rechercher des lignes contenant une chaîne de caractères dans un jeu de fichiers.

Par défaut, la commande grep est sensible à la casse. Pour rendre cette commande insensible à la casse, il faut utiliser l'option -i.

La commande grep peut être aussi utilisée pour faire l'inverse, autrement dit de montrer les lignes qui ne contiennent pas la chaîne recherchée. Dans ce cas, il faut utiliser l'option –v.

La commande grep peut être utilisée avec des Expressions Régulières basiques. Ceci est utile pour rechercher dans le contenu de fichiers.

Téléchargez le fichier greptest en cliquant sur le titre du fichier exemple ci-dessous :

greptest
fenestrOS
fenestros
555-5555
f
.fenestros
.fe
£

Placez ce fichier dans le répertoire /tmp :

opensuse:~# mv /home/trainee/Téléchargements/greptest.txt /tmp/greptest

Recherchez maintenant toute ligne du fichier /tmp/greptest contenant au moins une lettre :

opensuse:~ # grep '[a-zA-Z]' /tmp/greptest
fenestrOS
fenestros
f
.fenestros
.fe

Recherchez maintenant toute ligne contenant au moins une lettre ou un chiffre :

opensuse:~ # grep '[a-zA-Z0-9]' /tmp/greptest
fenestrOS
fenestros
555-5555
f
.fenestros
.fe

<note important> Notez la présence de la ligne 555-5555. </note>

Recherchez maintenant toute ligne contenant un numéro de téléphone au format NNN-NNNN :

opensuse:~ # grep '[0-9]\{3\}-[0-9]\{4\}' /tmp/greptest
555-5555

Recherchez maintenant toute ligne contenant exactement un caractère :

opensuse:~ # grep '^.$' /tmp/greptest
f
£

<note important> Notez l'utilisation des caractères spéciaux le début de ligne : ^, n'importe quel caractère : . et la fin de ligne : $. </note>

Recherchez maintenant toute ligne commençant par un point :

opensuse:~ # grep '^\.' /tmp/greptest
.fenestros
.fe

<note important> Notez l'utilisation du caractère d'échappement \ pour annuler l'effet du caractère spécial . </note>

Options de la commande

Les options de cette commande sont :

opensuse:~ # grep --help
Usage: grep [OPTION]... PATTERN [FILE]...
Search for PATTERN in each FILE or standard input.
PATTERN is, by default, a basic regular expression (BRE).
Example: grep -i 'hello world' menu.h main.c

Regexp selection and interpretation:
  -E, --extended-regexp     PATTERN is an extended regular expression (ERE)
  -F, --fixed-strings       PATTERN is a set of newline-separated fixed strings
  -G, --basic-regexp        PATTERN is a basic regular expression (BRE)
  -P, --perl-regexp         PATTERN is a Perl regular expression
  -e, --regexp=PATTERN      use PATTERN for matching
  -f, --file=FILE           obtain PATTERN from FILE
  -i, --ignore-case         ignore case distinctions
  -w, --word-regexp         force PATTERN to match only whole words
  -x, --line-regexp         force PATTERN to match only whole lines
  -z, --null-data           a data line ends in 0 byte, not newline

Miscellaneous:
  -s, --no-messages         suppress error messages
  -v, --invert-match        select non-matching lines
  -V, --version             print version information and exit
      --help                display this help and exit
      --mmap                ignored for backwards compatibility

Output control:
  -m, --max-count=NUM       stop after NUM matches
  -b, --byte-offset         print the byte offset with output lines
  -n, --line-number         print line number with output lines
      --line-buffered       flush output on every line
  -H, --with-filename       print the filename for each match
  -h, --no-filename         suppress the prefixing filename on output
      --label=LABEL         print LABEL as filename for standard input
  -o, --only-matching       show only the part of a line matching PATTERN
  -q, --quiet, --silent     suppress all normal output
      --binary-files=TYPE   assume that binary files are TYPE;
                            TYPE is `binary', `text', or `without-match'
  -a, --text                equivalent to --binary-files=text
  -I                        equivalent to --binary-files=without-match
  -d, --directories=ACTION  how to handle directories;
                            ACTION is `read', `recurse', or `skip'
  -D, --devices=ACTION      how to handle devices, FIFOs and sockets;
                            ACTION is `read' or `skip'
  -R, -r, --recursive       equivalent to --directories=recurse
      --include=FILE_PATTERN  search only files that match FILE_PATTERN
      --exclude=FILE_PATTERN  skip files and directories matching FILE_PATTERN
      --exclude-from=FILE   skip files matching any file pattern from FILE
      --exclude-dir=PATTERN  directories that match PATTERN will be skipped.
  -L, --files-without-match  print only names of FILEs containing no match
  -l, --files-with-matches  print only names of FILEs containing matches
  -c, --count               print only a count of matching lines per FILE
  -T, --initial-tab         make tabs line up (if needed)
  -Z, --null                print 0 byte after FILE name

Context control:
  -B, --before-context=NUM  print NUM lines of leading context
  -A, --after-context=NUM   print NUM lines of trailing context
  -C, --context=NUM         print NUM lines of output context
  -NUM                      same as --context=NUM
      --color[=WHEN],
      --colour[=WHEN]       use markers to highlight the matching strings;
                            WHEN is `always', `never', or `auto'
  -U, --binary              do not strip CR characters at EOL (MSDOS)
  -u, --unix-byte-offsets   report offsets as if CRs were not there (MSDOS)

`egrep' means `grep -E'.  `fgrep' means `grep -F'.
Direct invocation as either `egrep' or `fgrep' is deprecated.
With no FILE, or when FILE is -, read standard input.  If less than two FILEs
are given, assume -h.  Exit status is 0 if any line was selected, 1 otherwise;
if any error occurs and -q was not given, the exit status is 2.

Report bugs to: bug-grep@gnu.org
GNU Grep home page: <http://www.gnu.org/software/grep/>
General help using GNU software: <http://www.gnu.org/gethelp/>

La Commande egrep

La commande egrep est identique à la commande grep -E. Dans les deux cas, l'utilisation des expressions régulières est étendue aux ERe.

Éditez maintenant votre fichier /tmp/greptest ainsi :

greptest
# Commentaire du début
fenestrOS
fenestros
# Un autre commentaire
555-5555
f
 
.fenestros
 
.fe
 
£
# Commentaire de la fin

Utilisez maintenant la commande grep avec l'option -E pour supprimer les lignes de commentaires ainsi que les lignes vides :

opensuse:~ # grep -E -v '^(#|$)' /tmp/greptest
fenestrOS
fenestros
555-5555
f
.fenestros
.fe
£

<note important> Notez l'utilisation des parenthèses pour faire un regroupement ainsi que le pipe pour représenter un OU. L'expression '^(#|$)' indique donc “toute ligne commençant par le caractère #” OU “toute ligne où le début de la ligne est aussi la fin de la ligne”. </note>

Utilisez maintenant la commande egrep pour envoyer le contenu du fichier /tmp/greptest, sans commentaires et sans lignes vides, dans le fichier /tmp/greptest1 :

opensuse:~ # egrep -v '^(#|$)'  /tmp/greptest > /tmp/greptest1
opensuse:~ # cat /tmp/greptest1
fenestrOS
fenestros
555-5555
f
.fenestros
.fe
£

<note important> Cette commande est particulièrement utile face à un fichier de configuration de plusieurs centaines de lignes dont certaines contiennent des directives activées d'autres sont vides ou en commentaires. De cette façon vous pouvez générer facilement un fichier ne contenant que les directives activées. </note>

Options de la commande

Les options de cette commande sont :

opensuse:~ # egrep --help
Usage: egrep [OPTION]... PATTERN [FILE]...
Search for PATTERN in each FILE or standard input.
PATTERN is an extended regular expression (ERE).
Example: egrep -i 'hello world' menu.h main.c

Regexp selection and interpretation:
  -e, --regexp=PATTERN      use PATTERN for matching
  -f, --file=FILE           obtain PATTERN from FILE
  -i, --ignore-case         ignore case distinctions
  -w, --word-regexp         force PATTERN to match only whole words
  -x, --line-regexp         force PATTERN to match only whole lines
  -z, --null-data           a data line ends in 0 byte, not newline

Miscellaneous:
  -s, --no-messages         suppress error messages
  -v, --invert-match        select non-matching lines
  -V, --version             print version information and exit
      --help                display this help and exit
      --mmap                ignored for backwards compatibility

Output control:
  -m, --max-count=NUM       stop after NUM matches
  -b, --byte-offset         print the byte offset with output lines
  -n, --line-number         print line number with output lines
      --line-buffered       flush output on every line
  -H, --with-filename       print the filename for each match
  -h, --no-filename         suppress the prefixing filename on output
      --label=LABEL         print LABEL as filename for standard input
  -o, --only-matching       show only the part of a line matching PATTERN
  -q, --quiet, --silent     suppress all normal output
      --binary-files=TYPE   assume that binary files are TYPE;
                            TYPE is `binary', `text', or `without-match'
  -a, --text                equivalent to --binary-files=text
  -I                        equivalent to --binary-files=without-match
  -d, --directories=ACTION  how to handle directories;
                            ACTION is `read', `recurse', or `skip'
  -D, --devices=ACTION      how to handle devices, FIFOs and sockets;
                            ACTION is `read' or `skip'
  -R, -r, --recursive       equivalent to --directories=recurse
      --include=FILE_PATTERN  search only files that match FILE_PATTERN
      --exclude=FILE_PATTERN  skip files and directories matching FILE_PATTERN
      --exclude-from=FILE   skip files matching any file pattern from FILE
      --exclude-dir=PATTERN  directories that match PATTERN will be skipped.
  -L, --files-without-match  print only names of FILEs containing no match
  -l, --files-with-matches  print only names of FILEs containing matches
  -c, --count               print only a count of matching lines per FILE
  -T, --initial-tab         make tabs line up (if needed)
  -Z, --null                print 0 byte after FILE name

Context control:
  -B, --before-context=NUM  print NUM lines of leading context
  -A, --after-context=NUM   print NUM lines of trailing context
  -C, --context=NUM         print NUM lines of output context
  -NUM                      same as --context=NUM
      --color[=WHEN],
      --colour[=WHEN]       use markers to highlight the matching strings;
                            WHEN is `always', `never', or `auto'
  -U, --binary              do not strip CR characters at EOL (MSDOS)
  -u, --unix-byte-offsets   report offsets as if CRs were not there (MSDOS)

Invocation as `egrep' is deprecated; use `grep -E' instead.
With no FILE, or when FILE is -, read standard input.  If less than two FILEs
are given, assume -h.  Exit status is 0 if any line was selected, 1 otherwise;
if any error occurs and -q was not given, the exit status is 2.

Report bugs to: bug-grep@gnu.org
GNU Grep home page: <http://www.gnu.org/software/grep/>
General help using GNU software: <http://www.gnu.org/gethelp/>

La Commande fgrep

La commande fgrep est identique à la commande grep -F. Dans les deux cas et par défaut la recherche concerne une chaîne de caractères interprétés dans un sens littéral sans utilisation de caractères spéciaux ni d'expressions régulières.

Éditez maintenant votre fichier /tmp/greptest ainsi :

greptest
# Commentaire du début
^ voici une ligne pour la recherche fgrep
fenestrOS
fenestros
# Un autre commentaire
555-5555
f
 
.fenestros
 
.fe
 
£
# Commentaire de la fin

Utilisez maintenant la commande fgrep pour rechercher la ligne commençant par le caractère ^ :

opensuse:~ # fgrep '^' /tmp/greptest
^ voici une ligne pour la recherche fgrep

Comparez le résultat ci-dessus avec celui de la commande grep :

opensuse:~ # grep '^' /tmp/greptest
# Commentaire du début
^ voici une ligne pour la recherche fgrep
fenestrOS
fenestros
# Un autre commentaire
555-5555
f

.fenestros

.fe

£
# Commentaire de la fin

En effet, la ligne de commande en utilisant la commande grep devrait être :

opensuse:~ # grep '^\^' /tmp/greptest
^ voici une ligne pour la recherche fgrep

Options de la commande

Les options de cette commande sont :

opensuse:~ # fgrep --help
Usage: fgrep [OPTION]... PATTERN [FILE]...
Search for PATTERN in each FILE or standard input.
PATTERN is a set of newline-separated fixed strings.
Example: fgrep -i 'hello world' menu.h main.c

Regexp selection and interpretation:
  -e, --regexp=PATTERN      use PATTERN for matching
  -f, --file=FILE           obtain PATTERN from FILE
  -i, --ignore-case         ignore case distinctions
  -w, --word-regexp         force PATTERN to match only whole words
  -x, --line-regexp         force PATTERN to match only whole lines
  -z, --null-data           a data line ends in 0 byte, not newline

Miscellaneous:
  -s, --no-messages         suppress error messages
  -v, --invert-match        select non-matching lines
  -V, --version             print version information and exit
      --help                display this help and exit
      --mmap                ignored for backwards compatibility

Output control:
  -m, --max-count=NUM       stop after NUM matches
  -b, --byte-offset         print the byte offset with output lines
  -n, --line-number         print line number with output lines
      --line-buffered       flush output on every line
  -H, --with-filename       print the filename for each match
  -h, --no-filename         suppress the prefixing filename on output
      --label=LABEL         print LABEL as filename for standard input
  -o, --only-matching       show only the part of a line matching PATTERN
  -q, --quiet, --silent     suppress all normal output
      --binary-files=TYPE   assume that binary files are TYPE;
                            TYPE is `binary', `text', or `without-match'
  -a, --text                equivalent to --binary-files=text
  -I                        equivalent to --binary-files=without-match
  -d, --directories=ACTION  how to handle directories;
                            ACTION is `read', `recurse', or `skip'
  -D, --devices=ACTION      how to handle devices, FIFOs and sockets;
                            ACTION is `read' or `skip'
  -R, -r, --recursive       equivalent to --directories=recurse
      --include=FILE_PATTERN  search only files that match FILE_PATTERN
      --exclude=FILE_PATTERN  skip files and directories matching FILE_PATTERN
      --exclude-from=FILE   skip files matching any file pattern from FILE
      --exclude-dir=PATTERN  directories that match PATTERN will be skipped.
  -L, --files-without-match  print only names of FILEs containing no match
  -l, --files-with-matches  print only names of FILEs containing matches
  -c, --count               print only a count of matching lines per FILE
  -T, --initial-tab         make tabs line up (if needed)
  -Z, --null                print 0 byte after FILE name

Context control:
  -B, --before-context=NUM  print NUM lines of leading context
  -A, --after-context=NUM   print NUM lines of trailing context
  -C, --context=NUM         print NUM lines of output context
  -NUM                      same as --context=NUM
      --color[=WHEN],
      --colour[=WHEN]       use markers to highlight the matching strings;
                            WHEN is `always', `never', or `auto'
  -U, --binary              do not strip CR characters at EOL (MSDOS)
  -u, --unix-byte-offsets   report offsets as if CRs were not there (MSDOS)

Invocation as `fgrep' is deprecated; use `grep -F' instead.
With no FILE, or when FILE is -, read standard input.  If less than two FILEs
are given, assume -h.  Exit status is 0 if any line was selected, 1 otherwise;
if any error occurs and -q was not given, the exit status is 2.

Report bugs to: bug-grep@gnu.org
GNU Grep home page: <http://www.gnu.org/software/grep/>
General help using GNU software: <http://www.gnu.org/gethelp/>

Le Commande sed

La commande sed ou Stream EDitor est un éditeur de texte non-intéractif. Les actions spécifiées par la commande sed sont exécutées par défaut sur chaque ligne du fichier. La commande sed ne modifie pas le fichier d'origine et sa sortie standard est le canal 1.

Si plusieurs actions sont spécifiées dans la ligne de commande, chacune doit être précédée par l'option -e.

La syntaxe de la commande sed est la suivante :

sed [adresse] commande [arguments]

L'adresse permet de stipuler les lignes concernées par la commande.

La syntaxe d'une adresse peut être :

adresse Lignes concernées
a La ligne numéro a
$ La dernière ligne
/ERb/ Les lignes qui correspondent à l'ERb
a,b De la ligne numéro a jusqu'à la ligne numéro b
/ERb1/, /ERb2/ Toutes les lignes entre la première occurrence correspondant à l'ERb1 jusqu'à la première occurrence correspondant à l'ERb2

Le commandes de sed sont :

commande Description
d Ne pas afficher la ou les ligne(s)
p Afficher la ou les ligne(s)
s Effectuer une substitution
w Ecrire la ou les ligne(s) dans un fichier
= Afficher le numéro de la ligne spécifiée
! Exécuter la commande ci-dessus sur toutes les lignes sauf celle spécifiées dans l'adresse

La Commande d

La commande d de sed permet de ne pas afficher certaines lignes à l'écran. Dans l'exemple qui suit, les 10 premières lignes du fichier /etc/services ne sont pas affichées à l'écran :

opensuse:~ # sed '1,10d' /etc/services | more
# See also: services(5), http://www.sethwklein.net/projects/iana-etc/
#
# PORT NUMBERS
# 
# (last updated 2008-01-25) 
# 
# The port numbers are divided into three ranges: the Well Known Ports,
# the Registered Ports, and the Dynamic and/or Private Ports.
# 
# The Well Known Ports are those from 0 through 1023.
# 
# DCCP Well Known ports SHOULD NOT be used without IANA registration.
# The registration procedure is defined in [RFC4340], Section 19.9.
# 
# The Registered Ports are those from 1024 through 49151
# 
# DCCP Registered ports SHOULD NOT be used without IANA registration.
# The registration procedure is defined in [RFC4340], Section 19.9.
# 
# The Dynamic and/or Private Ports are those from 49152 through 65535
# 
# A value of 0 in the port numbers registry below indicates that no port 
# has been allocated.
# 
# ************************************************************************
# * PLEASE NOTE THE FOLLOWING:                                           *
# *                                                                      *
# * IESG STATEMENT TO THE IANA                                           *
# *    THE IESG BELIEVES THAT IANA MAY ALLOCATE AN ADDITIONAL PORT IN    *
# *    THE 'USER PORT' RANGE TO PROTOCOLS WHOSE CURRENT PORT ALLOCATION  *
# *    REQUIRES ACCESS TO A PRIVILEGED PORT. THIS ALLOCATION SHOULD NOT  *
# *    BE AUTOMATIC, BUT MAY OCCUR UPON APPLICATION BY AN INTERESTED     *
# *    PARTY WHOSE APPLICATION WOULD OTHERWISE FIT IANA'S POLICIES.      *
# *                                                                      *
# * 1. UNASSIGNED PORT NUMBERS SHOULD NOT BE USED.  THE IANA WILL ASSIGN *
# * THE NUMBER FOR THE PORT AFTER YOUR APPLICATION HAS BEEN APPROVED.    *
# *                                                                      *
# * 2. ASSIGNMENT OF A PORT NUMBER DOES NOT IN ANY WAY IMPLY AN          *
# * ENDORSEMENT OF AN APPLICATION OR PRODUCT, AND THE FACT THAT NETWORK  *
--More--

Dans l'exemple qui suit, sed n'affiche pas de lignes de commentaires, c'est-à-dire les lignes commençant par le caractère # :

opensuse:~ # sed '/^#/d' /etc/services | more
tcpmux            1/tcp    # TCP Port Service Multiplexer
tcpmux            1/udp    # TCP Port Service Multiplexer
compressnet       2/tcp    # Management Utility
compressnet       2/udp    # Management Utility
compressnet       3/tcp    # Compression Process
compressnet       3/udp    # Compression Process
rje               5/tcp    # Remote Job Entry
rje               5/udp    # Remote Job Entry
echo              7/tcp    # Echo
echo              7/udp    # Echo
discard           9/tcp    # Discard 
discard           9/udp    # Discard 
discard           9/sctp   # Discard  
discard           9/dccp   # Discard SC:DISC
systat           11/tcp    # Active Users
systat           11/udp    # Active Users
daytime          13/tcp    # Daytime (RFC 867)
daytime          13/udp    # Daytime (RFC 867)
qotd             17/tcp    # Quote of the Day
qotd             17/udp    # Quote of the Day
msp              18/tcp    # Message Send Protocol
msp              18/udp    # Message Send Protocol
chargen          19/tcp    # Character Generator
chargen          19/udp    # Character Generator
ftp-data         20/tcp    # File Transfer [Default Data]
ftp-data         20/udp    # File Transfer [Default Data]
ftp-data         20/sctp   # FTP
ftp              21/tcp    # File Transfer [Control]
ftp              21/udp    # File Transfer [Control]
ftp              21/sctp   # FTP
ssh              22/tcp    # SSH Remote Login Protocol
ssh              22/udp    # SSH Remote Login Protocol
ssh              22/sctp   # SSH
telnet           23/tcp    # Telnet
telnet           23/udp    # Telnet
smtp             25/tcp    # Simple Mail Transfer
smtp             25/udp    # Simple Mail Transfer
nsw-fe           27/tcp    # NSW User System FE
nsw-fe           27/udp    # NSW User System FE
--More--

<note important> Notez que l'ERb est entourée des caractères / et /. </note>

La Commande p

La commande sed vous permet d'afficher à l'écran certaines lignes spécifiées en utilisant la commande p :

opensuse:~ # sed '1,2p' /etc/passwd
at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash
at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash
avahi:x:103:105:User for Avahi:/var/run/avahi-daemon:/bin/false
avahi:x:103:105:User for Avahi:/var/run/avahi-daemon:/bin/false
bin:x:1:1:bin:/bin:/bin/bash
daemon:x:2:2:Daemon:/sbin:/bin/bash
dnsmasq:x:102:65534:dnsmasq:/var/lib/empty:/bin/false
ftp:x:40:49:FTP account:/srv/ftp:/bin/bash
games:x:12:100:Games account:/var/games:/bin/bash
gdm:x:107:109:Gnome Display Manager daemon:/var/lib/gdm:/bin/false
lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/bash
mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false
man:x:13:62:Manual pages viewer:/var/cache/man:/bin/bash
messagebus:x:101:104:User for D-Bus:/var/run/dbus:/bin/false
news:x:9:13:News system:/etc/news:/bin/bash
nobody:x:65534:65533:nobody:/var/lib/nobody:/bin/bash
ntp:x:74:103:NTP daemon:/var/lib/ntp:/bin/false
postfix:x:51:51:Postfix Daemon:/var/spool/postfix:/bin/false
pulse:x:105:107:PulseAudio daemon:/var/lib/pulseaudio:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
rtkit:x:104:106:RealtimeKit:/proc:/bin/false
sshd:x:100:102:SSH daemon:/var/lib/sshd:/bin/false
statd:x:106:65534:NFS statd daemon:/var/lib/nfs:/sbin/nologin
usbmux:x:108:65534:usbmuxd daemon:/var/lib/usbmuxd:/sbin/nologin
uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash
wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false
trainee:x:1000:100:trainee:/home/trainee:/bin/bash
vboxadd:x:109:1::/var/run/vboxadd:/bin/false

<note important> Notez que sed affiche également tout le contenu du fichier. Ceci implique que les lignes 1 et 2 s'affichent deux fois. </note>

Pour n'afficher que les lignes spécifiées, il convient d'utiliser l'option -n :

opensuse:~ # sed -n '1,2p' /etc/passwd
at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash
avahi:x:103:105:User for Avahi:/var/run/avahi-daemon:/bin/false

La Commande w

La commande w permet d'écrire dans un fichier. Par exemple pour écrire dans le fichier /tmp/sedtest toutes les lignes du fichier /etc/services ne commençant pas par le caractère #, il convient d'utiliser la commande suivante :

opensuse:~ # sed -n '/^#/!w /tmp/sedtest' /etc/services
opensuse:~ # more /tmp/sedtest
tcpmux            1/tcp    # TCP Port Service Multiplexer
tcpmux            1/udp    # TCP Port Service Multiplexer
compressnet       2/tcp    # Management Utility
compressnet       2/udp    # Management Utility
compressnet       3/tcp    # Compression Process
compressnet       3/udp    # Compression Process
rje               5/tcp    # Remote Job Entry
rje               5/udp    # Remote Job Entry
echo              7/tcp    # Echo
echo              7/udp    # Echo
discard           9/tcp    # Discard 
discard           9/udp    # Discard 
discard           9/sctp   # Discard  
discard           9/dccp   # Discard SC:DISC
systat           11/tcp    # Active Users
systat           11/udp    # Active Users
daytime          13/tcp    # Daytime (RFC 867)
daytime          13/udp    # Daytime (RFC 867)
qotd             17/tcp    # Quote of the Day
qotd             17/udp    # Quote of the Day
msp              18/tcp    # Message Send Protocol
msp              18/udp    # Message Send Protocol
chargen          19/tcp    # Character Generator
chargen          19/udp    # Character Generator
ftp-data         20/tcp    # File Transfer [Default Data]
ftp-data         20/udp    # File Transfer [Default Data]
ftp-data         20/sctp   # FTP
ftp              21/tcp    # File Transfer [Control]
ftp              21/udp    # File Transfer [Control]
ftp              21/sctp   # FTP
ssh              22/tcp    # SSH Remote Login Protocol
ssh              22/udp    # SSH Remote Login Protocol
ssh              22/sctp   # SSH
telnet           23/tcp    # Telnet
telnet           23/udp    # Telnet
smtp             25/tcp    # Simple Mail Transfer
smtp             25/udp    # Simple Mail Transfer
nsw-fe           27/tcp    # NSW User System FE
nsw-fe           27/udp    # NSW User System FE
--More--(0%)

La Commande s

La commande s permet de procéder à une substitution :

opensuse:~ # echo "user1,user2,user3" > /tmp/sedtest1
opensuse:~ # cat /tmp/sedtest1 | sed 's/,/ /g'
user1 user2 user3

<note important> Notez que dans cet exemple, la commande s est suivi par un argument qui prend la forme /ce qui est à remplacer (caractère, chaîne ou ERb)/chaîne de remplacement/g. Le caractère g force le remplacement de toutes les occurrences. Sans elle, uniquement la première occurrence serait remplacée. Dans le cas de l'exemple, on remplace donc les virgules par des espaces. </note>

Options de la commande

Les options de cette commande sont :

opensuse:~ # sed --help
Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file]...

  -n, --quiet, --silent
                 suppress automatic printing of pattern space
  -e script, --expression=script
                 add the script to the commands to be executed
  -f script-file, --file=script-file
                 add the contents of script-file to the commands to be executed
  --follow-symlinks
                 follow symlinks when processing in place
  -i[SUFFIX], --in-place[=SUFFIX]
                 edit files in place (makes backup if extension supplied)
  -l N, --line-length=N
                 specify the desired line-wrap length for the `l' command
  --posix
                 disable all GNU extensions.
  -r, --regexp-extended
                 use extended regular expressions in the script.
  -s, --separate
                 consider files as separate rather than as a single continuous
                 long stream.
  -u, --unbuffered
                 load minimal amounts of data from the input files and flush
                 the output buffers more often
      --help     display this help and exit
      --version  output version information and exit

If no -e, --expression, -f, or --file option is given, then the first
non-option argument is taken as the sed script to interpret.  All
remaining arguments are names of input files; if no input files are
specified, then the standard input is read.

GNU sed home page: <http://www.gnu.org/software/sed/>.
General help using GNU software: <http://www.gnu.org/gethelp/>.
E-mail bug reports to: <bug-gnu-utils@gnu.org>.
Be sure to include the word ``sed'' somewhere in the ``Subject:'' field.

La Commande awk

Présentation

Le processeur de texte awk est un filtre. Une action awk est fournie sur la ligne de commande entourée de ' ou de “ :

awk [-F séparateur] 'critère {action}' [fichier1 ... fichiern]

<note important> Le couple critère {action} s'appelle une clause. </note>

Dans le cas de l'utilisation d'un script awk, la syntaxe de la commande devient :

awk [-F séparateur] -f script [fichier1 ... fichiern]

Découpage en champs

awk sait identifier les champs de la ligne soit parce que ceux-ci sont séparés par un espace ou par une tabulation soit parce que la ligne de commande lui a identifié le séparateur grâce à l'option -F.

awk stocke les informations de la ligne dans des variables :

Variable Description
$0 Contient toute la ligne
$1, $2 … Contient le premier champ de la ligne, contient le deuxième champ de la ligne …

Par exemple :

opensuse:~ # ls -l | awk '{print $8 $3 $4}'

12:57rootroot
2011rootroot
2005rootroot
11:10rootroot
07:59rootroot
2011rootroot
2011rootroot
10:55rootroot
07:59rootroot
17:10rootroot
08:55rootroot
15:54rootroot
11:03rootroot
17:06rootroot
16:08rootroot
15:48rootroot
2011rootroot
17:08rootroot
2011rootroot
15:39rootroot
2011rootroot
09:47rootroot
11:49rootroot
10:04rootroot
11:54rootroot
08:57rootroot
10:12rootroot
2011rootroot

Comme vous pouvez constater, awk a extrait du résultat de la commande ls-l les champs nom de l'élément, le propriétaire et le groupe.

Afin de le rendre un peu plus lisible, saisissez la commande suivante :

opensuse:~ # ls -l | awk '{print $8 " " $3 " " $4}'
  
12:57 root root
2011 root root
2005 root root
11:10 root root
07:59 root root
2011 root root
2011 root root
10:55 root root
07:59 root root
17:10 root root
08:55 root root
15:54 root root
11:03 root root
17:06 root root
16:08 root root
15:48 root root
2011 root root
17:08 root root
2011 root root
15:39 root root
2011 root root
09:47 root root
11:49 root root
10:04 root root
11:54 root root
08:57 root root
10:12 root root
2011 root root

Critères

Les critères conditionnent l'exécution d'une action dans une clause.

Plusieurs types de critères sont possibles. Les plus utilisées sont les suivantes :

Une expression régulière valide pour la ligne
  • Format:
  • /expression régulière/ {instruction}
  • Exemple:
  • /ERe/ {print $0}
Une expression régulière valide pour un champ
  • Format:
  • $n ~/expression régulière/ {instruction}
  • $n!~/expression régulière/ {instruction}
  • Exemple:
  • $1 ~/ERe/ {print $0}
  • $1!~/ERe/ {print $0}

awk sélectionne des lignes en utilisant un opérateur de correspondance ou de non-correspondance :

Opérateur Condition
~ Correspondance
!~ Non-correspondance
Une comparaison
  • Format:
  • $n opérateur critère de comparaison {action}
  • Exemple:
  • $1 > 20 {print $0}

Les opérateurs sont :

Opérateur Condition
< Inférieur
<= Inférieur ou égal
== Egal
!= Différent
> Supérieur
>= Supérieur ou égal
Un opérateur logique
  • Format:
  • test1 opérateur logique test2 {action}
  • Exemple:
  • $1 ~/ERe/ && $2 > 20 {print $0}

Les opérateurs sont :

Opérateur logique Condition
|| OU
&& ET
! NON
Une variable interne
  • Format:
  • expression1, expression2 {action}
  • Exemple:
  • NR==7, NR==10 {print $0}

Les variables sont :

Variable Description
NR Nombre total de lignes
NF Nombre total de champs
FILENAME Le nom du fichier en entrée
FS Le séparateur de champs en entrée. Par défaut un espace ou une tabulation
RS Le séparateur de lignes en entrée. Par défaut une nouvelle ligne
OFS Le séparateur de champs en sortie. Par défaut un espace
ORS Le séparateur de lignes en sortie. Par défaut une nouvelle ligne
OFMT Le format numérique. Par défaut ”%.6g“

Scripts awk

Quand un programme awk comporte plusieurs clauses composées de critères et d'actions, il convient de d'écrire un script awk. Ce script comporte trois sections :

<note important>

  • La section BEGIN
    • Cette section est exécutée avant la lecture du script
  • La section principale
    • Cette section contient les clauses
  • La section END
    • Cette sectione est exécutée une fois à la fin du script

</note>

Par exemple :

opensuse:~ # cd /tmp
opensuse:/tmp # cat > scriptawk
BEGIN {
  print "Liste des systèmes de fichiers montés"}
{print $0}
END {
  print "====================================="}
[^D]

<note important> Dans l'exemple ci-dessus, la ligne [^D] indique que vous devez appuyer simultanément sur les touches CTRL et D. </note>

Ensuite saisissez la commande suivante :

opensuse:/tmp # awk -f scriptawk /etc/fstab
Liste des systèmes de fichiers montés
/dev/sda3 swap                 swap       defaults              0 0
/dev/sda2 /                    ext3       acl,user_xattr        1 1
/dev/sda1 /boot                ext3       acl,user_xattr        1 2
proc                 /proc                proc       defaults              0 0
sysfs                /sys                 sysfs      noauto                0 0
debugfs              /sys/kernel/debug    debugfs    noauto                0 0
usbfs                /proc/bus/usb        usbfs      noauto                0 0
devpts               /dev/pts             devpts     mode=0620,gid=5       0 0
=====================================

<note important> Notez l'utilisation de l'option -f qui applique le script awk au fichier donné en argument. </note>

La Fonction printf

La fonction intégrée printf permet de formater des affichages. Elle a la syntaxe suivante :

printf ("chaine",expression1,expression2,...,expressionn)

chaine contient autant de formats qu'il y a d'expressions.

Les formats de printf sont, par exemple :

Format Description
%30s Affichage d'une chaîne (s=string) sur 30 positions avec cadrage à droite
%-30s Affichage d'une chaîne (s=string) sur 30 positions avec cadrage à gauche
%4d Affichage d'un entier sur 4 positions avec cadrage à droite
%-4d Affichage d'un entier sur 4 positions avec cadrage à gauche

Structures de Contrôle

awk peut utiliser des structures de contrôle.

if

La syntaxe de la commande if est la suivante :

if condition { 

    commande
    commande
    ...
}

else {

    commande
    commande
    ...
}

ou dans le cas d'une seule commande :

if condition

    commande

else

    commande
for

La syntaxe de la structure de contrôle for est la suivante :

for variable in liste_variables {

    commande
    commande
    ...

}

ou dans le cas d'une seule commande :

for variable in liste_variables

    commande

ou dans le cas d'un tableau :

for clef dans tableau {

    print clef , tableau[clef]

}
while

La syntaxe de la structure de contrôle while est la suivante :

while condition {

     commande
     commande
     ...

}
do-while

La syntaxe de la structure de contrôle do-while est la suivante :

do {

     commande
     commande
     ...

} while condition

Tableaux

Pour illustrer l'utilisation des tableaux, téléchargez d'abord le fichier ventes_materiel en cliquant sur le titre du fichier exemple ci-dessous :

ventes_materiel
# FenestrOs.com
# Ventes annuelles par département
# 83
Desktops§100
Portables§50
Serveurs§21
Tablettes§4
 
# 06
Desktops§99
Portables§60
Serveurs§8
Tablettes§16
 
# 13
Desktops§130
Portables§65
Serveurs§12
Tablettes§56

Ce fichier contient des statistiques de vente par type de PC et par département.

Déplacez ce fichier vers le répertoire /root :

opensuse:/tmp # cd ~
opensuse:~ # mv /home/trainee/Téléchargements/ventes_materiel.txt /root/ventes_materiel

Téléchargez maintenant le script awk ventes.awk :

ventes.awk
# BEGIN
BEGIN {
    FS="§"
}
# TABLEAU
$1 !~ /^#/ && $1 !~ /^$/ {
	ventes[$1]+=$2
}
# END
END {
	for (pc in ventes)
	printf("Type PC :  %s \t Ventes (06+13+83) : %10d\n",pc,ventes[pc]);
}

Déplacez ce fichier vers le répertoire /root :

opensuse:~ # mv /home/trainee/Téléchargements/ventes.awk /root

Ce script comporte 13 lignes et a pour but de calculer le nombre total de PC vendus dans les trois départements cités dans le fichier ventes_materiel :

     1	# BEGIN
     2	BEGIN {
     3		FS="§"
     4	}
     5	# TABLEAU
     6	$1 !~ /^#/ && $1 !~ /^$/ {
     7		ventes[$1]+=$2
     8	}
     9	# END
    10	END {
    11		for (pc in ventes)
    12		printf("Type PC :  %s \t Ventes (06+13+83) : %10d\n",pc,ventes[pc]);
    13	}

Dans ce script vous noterez :

  • La ligne 3,
    • Cette ligne se trouve dans la section BEGIN. Elle spécifie le séparateur de champs.
  • La ligne 6,
    • Cette ligne évite le traitement de toute ligne commençant par le caractère # ainsi que toute ligne vide.
  • La ligne 7,
    • Ce tableau a pour clef la valeur de $1, c'est-à-dire, les noms des différents types de PC. Le valeurs du tableau sont le nombre de PC vendus, ici représenté par $2. Les caractères += indique qu'à chaque traitement de ligne, le nombre de PC vendus sur la ligne doit être rajouté à la valeur déjà présente dans le tableau.
  • La ligne 11,
    • Cette ligne démarre une boucle for.7
  • La ligne 12,
    • Cette ligne utilise printf afin d'imprimer à l'écran les valeurs calculées et stockées dans le tableau.

Appliquez maintenant votre script awk au fichier ventes_materiel :

opensuse:~ # awk -f ventes.awk ventes_materiel 
Type PC :  Portables 	 Ventes (06+13+83) :        175
Type PC :  Serveurs 	 Ventes (06+13+83) :         41
Type PC :  Desktops 	 Ventes (06+13+83) :        329
Type PC :  Tablettes 	 Ventes (06+13+83) :         76

Options de la commande

Les options de la commande sont :

opensuse:~ # awk --help
Usage: awk [POSIX or GNU style options] -f progfile [--] file ...
Usage: awk [POSIX or GNU style options] [--] 'program' file ...
POSIX options:		GNU long options:
	-f progfile		--file=progfile
	-F fs			--field-separator=fs
	-v var=val		--assign=var=val
	-m[fr] val
	-W compat		--compat
	-W copyleft		--copyleft
	-W copyright		--copyright
	-W dump-variables[=file]	--dump-variables[=file]
	-W exec=file		--exec=file
	-W gen-po		--gen-po
	-W help			--help
	-W lint[=fatal]		--lint[=fatal]
	-W lint-old		--lint-old
	-W non-decimal-data	--non-decimal-data
	-W profile[=file]	--profile[=file]
	-W posix		--posix
	-W re-interval		--re-interval
	-W source=program-text	--source=program-text
	-W traditional		--traditional
	-W usage		--usage
	-W use-lc-numeric	--use-lc-numeric
	-W version		--version

To report bugs, see node `Bugs' in `gawk.info', which is
section `Reporting Problems and Bugs' in the printed version.

gawk is a pattern scanning and processing language.
By default it reads standard input and writes standard output.

Examples:
	gawk '{ sum += $1 }; END { print sum }' file
	gawk -F: '{ print $1 }' /etc/passwd

La Commande cut

Chaque ligne est divisée en colonnes. Dans une ligne le premier caractère est dans la colonne numéro un, le deuxième dans la colonne deux et ainsi de suite. Dans une ligne il peut y avoir des champs séparés par des tabulations.

La commande cut permet de sélectionner des colonnes et des champs dans un fichier. La commande permet aussi d'utiliser une critère de séparation de champs autre que la tabulation en spécifiant cette critère en utilisant l'option -d.

Par exemple, pour sélectionner les 7 premières colonnes du fichier /etc/passwd la commande est :

[root@centos ~]# cut -c1-7 /etc/passwd
root:x:
bin:x:1
daemon:
adm:x:3
lp:x:4:
sync:x:
shutdow
halt:x:
mail:x:
uucp:x:
operato
games:x
gopher:
ftp:x:1
nobody:
dbus:x:
usbmuxd
avahi-a
vcsa:x:
rpc:x:3
rtkit:x
abrt:x:
nscd:x:
tcpdump
haldaem
apache:
nslcd:x
saslaut
postfix
avahi:x
ntp:x:3
rpcuser
nfsnobo
sshd:x:
pulse:x
gdm:x:4
trainee
vboxadd

Pour sélectionner les colonnes 1 à 5, les colonnes 10 à 15 et les colonnes 30 et après, il convient d’utiliser la commande suivante :

[root@centos ~]# cut -c1-5,10-15,30- /etc/passwd
root:0:rootsh
bin:x:bin:/gin
daemo2:2:dain/nologin
adm:x:adm:/nologin
lp:x:lp:/vabin/nologin
sync:0:syncnc
shutdx:6:0::/sbin/shutdown
halt:0:haltalt
mail:12:maiail:/sbin/nologin
uucp::14:uuuucp:/sbin/nologin
operax:11:0t:/sbin/nologin
games2:100:es:/sbin/nologin
gophe13:30:pher:/sbin/nologin
ftp:x50:FTP:/sbin/nologin
nobod99:99:/nologin
dbus::81:Syus:/:/sbin/nologin
usbmu:113:1r:/:/sbin/nologin
avahioipd:x IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
vcsa::69:vimemory owner:/dev:/sbin/nologin
rpc:x32:Rpcar/cache/rpcbind:/sbin/nologin
rtkit99:499proc:/sbin/nologin
abrt:8:498:in/nologin
nscd::28:NSbin/nologin
tcpdu:72:72gin
halda:x:68:/:/sbin/nologin
apach48:48:w:/sbin/nologin
nslcd5:55:Lr:/:/sbin/nologin
saslax:497: user":/var/empty/saslauth:/sbin/nologin
postf:89:89ostfix:/sbin/nologin
avahi0:70:ASD Stack:/var/run/avahi-daemon:/sbin/nologin
ntp:x38::/eologin
rpcus:29:29ser:/var/lib/nfs:/sbin/nologin
nfsno:x:655mous NFS User:/var/lib/nfs:/sbin/nologin
sshd::74:Prted SSH:/var/empty/sshd:/sbin/nologin
pulse96:494stem Daemon:/var/run/pulse:/sbin/nologin
gdm:x42::/vin/nologin
train:500:5me/trainee:/bin/bash
vboxa:495:1xadd:/bin/false

Pour sélectionner les champs 2, 4 et 6 du fichier, il convient d'utiliser la commande suivante :

[root@centos ~]# cut -d: -f2,4,6 /etc/passwd
x:0:/root
x:1:/bin
x:2:/sbin
x:4:/var/adm
x:7:/var/spool/lpd
x:0:/sbin
x:0:/sbin
x:0:/sbin
x:12:/var/spool/mail
x:14:/var/spool/uucp
x:0:/root
x:100:/usr/games
x:30:/var/gopher
x:50:/var/ftp
x:99:/
x:81:/
x:113:/
x:170:/var/lib/avahi-autoipd
x:69:/dev
x:32:/var/cache/rpcbind
x:499:/proc
x:498:/etc/abrt
x:28:/
x:72:/
x:68:/
x:48:/var/www
x:55:/
x:495:/var/empty/saslauth
x:89:/var/spool/postfix
x:70:/var/run/avahi-daemon
x:38:/etc/ntp
x:29:/var/lib/nfs
x:65534:/var/lib/nfs
x:74:/var/empty/sshd
x:494:/var/run/pulse
x:42:/var/lib/gdm
x:500:/home/trainee
x:1:/var/run/vboxadd

Options de la commande

Les options de cette commande sont :

[root@centos ~]# cut --help
Utilisation : cut [OPTION]... [FILE]...
Affiche des extraits de lignes de chaque FILE vers la sortie standard.

Les arguments obligatoires pour les options longues le sont aussi pour les
options courtes.
  -b, --bytes=LIST        sélectionne seulement ces octets
  -c, --characters=LIST   sélectionne seulement ces caractères
  -d, --delimiter=DELIM   utilise DELIM au lieu de TAB comme délimiteur de
                          champs
  -f, --fields=LIST       select only these fields;  also print any line
                            that contains no delimiter character, unless
                            the -s option is specified
  -n                      with -b: don't split multibyte characters
      --complement        compléte le jeu des octets sélectionnés, caractères
                          ou champs
  -s, --only-delimited    n'affiche pas les lignes ne contenant pas de
                          délimiteurs
      --output-delimiter=STRING  utilise STRING comme délimiteur de sortie, par                           défaut le délimiteur de l'entrée est utilisé
      --help     affiche l'aide et quitte
      --version  affiche des informations de version et quitte

Utilisez un, et seulement un parmi -b, -c ou -f. Chaque LIST est fait d'un
intervalle, ou de plusieurs intervalles séparés par des virgules. L'entrée
sélectionnée est écrite dans le même ordre qu'elle est lue, et seulement une
fois.
Chaque intervalle est l'un de :

  N     Ne octet, caractère ou champ, compté à partir de 1
  N-    du Ne octet, caractère ou champ jusqu'à la fin de la ligne
  N-M   du Ne au Me octets (inclus), caractère ou champ
  -M    du premier au Me octets (inclus), caractère ou champ

Sans FILE, ou quand FILE est -, lit l'entrée standard.

Signalez les anomalies de « cut » à <bug-coreutils@gnu.org>
Page d'accueil de « GNU coreutils » : <http://www.gnu.org/software/coreutils/>
Aide générale sur les logiciels GNU : <http://www.gnu.org/gethelp/>
Traduction de « cut » à <http://translationproject.org/team/fr.html>
Pour une documentation complète, lancer « info coreutils 'cut invocation' »

La Commande uniq

La commande suivante permet d'extraire du fichier /etc/passwd les GID utilisés en tant que groupes principaux des utilisateurs :

[root@centos ~]# cut -d: -f4 /etc/passwd | sort -n | uniq
0
1
2
4
7
12
14
28
29
30
32
38
42
48
50
55
68
69
70
72
74
81
89
99
100
113
170
494
495
498
499
500
65534

Options de la commande

Les options de cette commande sont :

opensuse:~ # uniq --help
Usage: uniq [OPTION]... [INPUT [OUTPUT]]
Filter adjacent matching lines from INPUT (or standard input),
writing to OUTPUT (or standard output).

With no options, matching lines are merged to the first occurrence.

Mandatory arguments to long options are mandatory for short options too.
  -c, --count           prefix lines by the number of occurrences
  -d, --repeated        only print duplicate lines
  -D, --all-repeated[=delimit-method]  print all duplicate lines
                        delimit-method={none(default),prepend,separate}
                        Delimiting is done with blank lines
  -f, --skip-fields=N   avoid comparing the first N fields
  -i, --ignore-case     ignore differences in case when comparing
  -s, --skip-chars=N    avoid comparing the first N characters
  -u, --unique          only print unique lines
  -z, --zero-terminated  end lines with 0 byte, not newline
  -w, --check-chars=N   compare no more than N characters in lines
      --help     display this help and exit
      --version  output version information and exit

A field is a run of blanks (usually spaces and/or TABs), then non-blank
characters.  Fields are skipped before chars.

Note: 'uniq' does not detect repeated lines unless they are adjacent.
You may want to sort the input first, or use `sort -u' without `uniq'.
Also, comparisons honor the rules specified by `LC_COLLATE'.

Report uniq bugs to bug-coreutils@gnu.org
GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>
Report uniq translation bugs to <http://translationproject.org/team/>
For complete documentation, run: info coreutils 'uniq invocation'

La Commande tr

La commande tr permet de substituer des caractères pour d'autres. Cette commande n'accepte que des données en provenance de son entrée standard et non en provenance d'un fichier.

opensuse:~ # cat /etc/passwd | tr "[a-z]" "[A-Z]"
AT:X:25:25:BATCH JOBS DAEMON:/VAR/SPOOL/ATJOBS:/BIN/BASH
AVAHI:X:103:105:USER FOR AVAHI:/VAR/RUN/AVAHI-DAEMON:/BIN/FALSE
BIN:X:1:1:BIN:/BIN:/BIN/BASH
DAEMON:X:2:2:DAEMON:/SBIN:/BIN/BASH
DNSMASQ:X:102:65534:DNSMASQ:/VAR/LIB/EMPTY:/BIN/FALSE
FTP:X:40:49:FTP ACCOUNT:/SRV/FTP:/BIN/BASH
GAMES:X:12:100:GAMES ACCOUNT:/VAR/GAMES:/BIN/BASH
GDM:X:107:109:GNOME DISPLAY MANAGER DAEMON:/VAR/LIB/GDM:/BIN/FALSE
LP:X:4:7:PRINTING DAEMON:/VAR/SPOOL/LPD:/BIN/BASH
MAIL:X:8:12:MAILER DAEMON:/VAR/SPOOL/CLIENTMQUEUE:/BIN/FALSE
MAN:X:13:62:MANUAL PAGES VIEWER:/VAR/CACHE/MAN:/BIN/BASH
MESSAGEBUS:X:101:104:USER FOR D-BUS:/VAR/RUN/DBUS:/BIN/FALSE
NEWS:X:9:13:NEWS SYSTEM:/ETC/NEWS:/BIN/BASH
NOBODY:X:65534:65533:NOBODY:/VAR/LIB/NOBODY:/BIN/BASH
NTP:X:74:103:NTP DAEMON:/VAR/LIB/NTP:/BIN/FALSE
POSTFIX:X:51:51:POSTFIX DAEMON:/VAR/SPOOL/POSTFIX:/BIN/FALSE
PULSE:X:105:107:PULSEAUDIO DAEMON:/VAR/LIB/PULSEAUDIO:/SBIN/NOLOGIN
ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH
RTKIT:X:104:106:REALTIMEKIT:/PROC:/BIN/FALSE
SSHD:X:100:102:SSH DAEMON:/VAR/LIB/SSHD:/BIN/FALSE
STATD:X:106:65534:NFS STATD DAEMON:/VAR/LIB/NFS:/SBIN/NOLOGIN
USBMUX:X:108:65534:USBMUXD DAEMON:/VAR/LIB/USBMUXD:/SBIN/NOLOGIN
UUCP:X:10:14:UNIX-TO-UNIX COPY SYSTEM:/ETC/UUCP:/BIN/BASH
WWWRUN:X:30:8:WWW DAEMON APACHE:/VAR/LIB/WWWRUN:/BIN/FALSE
TRAINEE:X:1000:100:TRAINEE:/HOME/TRAINEE:/BIN/BASH
VBOXADD:X:109:1::/VAR/RUN/VBOXADD:/BIN/FALSE

La commande tr peut être utilisée pour isoler une chaîne. Par exemple pour isoler l'adresse IP de la carte eth0 dans la sortie de la commande ifconfig :

opensuse:~ # ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 08:00:27:5A:43:78  
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe5a:4378/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:4142 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5118 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2172068 (2.0 Mb)  TX bytes:4020334 (3.8 Mb)

opensuse:~ # ifconfig eth0 | grep "inet" 
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe5a:4378/64 Scope:Link
opensuse:~ # ifconfig eth0 | grep "inet" | grep -v "inet6"
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
opensuse:~ # ifconfig eth0 | grep "inet" | grep -v "inet6" | tr -s " " ":"
:inet:addr:10.0.2.15:Bcast:10.0.2.255:Mask:255.255.255.0
opensuse:~ # ifconfig eth0 | grep "inet" | grep -v "inet6" | tr -s " " ":" | cut -d: -f4
10.0.2.15

<note important> Notez l'utilisation de l'option -s avec la commande tr. Cette option permet de remplacer une suite de x caractères identiques par un seul caractère. </note>

Options de la commande

Les options de cette commande sont :

opensuse:~ # tr --help
Usage: tr [OPTION]... SET1 [SET2]
Translate, squeeze, and/or delete characters from standard input,
writing to standard output.

  -c, -C, --complement    use the complement of SET1
  -d, --delete            delete characters in SET1, do not translate
  -s, --squeeze-repeats   replace each input sequence of a repeated character
                            that is listed in SET1 with a single occurrence
                            of that character
  -t, --truncate-set1     first truncate SET1 to length of SET2
      --help     display this help and exit
      --version  output version information and exit

SETs are specified as strings of characters.  Most represent themselves.
Interpreted sequences are:

  \NNN            character with octal value NNN (1 to 3 octal digits)
  \\              backslash
  \a              audible BEL
  \b              backspace
  \f              form feed
  \n              new line
  \r              return
  \t              horizontal tab
  \v              vertical tab
  CHAR1-CHAR2     all characters from CHAR1 to CHAR2 in ascending order
  [CHAR*]         in SET2, copies of CHAR until length of SET1
  [CHAR*REPEAT]   REPEAT copies of CHAR, REPEAT octal if starting with 0
  [:alnum:]       all letters and digits
  [:alpha:]       all letters
  [:blank:]       all horizontal whitespace
  [:cntrl:]       all control characters
  [:digit:]       all digits
  [:graph:]       all printable characters, not including space
  [:lower:]       all lower case letters
  [:print:]       all printable characters, including space
  [:punct:]       all punctuation characters
  [:space:]       all horizontal or vertical whitespace
  [:upper:]       all upper case letters
  [:xdigit:]      all hexadecimal digits
  [=CHAR=]        all characters which are equivalent to CHAR

Translation occurs if -d is not given and both SET1 and SET2 appear.
-t may be used only when translating.  SET2 is extended to length of
SET1 by repeating its last character as necessary.  Excess characters
of SET2 are ignored.  Only [:lower:] and [:upper:] are guaranteed to
expand in ascending order; used in SET2 while translating, they may
only be used in pairs to specify case conversion.  -s uses SET1 if not
translating nor deleting; else squeezing uses SET2 and occurs after
translation or deletion.

Report tr bugs to bug-coreutils@gnu.org
GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>
Report tr translation bugs to <http://translationproject.org/team/>
For complete documentation, run: info coreutils 'tr invocation'

La Commande paste

La commande paste concatène les lignes de n fichiers. Par exemple :

opensuse:~ # paste -d: /etc/passwd /etc/shadow
at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash:at:*:15111:0:99999:7:::
avahi:x:103:105:User for Avahi:/var/run/avahi-daemon:/bin/false:avahi:*:15035:0:99999:7:::
bin:x:1:1:bin:/bin:/bin/bash:bin:*:15035::::::
daemon:x:2:2:Daemon:/sbin:/bin/bash:daemon:*:15035::::::
dnsmasq:x:102:65534:dnsmasq:/var/lib/empty:/bin/false:dnsmasq:*:15035:0:99999:7:::
ftp:x:40:49:FTP account:/srv/ftp:/bin/bash:ftp:*:15035::::::
games:x:12:100:Games account:/var/games:/bin/bash:games:*:15035::::::
gdm:x:107:109:Gnome Display Manager daemon:/var/lib/gdm:/bin/false:gdm:*:15035:0:99999:7:::
lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/bash:lp:*:15035::::::
mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false:mail:*:15035::::::
man:x:13:62:Manual pages viewer:/var/cache/man:/bin/bash:man:*:15035::::::
messagebus:x:101:104:User for D-Bus:/var/run/dbus:/bin/false:messagebus:*:15035:0:99999:7:::
news:x:9:13:News system:/etc/news:/bin/bash:news:*:15035::::::
nobody:x:65534:65533:nobody:/var/lib/nobody:/bin/bash:nobody:*:15035::::::
ntp:x:74:103:NTP daemon:/var/lib/ntp:/bin/false:ntp:*:15035:0:99999:7:::
postfix:x:51:51:Postfix Daemon:/var/spool/postfix:/bin/false:postfix:*:15035:0:99999:7:::
pulse:x:105:107:PulseAudio daemon:/var/lib/pulseaudio:/sbin/nologin:pulse:*:15035:0:99999:7:::
root:x:0:0:root:/root:/bin/bash:root:$2a$05$vjaGlr9oXOAbGv1rwcoYn.zd59GevXgDrPPESbsikCTwrnvMfctBS:15111::::::
rtkit:x:104:106:RealtimeKit:/proc:/bin/false:rtkit:*:15035:0:99999:7:::
sshd:x:100:102:SSH daemon:/var/lib/sshd:/bin/false:sshd:*:15035:0:99999:7:::
statd:x:106:65534:NFS statd daemon:/var/lib/nfs:/sbin/nologin:statd:*:15035:0:99999:7:::
usbmux:x:108:65534:usbmuxd daemon:/var/lib/usbmuxd:/sbin/nologin:usbmux:*:15111:0:99999:7:::
uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash:uucp:*:15035::::::
wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false:wwwrun:*:15035::::::
trainee:x:1000:100:trainee:/home/trainee:/bin/bash:trainee:$2a$05$KZSJtWwMIvyLcQJuxTbaHuXWokuhYVSSBp.yqUa606iGgTrpaY7R.:15111:0:99999:7:::
vboxadd:x:109:1::/var/run/vboxadd:/bin/false:vboxadd:*:15183:0:99999:7:::

Options de la commande

Les options de cette commande sont :

opensuse:~ # paste --help
Usage: paste [OPTION]... [FILE]...
Write lines consisting of the sequentially corresponding lines from
each FILE, separated by TABs, to standard output.
With no FILE, or when FILE is -, read standard input.

Mandatory arguments to long options are mandatory for short options too.
  -d, --delimiters=LIST   reuse characters from LIST instead of TABs
  -s, --serial            paste one file at a time instead of in parallel
      --help     display this help and exit
      --version  output version information and exit

Report paste bugs to bug-coreutils@gnu.org
GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>
Report paste translation bugs to <http://translationproject.org/team/>
For complete documentation, run: info coreutils 'paste invocation'

La Commande split

La commande split est utilisée pour découper de grands fichiers en petit morceaux d'un taille fixe ou d'un nombre de lignes fixe.

Créez d'abord un fichier d'une taille de 250Mo :

opensuse:~ # dd if=/dev/zero of=/file bs=1024k count=250
250+0 records in
250+0 records out
262144000 bytes (262 MB) copied, 0.924002 s, 284 MB/s

Utilisez maintenant la commande split pour diviser ce fichier en morceaux de 50 Mo :

opensuse:~ # split -b 50m /file filepart
opensuse:~ # ls -l | grep filepart
-rw-r--r-- 1 root root 52428800 May 17 08:35 filepartaa
-rw-r--r-- 1 root root 52428800 May 17 08:35 filepartab
-rw-r--r-- 1 root root 52428800 May 17 08:35 filepartac
-rw-r--r-- 1 root root 52428800 May 17 08:35 filepartad
-rw-r--r-- 1 root root 52428800 May 17 08:35 filepartae

<note important> Notez que cinq morceaux ont été créés dans le répertoire courant. </note>

Reconstruisez simplement le fichier avec la commande cat :

opensuse:~ # cat fileparta* > newfile
opensuse:~ # ls -l | grep new
-rw-r--r-- 1 root root 262144000 May 17 08:36 newfile

Options de la commande

Les options de cette commande sont :

[root@centos ~]# split --help
Utilisation : split [OPTION]... [INPUT [PREFIX]]
Affiche sur la sortie des morceaux de INPUT de taille fixe selon PREFIXaa,
PREFIXab, ... ; par défaut la taille est de 1000 lignes et le préfixe par
défaut est « x ».
Sans INPUT ou quand INPUT est -, la lecture se fait sur l'entrée standard.

Les arguments obligatoires pour les options longues le sont aussi pour les
options courtes.
  -a, --suffix-length=N   utilise les suffixes de longueur N (par défaut 2)
  -b, --bytes=BYTES       écrit BYTES octets par fichier de sortie
  -C, --line-bytes=SIZE   écrit au plus SIZE octets par ligne par fichier de
                          sortie
  -d, --numeric-suffixes  utilise des suffixes numériques et non alphabétiques
  -l, --lines=NUMBER      écrit NUMBER lignes par fichier de sortie
      --verbose           affiche un diagnostic juste avant chaque ouverture de
                          fichier de sortie
      --help     affiche l'aide et quitte
      --version  affiche des informations de version et quitte

SIZE peut être (ou un entier optionnellement suivi par) l'une des valeurs
suivantes : kB 1000, K 1024, MB 1000*1000, M 1024*1024 et ainsi de suite pour
G, T, P, E, Z et Y.

Signalez les anomalies de « split » à <bug-coreutils@gnu.org>
Page d'accueil de « GNU coreutils » : <http://www.gnu.org/software/coreutils/>
Aide générale sur les logiciels GNU : <http://www.gnu.org/gethelp/>
Traduction de « split » à <http://translationproject.org/team/fr.html>
Pour une documentation complète, lancer « info coreutils 'split invocation' »

La Commande diff

La commande diff indique les modifications à apporter à deux fichiers pour que ceux-ci soient identique.

Pour commencer, copiez le fichier /etc/passwd vers le répertoire /root :

opensuse:~ # cp /etc/passwd /root

Modifiez ensuite le fichier la ligne trainee du fichier /root/passwd ainsi :

...
trainee10:x:1000:100:trainee:/home/trainee:/bin/bash
...

Supprimez les lignes postfix et pulse dans le fichier /root/passwd et ajoutez en fin de fichier la ligne suivante :

...
Linux est super!

Comparez maintenant les deux fichiers :

opensuse:~ # diff /etc/passwd /root/passwd
16,17d15
< postfix:x:51:51:Postfix Daemon:/var/spool/postfix:/bin/false
< pulse:x:105:107:PulseAudio daemon:/var/lib/pulseaudio:/sbin/nologin
25c23
< trainee:x:1000:100:trainee:/home/trainee:/bin/bash
---
> trainee10:x:1000:100:trainee:/home/trainee:/bin/bash
26a25
> Linux est super!

Dans cette sortie on constate le caractère < et le caractère >. Le premier indique le premier fichier qui a suivi la commande diff tandis que le deuxième indique le deuxième fichier.

Le message 16,17d15 indique qu'il faut supprimer les lignes 16 et 17 dans /etc/passwd car elle n'existent pas après la ligne 15 dans le fichier /root/passwd.

Le message 25c23 indique qu'il faut changer la ligne 25 dans /etc/passwd afin que celle-ci corresponde à la ligne 23 dans /root/passwd.

Le message 26a25 indique qu'à la ligne 26 dans /etc/passwd il faut ajouter la ligne 25 de /root/passwd.

Inversez maintenant l'ordre de comparaison :

opensuse:~ # diff /root/passwd /etc/passwd
15a16,17
> postfix:x:51:51:Postfix Daemon:/var/spool/postfix:/bin/false
> pulse:x:105:107:PulseAudio daemon:/var/lib/pulseaudio:/sbin/nologin
23c25
< trainee10:x:1000:100:trainee:/home/trainee:/bin/bash
---
> trainee:x:1000:100:trainee:/home/trainee:/bin/bash
25d26
< Linux est super!

<note important> Notez que les messages sont maintenant inversés. </note>

Options de la commande

Les options de cette commande sont :

opensuse:~ # diff --help
Usage: diff [OPTION]... FILES
Compare files line by line.

  -i  --ignore-case  Ignore case differences in file contents.
  --ignore-file-name-case  Ignore case when comparing file names.
  --no-ignore-file-name-case  Consider case when comparing file names.
  -E  --ignore-tab-expansion  Ignore changes due to tab expansion.
  -b  --ignore-space-change  Ignore changes in the amount of white space.
  -w  --ignore-all-space  Ignore all white space.
  -B  --ignore-blank-lines  Ignore changes whose lines are all blank.
  -I RE  --ignore-matching-lines=RE  Ignore changes whose lines all match RE.
  --strip-trailing-cr  Strip trailing carriage return on input.
  -a  --text  Treat all files as text.

  -c  -C NUM  --context[=NUM]  Output NUM (default 3) lines of copied context.
  -u  -U NUM  --unified[=NUM]  Output NUM (default 3) lines of unified context.
    --label LABEL  Use LABEL instead of file name.
    -p  --show-c-function  Show which C function each change is in.
    -F RE  --show-function-line=RE  Show the most recent line matching RE.
  -q  --brief  Output only whether files differ.
  -e  --ed  Output an ed script.
  --normal  Output a normal diff.
  -n  --rcs  Output an RCS format diff.
  -y  --side-by-side  Output in two columns.
    -W NUM  --width=NUM  Output at most NUM (default 130) print columns.
    --left-column  Output only the left column of common lines.
    --suppress-common-lines  Do not output common lines.
  -D NAME  --ifdef=NAME  Output merged file to show `#ifdef NAME' diffs.
  --GTYPE-group-format=GFMT  Similar, but format GTYPE input groups with GFMT.
  --line-format=LFMT  Similar, but format all input lines with LFMT.
  --LTYPE-line-format=LFMT  Similar, but format LTYPE input lines with LFMT.
    LTYPE is `old', `new', or `unchanged'.  GTYPE is LTYPE or `changed'.
    GFMT may contain:
      %<  lines from FILE1
      %>  lines from FILE2
      %=  lines common to FILE1 and FILE2
      %[-][WIDTH][.[PREC]]{doxX}LETTER  printf-style spec for LETTER
        LETTERs are as follows for new group, lower case for old group:
          F  first line number
          L  last line number
          N  number of lines = L-F+1
          E  F-1
          M  L+1
    LFMT may contain:
      %L  contents of line
      %l  contents of line, excluding any trailing newline
      %[-][WIDTH][.[PREC]]{doxX}n  printf-style spec for input line number
    Either GFMT or LFMT may contain:
      %%  %
      %c'C'  the single character C
      %c'\OOO'  the character with octal code OOO

  -l  --paginate  Pass the output through `pr' to paginate it.
  -t  --expand-tabs  Expand tabs to spaces in output.
  -T  --initial-tab  Make tabs line up by prepending a tab.
  --tabsize=NUM  Tab stops are every NUM (default 8) print columns.
  --suppress-blank-empty  Suppress space or tab before empty output lines.

  -r  --recursive  Recursively compare any subdirectories found.
  -N  --new-file  Treat absent files as empty.
  --unidirectional-new-file  Treat absent first files as empty.
  -s  --report-identical-files  Report when two files are the same.
  -x PAT  --exclude=PAT  Exclude files that match PAT.
  -X FILE  --exclude-from=FILE  Exclude files that match any pattern in FILE.
  -S FILE  --starting-file=FILE  Start with FILE when comparing directories.
  --from-file=FILE1  Compare FILE1 to all operands.  FILE1 can be a directory.
  --to-file=FILE2  Compare all operands to FILE2.  FILE2 can be a directory.

  --horizon-lines=NUM  Keep NUM lines of the common prefix and suffix.
  -d  --minimal  Try hard to find a smaller set of changes.
  --speed-large-files  Assume large files and many scattered small changes.

  -v  --version  Output version info.
  --help  Output this help.

FILES are `FILE1 FILE2' or `DIR1 DIR2' or `DIR FILE...' or `FILE... DIR'.
If --from-file or --to-file is given, there are no restrictions on FILES.
If a FILE is `-', read standard input.
Exit status is 0 if inputs are the same, 1 if different, 2 if trouble.

Report bugs to: bug-diffutils@gnu.org
GNU diffutils home page: <http://www.gnu.org/software/diffutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>

La Commande cmp

La commande cmp compare les fichiers caractère par caractère. Par défaut la commande s'arrête à la première différence rencontrée :

opensuse:~ # cmp /root/passwd /etc/passwd
/root/passwd /etc/passwd differ: char 776, line 16

L'option -l de la commande indique toutes les différences en trois colonnes :

opensuse:~ # cmp -l /root/passwd /etc/passwd | more
cmp: EOF on /root/passwd
 776 162 160
 778 157 163
 780  72 146
 781 170 151
 782  72 170
 783  60  72
 784  72 170
 785  60  72
 786  72  65
 787 162  61
 788 157  72
 789 157  65
 790 164  61
 792  57 120
 793 162 157
 794 157 163
 795 157 164
 796 164 146
 797  72 151
 798  57 170
 799 142  40
 800 151 104
 801 156 141
 802  57 145
 803 142 155
 804 141 157
 805 163 156
 806 150  72
 807  12  57
 808 162 166
 809 164 141
 810 153 162
 811 151  57
--More--

La première colonne représente le numéro de caractère, la deuxième la valeur octale ASCII du caractère dans le fichier /root/passwd et la troisième la valeur octale ASCII du caractère dans le fichier /etc/passwd.

Options de la commande

Les options de cette commande sont :

opensuse:~ # cmp --help
Usage: cmp [OPTION]... FILE1 [FILE2 [SKIP1 [SKIP2]]]
Compare two files byte by byte.

  -b  --print-bytes  Print differing bytes.
  -i SKIP  --ignore-initial=SKIP  Skip the first SKIP bytes of input.
  -i SKIP1:SKIP2  --ignore-initial=SKIP1:SKIP2
    Skip the first SKIP1 bytes of FILE1 and the first SKIP2 bytes of FILE2.
  -l  --verbose  Output byte numbers and values of all differing bytes.
  -n LIMIT  --bytes=LIMIT  Compare at most LIMIT bytes.
  -s  --quiet  --silent  Output nothing; yield exit status only.
  -v  --version  Output version info.
  --help  Output this help.

SKIP1 and SKIP2 are the number of bytes to skip in each file.
SKIP values may be followed by the following multiplicative suffixes:
kB 1000, K 1024, MB 1,000,000, M 1,048,576,
GB 1,000,000,000, G 1,073,741,824, and so on for T, P, E, Z, Y.

If a FILE is `-' or missing, read standard input.
Exit status is 0 if inputs are the same, 1 if different, 2 if trouble.

Report bugs to: bug-diffutils@gnu.org
GNU diffutils home page: <http://www.gnu.org/software/diffutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>

La commande patch

La commande patch est utilisée pour appliquer des modifications à un fichier à partir d'un fichier patch qui contient les différences entre le contenu de l'ancienne version du fichier et la nouvelle version.

Rappelez-vous des modifications apportées au fichier /tmp/greptest :

opensuse:~ # cat /tmp/greptest
# Commentaire du début
^ voici une ligne pour la recherche fgrep
fenestrOS
fenestros
# Un autre commentaire
555-5555
f

.fenestros

.fe

£
# Commentaire de la fin
opensuse:~ # cat /tmp/greptest1
fenestrOS
fenestros
555-5555
f
.fenestros
.fe
£

Afin de créer un fichier de patch, il convient d'utiliser la commande diff avec l'option -u

opensuse:~ # cd /tmp
opensuse:/tmp # diff -u greptest greptest1 > greptest.patch

L'examen du fichier de patch démontre les modifications à apporter au fichier greptest :

opensuse:/tmp # cat greptest.patch
--- greptest	2012-05-16 15:54:37.000000000 +0200
+++ greptest1	2012-05-16 15:52:58.000000000 +0200
@@ -1,14 +1,7 @@
-# Commentaire du début
-^ voici une ligne pour la recherche fgrep
 fenestrOS
 fenestros
-# Un autre commentaire
 555-5555
 f
-
 .fenestros
-
 .fe
-
 £
-# Commentaire de la fin

Procédez maintenant à l'application du fichier patch :

opensuse:/tmp # patch < greptest.patch
patching file greptest

Contrôlez maintenant le contenu du fichier greptest :

opensuse:/tmp # cat greptest
fenestrOS
fenestros
555-5555
f
.fenestros
.fe
£

Options de la commande

Les options de cette commande sont :

opensuse:/tmp # cd ~
opensuse:~ # patch --help
Usage: patch [OPTION]... [ORIGFILE [PATCHFILE]]

Input options:

  -p NUM  --strip=NUM  Strip NUM leading components from file names.
  -F LINES  --fuzz LINES  Set the fuzz factor to LINES for inexact matching.
  -l  --ignore-whitespace  Ignore white space changes between patch and input.

  -c  --context  Interpret the patch as a context difference.
  -e  --ed  Interpret the patch as an ed script.
  -n  --normal  Interpret the patch as a normal difference.
  -u  --unified  Interpret the patch as a unified difference.

  -N  --forward  Ignore patches that appear to be reversed or already applied.
  -R  --reverse  Assume patches were created with old and new files swapped.

  -i PATCHFILE  --input=PATCHFILE  Read patch from PATCHFILE instead of stdin.

Output options:

  -o FILE  --output=FILE  Output patched files to FILE.
  -r FILE  --reject-file=FILE  Output rejects to FILE.

  -D NAME  --ifdef=NAME  Make merged if-then-else output using NAME.
  -m  --merge  Merge using conflict markers instead of creating reject files.
  -E  --remove-empty-files  Remove output files that are empty after patching.

  -Z  --set-utc  Set times of patched files, assuming diff uses UTC (GMT).
  -T  --set-time  Likewise, assuming local time.

  --quoting-style=WORD   output file names using quoting style WORD.
    Valid WORDs are: literal, shell, shell-always, c, escape.
    Default is taken from QUOTING_STYLE env variable, or 'shell' if unset.

Backup and version control options:

  -b  --backup  Back up the original contents of each file.
  --backup-if-mismatch  Back up if the patch does not match exactly.
  --no-backup-if-mismatch  Back up mismatches only if otherwise requested.

  -V STYLE  --version-control=STYLE  Use STYLE version control.
	STYLE is either 'simple', 'numbered', or 'existing'.
  -B PREFIX  --prefix=PREFIX  Prepend PREFIX to backup file names.
  -Y PREFIX  --basename-prefix=PREFIX  Prepend PREFIX to backup file basenames.
  -z SUFFIX  --suffix=SUFFIX  Append SUFFIX to backup file names.

  -g NUM  --get=NUM  Get files from RCS etc. if positive; ask if negative.

Miscellaneous options:

  -t  --batch  Ask no questions; skip bad-Prereq patches; assume reversed.
  -f  --force  Like -t, but ignore bad-Prereq patches, and assume unreversed.
  -s  --quiet  --silent  Work silently unless an error occurs.
  --verbose  Output extra information about the work being done.
  --dry-run  Do not actually change any files; just print what would happen.
  --posix  Conform to the POSIX standard.

  -d DIR  --directory=DIR  Change the working directory to DIR first.
  --reject-format=FORMAT  Create 'context' or 'unified' rejects.
  --binary  Read and write data in binary mode.

  -v  --version  Output version info.
  --help  Output this help.

Report bugs to <bug-patch@gnu.org>.

La commande strings

La commande strings est utilisée pour trouver toutes les chaînes de caractères qui peuvent être imprimés dans un ou plusieurs fichiers objets ou exécutables passés en argument. Un fichier objet est un fichier intermédiaire intervenant dans le processus de compilation.

Sous Linux et Unix, le format d'un fichier objet est le format ELF, (Executable and Linkable Format). Ce format est aussi utilisé pour :

  • les exécutables,
  • les bibliothèques partagés,
  • les core dumps.

Sans option, la commande strings trouve toutes les chaînes d'une longueur de 4 caractères ou plus suivies par un caractère non-imprimable :

opensuse:~ # strings /usr/bin/passwd | more
/lib/ld-linux.so.2
SuSESuSE
libpam_misc.so.0
__gmon_start__
_Jv_RegisterClasses
misc_conv
libpam.so.0
pam_start
pam_strerror
pam_chauthtok
pam_end
libldap-2.4.so.2
ldap_msgfree
ldap_get_option
ldap_get_dn
ldap_result
ldap_set_rebind_proc
ldap_simple_bind_s
ldap_initialize
ldap_start_tls_s
ldap_next_entry
ldap_simple_bind
ldap_value_free
ldap_add_s
ldap_err2string
ldap_first_entry
_fini
ldap_next_attribute
ldap_modify_s
ldap_init
ldap_get_values
ldap_parse_result
ldap_search_s
--More--

L'option -t de la commande retourne, en plus des chaînes concernées, la position de décalage pour chaque ligne sur laquelle une ou plusieurs chaînes se trouvent :

opensuse:~ # strings -t d /usr/bin/passwd | more
    340 /lib/ld-linux.so.2
    400 SuSESuSE
   5309 libpam_misc.so.0
   5326 __gmon_start__
   5341 _Jv_RegisterClasses
   5361 misc_conv
   5371 libpam.so.0
   5383 pam_start
   5393 pam_strerror
   5406 pam_chauthtok
   5420 pam_end
   5428 libldap-2.4.so.2
   5445 ldap_msgfree
   5458 ldap_get_option
   5474 ldap_get_dn
   5486 ldap_result
   5498 ldap_set_rebind_proc
   5519 ldap_simple_bind_s
   5538 ldap_initialize
   5554 ldap_start_tls_s
   5571 ldap_next_entry
   5587 ldap_simple_bind
   5604 ldap_value_free
   5620 ldap_add_s
   5631 ldap_err2string
   5647 ldap_first_entry
   5664 _fini
   5670 ldap_next_attribute
   5690 ldap_modify_s
   5704 ldap_init
   5714 ldap_get_values
   5730 ldap_parse_result
   5748 ldap_search_s
--More--

L'option -t prend un de trois arguments qui indique le système de numérotation à utiliser :

Argument Système de Numérotation
d Décimal
o Octal
x Héxadécimal

L'option -n de la commande permet de modifier le nombre de caractères minimales dans les chaînes recherchées :

opensuse:~ # strings -t d -n 15 /usr/bin/passwd | more
    340 /lib/ld-linux.so.2
   5309 libpam_misc.so.0
   5341 _Jv_RegisterClasses
   5428 libldap-2.4.so.2
   5458 ldap_get_option
   5498 ldap_set_rebind_proc
   5519 ldap_simple_bind_s
   5538 ldap_initialize
   5554 ldap_start_tls_s
   5571 ldap_next_entry
   5587 ldap_simple_bind
   5604 ldap_value_free
   5631 ldap_err2string
   5647 ldap_first_entry
   5670 ldap_next_attribute
   5714 ldap_get_values
   5730 ldap_parse_result
   5788 ldap_set_option
   5804 ldap_result2error
   5822 ldap_first_attribute
   5843 liblber-2.4.so.2
   5887 __pthread_mutex_lock
   5908 __pthread_mutex_unlock
   5931 nis_local_directory
   5951 nis_local_principal
   5994 nis_clone_object
   6032 nis_getservlist
   6048 nis_free_object
   6117 nis_modify_entry
   6134 yp_get_default_domain
   6156 nis_freeservlist
   6173 libselinux.so.1
   6189 is_selinux_enabled
--More--

Dans le cas de l'utilisation de la commande avec plus d'un fichier, l'option -f devient très utile. Par exemple, imaginons que vous souhaitez connaître les détails disponibles des Copyright des fichiers dans /bin :

opensuse:~ # strings -f /bin/* | grep "(c)"
/bin/csh: @(#) Copyright (c) 1991 The Regents of the University of California.
/bin/openvt: openvt 1.4b - (c) Jon Tombs 1994
/bin/ping: @(#) Copyright (c) 1989 The Regents of the University of California.
/bin/ping6: @(#) Copyright (c) 1989 The Regents of the University of California.
/bin/tcsh: @(#) Copyright (c) 1991 The Regents of the University of California.

<note important> Notez que l'option -f a pour conséquence d'imprimer le nom du fichier contenant la chaîne au début de chaque ligne. </note>

Options de la commande

Les options de cette commande sont :

[root@centos ~]# strings --help
Usage: strings [option(s)] [file(s)]
 Display printable strings in [file(s)] (stdin by default)
 The options are:
  -a - --all                Scan the entire file, not just the data section
  -f --print-file-name      Print the name of the file before each string
  -n --bytes=[number]       Locate & print any NUL-terminated sequence of at
  -<number>                   least [number] characters (default 4).
  -t --radix={o,d,x}        Print the location of the string in base 8, 10 or 16
  -o                        An alias for --radix=o
  -T --target=<BFDNAME>     Specify the binary file format
  -e --encoding={s,S,b,l,B,L} Select character size and endianness:
                            s = 7-bit, S = 8-bit, {b,l} = 16-bit, {B,L} = 32-bit
  @<file>                   Read options from <file>
  -h --help                 Display this information
  -v -V --version           Print the program's version number
strings: supported targets: elf32-i386 a.out-i386-linux pei-i386 elf64-x86-64 elf64-l1om elf64-little elf64-big elf32-little elf32-big srec symbolsrec verilog tekhex binary ihex trad-core
Report bugs to <http://bugzilla.redhat.com/bugzilla/>

La commande comm

La commande comm est utilisée pour comparer deux fichiers texte. La sortie de la commande sépare les lignes en trois catégories :

  • Les lignes présentes seulement dans le premier fichier,
  • Les lignes présentes seulement dans le deuxième fichier,
  • Les lignes présentes dans la deux fichiers.

Utilisez la commande comm pour comparer les fichiers /etc/passwd et /root/passwd :

opensuse:~ # comm /etc/passwd /root/passwd
		at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash
		avahi:x:103:105:User for Avahi:/var/run/avahi-daemon:/bin/false
		bin:x:1:1:bin:/bin:/bin/bash
		daemon:x:2:2:Daemon:/sbin:/bin/bash
		dnsmasq:x:102:65534:dnsmasq:/var/lib/empty:/bin/false
		ftp:x:40:49:FTP account:/srv/ftp:/bin/bash
		games:x:12:100:Games account:/var/games:/bin/bash
		gdm:x:107:109:Gnome Display Manager daemon:/var/lib/gdm:/bin/false
		lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/bash
		mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false
		man:x:13:62:Manual pages viewer:/var/cache/man:/bin/bash
		messagebus:x:101:104:User for D-Bus:/var/run/dbus:/bin/false
		news:x:9:13:News system:/etc/news:/bin/bash
		nobody:x:65534:65533:nobody:/var/lib/nobody:/bin/bash
		ntp:x:74:103:NTP daemon:/var/lib/ntp:/bin/false
postfix:x:51:51:Postfix Daemon:/var/spool/postfix:/bin/false
pulse:x:105:107:PulseAudio daemon:/var/lib/pulseaudio:/sbin/nologin
		root:x:0:0:root:/root:/bin/bash
		rtkit:x:104:106:RealtimeKit:/proc:/bin/false
		sshd:x:100:102:SSH daemon:/var/lib/sshd:/bin/false
		statd:x:106:65534:NFS statd daemon:/var/lib/nfs:/sbin/nologin
		usbmux:x:108:65534:usbmuxd daemon:/var/lib/usbmuxd:/sbin/nologin
		uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash
		wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false
comm: file 1 is not in sorted order
comm: file 2 is not in sorted order
	trainee10:x:1000:100:trainee:/home/trainee:/bin/bash
trainee:x:1000:100:trainee:/home/trainee:/bin/bash
		vboxadd:x:109:1::/var/run/vboxadd:/bin/false
	Linux est super!

Pour afficher uniquement les lignes présentes dans les deux fichiers, il convient d'utiliser les options -1 et -2 :

opensuse:~ # comm -12 /etc/passwd /root/passwd
at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash
avahi:x:103:105:User for Avahi:/var/run/avahi-daemon:/bin/false
bin:x:1:1:bin:/bin:/bin/bash
daemon:x:2:2:Daemon:/sbin:/bin/bash
dnsmasq:x:102:65534:dnsmasq:/var/lib/empty:/bin/false
ftp:x:40:49:FTP account:/srv/ftp:/bin/bash
games:x:12:100:Games account:/var/games:/bin/bash
gdm:x:107:109:Gnome Display Manager daemon:/var/lib/gdm:/bin/false
lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/bash
mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false
man:x:13:62:Manual pages viewer:/var/cache/man:/bin/bash
messagebus:x:101:104:User for D-Bus:/var/run/dbus:/bin/false
news:x:9:13:News system:/etc/news:/bin/bash
nobody:x:65534:65533:nobody:/var/lib/nobody:/bin/bash
ntp:x:74:103:NTP daemon:/var/lib/ntp:/bin/false
root:x:0:0:root:/root:/bin/bash
rtkit:x:104:106:RealtimeKit:/proc:/bin/false
sshd:x:100:102:SSH daemon:/var/lib/sshd:/bin/false
statd:x:106:65534:NFS statd daemon:/var/lib/nfs:/sbin/nologin
usbmux:x:108:65534:usbmuxd daemon:/var/lib/usbmuxd:/sbin/nologin
uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash
wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false
comm: file 1 is not in sorted order
comm: file 2 is not in sorted order
vboxadd:x:109:1::/var/run/vboxadd:/bin/false

Options de la commande

Les options de cette commande sont :

opensuse:~ # comm --help
Usage: comm [OPTION]... FILE1 FILE2
Compare sorted files FILE1 and FILE2 line by line.

With no options, produce three-column output.  Column one contains
lines unique to FILE1, column two contains lines unique to FILE2,
and column three contains lines common to both files.

  -1              suppress column 1 (lines unique to FILE1)
  -2              suppress column 2 (lines unique to FILE2)
  -3              suppress column 3 (lines that appear in both files)

  --check-order     check that the input is correctly sorted, even
                      if all input lines are pairable
  --nocheck-order   do not check that the input is correctly sorted
  --output-delimiter=STR  separate columns with STR
      --help     display this help and exit
      --version  output version information and exit

Note, comparisons honor the rules specified by `LC_COLLATE'.

Examples:
  comm -12 file1 file2  Print only lines present in both file1 and file2.
  comm -3 file1 file2  Print lines in file1 not in file2, and vice versa.

Report comm bugs to bug-coreutils@gnu.org
GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>
Report comm translation bugs to <http://translationproject.org/team/>
For complete documentation, run: info coreutils 'comm invocation'

La commande head

La commande head permet d'afficher les x premières lignes d'un fichier. Sans options, la valeur de x est de 10 par défaut :

opensuse:~ # head /etc/passwd
at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash
avahi:x:103:105:User for Avahi:/var/run/avahi-daemon:/bin/false
bin:x:1:1:bin:/bin:/bin/bash
daemon:x:2:2:Daemon:/sbin:/bin/bash
dnsmasq:x:102:65534:dnsmasq:/var/lib/empty:/bin/false
ftp:x:40:49:FTP account:/srv/ftp:/bin/bash
games:x:12:100:Games account:/var/games:/bin/bash
gdm:x:107:109:Gnome Display Manager daemon:/var/lib/gdm:/bin/false
lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/bash
mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false

Avec l'option -n, la valeur de x peut être spécifiée :

opensuse:~ # head -n 15 /etc/passwd
at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash
avahi:x:103:105:User for Avahi:/var/run/avahi-daemon:/bin/false
bin:x:1:1:bin:/bin:/bin/bash
daemon:x:2:2:Daemon:/sbin:/bin/bash
dnsmasq:x:102:65534:dnsmasq:/var/lib/empty:/bin/false
ftp:x:40:49:FTP account:/srv/ftp:/bin/bash
games:x:12:100:Games account:/var/games:/bin/bash
gdm:x:107:109:Gnome Display Manager daemon:/var/lib/gdm:/bin/false
lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/bash
mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false
man:x:13:62:Manual pages viewer:/var/cache/man:/bin/bash
messagebus:x:101:104:User for D-Bus:/var/run/dbus:/bin/false
news:x:9:13:News system:/etc/news:/bin/bash
nobody:x:65534:65533:nobody:/var/lib/nobody:/bin/bash
ntp:x:74:103:NTP daemon:/var/lib/ntp:/bin/false

La commande head peut également être utilisée pour afficher les premiers y octets en utilisant l'option -c :

opensuse:~ # head -c 150 /etc/passwd
at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash
avahi:x:103:105:User for Avahi:/var/run/avahi-daemon:/bin/false
bin:x:1:1:bin:/bin:/bin/bash

Dans le cas où le y est négatif, la commande head affiche tous les octets du fichier sauf les derniers y octets :

opensuse:~ # head -c -150 /etc/passwd
at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash
avahi:x:103:105:User for Avahi:/var/run/avahi-daemon:/bin/false
bin:x:1:1:bin:/bin:/bin/bash
daemon:x:2:2:Daemon:/sbin:/bin/bash
dnsmasq:x:102:65534:dnsmasq:/var/lib/empty:/bin/false
ftp:x:40:49:FTP account:/srv/ftp:/bin/bash
games:x:12:100:Games account:/var/games:/bin/bash
gdm:x:107:109:Gnome Display Manager daemon:/var/lib/gdm:/bin/false
lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/bash
mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false
man:x:13:62:Manual pages viewer:/var/cache/man:/bin/bash
messagebus:x:101:104:User for D-Bus:/var/run/dbus:/bin/false
news:x:9:13:News system:/etc/news:/bin/bash
nobody:x:65534:65533:nobody:/var/lib/nobody:/bin/bash
ntp:x:74:103:NTP daemon:/var/lib/ntp:/bin/false
postfix:x:51:51:Postfix Daemon:/var/spool/postfix:/bin/false
pulse:x:105:107:PulseAudio daemon:/var/lib/pulseaudio:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
rtkit:x:104:106:RealtimeKit:/proc:/bin/false
sshd:x:100:102:SSH daemon:/var/lib/sshd:/bin/false
statd:x:106:65534:NFS statd daemon:/var/lib/nfs:/sbin/nologin
usbmux:x:108:65534:usbmuxd daemon:/var/lib/usbmuxd:/sbin/nologin
uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash
wwwruopensuse:~ #

Les valeurs x et y acceptent des multiplicateurs :

opensuse:~ # head -c 1b /etc/passwd
at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash
avahi:x:103:105:User for Avahi:/var/run/avahi-daemon:/bin/false
bin:x:1:1:bin:/bin:/bin/bash
daemon:x:2:2:Daemon:/sbin:/bin/bash
dnsmasq:x:102:65534:dnsmasq:/var/lib/empty:/bin/false
ftp:x:40:49:FTP account:/srv/ftp:/bin/bash
games:x:12:100:Games account:/var/games:/bin/bash
gdm:x:107:109:Gnome Display Manager daemon:/var/lib/gdm:/bin/false
lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/bash
mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false
mopensuse:~ # head -c 512 /etc/passwd
at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash
avahi:x:103:105:User for Avahi:/var/run/avahi-daemon:/bin/false
bin:x:1:1:bin:/bin:/bin/bash
daemon:x:2:2:Daemon:/sbin:/bin/bash
dnsmasq:x:102:65534:dnsmasq:/var/lib/empty:/bin/false
ftp:x:40:49:FTP account:/srv/ftp:/bin/bash
games:x:12:100:Games account:/var/games:/bin/bash
gdm:x:107:109:Gnome Display Manager daemon:/var/lib/gdm:/bin/false
lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/bash
mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false
mopensuse:~ # 

Les multiplicateurs les plus utilisés sont :

Multiplicateur Valeur en octets
b 512
KB 1000
K 1024
MB 1000*1000
M 1024*1024
GB 1000*1000*1000
G 1024*1024*1024

Options de la commande

Les options de la commande sont :

opensuse:~ # head --help
Usage: head [OPTION]... [FILE]...
Print the first 10 lines of each FILE to standard output.
With more than one FILE, precede each with a header giving the file name.
With no FILE, or when FILE is -, read standard input.

Mandatory arguments to long options are mandatory for short options too.
  -c, --bytes=[-]K         print the first K bytes of each file;
                             with the leading `-', print all but the last
                             K bytes of each file
  -n, --lines=[-]K         print the first K lines instead of the first 10;
                             with the leading `-', print all but the last
                             K lines of each file
  -q, --quiet, --silent    never print headers giving file names
  -v, --verbose            always print headers giving file names
      --help     display this help and exit
      --version  output version information and exit

K may have a multiplier suffix:
b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,
GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.

Report head bugs to bug-coreutils@gnu.org
GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>
Report head translation bugs to <http://translationproject.org/team/>
For complete documentation, run: info coreutils 'head invocation'

La commande tail

La commande tail permet d'afficher les x dernières lignes d'un fichier. Sans options, la valeur de x est de 10 par défaut :

opensuse:~ # tail /etc/passwd
pulse:x:105:107:PulseAudio daemon:/var/lib/pulseaudio:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
rtkit:x:104:106:RealtimeKit:/proc:/bin/false
sshd:x:100:102:SSH daemon:/var/lib/sshd:/bin/false
statd:x:106:65534:NFS statd daemon:/var/lib/nfs:/sbin/nologin
usbmux:x:108:65534:usbmuxd daemon:/var/lib/usbmuxd:/sbin/nologin
uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash
wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false
trainee:x:1000:100:trainee:/home/trainee:/bin/bash
vboxadd:x:109:1::/var/run/vboxadd:/bin/false

Avec l'option -n, la valeur de x peut être spécifiée :

opensuse:~ # tail -n 15 /etc/passwd
messagebus:x:101:104:User for D-Bus:/var/run/dbus:/bin/false
news:x:9:13:News system:/etc/news:/bin/bash
nobody:x:65534:65533:nobody:/var/lib/nobody:/bin/bash
ntp:x:74:103:NTP daemon:/var/lib/ntp:/bin/false
postfix:x:51:51:Postfix Daemon:/var/spool/postfix:/bin/false
pulse:x:105:107:PulseAudio daemon:/var/lib/pulseaudio:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
rtkit:x:104:106:RealtimeKit:/proc:/bin/false
sshd:x:100:102:SSH daemon:/var/lib/sshd:/bin/false
statd:x:106:65534:NFS statd daemon:/var/lib/nfs:/sbin/nologin
usbmux:x:108:65534:usbmuxd daemon:/var/lib/usbmuxd:/sbin/nologin
uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash
wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false
trainee:x:1000:100:trainee:/home/trainee:/bin/bash
vboxadd:x:109:1::/var/run/vboxadd:/bin/false

La commande tail peut également être utilisée pour afficher les derniers y octets en utilisant l'option -c :

opensuse:~ # tail -c 150 /etc/passwd
n:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false
trainee:x:1000:100:trainee:/home/trainee:/bin/bash
vboxadd:x:109:1::/var/run/vboxadd:/bin/false

Dans le cas où le y est positif, la commande tail affiche tous les octets du fichier à partir de la position de yième octet :

opensuse:~ # tail -c +150 /etc/passwd

daemon:x:2:2:Daemon:/sbin:/bin/bash
dnsmasq:x:102:65534:dnsmasq:/var/lib/empty:/bin/false
ftp:x:40:49:FTP account:/srv/ftp:/bin/bash
games:x:12:100:Games account:/var/games:/bin/bash
gdm:x:107:109:Gnome Display Manager daemon:/var/lib/gdm:/bin/false
lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/bash
mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false
man:x:13:62:Manual pages viewer:/var/cache/man:/bin/bash
messagebus:x:101:104:User for D-Bus:/var/run/dbus:/bin/false
news:x:9:13:News system:/etc/news:/bin/bash
nobody:x:65534:65533:nobody:/var/lib/nobody:/bin/bash
ntp:x:74:103:NTP daemon:/var/lib/ntp:/bin/false
postfix:x:51:51:Postfix Daemon:/var/spool/postfix:/bin/false
pulse:x:105:107:PulseAudio daemon:/var/lib/pulseaudio:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
rtkit:x:104:106:RealtimeKit:/proc:/bin/false
sshd:x:100:102:SSH daemon:/var/lib/sshd:/bin/false
statd:x:106:65534:NFS statd daemon:/var/lib/nfs:/sbin/nologin
usbmux:x:108:65534:usbmuxd daemon:/var/lib/usbmuxd:/sbin/nologin
uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash
wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false
trainee:x:1000:100:trainee:/home/trainee:/bin/bash
vboxadd:x:109:1::/var/run/vboxadd:/bin/false

Les valeurs x et y acceptent des multiplicateurs :

opensuse:~ # tail -c 1b /etc/passwd
io daemon:/var/lib/pulseaudio:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
rtkit:x:104:106:RealtimeKit:/proc:/bin/false
sshd:x:100:102:SSH daemon:/var/lib/sshd:/bin/false
statd:x:106:65534:NFS statd daemon:/var/lib/nfs:/sbin/nologin
usbmux:x:108:65534:usbmuxd daemon:/var/lib/usbmuxd:/sbin/nologin
uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash
wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false
trainee:x:1000:100:trainee:/home/trainee:/bin/bash
vboxadd:x:109:1::/var/run/vboxadd:/bin/false
opensuse:~ # tail -c 512 /etc/passwd
io daemon:/var/lib/pulseaudio:/sbin/nologin
root:x:0:0:root:/root:/bin/bash
rtkit:x:104:106:RealtimeKit:/proc:/bin/false
sshd:x:100:102:SSH daemon:/var/lib/sshd:/bin/false
statd:x:106:65534:NFS statd daemon:/var/lib/nfs:/sbin/nologin
usbmux:x:108:65534:usbmuxd daemon:/var/lib/usbmuxd:/sbin/nologin
uucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash
wwwrun:x:30:8:WWW daemon apache:/var/lib/wwwrun:/bin/false
trainee:x:1000:100:trainee:/home/trainee:/bin/bash
vboxadd:x:109:1::/var/run/vboxadd:/bin/false

Les multiplicateurs les plus utilisés sont :

Multiplicateur Valeur en octets
b 512
KB 1000
K 1024
MB 1000*1000
M 1024*1024
GB 1000*1000*1000
G 1024*1024*1024

Une option intéressante pour la surveillance des fichiers de journalisation est -f. Cette option met à jour l'affichage au fur et au mesure que le fichier est mis à jour :

opensuse:~ # tail -f /var/log/messages
May 17 09:47:01 opensuse /USR/SBIN/CRON[8723]: (trainee) CMD (/bin/pwd > pwd.txt)
May 17 09:48:01 opensuse /USR/SBIN/CRON[8732]: (trainee) CMD (/bin/pwd > pwd.txt)
May 17 09:49:01 opensuse /USR/SBIN/CRON[8741]: (trainee) CMD (/bin/pwd > pwd.txt)
May 17 09:50:01 opensuse /USR/SBIN/CRON[8749]: (trainee) CMD (/bin/pwd > pwd.txt)
May 17 09:51:01 opensuse /USR/SBIN/CRON[8764]: (trainee) CMD (/bin/pwd > pwd.txt)
May 17 09:52:02 opensuse /USR/SBIN/CRON[8771]: (trainee) CMD (/bin/pwd > pwd.txt)
May 17 09:53:01 opensuse /USR/SBIN/CRON[8778]: (trainee) CMD (/bin/pwd > pwd.txt)
May 17 09:54:01 opensuse /USR/SBIN/CRON[8787]: (trainee) CMD (/bin/pwd > pwd.txt)
May 17 09:55:01 opensuse /USR/SBIN/CRON[8796]: (trainee) CMD (/bin/pwd > pwd.txt)
May 17 09:56:01 opensuse /USR/SBIN/CRON[8807]: (trainee) CMD (/bin/pwd > pwd.txt)
^C

Options de la commande

opensuse:~ # tail --help
Usage: tail [OPTION]... [FILE]...
Print the last 10 lines of each FILE to standard output.
With more than one FILE, precede each with a header giving the file name.
With no FILE, or when FILE is -, read standard input.

Mandatory arguments to long options are mandatory for short options too.
  -c, --bytes=K            output the last K bytes; alternatively, use -c +K
                           to output bytes starting with the Kth of each file
  -f, --follow[={name|descriptor}]
                           output appended data as the file grows;
                           -f, --follow, and --follow=descriptor are
                           equivalent
  -F                       same as --follow=name --retry
  -n, --lines=K            output the last K lines, instead of the last 10;
                           or use -n +K to output lines starting with the Kth
      --max-unchanged-stats=N
                           with --follow=name, reopen a FILE which has not
                           changed size after N (default 5) iterations
                           to see if it has been unlinked or renamed
                           (this is the usual case of rotated log files).
                           With inotify, this option is rarely useful.
      --pid=PID            with -f, terminate after process ID, PID dies
  -q, --quiet, --silent    never output headers giving file names
      --retry              keep trying to open a file even when it is or
                             becomes inaccessible; useful when following by
                             name, i.e., with --follow=name
  -s, --sleep-interval=N   with -f, sleep for approximately N seconds
                             (default 1.0) between iterations.
                             With inotify, this option is rarely useful.
  -v, --verbose            always output headers giving file names
      --help     display this help and exit
      --version  output version information and exit

If the first character of K (the number of bytes or lines) is a `+',
print beginning with the Kth item from the start of each file, otherwise,
print the last K items in the file.  K may have a multiplier suffix:
b 512, kB 1000, K 1024, MB 1000*1000, M 1024*1024,
GB 1000*1000*1000, G 1024*1024*1024, and so on for T, P, E, Z, Y.

With --follow (-f), tail defaults to following the file descriptor, which
means that even if a tail'ed file is renamed, tail will continue to track
its end.  This default behavior is not desirable when you really want to
track the actual name of the file, not the file descriptor (e.g., log
rotation).  Use --follow=name in that case.  That causes tail to track the
named file in a way that accommodates renaming, removal and creation.

Report tail bugs to bug-coreutils@gnu.org
GNU coreutils home page: <http://www.gnu.org/software/coreutils/>
General help using GNU software: <http://www.gnu.org/gethelp/>
Report tail translation bugs to <http://translationproject.org/team/>
For complete documentation, run: info coreutils 'tail invocation'

~~DISCUSSION:off~~

Donner votre Avis

{(rater>id=opensuse_11_l102|name=cette page|type=rate|trace=user|tracedetails=1)}

Menu