Apprendre la ligne de commande UNIX

Les commandes UNIX s'utilise dans le cadre de procédure avec le shell dans un terminal, c'est des outils basics pour intéragir avec le système en ligne de commande. Cela est particulièrement utile pour les programmeurs et la gestion de serveur, ou il n'y a pas d'interface graphique. Egalement cela permet d'optimiser la productivité et automatiser des tâches avec des scripts bash. Vous pouvez absolument tout controler depuis votre terminal. Ceci est une liste de 42 commandes essentiels sous UNIX. Cela est nécessaire pour tous débutant en informatique que la maitrise des lignes de commande dans un terminal.

  • vim

Vim est l'outil basic d'éditeur de texte du programmeur, c'est votre meilleur allié, ça maitrise au départ est complexe avec son mode modal, mais on s'y fait avec le tutorial à lancer en ligne de commande vimtutor.

$ vim hello.c

Créer un fichier hello en langage C.

  • ls

Affiche les informations sur les fichiers et les dossiers ainsi que les permissions d'accès

$ ls -la

total 3364
drwxr-xr-x 1 trivial trivial     206 28 juil. 20:31 .
drwxr-xr-x 1 trivial trivial     448 29 juil. 08:16 ..
-rwxr--r-- 1 trivial trivial   85344 28 juil. 19:33 hello
-rwxr--r-- 1 trivial trivial   85792 28 juil. 20:31 hello-gui
-rw-r--r-- 1 trivial trivial     116 28 juil. 20:31 hello-gui.red
-rw-r--r-- 1 trivial trivial     223 28 juil. 20:15 hello.red
-rw-r--r-- 1 trivial trivial  332088 28 juil. 19:32 libRedRT-defs.r
-rw-r--r-- 1 trivial trivial     414 28 juil. 19:33 libRedRT-extras.r
-rw-r--r-- 1 trivial trivial   69005 28 juil. 19:32 libRedRT-include.red
-rwxr--r-- 1 trivial trivial 1300352 28 juil. 19:33 libRedRT.so
-rwxr--r-- 1 trivial trivial 1551836 28 juil. 02:54 redc
  • pwd

Affiche le dossier de travail

$ pwd

/home/trivial/red/src
  • cd

Permet de naviguer dans les différents dossiers

Naviguer à la racine

$ cd /

Naviguer dans le dossier home

$ cd ~

Naviguer dans le dossier Documents

$ cd ~/Documents

Retourner au dossier parents

$ cd ..
  • mkdir

Créer un nouveau dossier

$ mkdir sources
  • rmdir

Supprimer un dossier

$ rmdir sources
  • rm

Commande pour supprimer un fichier

$ rm fichier.txt
  • mv

Commande pour bouger ou renomer un fichier

mv fichier1.txt fichier2.txt
  • cp

Commande pour copier un fichier

$ cp fichier.txt fichierv2.txt
  • touch

Créer un simple fichier vide brut ou avec une extension

$ touch fichier
  • cat

Affiche le contenu d'un fichier

$ cat /etc/resolv.conf

# Generated by NetworkManager
nameserver 192.168.121.246
nameserver 2a04:cec0:c029:6580::b
  • clear

Permet de nettoyer l'ecran du terminal

$ clear
  • echo

Permet d'afficher dans un terminal

$ echo "hello world"

hello world
  • less

Permet d'afficher des pages

  • man

Commande d'aide et d'affichage du manuel

$ man sudo

SUDO(8)                              System Manager's Manual                                     SUDO(8)

NAME
       sudo, sudoedit  execute a command as another user

SYNOPSIS
[...]
  • uname

Obtenir les informations basics sur l'OS

$ uname -a

Linux arch-t480 6.4.12-zen1-1-zen #1 ZEN SMP PREEMPT_DYNAMIC Thu, 24 Aug 2023 00:37:46 +0000 x86_64 GNU/Linux
  • whoami

Connaitre l'utilisateur actif

$ whoami

trivial
  • tar

Commande pour extraire et compresser des fichier sous Linux

Pour créer une archive tar

$ tar -cvf exempleArchive.tar /home/exempleArchive
  • grep

Grep permet de chercher dans un fichier un pattern que nous définissons

cat fichier.txt | grep pattern
  • diff

Permet d'afficher la différence entre deux fichiers

  • export

Permet de créer des variables d'environnement et gérer le PATH

$ export myvar=5
$ echo $myvar
5
  • ssh

Permet de ce connecter à un serveur distant sur le modèle "utilisateur"@"ip"

ssh trivial@83.13.145.56
  • git

Outil de controle de version

  • ps

Affiche les processus actifs

$ ps -aux

USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root           1  0.0  0.0  23844  9972 ?        Ss   août29   0:21 /usr/lib/systemd/systemd --switched-root --syst
root           2  0.0  0.0      0     0 ?        S    août29   0:00 [kthreadd]
root           3  0.0  0.0      0     0 ?        I<   août29   0:00 [rcu_gp]
  • kill

Permet d'arrêter un processus via le PID

$ sudo kill 51
  • df

vérifier l'espace disque

$ df -H

Sys. de fichiers       Taille Utilisé Dispo Uti% Monté sur
/dev/mapper/vg-arch      256G    102G  152G  41% /
devtmpfs                 4,2M       0  4,2M   0% /dev
tmpfs                    8,3G    319M  8,0G   4% /dev/shm
tmpfs                    3,4G    9,9M  3,3G   1% /run
tmpfs                    8,3G     81M  8,2G   1% /tmp
/dev/mapper/vg-arch      256G    102G  152G  41% /_snapshot
/dev/mapper/vg-arch      256G    102G  152G  41% /home
/dev/nvme0n1p1           535M    254M  282M  48% /boot
tmpfs                    1,7G    209k  1,7G   1% /run/user/1000
/dev/mapper/veracrypt1   349M    154M  172M  48% /mnt/veracrypt1
  • lsblk

Affiche les partitions

$ lsblk -l

NAME                                      MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
loop0                                       7:0    0   366M  0 loop  
sda                                         8:0    1     0B  0 disk 
zram0                                     253:0    0     8G  0 disk  
luks-4779cffb-39d7-43a8-734e-5fff5180cff9 254:0    0   238G  0 crypt 
vg-arch                                   254:1    0   238G  0 lvm   /home
                                                                     /_snapshot
                                                                     /
veracrypt1_1                              254:2    0 365,8M  0 dm    
veracrypt1_0                              254:3    0 365,8M  0 dm    
veracrypt1                                254:4    0 365,8M  0 dm    /mnt/veracrypt1
nvme0n1                                   259:0    0 238,5G  0 disk  
nvme0n1p1                                 259:1    0   511M  0 part  /boot
nvme0n1p2                                 259:2    0   238G  0 part 
  • ip

Commande pour manipuler les outils réseaux, routage, équipements et tunneling

$ ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: enp0s31f6: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether e8:6a:64:8d:c0:4b brd ff:ff:ff:ff:ff:ff
3: wlp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 50:76:af:2c:e2:42 brd ff:ff:ff:ff:ff:ff
    inet 192.168.121.196/24 brd 192.168.121.255 scope global dynamic noprefixroute wlp3s0
       valid_lft 2102sec preferred_lft 2102sec
    inet6 2a04:cec0:c020:6580:c031:c188:4cdb:66/64 scope global dynamic noprefixroute 
       valid_lft 6140sec preferred_lft 6140sec
    inet6 fe80::89aa:f14f:c341:2216/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
  • ping

Outil réseau qui permet de ping la connexion à un site, état du réseau

$ ping www.google.fr

PING www.google.fr(par21s06-in-x03.1e100.net (2a00:1450:4007:813::2003)) 56 octets de données
64 octets de par21s06-in-x03.1e100.net (2a00:1450:4007:813::2003) : icmp_seq=1 ttl=111 temps=40.9 ms
64 octets de par21s06-in-x03.1e100.net (2a00:1450:4007:813::2003) : icmp_seq=2 ttl=111 temps=50.2 ms
^C
--- statistiques ping www.google.fr ---
2 paquets transmis, 2 reçus, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 40.920/45.561/50.203/4.641 ms
  • traceroute

Traceroute est un outil de Linux qui vous permet d’étudier les itinéraires des paquets de réseau. Il peut vous aider à identifier le facteur limitant les parcours de paquets de réseau. Traceroute est également utile pour dépanner des connexions de réseau lent en vérifiant le chemin empreinte par des paquets vers une destination.

$ traceroute www.google.fr

traceroute to www.google.fr (142.250.179.99), 30 hops max, 60 byte packets
 1  _gateway (192.168.121.246)  9.946 ms  9.825 ms  9.762 ms
 2  * * *
 3  * * *
 4  * * *
 5  * * *
 6  * * *
 7  * * *
 8  * * *
 9  * * *
10  * * *
11  * * *
12  * * *
13  * * *
14  * * *
15  * * *
16  * * *
17  * * *
18  * * *
19  * * *
20  * * *
21  * * *
22  * * *
23  * * *
24  * * *
25  * * *
26  * * *
27  * * *
28  * * *
29  * * *
30  * * *
  • wget

Outil de téléchargement de fichier, ou de website tout entier avec une fonction récursive

  • ufw

Le par-feu le plus simple d'utilisation

  • sudo

Commande pour obtenir les droits administrateur

  • cal

Afficher le calendrier

$ cal

   septembre 2023   
lu ma me je ve sa di
             1  2  3
 4  5  6  7  8  9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 
  • date

Affiche la date actuel

$ date

jeu. 07 sept. 2023 22:08:33 CEST

Affiche la date en seconde EPOCH UNIX

$ date +%s

1694117320
  • dd

La commande dd permet de copier tout ou partie d'un disque − EN BON ÉTAT − par blocs d'octets, indépendamment de la structure du contenu du disque en fichiers et en répertoires. Exemple réaliser une image .iso d'un cd.

$ dd if=/dev/hdc of=/home/${USER}/moncd.iso bs=2048 conv=notrunc

Cette commande est utile pour graver des .iso vers des clés USB plus particulièrement.

  • whereis

Permet de localiser un binaire executable

$ whereis ruby

ruby: /usr/bin/ruby /usr/lib/ruby /usr/share/man/man1/ruby.1.gz
  • locate et find

Recherche de fichier

  • top

Outil de monitoring, affiche les processus, espace disque, état de la charge mémoire, des CPU

  • passwd

Commande pour changer de mot de passe à un utilisateur

$ passwd trivial
  • chown

Gestion de la propriété des fichiers et répertoires. L’utilisation correcte de la commande chown peut empêcher les utilisateurs indésirables d’apporter des modifications à vos fichiers et contribuer à les protéger des personnes extérieures.

  • shutdown

Permet d'éteindre l'ordinateur

$ sudo shutdown now
  • chmod

Rendre executable un script ou un fichier

$ sudo chmod +x monScript.sh

Sinon pour en savoir plus: Unix. Pour aller plus loin avec la ligne de commande PDF