Issamo12
il y a 3 ans / Vu 38514 fois
Vous cherchez à maîtriser la ligne de commande linux ? Avant de commencer ce tutoriel des commandes
Linux de base, Souvenez vous de notre premier tutoriel à propos de l’histoire de création du système Gnu/Linux (appelé
souvent Linux tout court), vous saurez comment ce système est apparu et comment il évolue constamment.
Ensuite, nous avons vu ensemble comment installer la distribution CentOS (Centos 7 ou Centos 8), qui est
une déclinaison gratuite de la distribution Redhat.
Ce tutoriel vous aidera à manipuler un système Linux en sa distribution Centos en commençant par
expliquer ses notions de bases, puis, en listant plusieurs commandes courantes que vous utiliserez chaque
jour.
Ce tutoriel est aussi disponible en version vidéo sur Youtube :
Dans les systèmes Linux, tout est fichier, donc, contrairement aux systèmes Windows un fichier Linux
peut être :
▪ Un fichier
▪ un périphérique
▪ une partition
▪ un programme en cours d’exécution
▪ un répertoire …
Pour structurer ces fichier, Linux ne dispose pas d’unités C: , D: , E: …
Commandes de bases, navigation
dans les fichiers
ls
cd
du
disk usage, précise l'espace disque que prend chaque
fichier ou dossier (l'option -h permet d'obtenir les tailles
en "human readable"), tandis que l'option --max-
depth=x (ou -d ), très utile également, permet de limiter
la détail à un niveau de sous dossier. --max-depth=1 ne
retournera donc que la taille des répertoires courants.
Cette commande s'avère particulièrement pratique
quand ls -l ne nous donne pas la taille d'un dossier.
pwd
Buzut$ pwd
/etc/apache2
clear
ctrl + s
ctrl + k
ctrl + y
ctrl + r
history
L'historique de bash est très pratique. Cependant, il peut
parfois s'avérer intéressant d'en supprimer des
entrées. history permet d'afficher l'historique avec les
numéros de lignes correspondants. Si vous vouler
supprimer une entrée, il suffira d'utiliser l'option -
d , history -d 1125 et pour tout supprimer, vous
utiliserez l'option -c sans autre paramètre.
!!
for
oldname
for oldname in *
# do exécute l'action en boucle
do
mv "$oldname" "$newname"
done
watch
less
fonctionnement similaire à cat mais affiche le fichier
page par page. C'est donc plus pratique pour les longs
fichiers.
head
tail
touch
mkdir
cp
copy, faire une copie d'un fichier. L'option -R permet de
réaliser des copies de dossiers entiers.
cp fichier_original copie_du_fichier
cp fichier_original nom_du_dossier/copie_du_fichier
mv
mv mon_fichier mon_fichier_new_name
rm
rmdir
ln
link, créer un lien entre deux fichiers. L'option -s permet
de créer un lien symbolique.
ln fichier1 fichier2
ln -s fichier1 lien_vers_fichier1
wc
Buzut$ wc -l test.rtf
33 test.rtf
sort
trier un fichier texte par ordre alphabétique. L'option -
r permet d'effectuer un tri inverse, c'est à dire anti-
alphabétique ou décroissant pour les nombres, et
l'option -R permet un tri aléatoire, c'est le mode shuffle
quoi ;) On n'oubliera pas non plus l'option -u qui
permet d'éliminer les doublons. Enfin l'option -o permet
de créer un nouveau fichier avec les résultats triés :
uniq
cut
tar
gzip
bzip2
fonctionne exactement de la même manière
que gzip mais compresse au format bzip . Pour
décompresser l'archive, l'équivalent de gunzip est
ici bunzip2 .
iconv
rsync
dir=~/backup_photo/delete
grep
.php)
egrep)
'viagra|pharma|Tadacip|eval|base64_decode|socket_shutdown|socket_close|soc
ket_clear_error|fopen|curl' www/
split
sed
awk
locate
find
# last but not least, déplacer les fichiers qui ont plus de 24h (ou
Flux de redirection
>
2>
2>&1
<
<
#on place un mot clef après le "<<" qui sert à délimiter les données
passées en entrée.
#Ce mot clef est tout à fait arbitraire
#on appuie sur "entrer" après chaque prénom pour séparer les différentes
données
> antoine
> clement
> quentin
> jordan
> mathilde
> clementine
> elena
> helena
> pierre
> STOP
antoine
clement
clementine
elena
helena
jordan
mathilde
pierre
quentin
Multitâche et programme en
arriere plan
&
nohup
lance le programme et le maintient même une fois la
console fermée. Les sorties 1&2 sont redirigées
vers nohup.out . Exemple :
reencodee.mp4
ctrl + z
bg
fg
at
atq
atrm
sleep
cette commande permet de faire une pause entre
l'exécution de deux commandes. Exemple : touch
gt.txt && sleep 10 && rm gt.txt
La pause est exprimée en seconde par défaut, il est
cependant possible de changer cela en faisant suivre le
nombre d'une unité : m , h , ou d pour respectivement
les minutes, heures et jours.
crontab
• e modifie la crontab,
• l affiche la crontab actuelle,
• r supprime votre crontab. Attention, la suppression est
immédiate et sans confirmation !
screen
multiplexeur de terminaux. Sous ce terme un peu
barbare se cache en fait une sorte de terminal virtuel.
Vous êtes au boulot, vous ouvrez un terminal et vous le
nommez, vous lancez une tache (un script qui va
réencoder plusieurs GB de vidéos par ex, ce qui prend du
temps), et vous vous déconnectez, vous arrivez chez
vous, vous réouvrez votre terminal et retrouvez votre
tâche comme si tout était resté ouvert en face de vous.
# créer un screen
screen -S nom_du_screen
# pour le détacher (cela veut dire qu'il n'est plus affiché mais reste
actif),
screen -r nom_du_screen
screen -ls
depuis un autre)
# on voit alors toutes les commandes tapées dans l'un ou l'autre des
terminaux
sudo su
chmod
chown
adduser
ajouter un utilisateur.
passwd
changer le mot de passe d'un user | ex : passwd roger .
deluser
addgroup
créer un groupe.
usermod
delgroup
supprimer un groupe.
groups
chgrp
change le groupe propriétaire d'un fichier (équivalent
à chown user:group ).
vmstat
/proc/meminfo
tload
ps -ef
ps -ejH
ps -u
lister les process lancés par un utilisateur donné ex: ps
-u buzut .
top
htop
glances
atop
iotop
Système
w
who
date
donne l'heure.
timedatectl
timedatectl list-timezones
# régler la date
uptime
swapoff
kill
killall
reboot
shutdown
Programmer un redémarrage ou un arret.
poweroff
halt
last
lsof
hostname
lsb_release
lshw
lsblk
lspci
lsusb
/proc/version
sysctl
dmidecode
dmesg
service
# activer/désactiver un service
journalctl
# on commence par lister les différents boots présents dans les logs
journalctl --list-boots
journalctl -b -0
12:56:23 CEST. --
[…]
make
update-rc.d
/etc/passwd
# 1 :2: 3 : 4 : 5 : 6 : 7
1. Nom de l'utilisateur,
2. mot de passe (x signifie que le mdp est chiffré dans le
fichier /etc/shadow ,
3. l'id de l'utilisateur (0 est pour root et les id de 1 à 99 sont
réservés pour les comptes prédéfinis),
4. l'id du groupe tel que défini dans /etc/group ,
5. champ de commentaire,
6. répertoire "home" de l'utilisateur,
7. le shell par défaut
( /bin/false et /usr/sbin/nologin signifient que
l'utilisateur n'a pas de shell).
/etc/group
Fichier qui contient les groupes utilisateurs de la machine
(ce qui inclut les groupes utilisés par les logiciels ex :
www-data pour Apache). On peut afficher les
informations avec cat : cat /etc/group .
which
which cat
/bin/cat
whereis
apt-get
apt
aptitude
add-apt-repository
add-apt-repository ppa:kirillshkrogalev/ffmpeg-next
apt-get upgrade
apt-key
apt-cache madison
dpkg
info sur les paquets installés (options pour lister tous les
paquets, désinstaller etc) ex : liste des paquets
installés dpkg --get-selections . L'option -l fourni
également une liste exhaustive et avec une petite
description de chaque packet, ce qui peut s'avérer très
pratique. On constate parfois qu'un grand nombre de
paquets sont marqués pour être désinstallés avec le
tag deinstall , pour tout enlever d'un coup :
update kernel
Si votre partition /boot est indépendante et qu'elle
n'est pas très grande, il est probable qu'après un certain
temps, vous deviez faire un peu de ménage, sans quoi
l'espace nécessaire à une mise à jour du kernel est
insuffisant. On devra donc supprimer les anciens noyaux,
pour ce faire, :
apt-get purge $(dpkg -l linux-{image,headers}-"[0-9]*" | awk '/ii/{print
Disques et volumes
df
mount
fdisk
parted
fsck
dd
ddrescue
hdparm
La commande hdparm permet de récupérer des infos, de
tester et de modifier la configuration – bas niveau – des
disques dur. On peut par exemple modifier la taille des
buffers avant écriture, activer ou désactiver ou modifier
l'économie d'énergie, modifier la vitesse de mouvement
des têtes de lecture… bref beaucoup de choses. On peut
aussi irrémédiablement endommager le disque,
prudence donc.
Read(10): 28 00 e5 63 34 18 00 00 18 00
secteur
/dev/sda:
This is a BAD idea, and can easily result in total data loss.
this.
Program aborted.
/dev/sda:
smartctl
/proc/mdsat/
mdadm
Web
Web veut tout dire et rien dire à la fois, surtout dans la
mesure où on parle déjà d'un serveur. Cependant, cette
section concerne tout particulièrement les commandes liées
aux serveurs web. On pense évidemment immédiatement à
Apache2 mais d'autres pourraient s'y rajouter.
a2ensite
a2dissite
désactiver un vhost Apache : a2dissite buzut
a2enmod
a2dismod
a2enconf
apache2ctl
Gestion réseau
ssh
fail2ban
ifconfig
ip
ip addr
ip -6 addr
ping
permet de pinguer un client pour voir s'il est en ligne ou
s'il répond au ping, ex ping google.fr . L'option -
c permet de préciser le nombre de ping à envoyer avant
que la commande ne s'arrête (elle prend donc en
argument un nombre entier exemple : ping -c 8
google.fr ), l'option -f permet de flooder, c'est à dire
que la carte réseau enverra autant de ping qu'elle est
capable d'envoyer par seconde.
traceroute
32.771 ms 40.120 ms
31.238 ms
40.140 ms
40.052 ms
6 * * *
dig ndd
; (1 server found)
;; Got answer:
;; QUESTION SECTION:
;buzut.fr. IN A
;; ANSWER SECTION:
;; SERVER: 8.8.8.8#53(8.8.8.8)
host
nslookup
Server: 212.27.40.240
Address: 212.27.40.240#53
Non-authoritative answer:
Name: buzut.fr
Address: 213.186.33.4
route
arp -an
wget
curl
curl https://buzut.fr
# afficher les headers
curl https://buzut.fr -D -
https://monsite.com/login
# même requête avec les paramètres en request payload, JSON. (on ajout ici
un header)
'{"email":"moi@mail.com","passwd":"azerty"}' https://monsite.com/login
openssl
openssl req -newkey rsa:4096 -new -x509 -days 365 -nodes -out cert.crt -
keyout cert.key
# très utile, vérifier ce que contient une clef, (domaines protégés etc)
scp
scp buzut@192.168.0.128:~/movie.mkv ~/
nmap
nmap est un outil qui scanne le réseau et les ports réseau
d'une machine afin de voir lesquels sont ouverts et de
détecter d'éventuelles failles sur les machines. Il permet
aussi de détecter des machines connectées au réseau et
bien plus encore. J'ai fait un petit billet sur nmap, qui
reste un outil de référence dans le monde de la sécurité
informatique.
iftop
speedometer
exim4
-nr
-i
-s
-uta
-nap
-peanuts
-ltupn
-l
-n
Linux utilise le standard FHS pour définir son arborescence. Ce standard propose une structure de
répertoires dont chacun possède un rôle spécifique définit dans FHS.
Parmi ces répertoires, plusieurs sont importants, on peut en citer :
▪ /bin/ : Contient toutes les commandes de base nécessaires au démarrage et à
l’utilisation d’un système minimaliste (par exemple : cat, ls, cp, sh).
▪ /sbin : Contient les commandes systèmes réservées aux administrateurs.
▪ /boot : Contient les fichiers nécessaires au démarrage du système d’exploitation.
▪ /dev : Contient des fichiers correspondants à un périphériques (disques ,
disquettes …).
▪ /etc : Contient la plupart des fichiers de configuration du système.
▪ /home/ : Utilisé pour stocker les répertoires utilisateurs (exemple : /home/user1).
▪ /opt : Utilisé comme emplacement d’installation d’un logiciel utilisé.
▪ /tmp/ : Utilisé pour stocker les fichiers temporaires tout
comme /var/tmp et /run/tmp et généralement vidé à chaque démarrage.
Chaque utilisateur connecté au système d’exploitation est capable de diriger la machine en exécutant une
commande dans un terminal :
/root
2. La Commande cd
Cette commande permet de changer de répertoire courant et de se situer sur un autre
[root@centos ~]# cd /home/
/home
3. La Commande ls
Permet de lister les fichiers disponibles dans un répertoire, si appelé sans arguments, ls liste les fichiers du
répertoire courant.
[root@centos home]# ls
user1 user2
=> Ainsi, dans le répertoire home, deux fichiers existent et sont : user1 et user2
4. La Commande mkdir
Cette commande permet de créer un répertoire.
[root@centos home]# cd /tmp
/tmp
[root@centos tmp]# ls
repertoiredetest
fichiertemp
=> Dans cet exemple, on s’est déplacé sous le répertoire tmp disponible sous la racine /, affiché notre
emplacement gràce à la commande pwd, puis créé un répertoire (dossier) nomé repertoiredetest et le
visualisé avec la commande ls.
5. La Commande rmdir
Cette commande permet de supprimer un répertoire.
[root@centos tmp]# rmdir repertoiredetest
[root@centos tmp]# ls
fichiertemp
=> Avec cette commande, on vient de supprimer le répertoire qu’on vient de créer et la commande ls nous
l’a confirmé.
6. La Commande touch
Cette commande permet de changer la date du dernier accès ou modification d’un fichier, mais permet
également de créer un fichier vide.
[root@centos tmp]# touch fichier
[root@centos tmp]# ls
fichier
fichiertemp
[root@centos tmp]# ls
fichier
fichier2
fichiertemp
[root@centos tmp]# ls
fichiertemp
=> La commande rm nous a permit dans cet exemple de supprimer les deux fichiers précédemment créés.
9 La Commande mv
Cette commande sert à renommer ou déplacer un fichier ou un répertoire.
Dans l’exemple suivant, on va créer un fichier nommé “fichier3”, et à l’aide de la commande mv, on va le
renommer en “fichier4” et le déplacer dans le répertoire “/home” en une seule fois.
[root@centos tmp]# touch fichier3
[root@ip8 tmp]#
le fichier “fichier4” est vide, donc la commande “cat” ne renverra aucun résultat, dans un autre cas on
pourrait avoir :
[root@centos tmp]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 8.8.8.8
Souvenez-vous que /etc/ contient principalement des fichiers de configuration, ici, le fichier resolv.conf est
le fichier qui détient les informations DNS de notre système (8.8.8.8 est l’adresse IP du serveur DNS de
google).
12. La Commande echo
Cette commande permet d’afficher une ligne.
[root@centos tmp]# echo "tutoriel Linux de sitedetout"
=> echo permet aussi d’écrire du contenu dans un fichier moyennant le signe “>” pour écraser le contenu du
fichier ou “>>” pour suffixer le contenu du fichier.
[root@centos tmp]# cat /home/fichier4
contenu
contenu
contenu
contenu2
contenu
contenu2
On a créé un fichiersource qu’on a rempli avec le mot “contenu“ ce qui explique le résultat de la
commande cat, ensuite, on a définit un lien symbolique de fichiersource vers fichiercible, ce qui veut dire
que fichiercible n’est pas un fichier stocké physiquement sur le disque dur, mais juste un lien vers fichier
source.
C’est pourquoi, après avoir modifié fichier source en ajoutant le mot “contenu2“, un ls sur fichiercible va
afficher le contenu de fichiersource.
14. La Commande which
Cette commande permet de visualiser l’emplacement d’une commande en effectuant une recherche
dans différents répertoires.
[root@centos tmp]# which pwd
/bin/pwd
/bin/mkdir
contenu
16. La Commande head
La commande head permet d’afficher le début d’un fichier (par défaut, les 10 premières lignes). Pour
démontrer son fonctionnement, j’ai créé un fichier nommé fichier2 avec un contenu de 20 lignes.
[root@centos tmp]# cat fichier2
ligne 1
ligne 2
ligne 3
ligne 4
ligne 5
ligne 6
...
...
ligne 17
ligne 18
ligne 19
ligne 20
ligne 1
ligne 2
ligne 3
ligne 4
ligne 5
ligne 6
ligne 7
ligne 8
ligne 9
ligne 10
ligne 11
ligne 12
ligne 13
ligne 14
ligne 15
ligne 16
ligne 17
ligne 18
ligne 19
ligne 20