Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Commandes Linux importantes - Part 1

Par Yann BLANC-TRANCHANT Publié le 20/04/2017 à 13:41:31 Noter cet article:
(0 votes)
En attente de relecture par le comité de lecture

Voici un article qui récapitule un peu plus d’une centaine de commandes qu’il est intéressant de connaitre sous Linux, que ce soit sur un laptop/desktop ou un serveur, gardez-les sous la main, notez les sur un bloc-notes, elles vous seront toujours utiles !

Retenez bien que cet article ne peut en aucune façon se substituer au fameux « man », c’est plutôt une sorte de récapitulatif des commandes qui reviennent le plus.

L'article se déroulera de cette manière :

  • Commandes de bases

  • Manipuler les fichiers

Nous verrons dans deux autres articles ces différents points :

  • Flux de redirection

  • Gestion du multitâche et tâche de fond

  • Users, groupes, CHMOD

  • Système

  • Web

  • Gestion Réseau

  • Commandes spécifiques aux ordinateurs Apple

Commandes de bases, navigation dans les fichiers

ls

permet de lister les fichiers d’un dossier.

Options : -a pour les fichiers cachés, -l pour la liste détaillée, -h pour les tailles en unité « human readable ».

cd

change directory, la commande permet de naviguer dans l’arborescence.

Par exemple cd /etc/opt va dans le dossier de configurations spécifiques aux applications installées dans /opt, quelque soit l’endroit où l’on se trouve puisqu’on a mis le slash de début, qui indique qu’il s’agit d’une adresse absolue.

En revanche, cd mondossier/vidéos va dans le répertoire vidéos de mondossier lequel se trouve à l’endroit où on se situe déjà. Comme on ne met pas de slash de début, il s’agit d’une adresse relative, on ajoute donc ce chemin à celui dans lequel on se trouve déjà.

pwd

print working directory. Cette commande affiche simplement le chemin absolu du dossier dans lequel on se trouve,

Yann$ pwd /etc/apache2

du

disk usage, précise l’espace disque que prend chaque fichier ou dossier.

Options : -h permet d’obtenir les tailles en « human readable », tandis que -c, très utile également, permet d’obtenir le total des éléments analysés.

Cette commande s’avère particulièrement pratique quand ls -l ne nous donne pas la taille d’un dossier.

clear

nettoie votre fenêtre de terminal en déplançant tout le texte au dessus (donc accessible avec un scroll) et vous laissant donc face à une fenêtre clean. Bien utile de temps à autre pour y voir plus clair. Le raccourci clavier ctrl + L fait la même chose.

Ctrl + R

permet de faire une recherche dans l’historique des commandes. Habituellement, vous remontez dans les commandes déjà tapées avec la flèche du haut, avec ctrl + R, vous pouvez effectuer une recherche dans cet historique, faites ctrl + R, puis tapez un bout de la commande que vous voulez rechercher, génial !

ssh

secure shell. Permet de se connecter au shell d’un ordinateur distant et d’y exécuter des commandes.

ssh [email protected] ou nom_hôte

Pour se déconnecter, ce sera exit, et toutes les commandes habituellement utilisables dans un terminal le sont aussi via ssh. Une option bien pratique de ssh est le tunneling qui permet par exemple de déjouer les pare-feux par la mise en place d’un proxy socks. Si certains ports sont bloqués et vous empêchent de vous servir de tel ou tel service ou d’accéder à tel ou tel site, la solution est donc de tout rediriger vers un port local et de laisser la machine distante – qui n’est pas derrière un part feu – accéder aux ressources non autorisées. Nous allons donc rediriger tout notre trafic vers un port prédéfini (en l’occurrence 1997), à travers notre connexion SSH.

ssh -D 1997 [email protected]_serveur_distant

Dernière étape pour que cela fonctionne, il faut que votre trafic sortant soit redirigé vers le port 1997. Vous pouvez le configurer dans votre navigateur et pour l’ensemble des connexions de votre ordinateur dans les préférences réseau.

for

C’est certainement la commande la plus complexe ce cette section, surtout si vous ne programmez pas. for est une instruction de boucle. Une boucle permet d’exécuter une action plusieurs fois, sur tous les éléments d’une variable.

Par exemple, nous pouvons ainsi très facilement renommer tous les fichiers d’un répertoire pour remplacer les espaces par des traits d’union.

# pour tous les éléments dans le répertoire courant

# l'instruction in place les éléments correspondants dans la variable

#oldname

for oldname in *

# do exécute l'action en boucle

do

# on utilise ici sed pour renommer,

# l'usage de la commande est expliqué plus bas dans l'article

newname=`echo $oldname | sed -e 's/ /_/g'`

# on invoque la commande mv pour remplacer l'ancien nom par le nouveau

mv "$oldname" "$newname"

done

Opérations sur les fichiers

cat

lire le contenu d’un fichier texte cat monfichier.txt

less

fonctionnement similaire à cat mais affiche le fichier page par page. C’est donc plus pratique pour les longs fichiers.

head

affiche l’en-tête d’un fichier, l’option -n permet de spécifier le nombre de lignes à afficher

tail

semblable à head mais concerne la « queue » du fichier, vous l'aurez compris, cette commande n’affiche que la fin.

Une option très appréciable -f pour follow, permet de mettre à jour en temps réel l’affichage de la fin du fichier, ce qui est bien pratique pour suivre l’évolution d’un fichier de logs par exemple

touch

créer un fichier. Il suffit de faire touch nom_du_fichier.

touch a pour but premier de modifier l’horodatage d’un fichier. Si vous faites touch sur un fichier qui existe déjà, cela actualisera ses dates de dernier accès et modification.

mkdir

créer un dossier, le fonctionnement est le même que celui de la commande touch.

mkdir nom_du_dossier

rmdir

remove directory, supprime un dossier seulement s’il est vide.

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

# on peut aussi placer la copie directement dans un autre dossier

cp fichier_original nom_du_dossier/copie_du_fichier

mv

move, permet de déplacer des fichiers/dossiers. La commande mv s’utilise exactement de la même manière que la commande cp. En outre, cette commande permet aussi de renommer les fichiers et dossiers en changeant simplement leur nom.

mv mon_fichier mon_fichier_new_name

rm

remove, supprime des fichiers.

rm nom_du_fichier.

L’option -f force la suppression, l’option -i demande une confirmation avant suppression, enfin l’option -r permet la suppression des dossiers.

wc

word count, permet de compter le nombre de lignes, de mots et de caractères dans un fichier texte.

Les options sont -l pour line (nombre de ligne), -w pour word (nombre de mots) et -m pour le nombres de lettres. Il y a aussi l’option -c pour avoir la taille du fichier en bits. Pour l’utiliser, on fourni simplement en paramètre l’adresse du fichier texte :

Yann$ wc -l test.docx

33 test.docx

wc permet aussi facilement de savoir combien vous avez de fichiers/dossiers un dans répertoire donné, il suffit pour cela de rediriger la sortie d’un ls vers wc : ls | wc et le tour est joué !

ln

link, créer un lien entre deux fichiers. L’option -s permet de créer un lien symbolique.

#créer un lien en dur

ln fichier1 fichier2

#créer un lien symbolique

ln -s fichier1 lien_vers_fichier1

wc

word count, permet de compter le nombre de lignes, de mots et de caractères dans un fichier texte.

Les options sont -l pour line (nombre de ligne), -w pour word (nombre de mots) et -m pour le nombres de lettres. Il y a aussi l’option -c pour avoir la taille du fichier en bits. Pour l’utiliser, on fourni simplement en paramètre l’adresse du fichier texte :

Yann$ wc -l test.docx

33 test.docx

wc permet aussi facilement de savoir combien vous avez de fichiers/dossiers un dans répertoire donné, il suffit pour cela de rediriger la sortie d’un ls vers wc : ls | wc et le tour est joué !

uniq

la commande uniq permet de dédoublonner un fichier. Il suffit de lui passer en paramètre l’adresse du fichier à dédoublonner et le nom du nouveau fichier à créer.

uniq doublons.txt no-doublons.txt

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. 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 :

sort -o fichier_trie.txt fichier_en_fouilli.txt

cut

couper dans un fichier texte. Pour couper toutes les lignes selon un nombre donné de caractères, on utilisera l’option -c.

cut -c 2 conservera seulement les deux premiers caractères. On peut aussi donner un intervalle : cut -c 2-4, alors on conservera uniquement les caractères deux à quatre.

Exemple, « anticonstitutionnellement » sera transformé en « ntic ». Il est aussi possible de se servir de délimiteurs pour couper du texte, avec les options -d et -f. Les fichiers au formats .csv séparent les différents champs, les colonnes, par des point-virgules ;. Dans un fichier où nous aurions trois champs, le nom, le prénom et la ville, si nous voulons extraire la ville, nous ferions comme ceci cut -d ; -f 3 on indique le délimiteur après -d et le champ après -f (field veut dire champ en anglais).

gzip

permet de compresser une archive tar au format zip.

gunzip archive.tar.gz, il suffit ensuite d’utiliser la commande gunzip pour la dézipper.

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.

tar

utilitaire d’archivage. Il permet de regrouper des fichiers et des dossiers dans une seule archive. Les options intéressantes sont les suivantes : tar -cvf (create, verbose, file)

permet de créer une archive, d’afficher tous les détails du processus (mode verbeux) et de tout mettre dans un dossier.

Exemple : tar -cvf nouvelle_archive.tar mon_dossier_a_archiver

Processus inverse, pour « détarrer » une archive, on utilise les options -xvf (eXtract, verbose, file) tar -xvf archive.tar.

Les options -tf servent à afficher le contenu d’une archive sans l’ouvrir.

Il est aussi possible de compresser et décompresser à la volée les archives tar, il faut rajouter pour cela l’option -z lors de la création ou l’ouverture de l’archive tar -zcvf compress.tar.gz compress/.

zcat zmore zless

zcat, zmore et zless remplissent les mêmes fonctions que cat, more et less mais à appliquer aux fichiers compressés.

wget

copie un fichier distant sur l’ordinateur.

wget http://www.site.org/rep/01/fichier.txt.

iconv

permet de changer l’encodage d’un fichier.

Option -f pour préciser l’encodage d’origine et option -t pour celui de destination. Par défaut, iconv renvoit tout sur la sortie standard, donc si vous voulez directement envoyer les résultats dans un fichier, il suffit de faire une petite redirection :

iconv -f UTF-8 -t UTF-17 fichier.txt >> new-encodage.txt

zcat zmore zless

zcat, zmore et zless remplissent les mêmes fonctions que cat, more et less mais à appliquer aux fichiers compressés.

wget

copie un fichier distant sur l’ordinateur.

wget http://www.site.org/rep/01/fichier.txt.

iconv

permet de changer l’encodage d’un fichier.

Option -f pour préciser l’encodage d’origine et option -t pour celui de destination. Par défaut, iconv renvoit tout sur la sortie standard, donc si vous voulez directement envoyer les résultats dans un fichier, il suffit de faire une petite redirection :

iconv -f UTF-8 -t UTF-17 fichier.txt >> new-encodage.txt

scp

vise à remplir la même fonction que la commande de copie cp, mais elle permet de copier les fichiers de manière sécurisé à travers le réseau; c’est à dire entre hôtes distants. De même qu’avec cp, l’option -r permet de copier un répertoire entier.

scp ficher_exemple [email protected]_ou_adresse:adresse_de_destination.

scp test.txt [email protected]:~/transfert

#et pour récupérer un fichier d'un hôte distant

scp [email protected]:~/film.mkv ~/

rsync

c’est un utilitaire qui permet de synchroniser entre eux des dossiers. Très pratique donc pour la sauvegarde. C’est pour ma part les options -arv que j’utilise. -a conserve les droits …, -r permet la récursivité et -v pour le mode verbeux. Petit exemple de sauvegarde de mes photos:

rsync -arv photo backup_photo

Il est utile de préciser que si vous supprimez des fichiers dans le dossier source, rsync ne répercute pas la suppression dans le dossier de sauvegarde si vous ne lui adjoignez pas l’option --delete. Au cas où vous ne désiriez pas supprimer totalement les fichiers, il est possible de les placer dans un dossier séparé, options : --backup --backup-dir= Petit exemple pour la forme ?

rsync -arv photo ~/backup_photo --delete --backup --backup-dir=~/backup_photo/delete

Bien entendu, il est possible de faire une sauvegarde distante.

rsync -arv photo [email protected]:~/backup_photo --delete

Dernière chose, au cas où votre serveur n’écoute pas sur le port 22 en ssh, option -e, exemple pour un ssh sur le port 443 -e 'ssh -p 443'.

sed

dans les commandes qui permettent de manipuler du texte, sed est sans conteste l’une des plus puissantes. Remplacement selon une expression régulière, effacement de certaines expressions où lignes selon un mot-clef donné… Seul inconvénient, qui dit puissance dit aussi complexité. sed ne s’explique pas en deux lignes. Je vous laisserai donc le temps de faire des recherches par vous-même !

awk

langage de programmation à elle seule. Cette commande permet la recherche de chaines et l’exécution d’actions en fonction des motifs trouvés. D’une puissance redoutable, elle est aussi assez complexe. Idem que pour sed, je vous laisse faire des recherches !

file

détermine le type d’un fichier indépendamment de son extension. Il suffit de lui fournir en paramètre le fichier à évaluer.

split

coupe un fichier en fichiers plus petits (-l préciser un nombre de lignes, -b préciser une taille en bytes (faites suivre la taille de K, M, G, T pour définir une unité différente). Pour créer des fichiers de 300 lignes

split -l 300 test.txt,

ou des fichiers de 1MB

split -b 1000000 mon_fichier.

locate

cette commande permet de localiser un fichier sur le disque dur.

locate monfichier.txt.

La commande locate est très rapide car elle retrouve le fichier en consultant une base de données. Elle ne parcourt pas directement le disque dur à la recherche du fichier en question. L’inconvénient de ce procédé est que si le fichier est tout récent, il risque de ne pas encore être indexé, et locate ne vous sera alors d’aucun secours. On peut forcer la mise à jour de la base de données avec la commande sudo updatedb. On peut aussi se tourner vers la commande find.

grep

permet d’effectuer des recherches par expressions régulières. Dans sa forme la plus simple, grep permettra d’afficher la ligne contenant un mot clef (avec l’option -o on affiche seulement l’expression trouvée), ceci depuis un fichier ou une autre commande. Par exemple, si on veut afficher tous les processus ssh, on filtrera la commande ps aux avec grep: ps aux | grep ssh.

grep permet également de rechercher dans le contenu de fichiers. Un exemple de désinfection d’un Wordpress où l’on cherche tout fichier .php potentiellement infecté :

# option -l pour matcher seulement certains types de fichiers (ici les .php)

# option -r pour la récursivité (recherche dans les sous-dossiers)

# option -E pour la syntaxe REGEXP étendue)

grep --include "*.php" -rlE 'eval|base64_decode|socket_shutdown|socket_close|socket_clear_error|fopen|curl' www/

find

la commande find est bien plus puissante que locate, mais elle est aussi bien plus lente car elle parcourt le disque au fur et à mesure de la recherche. Sa syntaxe est la suivante find /adresse_du_repertoire_de_recherche/ element_a_trouver. Cette syntaxe n’est qu’une base. find permet en effet de rechercher selon une taille ou une date de dernier accès, mais encore d’effectuer des actions sur les fichiers trouvés, d’appeler une commande etc. Une page de man à lire donc…

Connaître la date de dernier accès est très pratique et puissant, quelques exemples :

# le plus simple chercher un fichier dont on connait le nom

# trouver tous les .htaccess dans /var/www find /var/www -name ".htaccess"

# liste les fichiers dans www par date de dernière modification

find /www -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort -r

# on peut être plus précis en affichant les fichiers modifiés dans le x (ici 50) dernières minutes

find /target_directory -type f -mmin -50

# ou les 24 dernières heures

find /target_directory -type f -mtime -24

# on peut enfin choisir une intervalle (entre hier et avant-hier)

find /target_directory -type f -mtime -48 ! -mtime -24

# last but not least, déplacer les fichiers qui ont plus de 24h (ou modifié il y a plus de 24h)

find /target_directory -type f -mtime -24

Vous noterez très certainement que nous utilisons ici mtime pour la dernière modification. Il y a également :

  • mmin pour les minutes,

  • atime et amin pour le dernier accès,

  • ctime et cmin pour le dernier changement.

Conclusion

Voilà une bonne première partie de faite !

Deux autres seront à venir, histoire qu'elles ne soient pas trop longues et plus lisibles !

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels