Dernière mise-à-jour : 2020/01/30 03:27

103.2 - Utiliser des filtres sur des textes en entrée (3/60)

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@centos7 tmp]$ cat ~/test
fenestros

Options de la commande

A faire : Utilisez l'option –help de la commande cat pour visualiser les options de la commande.

La commande sort

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

[trainee@centos7 ~]$ touch aac abc bca xyz
[trainee@centos7 ~]$ ls
aac  bca      Documents  Music     Public     Videos  xyz
abc  Desktop  Downloads  Pictures  Templates  vitext
[trainee@centos7 ~]$ ls | sort
aac
abc
bca
Desktop
Documents
Downloads
Music
Pictures
Public
Templates
Videos
vitext
xyz
[trainee@centos7 ~]$ ls | sort -r
xyz
vitext
Videos
Templates
Public
Pictures
Music
Downloads
Documents
Desktop
bca
abc
aac

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.

Options de la commande

A faire : Utilisez l'option –help de la commande sort pour visualiser les options de la commande.

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@centos7 ~]$ more /etc/services
# /etc/services:
# $Id: services,v 1.55 2013/04/14 ovasik Exp $
#
# Network services, Internet style
# IANA services version: last updated 2013-04-10
#
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, most entries here have two entries
# even if the protocol doesn't support UDP operations.
# Updated from RFC 1700, ``Assigned Numbers'' (October 1994).  Not all ports
# are included, only the more common ones.
#
# The latest IANA port assignments can be gotten from
#       http://www.iana.org/assignments/port-numbers
# The Well Known Ports are those from 0 through 1023.
# The Registered Ports are those from 1024 through 49151
# The Dynamic and/or Private Ports are those from 49152 through 65535
#
# Each line describes one service, and is of the form:
#
# service-name  port/protocol  [aliases ...]   [# comment]

tcpmux          1/tcp                           # TCP port service multiplexer
--More--(0%)

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.

Options de la commande

A faire : Utilisez l'option –help de la commande more pour visualiser les options de la commande.

La commande less

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 ?

[trainee@centos7 ~]$ less /etc/services
# /etc/services:
# $Id: services,v 1.55 2013/04/14 ovasik Exp $
#
# Network services, Internet style
# IANA services version: last updated 2013-04-10
#
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, most entries here have two entries
# even if the protocol doesn't support UDP operations.
# Updated from RFC 1700, ``Assigned Numbers'' (October 1994).  Not all ports
# are included, only the more common ones.
#
# The latest IANA port assignments can be gotten from
#       http://www.iana.org/assignments/port-numbers
# The Well Known Ports are those from 0 through 1023.
# The Registered Ports are those from 1024 through 49151
# The Dynamic and/or Private Ports are those from 49152 through 65535
#
# Each line describes one service, and is of the form:
#
# service-name  port/protocol  [aliases ...]   [# comment]

tcpmux          1/tcp                           # TCP port service multiplexer
/etc/services

Options de la commande

A faire : Utilisez l'option –help de la commande less pour visualiser les options de la commande.

La Commande expand

La commande expand convertit des tabulations dans un fichier en espaces et envoie le résultat à la sortie standard. Sans fichier en argument ou avec le caractère -, la commande prend son entrée de l'entrée standard.

Téléchargez le fichier suivant :

expand
un	deux	trois	quatre	cinq
un	deux	trois	quatre	cinq
un	deux	trois	quatre	cinq
un	deux	trois	quatre	cinq
un	deux	trois	quatre	cinq
un	deux	trois	quatre	cinq
un	deux	trois	quatre	cinq
un	deux	trois	quatre	cinq
un	deux	trois	quatre	cinq
un	deux	trois	quatre	cinq

Déplacez le fichier vers /root :

[root@centos7 ~]# mv /home/trainee/Downloads/expand.txt /root/expand

Visualisez le fichier avec la commande cat :

[root@centos7 ~]# cat expand
un	deux	trois	quatre	cinq
un	deux	trois	quatre	cinq
un	deux	trois	quatre	cinq
un	deux	trois	quatre	cinq
un	deux	trois	quatre	cinq
un	deux	trois	quatre	cinq
un	deux	trois	quatre	cinq
un	deux	trois	quatre	cinq
un	deux	trois	quatre	cinq
un	deux	trois	quatre	cinq

Utilisez les option -vet de la commande cat pour visualiser les caractères invisibles :

[root@centos7 ~]# cat -vet expand
un^Ideux^Itrois^Iquatre^Icinq$
un^Ideux^Itrois^Iquatre^Icinq$
un^Ideux^Itrois^Iquatre^Icinq$
un^Ideux^Itrois^Iquatre^Icinq$
un^Ideux^Itrois^Iquatre^Icinq$
un^Ideux^Itrois^Iquatre^Icinq$
un^Ideux^Itrois^Iquatre^Icinq$
un^Ideux^Itrois^Iquatre^Icinq$
un^Ideux^Itrois^Iquatre^Icinq$
un^Ideux^Itrois^Iquatre^Icinq$

Important : Comme vous pouvez constater, les tabulations sont représentées par ^I et les fins de lignes par $.

Utilisez maintenant la commande expand pour convertir les tabulations en espaces en envoyant le résultat dans le fichier expand1 :

[root@centos7 ~]# expand expand > expand1

Visualisez le fichier avec la commande cat et les options -vet :

[root@centos7 ~]# cat -vet expand1
un      deux    trois   quatre  cinq$
un      deux    trois   quatre  cinq$
un      deux    trois   quatre  cinq$
un      deux    trois   quatre  cinq$
un      deux    trois   quatre  cinq$
un      deux    trois   quatre  cinq$
un      deux    trois   quatre  cinq$
un      deux    trois   quatre  cinq$
un      deux    trois   quatre  cinq$
un      deux    trois   quatre  cinq$

Important : Comme vous pouvez constater, les tabulations ont été converties en espaces.

Options de la commande

A faire : Utilisez l'option –help de la commande expand pour visualiser les options de la commande.

La Commande unexpand

La commande unexpand convertit des espaces dans un fichier en tabulations et envoie le résultat à la sortie standard. Sans fichier en argument ou avec le caractère -, la commande prend son entrée de l'entrée standard.

Utilisez la commande unexpand sur le fichier expand1 et envoyez le résultat dans le fichier expand2 :

[root@centos7 ~]# cat -vet expand1
un      deux    trois   quatre  cinq$
un      deux    trois   quatre  cinq$
un      deux    trois   quatre  cinq$
un      deux    trois   quatre  cinq$
un      deux    trois   quatre  cinq$
un      deux    trois   quatre  cinq$
un      deux    trois   quatre  cinq$
un      deux    trois   quatre  cinq$
un      deux    trois   quatre  cinq$
un      deux    trois   quatre  cinq$
[root@centos7 ~]# unexpand -a expand1 > expand2
[root@centos7 ~]# cat -vet expand2
un^Ideux^Itrois^Iquatre^Icinq$
un^Ideux^Itrois^Iquatre^Icinq$
un^Ideux^Itrois^Iquatre^Icinq$
un^Ideux^Itrois^Iquatre^Icinq$
un^Ideux^Itrois^Iquatre^Icinq$
un^Ideux^Itrois^Iquatre^Icinq$
un^Ideux^Itrois^Iquatre^Icinq$
un^Ideux^Itrois^Iquatre^Icinq$
un^Ideux^Itrois^Iquatre^Icinq$
un^Ideux^Itrois^Iquatre^Icinq$

Important : Notez que les espaces ont été remplacés par des tabulations.

Options de la commande

A faire : Utilisez l'option –help de la commande unexpand pour visualiser les options de la commande.

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@centos7 ~]# cut -c1-7 /etc/passwd
root:x:
bin:x:1
daemon:
adm:x:3
lp:x:4:
sync:x:
shutdow
halt:x:
mail:x:
operato
games:x
ftp:x:1
nobody:
dbus:x:
polkitd
unbound
colord:
usbmuxd
avahi:x
avahi-a
saslaut
qemu:x:
libstor
rpc:x:3
rpcuser
nfsnobo
rtkit:x
radvd:x
ntp:x:3
chrony:
abrt:x:
pulse:x
gdm:x:4
gnome-i
postfix
sshd:x:
tcpdump
trainee
vboxadd
tss:x:5

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@centos7 ~]# 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
operax:11:0t:/sbin/nologin
games2:100:es:/sbin/nologin
ftp:x50:FTP:/sbin/nologin
nobod99:99:/nologin
dbus::81:Syus:/:/sbin/nologin
polki:999:9lkitd:/:/sbin/nologin
unbou:998:9 resolver:/etc/unbound:/sbin/nologin
color997:99ord:/var/lib/colord:/sbin/nologin
usbmu:113:1r:/:/sbin/nologin
avahi0:70:ASD Stack:/var/run/avahi-daemon:/sbin/nologin
avahioipd:x IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
saslax:996:user":/run/saslauthd:/sbin/nologin
qemu:7:107:bin/nologin
libstemgmt:on account for libstoragemgmt:/var/run/lsm:/sbin/nologin
rpc:x32:Rpcar/lib/rpcbind:/sbin/nologin
rpcus:29:29ser:/var/lib/nfs:/sbin/nologin
nfsno:x:655mous NFS User:/var/lib/nfs:/sbin/nologin
rtkit72:172proc:/sbin/nologin
radvd5:75:rbin/nologin
ntp:x38::/eologin
chron994:99rony:/sbin/nologin
abrt:3:173:in/nologin
pulse71:171stem Daemon:/var/run/pulse:/sbin/nologin
gdm:x42::/vin/nologin
gnometial-s::/run/gnome-initial-setup/:/sbin/nologin
postf:89:89ostfix:/sbin/nologin
sshd::74:Prted SSH:/var/empty/sshd:/sbin/nologin
tcpdu:72:72gin
train:1000:home/trainee:/bin/bash
vboxa:992:1xadd:/bin/false
tss:x59:Acche trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

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

[root@centos7 ~]# 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:0:/root
x:100:/usr/games
x:50:/var/ftp
x:99:/
x:81:/
x:998:/
x:997:/etc/unbound
x:996:/var/lib/colord
x:113:/
x:70:/var/run/avahi-daemon
x:170:/var/lib/avahi-autoipd
x:76:/run/saslauthd
x:107:/
x:994:/var/run/lsm
x:32:/var/lib/rpcbind
x:29:/var/lib/nfs
x:65534:/var/lib/nfs
x:172:/proc
x:75:/
x:38:/etc/ntp
x:993:/var/lib/chrony
x:173:/etc/abrt
x:171:/var/run/pulse
x:42:/var/lib/gdm
x:991:/run/gnome-initial-setup/
x:89:/var/spool/postfix
x:74:/var/empty/sshd
x:72:/
x:1000:/home/trainee
x:1:/var/run/vboxadd
x:59:/dev/null

Options de la commande

A faire : Utilisez l'option –help de la commande cut pour visualiser les options de la commande.

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@centos7 ~]# cut -d: -f4 /etc/passwd | sort -n | uniq
0
1
2
4
7
12
29
32
38
42
50
59
70
72
74
75
76
81
89
99
100
107
113
170
171
172
173
991
993
994
996
997
998
1000
65534

Important : Notez l'utilisation de la commande uniq qui permet de supprimer les doublons dans la sortie triée.

Options de la commande

A faire : Utilisez l'option –help de la commande uniq pour visualiser les options de la commande.

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.

[root@centos7 ~]# cat /etc/passwd | tr "[a-z]" "[A-Z]"
ROOT:X:0:0:ROOT:/ROOT:/BIN/BASH
BIN:X:1:1:BIN:/BIN:/SBIN/NOLOGIN
DAEMON:X:2:2:DAEMON:/SBIN:/SBIN/NOLOGIN
ADM:X:3:4:ADM:/VAR/ADM:/SBIN/NOLOGIN
LP:X:4:7:LP:/VAR/SPOOL/LPD:/SBIN/NOLOGIN
SYNC:X:5:0:SYNC:/SBIN:/BIN/SYNC
SHUTDOWN:X:6:0:SHUTDOWN:/SBIN:/SBIN/SHUTDOWN
HALT:X:7:0:HALT:/SBIN:/SBIN/HALT
MAIL:X:8:12:MAIL:/VAR/SPOOL/MAIL:/SBIN/NOLOGIN
OPERATOR:X:11:0:OPERATOR:/ROOT:/SBIN/NOLOGIN
GAMES:X:12:100:GAMES:/USR/GAMES:/SBIN/NOLOGIN
FTP:X:14:50:FTP USER:/VAR/FTP:/SBIN/NOLOGIN
NOBODY:X:99:99:NOBODY:/:/SBIN/NOLOGIN
DBUS:X:81:81:SYSTEM MESSAGE BUS:/:/SBIN/NOLOGIN
POLKITD:X:999:998:USER FOR POLKITD:/:/SBIN/NOLOGIN
UNBOUND:X:998:997:UNBOUND DNS RESOLVER:/ETC/UNBOUND:/SBIN/NOLOGIN
COLORD:X:997:996:USER FOR COLORD:/VAR/LIB/COLORD:/SBIN/NOLOGIN
USBMUXD:X:113:113:USBMUXD USER:/:/SBIN/NOLOGIN
AVAHI:X:70:70:AVAHI MDNS/DNS-SD STACK:/VAR/RUN/AVAHI-DAEMON:/SBIN/NOLOGIN
AVAHI-AUTOIPD:X:170:170:AVAHI IPV4LL STACK:/VAR/LIB/AVAHI-AUTOIPD:/SBIN/NOLOGIN
SASLAUTH:X:996:76:"SASLAUTHD USER":/RUN/SASLAUTHD:/SBIN/NOLOGIN
QEMU:X:107:107:QEMU USER:/:/SBIN/NOLOGIN
LIBSTORAGEMGMT:X:995:994:DAEMON ACCOUNT FOR LIBSTORAGEMGMT:/VAR/RUN/LSM:/SBIN/NOLOGIN
RPC:X:32:32:RPCBIND DAEMON:/VAR/LIB/RPCBIND:/SBIN/NOLOGIN
RPCUSER:X:29:29:RPC SERVICE USER:/VAR/LIB/NFS:/SBIN/NOLOGIN
NFSNOBODY:X:65534:65534:ANONYMOUS NFS USER:/VAR/LIB/NFS:/SBIN/NOLOGIN
RTKIT:X:172:172:REALTIMEKIT:/PROC:/SBIN/NOLOGIN
RADVD:X:75:75:RADVD USER:/:/SBIN/NOLOGIN
NTP:X:38:38::/ETC/NTP:/SBIN/NOLOGIN
CHRONY:X:994:993::/VAR/LIB/CHRONY:/SBIN/NOLOGIN
ABRT:X:173:173::/ETC/ABRT:/SBIN/NOLOGIN
PULSE:X:171:171:PULSEAUDIO SYSTEM DAEMON:/VAR/RUN/PULSE:/SBIN/NOLOGIN
GDM:X:42:42::/VAR/LIB/GDM:/SBIN/NOLOGIN
GNOME-INITIAL-SETUP:X:993:991::/RUN/GNOME-INITIAL-SETUP/:/SBIN/NOLOGIN
POSTFIX:X:89:89::/VAR/SPOOL/POSTFIX:/SBIN/NOLOGIN
SSHD:X:74:74:PRIVILEGE-SEPARATED SSH:/VAR/EMPTY/SSHD:/SBIN/NOLOGIN
TCPDUMP:X:72:72::/:/SBIN/NOLOGIN
TRAINEE:X:1000:1000:TRAINEE:/HOME/TRAINEE:/BIN/BASH
VBOXADD:X:992:1::/VAR/RUN/VBOXADD:/BIN/FALSE
TSS:X:59:59:ACCOUNT USED BY THE TROUSERS PACKAGE TO SANDBOX THE TCSD DAEMON:/DEV/NULL:/SBIN/NOLOGIN

Options de la commande

A faire : Utilisez l'option –help de la commande tr pour visualiser les options de la commande.

La Commande paste

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

[root@centos7 ~]# paste -d: /etc/passwd /etc/shadow
root:x:0:0:root:/root:/bin/bash:root:$6$r4px/s9L2uwGSFnI$NkK5mzNF.CMAFFqMcO.i.tnrMZQDkriDLYwICsimsPaDWKFwUHS3NhDwZY5e7P3glIu.gTBtaOE.SOOW/D.AU/:16502:0:99999:7:::
bin:x:1:1:bin:/bin:/sbin/nologin:bin:*:16231:0:99999:7:::
daemon:x:2:2:daemon:/sbin:/sbin/nologin:daemon:*:16231:0:99999:7:::
adm:x:3:4:adm:/var/adm:/sbin/nologin:adm:*:16231:0:99999:7:::
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin:lp:*:16231:0:99999:7:::
sync:x:5:0:sync:/sbin:/bin/sync:sync:*:16231:0:99999:7:::
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown:shutdown:*:16231:0:99999:7:::
halt:x:7:0:halt:/sbin:/sbin/halt:halt:*:16231:0:99999:7:::
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin:mail:*:16231:0:99999:7:::
operator:x:11:0:operator:/root:/sbin/nologin:operator:*:16231:0:99999:7:::
games:x:12:100:games:/usr/games:/sbin/nologin:games:*:16231:0:99999:7:::
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin:ftp:*:16231:0:99999:7:::
nobody:x:99:99:Nobody:/:/sbin/nologin:nobody:*:16231:0:99999:7:::
dbus:x:81:81:System message bus:/:/sbin/nologin:dbus:!!:16502::::::
polkitd:x:999:998:User for polkitd:/:/sbin/nologin:polkitd:!!:16502::::::
unbound:x:998:997:Unbound DNS resolver:/etc/unbound:/sbin/nologin:unbound:!!:16502::::::
colord:x:997:996:User for colord:/var/lib/colord:/sbin/nologin:colord:!!:16502::::::
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin:usbmuxd:!!:16502::::::
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin:avahi:!!:16502::::::
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin:avahi-autoipd:!!:16502::::::
saslauth:x:996:76:"Saslauthd user":/run/saslauthd:/sbin/nologin:saslauth:!!:16502::::::
qemu:x:107:107:qemu user:/:/sbin/nologin:qemu:!!:16502::::::
libstoragemgmt:x:995:994:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin:libstoragemgmt:!!:16502::::::
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin:rpc:!!:16502:0:99999:7:::
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin:rpcuser:!!:16502::::::
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin:nfsnobody:!!:16502::::::
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin:rtkit:!!:16502::::::
radvd:x:75:75:radvd user:/:/sbin/nologin:radvd:!!:16502::::::
ntp:x:38:38::/etc/ntp:/sbin/nologin:ntp:!!:16502::::::
chrony:x:994:993::/var/lib/chrony:/sbin/nologin:chrony:!!:16502::::::
abrt:x:173:173::/etc/abrt:/sbin/nologin:abrt:!!:16502::::::
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin:pulse:!!:16502::::::
gdm:x:42:42::/var/lib/gdm:/sbin/nologin:gdm:!!:16502::::::
gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/sbin/nologin:gnome-initial-setup:!!:16502::::::
postfix:x:89:89::/var/spool/postfix:/sbin/nologin:postfix:!!:16502::::::
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin:sshd:!!:16502::::::
tcpdump:x:72:72::/:/sbin/nologin:tcpdump:!!:16502::::::
trainee:x:1000:1000:trainee:/home/trainee:/bin/bash:trainee:$6$tMd44tmmFiitAS7.$sJSua3jhyKm2k0mIifYuTpUO0d6q6/gS3PDyuxbHadHVYLsoVslZ3Pn8m5X93rr64oj.KK8OL6J.gvhxbQBrZ1:16502:0:99999:7:::
vboxadd:x:992:1::/var/run/vboxadd:/bin/false:vboxadd:!!:16691::::::
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin:tss:!!:16723::::::

Options de la commande

A faire : Utilisez l'option –help de la commande paste pour visualiser les options de la commande.

La Commande split

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

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

[root@centos7 ~]# dd if=/dev/zero of=/file bs=1024k count=250
250+0 records in
250+0 records out
262144000 bytes (262 MB) copied, 0.215447 s, 1.2 GB/s

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

[root@centos7 ~]# split -b 50m /file filepart
[root@centos7 ~]# ls -l | grep filepart
-rw-r--r--.  1 root root  52428800 Oct 19 15:31 filepartaa
-rw-r--r--.  1 root root  52428800 Oct 19 15:31 filepartab
-rw-r--r--.  1 root root  52428800 Oct 19 15:31 filepartac
-rw-r--r--.  1 root root  52428800 Oct 19 15:31 filepartad
-rw-r--r--.  1 root root  52428800 Oct 19 15:31 filepartae

Important : Notez que cinq morceaux ont été créés dans le répertoire courant. Si aucune taille n'est spécifiée, split devise le fichier en morceaux de 1 000 lignes par défaut.

Reconstruisez simplement le fichier avec la commande cat :

[root@centos7 ~]# cat fileparta* > newfile
[root@centos7 ~]# ls -l | grep newf
-rw-r--r--.  1 root root  262144000 Oct 19 15:31 newfile

Options de la commande

A faire : Utilisez l'option –help de la commande split pour visualiser les options de la commande.

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 :

[root@centos7 ~]# cp /etc/passwd /root

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

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

Supprimez la ligne tcpdump dans le fichier /root/passwd et ajoutez en fin de fichier la ligne suivante :

...
Linux est super!

Comparez maintenant les deux fichiers :

[root@centos7 ~]# diff /etc/passwd /root/passwd
38,39c38
< trainee:x:1000:1000:trainee:/home/trainee:/bin/bash
< vboxadd:x:992:1::/var/run/vboxadd:/bin/false
---
> trainee10:x:1000:1000:trainee:/home/trainee:/bin/bash
40a40
> 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 38,39c38 indique qu'il faut changer la ligne 39 dans /etc/passwd afin que celle-ci corresponde à la ligne 39 dans /root/passwd.

Le message 40a40 indique qu'à la ligne 40 dans /etc/passwd il faut ajouter la ligne 40 de /root/passwd.

Options de la commande

A faire : Utilisez l'option –help de la commande diff pour visualiser les options de la commande.

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 :

[root@centos7 ~]# cmp /root/passwd /etc/passwd
/root/passwd /etc/passwd differ: byte 1873, line 38

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

[root@centos7 ~]# cmp -l /root/passwd /etc/passwd | more
cmp: EOF on /root/passwd
1873  61  72
1874  60 170
1876 170  61
1877  72  60
1878  61  60
1880  60  72
1881  60  61
1882  72  60
1883  61  60
1885  60  72
1886  60 164
1887  72 162
1888 164 141
1889 162 151
1890 141 156
1891 151 145
1892 156 145
1893 145  72
1894 145  57
1895  72 150
1896  57 157
1897 150 155
1898 157 145
1899 155  57
1900 145 164
1901  57 162
1902 164 141
1903 162 151
--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

A faire : Utilisez l'option –help de la commande cmp pour visualiser les options de la commande.

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.

La commande patch n'est pas installée par défaut sous RHEL/CentOS 7 :

[root@centos7 ~]# yum install patch
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror.ibcp.fr
 * extras: mirrors.atosworldline.com
 * updates: mirror.ibcp.fr
Resolving Dependencies
--> Running transaction check
---> Package patch.x86_64 0:2.7.1-8.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

======================================================================================================================================================
 Package                           Arch                               Version                                  Repository                        Size
======================================================================================================================================================
Installing:
 patch                             x86_64                             2.7.1-8.el7                              base                             110 k

Transaction Summary
======================================================================================================================================================
Install  1 Package

Total download size: 110 k
Installed size: 210 k
Is this ok [y/d/N]: y
Downloading packages:
patch-2.7.1-8.el7.x86_64.rpm                                                                                                   | 110 kB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : patch-2.7.1-8.el7.x86_64                                                                                                           1/1 
  Verifying  : patch-2.7.1-8.el7.x86_64                                                                                                           1/1 

Installed:
  patch.x86_64 0:2.7.1-8.el7                                                                                                                          

Complete!

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

[root@centos7 ~]# 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
[root@centos ~]# 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

[root@centos7 ~]# cd /tmp
[root@centos7 tmp]# diff -u greptest greptest1 > greptest.patch

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

[root@centos7 tmp]# cat greptest.patch 
--- greptest	2012-05-13 15:49:23.143130290 +0200
+++ greptest1	2012-05-13 15:26:12.498027492 +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 :

[root@centos7 tmp]# patch < greptest.patch
patching file greptest

Contrôlez maintenant le contenu du fichier greptest :

[root@centos7 tmp]# cat greptest
fenestrOS
fenestros
555-5555
f
.fenestros
.fe
£

Options de la commande

A faire : Utilisez l'option –help de la commande patch pour visualiser les options de la commande.

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 :

[root@centos7 ~]# strings /usr/bin/passwd | more
/lib64/ld-linux-x86-64.so.2
{1~`
libuser.so.1
g_value_get_int64
is_selinux_enabled
_ITM_deregisterTMCloneTable
g_free
g_value_array_get_nth
__gmon_start__
g_value_get_string
g_type_check_value_holds
g_value_get_long
_Jv_RegisterClasses
freecon
_ITM_registerTMCloneTable
lu_ent_set_string
lu_ent_get_first_value_strdup
lu_error_free
lu_user_lock
_fini
_init
lu_strerror
lu_ent_free
lu_ent_new
lu_user_modify
lu_prompt_console
lu_start
lu_user_lookup_name
--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 :

[root@centos7 ~]# strings -t d /usr/bin/passwd | more
    568 /lib64/ld-linux-x86-64.so.2
    648 {1~`
   2833 libuser.so.1
   2846 g_value_get_int64
   2864 is_selinux_enabled
   2883 _ITM_deregisterTMCloneTable
   2911 g_free
   2918 g_value_array_get_nth
   2940 __gmon_start__
   2955 g_value_get_string
   2974 g_type_check_value_holds
   2999 g_value_get_long
   3016 _Jv_RegisterClasses
   3036 freecon
   3044 _ITM_registerTMCloneTable
   3070 lu_ent_set_string
   3088 lu_ent_get_first_value_strdup
   3118 lu_error_free
   3132 lu_user_lock
   3145 _fini
   3151 _init
   3157 lu_strerror
   3169 lu_ent_free
   3181 lu_ent_new
   3192 lu_user_modify
   3207 lu_prompt_console
   3225 lu_start
   3234 lu_user_lookup_name
--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 :

[root@centos7 ~]# strings -t d -n 15 /usr/bin/passwd | more
    568 /lib64/ld-linux-x86-64.so.2
   2846 g_value_get_int64
   2864 is_selinux_enabled
   2883 _ITM_deregisterTMCloneTable
   2918 g_value_array_get_nth
   2955 g_value_get_string
   2974 g_type_check_value_holds
   2999 g_value_get_long
   3016 _Jv_RegisterClasses
   3044 _ITM_registerTMCloneTable
   3070 lu_ent_set_string
   3088 lu_ent_get_first_value_strdup
   3207 lu_prompt_console
   3234 lu_user_lookup_name
   3261 lu_ent_set_long
   3303 lu_user_removepass
   3322 libgobject-2.0.so.0
   3342 libglib-2.0.so.0
   3372 poptSetOtherOptionHelp
   3464 poptHelpOptions
   3503 audit_log_acct_message
   3599 libpam_misc.so.0
   3640 audit_log_user_avc_message
   3667 audit_log_user_message
   3690 libselinux.so.1
   3706 selinux_set_callback
   3727 selinux_check_access
   3759 libpthread.so.0
--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 :

[root@centos7 ~]# strings -f /bin/* | grep "(c)"
/bin/btrace: # Copyright (c) 2005 Silicon Graphics, Inc.
/bin/cdda-player: (c) 1997,98 Gerd Knorr <kraxel@goldbach.in-berlin.de>
/bin/cdda-player: (c) 2005, 2006 Rocky Bernstein <rocky@gnu.org>
/bin/cd-drive: Copyright (c) 2003-2005, 2007-2008, 2011-2013 R. Bernstein
/bin/cd-info: Copyright (c) 2003-2005, 2007-2008, 2011-2013 R. Bernstein
/bin/cd-read: Copyright (c) 2003-2005, 2007-2008, 2011-2013 R. Bernstein
/bin/chcat:         if len(c) > 0 and ( c[0] == "+" or c[0] == "-" ):
/bin/chcat:                 if len(c) > 0 and c[0] == "+":
/bin/chcat:                 if len(c) > 0 and c[0] == "-":
/bin/crash:        (c) a pointer to the first item pointed to by the start address.
/bin/crash:        (c) a list_head that is embedded within a data structure that is
/bin/crash:                 switch(c)
/bin/csh: @(#) Copyright (c) 1991 The Regents of the University of California.
/bin/diffpp: # Copyright (c) 1996-1998 Markku Rossi
/bin/drill: Copyright (c) 2004-2008 NLnet Labs.
/bin/festival_server: ##                         Copyright (c) 1996                            ##
/bin/festival_server_control: ##                         Copyright (c) 1996                            ##
/bin/gcm-calibrate: Copyright (c)
/bin/gprof: @(#) Copyright (c) 1983 Regents of the University of California.
/bin/hpijs: Copyright (c) 2001-2004, Hewlett-Packard Co.
/bin/ibus-setup: # Copyright (c) 2007-2010 Peng Huang <shawn.p.huang@gmail.com>
/bin/ibus-setup: # Copyright (c) 2007-2010 Red Hat, Inc.
/bin/ibus-table-createdb: # Copyright (c) 2008-2009 Yu Yuwei <acevery@gmail.com>
/bin/iso-info: Copyright (c) 2003-2005, 2007-2008, 2011-2013 R. Bernstein
/bin/iso-read: Copyright (c) 2003-2005, 2007-2008, 2011-2013 R. Bernstein
/bin/lsusb.py: # (c) Kurt Garloff <garloff@suse.de>, 2/2009, GPL v2 or v3.
/bin/mmc-tool: Copyright (c) 2003-2005, 2007-2008, 2011-2013 R. Bernstein
/bin/orca: __copyright__ = "Copyright (c) 2010-2012 The Orca Team" \
/bin/orca:                 "Copyright (c) 2012 Igalia, S.L."
/bin/pinentry: # Copyright (c) 2006 SUSE LINUX Products GmbH, Nuernberg, Germany.
/bin/pinentry: # Copyright (c) 2009 Fedora Project
/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/pod2usage: # Copyright (c) 1996-2000 by Bradford Appleton. All rights reserved.
/bin/qemu-img: qemu-img version 1.5.3, Copyright (c) 2004-2008 Fabrice Bellard
/bin/repoclosure: # seth vidal 2005 (c) etc etc
/bin/repodiff: # (c) 2007 Red Hat. Written by skvidal@fedoraproject.org
/bin/repo-graph: # (c) 2005 Panu Matilainen <pmatilai@laiskiainen.org>
/bin/repomanage: # (c) Copyright Seth Vidal 2004
/bin/repoquery: # (c) pmatilai@laiskiainen.org
/bin/repo-rss: # seth vidal 2005 (c) etc etc
/bin/repotrack: # (c) 2005 seth vidal skvidal at phy.duke.edu
/bin/rngtest: Copyright (c) 2004 by Henrique de Moraes Holschuh
/bin/saytime: ;;                       Copyright (c) 1996,1997                         ;;
/bin/sbcdec: Copyright (c) 2004-2010  Marcel Holtmann
/bin/sbcenc: Copyright (c) 2004-2010  Marcel Holtmann
/bin/screen: Copyright (c) 2010 Juergen Weigert, Sadrul Habib Chowdhury
/bin/screen: Copyright (c) 2008, 2009 Juergen Weigert, Michael Schroeder, Micah Cowan, Sadrul Habib Chowdhury
/bin/screen: Copyright (c) 1993-2002, 2003, 2005, 2006, 2007 Juergen Weigert, Michael Schroeder
/bin/screen: Copyright (c) 1987 Oliver Laumann
/bin/sliceprint: # Copyright (c) 1996-1999 Markku Rossi
/bin/soundstretch:     Copyright (c) Olli Parviainen
/bin/ssh-copy-id: # Copyright (c) 1999-2013 Philip Hands <phil@hands.com>
/bin/tcptraceroute: #   Copyright (c)  2007             Dmitry Butskoy
/bin/tcsh: @(#) Copyright (c) 1991 The Regents of the University of California.
/bin/text2wave: ;;                       Copyright (c) 1996,1997                         ;;
/bin/traceroute: Copyright (c) 2008  Dmitry Butskoy,   License: GPL v2 or any later
/bin/traceroute6: Copyright (c) 2008  Dmitry Butskoy,   License: GPL v2 or any later
/bin/verifytree: # copyright (c) 2008 Red Hat, Inc - written by Seth Vidal and Will Woods
/bin/wavpack:  Copyright (c) 1998 - 2009 Conifer Software.  All Rights Reserved.
/bin/wvdial: Copyright (c) 1997-2005 Net Integration Technologies, Inc.
/bin/wvdialconf: Copyright (c) 1997-2005 Net Integration Technologies, Inc.
/bin/wvgain:  Copyright (c) 2005 - 2009 Conifer Software.  All Rights Reserved.
/bin/wvunpack:  Copyright (c) 1998 - 2009 Conifer Software.  All Rights Reserved.
/bin/yum-debug-dump: ## (c) 2008 Red Hat. Written by skvidal@fedoraproject.org
/bin/yum-debug-restore: ## (c) 2008 Red Hat. Written by skvidal@fedoraproject.org
/bin/zip: ight (c)H
/bin/zip: Copyright (c) 1990-2008 Info-ZIP.  All rights reserved.
/bin/zip: Copyright (c) 1990-2008 Info-ZIP - Type '%s "-L"' for software license.
/bin/zipcloak: Copyright (c) 1990-2008 Info-ZIP.  All rights reserved.
/bin/zipcloak: Copyright (c) 1990-2008 Info-ZIP - Type '%s "-L"' for software license.
/bin/zipnote: Copyright (c) 1990-2008 Info-ZIP.  All rights reserved.
/bin/zipnote: Copyright (c) 1990-2008 Info-ZIP - Type '%s "-L"' for software license.
/bin/zipsplit: Copyright (c) 1990-2008 Info-ZIP.  All rights reserved.
/bin/zipsplit: Copyright (c) 1990-2008 Info-ZIP - Type '%s "-L"' for software license.

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.

Options de la commande

A faire : Utilisez l'option –help de la commande strings pour visualiser les options de la commande.

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 :

[root@centos7 ~]# comm /etc/passwd /root/passwd
		root:x:0:0:root:/root:/bin/bash
		bin:x:1:1:bin:/bin:/sbin/nologin
		daemon:x:2:2:daemon:/sbin:/sbin/nologin
		adm:x:3:4:adm:/var/adm:/sbin/nologin
		lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
		sync:x:5:0:sync:/sbin:/bin/sync
		shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
		halt:x:7:0:halt:/sbin:/sbin/halt
		mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
		operator:x:11:0:operator:/root:/sbin/nologin
		games:x:12:100:games:/usr/games:/sbin/nologin
		ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
		nobody:x:99:99:Nobody:/:/sbin/nologin
		dbus:x:81:81:System message bus:/:/sbin/nologin
		polkitd:x:999:998:User for polkitd:/:/sbin/nologin
		unbound:x:998:997:Unbound DNS resolver:/etc/unbound:/sbin/nologin
		colord:x:997:996:User for colord:/var/lib/colord:/sbin/nologin
		usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
		avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
		avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
		saslauth:x:996:76:"Saslauthd user":/run/saslauthd:/sbin/nologin
		qemu:x:107:107:qemu user:/:/sbin/nologin
		libstoragemgmt:x:995:994:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
		rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
		rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
		nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
		rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
		radvd:x:75:75:radvd user:/:/sbin/nologin
		ntp:x:38:38::/etc/ntp:/sbin/nologin
		chrony:x:994:993::/var/lib/chrony:/sbin/nologin
		abrt:x:173:173::/etc/abrt:/sbin/nologin
		pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
		gdm:x:42:42::/var/lib/gdm:/sbin/nologin
		gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/sbin/nologin
		postfix:x:89:89::/var/spool/postfix:/sbin/nologin
		sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
		tcpdump:x:72:72::/:/sbin/nologin
	trainee10:x:1000:1000:trainee:/home/trainee:/bin/bash
trainee:x:1000:1000:trainee:/home/trainee:/bin/bash
	tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
comm: file 2 is not in sorted order
	Linux est super!
vboxadd:x:992:1::/var/run/vboxadd:/bin/false
comm: file 1 is not in sorted order
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

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

[root@centos7 ~]# comm -12 /etc/passwd /root/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
unbound:x:998:997:Unbound DNS resolver:/etc/unbound:/sbin/nologin
colord:x:997:996:User for colord:/var/lib/colord:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
saslauth:x:996:76:"Saslauthd user":/run/saslauthd:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
libstoragemgmt:x:995:994:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
chrony:x:994:993::/var/lib/chrony:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
comm: file 2 is not in sorted order
comm: file 1 is not in sorted order

Options de la commande

A faire : Utilisez l'option –help de la commande comm pour visualiser les options de la commande.

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 :

[root@centos7 ~]# head /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin

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

[root@centos7 ~]# head -n 15 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin

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

[root@centos7 ~]# head -c 150 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7[root@centos7 ~]#  

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

lp:x:4:7[root@centos7 ~]# head -c -150 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
unbound:x:998:997:Unbound DNS resolver:/etc/unbound:/sbin/nologin
colord:x:997:996:User for colord:/var/lib/colord:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
saslauth:x:996:76:"Saslauthd user":/run/saslauthd:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
libstoragemgmt:x:995:994:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
chrony:x:994:993::/var/lib/chrony:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
trainee:x:1000:1000:trainee:/home/trainee:/bin/[root@centos7 ~]# 

Les valeurs x et y acceptent des multiplicateurs :

[root@centos7 ~]# head -c 1b /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin[root@centos7 ~]# 
[root@centos7 ~]# head -c 512 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin[root@centos7 ~]#

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

A faire : Utilisez l'option –help de la commande head pour visualiser les options de la commande.

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 :

[root@centos7 ~]# tail /etc/passwd
abrt:x:173:173::/etc/abrt:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
trainee:x:1000:1000:trainee:/home/trainee:/bin/bash
vboxadd:x:992:1::/var/run/vboxadd:/bin/false
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

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

[root@centos7 ~]# tail -n 15 /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
chrony:x:994:993::/var/lib/chrony:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
trainee:x:1000:1000:trainee:/home/trainee:/bin/bash
vboxadd:x:992:1::/var/run/vboxadd:/bin/false
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

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

[root@centos7 ~]# tail -c 150 /etc/passwd
bash
vboxadd:x:992:1::/var/run/vboxadd:/bin/false
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

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 :

[root@centos7 ~]# tail -c +150 /etc/passwd
7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
unbound:x:998:997:Unbound DNS resolver:/etc/unbound:/sbin/nologin
colord:x:997:996:User for colord:/var/lib/colord:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
saslauth:x:996:76:"Saslauthd user":/run/saslauthd:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
libstoragemgmt:x:995:994:daemon account for libstoragemgmt:/var/run/lsm:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
rtkit:x:172:172:RealtimeKit:/proc:/sbin/nologin
radvd:x:75:75:radvd user:/:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
chrony:x:994:993::/var/lib/chrony:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
pulse:x:171:171:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
trainee:x:1000:1000:trainee:/home/trainee:/bin/bash
vboxadd:x:992:1::/var/run/vboxadd:/bin/false
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

Les valeurs x et y acceptent des multiplicateurs :

[root@centos7 ~]# tail -c 1b /etc/passwd
PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
trainee:x:1000:1000:trainee:/home/trainee:/bin/bash
vboxadd:x:992:1::/var/run/vboxadd:/bin/false
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
[root@centos7 ~]# tail -c 512 /etc/passwd
PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
gnome-initial-setup:x:993:991::/run/gnome-initial-setup/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
trainee:x:1000:1000:trainee:/home/trainee:/bin/bash
vboxadd:x:992:1::/var/run/vboxadd:/bin/false
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin

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 :

[root@centos7 ~]# tail -f /var/log/messages
Oct 19 15:58:06 centos7 dbus-daemon: dbus[542]: [system] Activating service name='org.freedesktop.PackageKit' (using servicehelper)
Oct 19 15:58:06 centos7 dbus[542]: [system] Activating service name='org.freedesktop.PackageKit' (using servicehelper)
Oct 19 15:58:06 centos7 dbus-daemon: dbus[542]: [system] Successfully activated service 'org.freedesktop.PackageKit'
Oct 19 15:58:06 centos7 dbus[542]: [system] Successfully activated service 'org.freedesktop.PackageKit'
Oct 19 16:00:01 centos7 systemd: Created slice user-0.slice.
Oct 19 16:00:01 centos7 systemd: Starting Session 17 of user root.
Oct 19 16:00:01 centos7 systemd: Started Session 17 of user root.
Oct 19 16:01:01 centos7 systemd: Created slice user-0.slice.
Oct 19 16:01:01 centos7 systemd: Starting Session 18 of user root.
Oct 19 16:01:01 centos7 systemd: Started Session 18 of user root.
^C

Options de la commande

A faire : Utilisez l'option –help de la commande tail pour visualiser les options de la commande.

LAB #1 - Utiliser les commendes grep, tr et cut pour isoler l'adresse IPv4

[root@centos7 ~]# ifconfig enp0s3
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
        inet6 fe80::a00:27ff:febd:f523  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:bd:f5:23  txqueuelen 1000  (Ethernet)
        RX packets 7462  bytes 6158140 (5.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4130  bytes 555287 (542.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@centos7 ~]# ifconfig enp0s3 | grep "inet"
        inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
        inet6 fe80::a00:27ff:febd:f523  prefixlen 64  scopeid 0x20<link>

[root@centos7 ~]# ifconfig enp0s3 | grep "inet" | grep -v "inet6"
        inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255

[root@centos7 ~]# ifconfig enp0s3 | grep "inet" | grep -v "inet6" | tr -s " " ":"
:inet:10.0.2.15:netmask:255.255.255.0:broadcast:10.0.2.255

[root@centos7 ~]# ifconfig enp0s3 | grep "inet" | grep -v "inet6" | tr -s " " ":" | cut -d: -f3
10.0.2.15

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.

  fmt
  join
  nl
  od
  pr
  wc

<html>

Copyright © 2004-2017 Hugh Norris.<br><br> <a rel=“license” href=“http://creativecommons.org/licenses/by-nc-nd/3.0/fr/”><img alt=“Licence Creative Commons” style=“border-width:0” src=“http://i.creativecommons.org/l/by-nc-nd/3.0/fr/88x31.png” /></a><br />Ce(tte) oeuvre est mise à disposition selon les termes de la <a rel=“license” href=“http://creativecommons.org/licenses/by-nc-nd/3.0/fr/”>Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Pas de Modification 3.0 France</a>.

</html>


Menu