[Cours système Linux – Episode 3] Les commandes de base

[Cours système Linux – Episode 3] Les commandes de base

Contrairement aux utilisateurs Windows ou Mac, les unixiens/linuxiens ont l’habitude de taper des commandes au clavier dans un interpréteur de commandes. Sous Ubuntu il suffit de faire Ctrl+Alt+t pour faire apparaitre cet interpréteur (c’est l’équivalent de l’invite de commandes sous Windows).

Dans le monde Unix / Linux, cet interpréteur de commandes s’appelle un shell (une coquille en français). Historiquement il y a eu plusieurs shells (sh, zsh, csh, etc.). Celui qui est universellement utilisé aujourd’hui est bash (Bourne Again Shell).

Il y a deux raisons qui font que, dans le monde unix (sauf sur Mac, mais c’est dû à la clientèle friquée qui ne met pas les mains dans le cambouis) on tape souvent des commandes dans le shell :

Primo, on va bien plus vite comme cela, très souvent

Secundo, en environnement Unix il y a des dizaines d’interfaces graphiques différentes, avec pourtant exactement le même système derrière (XFCE, CDE, Unity, Gnome, KDE, Enlightenment, etc). Quand on est habitué à une interface graphique donnée, on peut être complètement déboussolé lorsqu’on passe sur la machine du voisin qui utilise une autre interface. Dans ce cas, on ouvre un shell et hop, on tape des commandes qui marchent partout.

Les commandes présentées ci-dessous marchent toutes sans exception sur un Mac si vous les tapez dans le shell du Mac. Preuve s’il en était que MacOS n’est qu’un Linux payant.

La suite est présentée ici comme un exercice à faire soi même, dans un shell. Entrez exactement les commandes marquées en gras, vous expérimenterez et apprendrez toutes les commandes usuelles qu’il faut connaître. Attention : les systèmes Unix sont case sensitive, cela signifie qu’écrire en majuscule ou en minuscule ce n’est pas la même chose. Donc si l’on vous dit de taper ls -l, ne tapez pas LS -L.

Allez, on y va. Dans un shell, tapez les commandes suivantes (dans l’ordre):

cd

Cette commande vous ramène dans le répertoire de travail de l’utilisateur (home directory), à savoir /home/alain par exemple pour moi.

pwd

Cette commande affiche le répertoire dans lequel vous êtes actuellement.

uname -a

Cette commande affiche les références du système Unix sur lequel vous êtes, et en particulier les références du noyau.

man uname

Cette commande affiche la doc utilisateur pour la commande uname. Chaque commande est documentée dans le man (manuel). Par exemple, si vous souhaitez savoir comment on utilise la commande ls, alors vous pouvez taper man ls. On sort de la page man en tapant la lettre q.

apropos noyau

Cette commande affiche toutes les pages du man contenant le mot noyau.

hostname

Cette commande affiche le nom de la machine Unix sur laquelle vous êtes.

id

Cette commande affiche qui vous êtes vu du système : votre uid et tous les groupes d’utilisateurs aux quels vous appartenez.

who

Cette commande liste les utilisateurs connectés (Unix étant multi-utilisateurs)

whoami

Cette commande affiche le nom sous lequel vous vous êtes connecté.

ls -l

Cette commande affiche les entrées dans le répertoire courant (les fichiers, les répertoires, etc.). La lecture du résultat n’est pas triviale. On expliquera dans un prochain article comment lire ce résultat, qui est lié au système de fichiers Unix et ses droits d’accès.

file *

Cette commande affiche la nature des entrées du répertoire courant. La commande vous dit quel fichier est un fichier texte, un exécutable, etc. Sous Unix, un exécutable n’a pas besoin d’avoir une extension particulière (comme .exe). Si le fichier est exécutable, il est vu comme tel par le système, quel que soit son nom.

top

Cette commande affiche l’activité des processus du système et la charge. C’est ainsi que l’on voit quels sont les processus qui consomment ou même mettent à genou le CPU le cas échéant. On sort de la commande top en tapant q. On peut voir sur la colonne de gauche le PID des processus. On reviendra sur cette notion dans un prochain article du cours système.

mkdir test

Cette commande crée le répertoire test

cd test

Cette commande nous fait rentrer dans le répertoire test

echo « ceci est un fichier de test. » > fichier.txt

Cette commande crée un fichier en y mettant le texte voulu. Faites ls pour voir votre fichier

cat fichier.txt

Cette commande affiche le contenu du fichier.

echo “Merci” >> fichier.txt

Cette commande ajoute le texte voulu en fin de fichier.

mv fichier.txt fic.txt

Cette commande renomme le fichier (peut être utilisée pour bouger physiquement le fichier).

cp fic.txt monfichier.txt

Copie le fichier. Faites ls et cat pour voir le résultat.

ln fic.txt fic2.txt

Crée un lien sur fic.txt. Cette commande est très étonnante pour les gens qui viennent du monde Windows. Concrètement, on n’a qu’un fichier physiquement sur le disque dur, mais il porte deux noms. Si l’on modifie le contenu de l’un, alors le contenu de l’autre est modifié (puisqu’en réalité, c’est le même fichier). Attention, cette commande ne marche que si les deux fichiers sont sur le même système de fichier.

ln -s fic.txt fic3.txt

Crée un lien symbolique sur fic.txt. Marche même sur des systèmes de fichier différents. Même chose que ln, mais fonctionne si les deux fichiers sont sur un système de fichier différent (l’un sur disque dur, l’autre sur clé USB, par exemple).

rm monfichier.txt

Détruit le fichier

ls | grep 3

Liste les fichiers dont le nom contient le caractère 3.

ls | wc -l

Compte le nombre de fichiers dans le répertoire.

find /home/ubuntu -name “*fic*” -print

Recherche récursivement dans le répertoire /home/ubuntu tous les fichiers dont le nom contient fic et les affiche.

find /home/ubuntu -name “*fic*” -print > resultat

Met le résultat de la commande dans le fichier résultat.

cat resultat | more

Affiche le fichier en permettant une lecture facile (défilement par pages, si le fichier est très gros).

cat resultat | less

Affiche le fichier en permettant une lecture encore plus facile (défilement par pages, mais en plus possibilité de remonter les pages vers le haut, ou même de se balader dedans d’avant en arrière).

vi resultat

Voilà le casse-croute : vi. C’est un éditeur de texte en mode shell, qui existe partout. Il est fondamental de savoir l’utiliser.

L’astuce à connaitre est que vi (prononcer “Vi aille”) a 2 modes de fonctionnement distincts : un mode saisie et un mode consultation. Au lancement, il est en mode consultation. Dans ce mode, on peut se balader dans le fichier en utilisant les touches fléchées. Ce mode ne permet pas de modifier le fichier. Pour voir modifier le fichier, il faut passer en mode saisie. Attention : une fois passé en mode saisie, toute touche tapée au clavier entraîne l’apparition de texte dans le fichier, y compris les touches fléchées !

On passe du mode saisie au mode consultation en appuyant sur echap.

Commandes à connaître sous vi (reconnaissez qu’il n’y en a pas beaucoup) :

i passe en mode saisie

a passe en mode saisie après le caractère courant (nécessaire si vous voulez ajouter du texte en bout de ligne par exemple)

o passe en mode saisie sur la ligne suivante

cw passe en mode saisie pour modifier le mot sur lequel on est

cl passe en mode saisie pour modifier la lettre sur laquelle on est

dd supprime la ligne sur laquelle on est

x supprimer le caractère sur lequel on est

:q! quitte sans sauvegarder

:wq quitte en sauvegardant

/rec recherche la chaine de caractères rec (/ pour les occurrences suivantes)

rm *

Efface tous les fichiers du répertoire dans lequel vous êtes. Si votre répertoire contenait des sous-répertoires, il faudrait taper rm -r *, ou mieux rm -rf * qui fait la même chose mais sans demander confirmation pour l’effacement de chaque fichier. J’attrire votre attention sur le fait que la commande la plus dangereuse que vous puissiez taper est sudo rm -rf / (qui nitrate l’intégralité de votre système de fichier, ne tapez donc jamais cette commande).

cd ..

On se déplace dans le répertoire père.

rmdir test

On supprime le répertoire test (ne marche que si le répertoire est vide).

Voilà, mine de rien vous venez d’apprendre la vingtaine de commandes qu’il faut connaître pour être à l’aise dans un shell.