Aller au contenu

Tout les systèmes

Il peut arriver que selon la version des systèmes, des outils ou des bibliothèques installées, certains codes ci dessous ne fonctionnent pas. Dans ce cas, l'utilisation du manuel man ou bien de l'aide intégrée sera un très bon exercice !

Nous allons ici étudier rapidement les commandes basiques des systèmes Unix et GNU\/Linux. Comme précisé, les codes ci dessous sont normalement universels sous ces systèmes, il peut y avoir cependant des variations mineures.

Commandes GNU\/Linux⚓︎

Sous GNU\/Linux, des centaines de commandes sont disponibles selon la distribution utilisée. Nous n'allons pas ici étudier chacune de ses commandes en détails mais seulement les principales commandes pour:

  • manipuler le système de fichier;
  • se déplacer dedans;
  • obtenir de l'aide sur les commandes;
  • combiner les commandes;

La syntaxe des commandes⚓︎

Les commandes sont presque toujours formées selon le même modèle:

  • un nom de programme, sensible à la casse (comme echo);
  • des options de deux types:
  • les options courtes, commencées par un - et souvent formées d'une ou deux lettres maximums (comme -v;
  • les options longues, commencées par -- et souvent formées d'un mot en anglais (comme --usage)
  • des arguments, ou paramètres optionnels ou non.

Tout ces éléments sont séparés par des espaces.

Une commande décortiquée

Dans la commande suivante : wc -l ~/.bashrc ~/.bash_aliases on retrouve les éléments évoqués ci dessus.

Nom Option courte Arguments
wc pour word count l pour lignes ~/.bashrc et ~/.bash_aliases, les fichiers à compter

Il est très important lorsqu'on écrit une commande de faire attention à la casse des caractères. La nom Wc ne désigne pas le même exécutable que wc, le premier n'existant d'ailleurs pas.

Combiner les commandes⚓︎

Pour exécuter plusieurs commandes à la suite en une seule ligne, il est possible de les séparer par des ;. Ceci exécutera toutes les commandes à la suite, sans se soucier du résultat des précédentes. Ainsi com1 ; com2 ; com3 exécutera toujours com1, puis com2, puis com3, sans se soucier de la réussite ou de l'échec des commandes.

L'inconvénient de la virgule est que si une commande précédente échoue, cela peut entraîner l'échec des commandes suivantes. Pour éviter cela, on peut remplacer la virgule par le mot && qui signifie et puis. Avec ce mot, la suite com1 && com2 && com3 exécutera com2 uniquement si com1 a réussi, puis com3 uniquement si les deux précédentes ont réussies.

Lire des données⚓︎

Pour donner des données en entrée à une commande, on a plusieurs solutions. La plupart du temps, les commandes utilisées sans argument lisent l'entrée standard, c'est à dire ce qui est tapé au clavier.

On peut changer ce comportement avec la syntaxe commande < fichier qui va remplacer l'entrée standard par le contenu de fichier (comme si vous l'aviez tapé au clavier.

Écrire des données⚓︎

L'affichage d'une commande se fait normalement sur la sortie standard, si aucun argument ne change ce comportement. La sortie standard correspond au terminal où vous tapez.

On peut changer ce comportement avec la syntaxe commande > fichier qui va écrire tout ce qu'affiche commande dans le fichier appelé fichier.

Écrasement des données

En utilisant >, le contenu du fichier est écrasé et donc effacé. Si on veut le conserver et écrire à la suite, on peut utiliser >> qui écrit à la fin du fichier.

Enchaîner en lisant des données⚓︎

On peut aussi faire une combinaison plus complexe, le tuyau (pipe en anglais) désignée par le caractère |. Quand on exécute com1 | com2, la sortie de (tout ce qui est affiché par) com1 est redirigée dans l'entrée de (ce qui est lu par) com2. Cette dernière opération est plus complexe et nécessite un peu d'expérience, mais s'avère très utile lorsque l'on veut enchaîner les traitementssur des textes par exemples.

Enchainer avec pipe

Les commandes uniq, sort et wc -l permettent respectivement de:

  • Supprimer les lignes en doublons d'un fichier qui se suivent
  • Trier les lignes d'un fichier ou de son entrée
  • Compter le nombre de ligne d'un fichier ou de son entrée

Ainsi, la commande sort fichier.txt | uniq | wc -l permet de compter le nombre de lignes uniques dans un fichier. En effet, sort fichier.txt affiche le contenu du fichier trié, les lignes de même valeurs se suivent donc. La commande uniq supprime les lignes qui sont en doublons et se suivent et affiche le résultat, on n'a donc en sortie que les lignes uniques. La commande wc -l compte le nombre de lignes de l'entrée, donc le nombre de lignes unique du fichier.

Les commandes de bases⚓︎

Voici quelques tableaux récapitulant les principales commandes à connaitre, par catégories.

Les informations données ici sont succintes, pour avoir plus d'informations vous pouvez utiliser le manuel ( commande man ) ou l'option --help ou --usage.

Le système de fichier⚓︎

Les fichiers⚓︎

Commande Description Exemple
ls Affiche les fichiers du répertoire courant ou donné en argument ls /etc/
cp Copie un fichier dans un autre, ou des fichiers dans un répertoire cp f1 f2
mv Permet de déplacer un fichier en supprimant l'original et la destination mv f1 f2
rm Permet de supprimer les fichiers données en argument rm f1 /etc/f2 /tmp/f3
touch Crée des fichiers vide touch monfichier /etc/autrefichier

Les répertoires⚓︎

Commande Description Exemple
cd Permet de changer de répertoire courant cd /home/Camille
pwd Permet d'affiche le répertoire courant pwd
mkdir Crée un répertoire s'il n'existe pas mkdir /tmp/nouveau ou mkdir nouveau
rmdir Supprimer un répertoire s'il est vide rmdir

Les fichiers textes⚓︎

Commande Description Exemple
cat Affiche les fichiers passés en argument cat f1 ../f2 ../dossier/f3
nano Un éditeur de texte pour les fichiers nano ~/NSI/pastouche.txt
more Comme cat, mais en paginé (petit à petit) more unlongfichier
grep Permet de chercher un texte dans des fichiers grep motif fichier
uniq Affiche un fichier sans les doublons s'ils se suivent uniq un_grand_fichier
sort Trie les lignes d'un fichier sort dictionnaire
wc Compte les lignes, les caractères d'un fichier wc -l /etc/passwd
head Affiche le début d'un fichier head /var/log/messages
tail Affiche la fin d'un fichier tail /var/log/messages
diff Affiche les différences entre des fichiers diff fichierV1 fichier_V2

Diverses⚓︎

Commande Description Exemple
man Affiche l'aide complète sur une commande man diff
kill Tue un processus kill -9 id_d_un_long_processus_planté
ps Affiche les processus en cours ps
top Affiche les processus dynamiquement top

Les droits d'accès⚓︎

Commande Description Exemple
chmod Permet de changer les permissions d'un fichier chmod g+w /chemin/du/fichier
chown Permet de changer le propriétaire d'un fichier ou dossier chown nouveau_proprio monfichier
chgrp Permet de changer le groupe d'un fichier chgrp nouveau_groupe monfichier
ls -l fichier Permet d'afficher les permissions d'un fichier ls -l monfichier donne les droits du fichier, ls -l dossier affiche les droits de tout les éléments du dossier en argument