Commandes de base

Coreutils : Les commandes basiques de Linux

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

console_baniere




Introduction



Dans cet article nous allons partir à la découverte des commandes des coreutils.
Ce sont toutes les commandes standard des systèmes Linux : (chmod, cp, dd, ls, sort, tr, head, wc, who,...)

Nous allons parcourir les principaux par type d'outil et citer un ou plusieurs exemples d'utilisation.

Les commandes sont triées par type de commande puis par ordre alphabétique.

Voici sur un système Red Hat 8 la liste des commandes :

Code TEXT :
/usr/bin/[
/usr/bin/arch
/usr/bin/b2sum
/usr/bin/base32
/usr/bin/base64
/usr/bin/basename
/usr/bin/cat
/usr/bin/chcon
/usr/bin/chgrp
/usr/bin/chmod
/usr/bin/chown
/usr/bin/cksum
/usr/bin/comm
/usr/bin/cp
/usr/bin/csplit
/usr/bin/cut
/usr/bin/date
/usr/bin/dd
/usr/bin/df
/usr/bin/dir
/usr/bin/dircolors
/usr/bin/dirname
/usr/bin/du
/usr/bin/echo
/usr/bin/env
/usr/bin/expand
/usr/bin/expr
/usr/bin/factor
/usr/bin/false
/usr/bin/fmt
/usr/bin/fold
/usr/bin/groups
/usr/bin/head
/usr/bin/hostid
/usr/bin/id
/usr/bin/install
/usr/bin/join
/usr/bin/link
/usr/bin/ln
/usr/bin/logname
/usr/bin/ls
/usr/bin/md5sum
/usr/bin/mkdir
/usr/bin/mkfifo
/usr/bin/mknod
/usr/bin/mktemp
/usr/bin/mv
/usr/bin/nice
/usr/bin/nl
/usr/bin/nohup
/usr/bin/nproc
/usr/bin/numfmt
/usr/bin/od
/usr/bin/paste
/usr/bin/pathchk
/usr/bin/pinky
/usr/bin/pr
/usr/bin/printenv
/usr/bin/printf
/usr/bin/ptx
/usr/bin/pwd
/usr/bin/readlink
/usr/bin/realpath
/usr/bin/rm
/usr/bin/rmdir
/usr/bin/runcon
/usr/bin/seq
/usr/bin/sha1sum
/usr/bin/sha224sum
/usr/bin/sha256sum
/usr/bin/sha384sum
/usr/bin/sha512sum
/usr/bin/shred
/usr/bin/shuf
/usr/bin/sleep
/usr/bin/sort
/usr/bin/split
/usr/bin/stat
/usr/bin/stdbuf
/usr/bin/stty
/usr/bin/sum
/usr/bin/sync
/usr/bin/tac
/usr/bin/tail
/usr/bin/tee
/usr/bin/test
/usr/bin/timeout
/usr/bin/touch
/usr/bin/tr
/usr/bin/true
/usr/bin/truncate
/usr/bin/tsort
/usr/bin/tty
/usr/bin/uname
/usr/bin/unexpand
/usr/bin/uniq
/usr/bin/unlink
/usr/bin/users
/usr/bin/vdir
/usr/bin/wc
/usr/bin/who
/usr/bin/whoami
/usr/bin/yes


Outils pour les fichiers



chcon



chcon permet de changer le contexte de sécurité SELinux d'un fichier :

Code BASH :
chcon -R -t httpd_sys_rw_content_t /server/www



chgrp



chgrp permet de changer le groupe propriétaire d'un fichier :

Code BASH :
chgrp users fichier.txt


L'option -R souvent utilisée permet de faire l'opération de manière récursive (dans le cas d'un répertoire)


chown



chown permet de cnager l'utilisateur d'un fichier :

Code BASH :
chown -R adrien /home/adrien


L'option -R souvent utilisée permet de faire l'opération de manière récursive (dans le cas d'un répertoire)


cp




cp permet de copier un fichier :

Code BASH :
cp fichier.txt copie_de_fichier.txt



dd



dd permet la copie brute d'un périphérique physique :

Code BASH :
dd if=/dev/sda1 of=/home/adrien/copie_brute_de_sda1


if et of indiquent respectivement les fichiers d'entrée et de sortie.
status=progress dans les versions récentes permettent d'afficher le suivi de l'opération.

Les options bs pour block size et count sont parfois utilisées, comme ici pour générer un fichier de 1 Go :

Code BASH :
dd if=/dev/urandom  of=1Go count=1024 bs=1M



df



df permet de montrer l'espace disque occupé par un système de fichiers monté :

Code BASH :
 df -h


Code TEXT :
Sys. de fichiers          Taille Utilisé Dispo Uti% Monté sur
devtmpfs                     10M       0   10M   0% /dev
tmpfs                       7,9G    352M  7,5G   5% /dev/shm
tmpfs                       7,9G    1,5M  7,9G   1% /run
/dev/mapper/rootvg-gentoo    84G     63G   17G  80% /
cgroup_root                  10M       0   10M   0% /sys/fs/cgroup
/dev/sda3                   975M    192M  717M  22% /boot
/dev/sda1                    99M    249K   99M   1% /boot/efi
/dev/mapper/rootvg-home     138G    104G   33G  77% /home
/dev/sdb1                   1,8T    1,8T   81G  96% /media/DATA
/dev/mapper/rootvg-vmssd     84G     35G   49G  42% /media/SSD
tmpfs                       1,6G     68K  1,6G   1% /run/user/1000
 


dir



dir liste les fichiers de la même manière que ls -Cb :

Code BASH :
dir /


Code TEXT :
bin   dev  home  lib64         media  opt   root    sbin     srv  tmp  var
boot  etc  lib     lost+found  mnt    proc  run    selinux  sys  usr



--- install ----

install permet de copier un fichier et paramétrer ses attributs :

Code BASH :
install -m750 script.sh /usr/bin/monscriptperso



ln



ln permet de créer un lien (symbolique ou physique) vers un fichier :

Code BASH :
ln -s fic lien_vers_fic



ls



ls permet de lister les fichiers :

Code BASH :
ls -l /home


Code TEXT :
drwxrwxr-x  17 adeline nous  4096 27 sept.  2020 adeline
drwx-----x 101 adrien  nous 20480 18 juin  09:01 adrien
drwxr-xr-x   3    1002 1004  4096 11 avril  2019 invite
 


l'option -l est souvent utilisée pour afficher les informations de manière détaillée.
l'option -a affiche les fichiers cachés (commençant par le symbole point)
l'option -h permet d'afficher les tailles de manière plus lisible

Code BASH :
ls -lah /root


Code TEXT :
drwx------ 10 root root 4,0K 18 juin  11:51 .
drwxr-xr-x 21 root root 4,0K 10 mars  23:02 ..
-rw-------  1 root root  14K 18 juin  11:46 .bash_history
-rw-r--r--  1 root root  551  1 avril  2021 .bashrc
-rw-r--r--  1 root root 115K 23 janv.  2020 config-5.4.13-gentoo-adrien
drwxr-xr-x  6 root root 4,0K 26 janv.  2020 .cpan
-rw-r--r--  1 root root 1,8K 23 janv.  2020 fstab-gentoo
drwxr-xr-x  9 root root 4,0K 23 janv.  2020 portage-gentoo
-rw-------  1 root root  19K 18 juin  11:51 .viminfo
-rw-r--r--  1 root root  171 29 mai   23:11 .wget-hsts



mkdir



mkdir permet de créer un répertoire :

Code BASH :
mkdir dossier


L'option -p permet de créer l'arborescence complète :

Code BASH :
mkdir -p dossier/1/11/111



mkfifo



mkfifo permet de créer un tube nommé fifo sous forme de fichier :

Code BASH :
mkfifo monfifo


mktmp



mktemp permet de créer un nom unique pour un fichier temporaire :

Code BASH :
mktemp adrien.XXXX


Les XXXX sont les caractères joker utilisés pour la génération aléatoire

mv



mv permet de déplacer (ou renommer) un fichier :

Code BASH :
mv adrien adrien_new


rm



rm permet de supprimer un fichier :

Code BASH :
rm fichier.txt


L'option -i permet de demander confirmation avant suppression
L'option -r permet de supprimer de manière récursive (un répertoire par exemple)
L'option -f permet de ne demander aucune confirmation

rmdir



rmdir permet de supprimer un répertoire s'il est vide :

Code BASH :
rmdir dossier


shred



shred permet d’écraser le contenu d'un fichier :

Code BASH :
shred fichier.txt


Cette commande est abordée avec des exemples dans cet article : Effacer de manière sécurisée un disque dur )


sync



sync permet d'exécuter immédiatement les requêtes en écriture qui sont en attente :

Code BASH :
sync



touch



touch permet de créer un fichier vide ou modifier le timestamp d'un fichier :

Code BASH :
touch fichiervide


Définir la date de modification le 18 Juin 2022 à 17h50 :

Code BASH :
touch -t 2206181750  fichier



vdir



vdir liste les fichiers de la même manière que ls -lb :

Code BASH :
vdir /home


Code TEXT :
drwxrwxr-x  17 adeline nous  4096 27 sept.  2020 adeline
drwx-----x 101 adrien  nous 20480 18 juin  09:01 adrien
drwxr-xr-x   3    1002 1004  4096 11 avril  2019 invite
 


realpath



realpath affiche le chemin absolu d'un fichier, d'un lien symbolique :

Code BASH :
realpath lien_vers_fic


Code TEXT :
/root/fic




Outils pour le texte



base64



base64 permet d'encoder ou de décoder en base64 :

Pour encoder :
Code BASH :
echo coucou | base64


Pour décoder :
Code BASH :
echo Y291Y291Cg== | base64 -d


cat



cat permet d'afficher le contenu d'un fichier ou d'en concaténer plusieurs :

Code BASH :
cat /etc/group


cut



cut sélectionne une colonne dans un fichier :

Code BASH :
cut -d':' -f 1 /etc/passwd


L'option -d permet d'indiquer le champ de délimitation
L'option -f permet d'indiquer le numéro de colonne à sélectionner

head



head permet d'afficher les premières lignes d'un fichier :

Code BASH :
head -5 /etc/passwd


On peut utiliser l'option -n suivi d'un nombre ou -5 (ici avec le nombre 5) pour spécifier un nombre précis (par défaut 10)


md5sum



md5sum permet de calculer la somme md5 d'un fichier

Code BASH :
 md5sum /etc/passwd


Code TEXT :
5c7733be02112522e70bb8857b2141bb  /etc/passwd


nl



nl permet de numéroter les lignes d'un fichier :

Code BASH :
nl  /etc/shells 


Code TEXT :
     1    /bin/sh
     2    /bin/bash
     3    /usr/bin/sh
     4    /usr/bin/bash
 


paste



paste permet d'afficher sur la sortie standard les lignes correspondantes séparées par une tabulation :

Code BASH :
paste /etc/group /etc/gshadow


sha1sum



sha1sum permet de calculer la somme sha1 d'un fichier : (sha224sum, sha256sum, sha384sum, sha512sum)

Code BASH :
 sha1sum /etc/passwd


Code TEXT :
acbd59ff1f6df4189492c63299c3b04504435119  /etc/passwd/code]
 
--- shuf ---
 
[b]shuf[/b] permet de permuter de manière aléatoire les données du flux d'entrée :
 
[code=bash](echo 1; echo 2; echo 3; echo 4) | shuf[/code]
 
[code=text]3
4
2
1
[/code]
 
--- sort ---
 
[b]sort[/b] permet de trier par ordre alphabétique les lignes d'un fichier (ou de l'entrée standard) :
 
[code=bash]sort /etc/passwd[/code]
 
--- tac ---
 
[b]tac[/b] permet d'afficher un fichier en inversant les lignes :
 
[code=bash]tac /etc/group[/code]
 
--- tail ---
 
[b]tail[/b] permet d'afficher les dernières lignes d'un fichier :
 
[code=bash]tail -5 /etc/passwd[/code]
 
On peut utiliser l'option -n suivi d'un nombre ou -5 (ici avec le nombre 5) pour spécifier un nombre précis (par défaut 10)
 
--- tr ---
 
[b]tr[/b] permet de changer un caractère particulier de l'entrée standard :
 
[code=bash]echo coucou | tr c t[/code]
 
 
--- uniq ---
 
[b]uniq[/b] permet de supprimer lignes doublons consécutives d'un fichier (souvent utilisé après sort)
 
[code=bash]sort liste.txt | uniq[/code]
 
--- wc ---
 
[b]wc[/b] permet de compter le nombre de lignes, de mots et de caractères d'un fichier :
 
[code=bash]wc /etc/resolv.conf[/code]
 
L'option -l est souvent utilisée pour ne compter que les lignes :
 
[code=bash]wc -l /etc/passwd[/code]
 
 
-- Outils pour les shells --
 
[code=bash][/code]
 
 
[code=bash][/code]
 
 
[code=bash][/code]
 
 
[code=bash][/code]
 
 
[code=bash][/code]
 
 
[code=bash][/code]
 
 
[code=bash][/code]
 
 
[code=bash][/code]
 
 
[code=bash][/code]
 
 
[code=bash][/code]
 
 
-- Archives --
--- arch ---
Cette commande affiche l'architecture de la machine :
[code=bash]arch[/code]
[code=text]i686[/code]
--- cat ---
Cette commande affiche le contenu d'un fichier :
[code=bash]cat fichier.txt[/code]
[code=text]Bonjour
Voici un fichier
Au revoir[/code]
--- cd ---
Cette commande permet de changer de répertoire :
[code=bash]cd /home[/code]
--- chgrp ---
Cette commande change le groupe propriétaire d'un fichier :
[code=bash]chgrp users fichier.txt[/code]
--- chmod ---
Cette commande change les droits d'un fichier :
[code=bash]chmod +x fichier.txt[/code]
--- chown ---
Cette commande change l'utilisateur propriétaire d'un fichier :
[code=bash]chown adrien fichier.txt[/code]
--- cp ---
Cette commande copie un fichier :
[code=bash]cp fichier.txt copie.txt[/code]
--- date ---
Cette commande affiche la date :
[code=bash]date[/code]
--- df ---
Cette commande affiche la liste des systèmes de fichiers montés et l'espace occupé de chacun :
[code=bash]df[/code]
[code=text]Sys. de fichiers blocs de 1K  Utilisé Disponible Uti% Monté sur
/dev/md0p1          28706020  2746020   24478776  11% /
devtmpfs               10240        0      10240   0% /dev
shm                   771096        0     771096   0% /dev/shm
tmpfs                 771096      496     770600   1% /run
cgroup_root            10240        0      10240   0% /sys/fs/cgroup
/dev/md0p4          69021192 14804904   50687176  23% /home
/dev/md0p3          51475068  2965840   45871404   7% /var[/code]
--- du ---
Cette commande affiche la taille d'un dossier :
[code=bash]du -h /bin[/code]
[code=text]7.7M    /bin[/code]
--- echo ---
Cette commande affiche du texte :
[code=bash]echo coucou[/code]
[code=text]coucou[/code]
--- exit ---
Cette commande quitte l'interpréteur de commande :
[code=bash]exit[/code]
--- find ---
Cette commande recherche des fichiers :
[code=bash]find *.txt[/code]
[code=text]copie.txt
fichier.txt[/code]
--- free ---
Cette commande affiche l'état de la mémoire vive (RAM) et de pagination (SWAP) utilisée :
[code=bash]free[/code]
[code=text]             total       used       free     shared    buffers     cached
Mem:       1542196    1412488     129708      33652     252100     576296
-/+ buffers/cache:     584092     958104
Swap:      3906248      40340    3865908[/code]
--- grep ---
Cette commande affiche les lignes d'un fichier correspondant à une expression
[code=bash]grep Bonjour fichier.txt[/code]
[code=text]Bonjour[/code]
--- groups ---
Cette commande affiche la liste des groupes dont fait partie l'utilisateur :
[code=bash]groups[/code]
[code=text]lp wheel uucp cron audio cdrom video cdrw usb users adrien[/code]
--- head ---
Cette commande affiche les premières lignes de fichiers :
[code=bash]head -2 fichier.txt[/code]
[code=text]Bonjour
Voici un fichier[/code]
--- hostname ---
Cette commande affiche le nom d'hôte de la machine :
[code=bash]hostname[/code]
[code=text]oxygen.linuxtricks.fr[/code]
--- id ---
Cette commande affiche l'ID de l'utilisateur, l'ID du groupe et les groupes de l'utilisateur :
[code=bash]id[/code]
[code=text]uid=1000(adrien) gid=1000(adrien) groupes=1000(adrien),7(lp),10(wheel),14(uucp),16(cron),18(audio),19(cdrom),27(video),80(cdrw),85(usb),100(users)[/code]
--- kill ---
Cette commande tue un processus par son PID (Processus IDentifier) :
[code=bash] kill 25202[/code]
[code=text][1]+  Complété              cat /dev/zero > /dev/null[/code]
--- killall ---
Cette commande tue tous les processus par son nom :
[code=bash]killall cat[/code]
[code=text][1]+  Complété              cat /dev/zero > /dev/null[/code]
--- last ---
Cette commande affiche les derniers utilisateurs connectés sur le système :
[code=bash]last -n 3[/code]
[code=text]adrien   pts/4        94.185.65.78    Sat Aug 29 07:33    gone - no logout
adrien   pts/4        10.21.27.100     Sat Aug 29 06:50 - 07:33  (00:42)
adrien   pts/3        89.158.55.229    Sat Aug 29 06:44 - 09:24  (02:40)
wtmp commence Sun Apr 26 18:17:01 2015[/code]
--- ldd ---
Cette commande affiche les librairies partagées d'un programme :
[code=bash]ldd /bin/bash[/code]
[code=text]        linux-gate.so.1 (0xb76ea000)
        libreadline.so.6 => /lib/libreadline.so.6 (0xb769f000)
        libncurses.so.5 => /lib/libncurses.so.5 (0xb7654000)
        libc.so.6 => /lib/libc.so.6 (0xb74bb000)
        /lib/ld-linux.so.2 (0xb76eb000)[/code]
--- ln ---
Cette commande créé des liens vers des fichiers :
[code=bash]ln -s fichier.txt lien-vers-fichier.txt[/code]
--- logname ---
Cette commande affiche le nom d'utilisateur connecté :
[code=bash]logname[/code]
[code=text]adrien[/code]
--- ls ---
Cette commande liste le contenu d'un répertoire :
[code=bash]ls[/code]
[code=text]copie.txt  fichier.txt  lien-vers-fichier.txt[/code]
--- man ---
Cette commande [b](très utile)[/b] affiche le manuel d'utilisation d'une commande :
[code=bash]man bash[/code]
--- md5sum ---
Affiche la somme MD5 d'un fichier :
[code=bash]md5sum fichier.txt[/code]
[code=text]dfee7f76979716f722d7caa4a774b5c8  fichier.txt[/code]
--- mkdir ---
Cette commande créé un répertoire
[code=bash]mkdir test[/code]
--- mv ---
Cette commande déplace un fichier ou le renomme :
[code=bash]mv fichier.txt fichier-renomme.txt[/code]
--- nl ---
Cette commande affiche le nombre de lignes d'un fichier :
[code=bash]nl fichier.txt[/code]
[code=text]     1  Bonjour
     2  Voici un fichier
     3  Au revoir[/code]
--- pidof ---
Cette commande affiche le PID d'un processus par son nom :
[code=bash]pidof cat[/code]
[code=text]25520[/code]
--- ping ---
Cette commande contacte un hôte par son adresse IP ou son nom :
[code=bash] ping -c 2 linuxtricks.fr[/code]
[code=text]PING linuxtricks.fr (212.227.108.142) 56(84) bytes of data.
64 bytes from 212.227.108.142: icmp_seq=1 ttl=50 time=32.5 ms
64 bytes from 212.227.108.142: icmp_seq=2 ttl=50 time=25.6 ms
-.-.- linuxtricks.fr ping statistics -.-.-
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 25.622/29.105/32.589/3.487 ms[/code]
--- ps ---
Cette commande affiche les processus en cours d'exécution :
[code=bash]ps[/code]
[code=text]  PID TTY          TIME CMD
20605 pts/4    00:00:00 bash
25520 pts/4    00:01:29 cat
25573 pts/4    00:00:00 ps[/code]
--- pstree ---
Cette commande affiche les processus sous la forme d'un arbre :
[code=bash]pstree[/code]
[code=text]init-+-6*[agetty]
     |-apache2-+-apache2
     |         `-2*[apache2---26*[{apache2}]]
     |-cron
     |-dhcpd
     |-fail2ban-server---2*[{fail2ban-server}]
     |-mdadm
     |-mysqld---43*[{mysqld}]
     |-named---4*[{named}]
     |-ntpd
     |-python2-+-python2---10*[{python2}]
     |         |-python2
     |         `-12*[{python2}]
     |-rsyslogd-+-{in:imklog}
     |          |-{in:imuxsock}
     |          `-{rs:main Q:Reg}
     |-screen---bash---su---bash
     |-screen---bash---irssi---{gmain}
     |-sshd-+-sshd---sshd-+-bash
     |      |             `-4*[{sshd}]
     |      `-sshd---sshd-+-bash-+-cat
     |                    |      `-pstree
     |                    `-4*[{sshd}]
     |-udevd
     |-zabbix_agentd---5*[zabbix_agentd]
     `-zabbix_server---26*[zabbix_server][/code]
--- pwd ---
Cette commande affiche le répertoire dans lequel on se trouve :
[code=bash]pwd[/code]
[code=text]/home/adrien/test[/code]
--- rm ---
Cette commande supprime un fichier ou un répertoire :
[code=bash]rm fichier.txt[/code]
--- rmdir ---
Cette commande supprime un dossier :
[code=bash]rmdir test[/code]
--- sed ---
Cette commande permet d'éditer le flux ou un fichier et de transformer le texte :
[code=bash] echo "Mon nom est adrien" | sed -e 's/adrien/christophe/g'[/code]
[code=text]Mon nom est christophe[/code]
--- shutdown ---
Cette commande sert à arrêter ou redémarrer le système :
[code=bash]shutdown now[/code]
--- tail ---
Cette commande affiche les dernières lignes d'un fichier :
[code=bash]tail -n 2 fichier.txt [/code]
[code=text]Voici un fichier
Au revoir[/code]
--- touch ---
Cette commande change la date de dernier accès d'un fichier. S'il n'existe pas, un fichier vide est créé :
[code=bash]touch fichier.txt[/code]
--- tty ---
Cette commande affiche le nom du terminal actuellement utilisé :
[code=bash]tty[/code]
[code=text]/dev/pts/4[/code]
--- uname ---
Cette commande affiche le nom d'hôte, le noyau utilisé, sa version, le processeur :
[code=bash]uname -a[/code]
[code=text]Linux oxygen.linuxtricks.fr 3.18.20-calculate #1 SMP Sun Aug 9 20:25:17 UTC 2015 i686 Intel(R) Pentium(R) 4 CPU 2.80GHz GenuineIntel GNU/Linux[/code]
--- uptime ---
Cette commande affiche la charge système et son temps de fonctionnement :
[code=bash]uptime[/code]
[code=text] 10:41:58 up 16 days,  2:09,  2 users,  load average: 1.21, 1.07, 0.81[/code]
--- users ---
Cette commande affiche le nom des utilisateurs connectés :
[code=bash]users[/code]
[code=text]adrien root[/code]
--- w ---
Cette commande montre les utilisateurs connectés et ce qu'ils font :
[code=bash]w[/code]
[code=text] 10:43:09 up 16 days,  2:10,  2 users,  load average: 1.33, 1.13, 0.85
USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
adrien   pts/0     01:27    9:15m  0.00s  0.00s -bash
adrien   pts/4     07:33    6.00s 13:36   0.00s w[/code]
--- wall ---
Cette commande envoie un message à tout le monde sur le système (Attention, cela affiche même si vous éditez en console un fichier) :
[code=bash]wall Bonjour à tous[/code]
--- whatis ---
Cette commande affiche une brève description de ce qu'est la commande associée :
[code=bash]whatis bash[/code]
[code=text]bash (1)             - GNU Bourne-Again SHell[/code]
--- who ---
Cette commande affiche qui est connecté sur le système :
[code=bash]who[/code]
[code=text]adrien   pts/0        2015-08-29 01:27 (94.185.65.78)
adrien   pts/4        2015-08-29 07:33 (94.185.65.78)[/code]
--- whereis ---
Cette commande affiche l'emplacement d'un fichier exécutable, d'une source ou d'un manuel :
[code=bash]whereis bash[/code]
[code=text]bash: /bin/bash /etc/bash /usr/share/man/man1/bash.1.bz2




:magic: