C'est quoi un pirate ? Un pirate, c'est toi, c'est moi. Un militant anti HADOPI, un habitué du p2p, un bidouilleur, un amateur de gratuit et de bons plans, un curieux du web et de son fonctionnement, un défenseur de l'internet libre.. Un bon gros geek, quoi. En fait, on est tous des pirates ! Et le web nous appartient.

Les commandes de bases sous Linux

Vous vous êtes mis à Ubuntu Linux et vous commencez à être à l'aise avec l'interface graphique, mais vous aimeriez maintenant découvrir un peu la ligne de commande ?
Vous découvrez votre serveur dédié sous Linux tout neuf mais vous galérez un peu avec SSH ?
Vous vous êtes mis à la ligne de commande Linux, vous avez appris sur le tas, mais quelques concepts de base vous échappent encore un peu ?
Vous avez bien suivi notre tuto sur le crack de clé WEP sous Backtrack Linux mais vous avez du mal à vous y retrouver en ligne de commande ?

Pour d'autres raisons, la ligne de commande Linux vous intéresse, mais vous ne savez pas trop vous y prendre ?

Pas de panique, on va vous aider ! Voici les commandes de bases de Linux, expliquées et classées.

Note: Ces commandes fonctionnent à peu près pareil pour tous les systèmes à base Unix. C'est le cas, par exemple, du Terminal de Mac OS X qui marche presque exactement de la même façon.

Les commandes Linux pour se déplacer dans l'arborescence et manipuler des fichiers :

cd (change directory) : Permet de se déplacer dans un dossier. Le dossier peut être absolu ou relatif.
Syntaxe: cd <chemin à parcourir> (exemple: cd /dossier/sous-dossier)

pwd (print working directory) : Permet de savoir dans quel dossier on se trouve actuellement.
Syntaxe: pwd

ls (list segments) : Permet de lister le contenu d'un dossier (fichiers et sous-dossiers).
Syntaxe : ls ou ls <chemin> (exemple: ls /dossier/machin)
Note: On peut également utiliser des filtres pour lister certains contenus précis. (exemple : ls /dossier/machin/*.mp3 pour n'afficher que les mp3 dans le dossier machin).

mv (move) : Permet de déplacer ou de renommer un fichier ou un dossier.
Syntaxe : mv <fichier ou dossier d'origine> <fichier ou dossier final> (exemple : mv /dossier1/fichier1.mp3 /dossier2/fichier1.mp3)
Note: Pour renommer un fichier, on tape mv anciennomdufichier nouveaunomdufichier

cp (copy) : Permet de copier un fichier ou un dossier.
Syntaxe : cp <fichier d'origine> <copie du fichier> (exemple: cp /dossier1/fichier1.mp3 /dossier2/fichiercopie.mp3)

rm (remove) : Permet de supprimer un fichier ou un dossier (pour supprimer un dossier, il faut que celui-ci soit vide, pour ce faire, on utilise l'argument -r pour récursif, voir ci-dessous).
Syntaxe : rm <fichier> ou rm -r <dossier>

rmdir (remove directory) : Permet de supprimer un dossier.
Syntaxe: rmdir <chemin vers le dossier>

mkdir (make directory) : Créer un nouveau dossier.
Syntaxe : mkdir <chemin du nouveau dossier>

locate : Permet de retrouver l'emplacement d'un fichier ou d'un dossier.
Syntaxe : locate <chose recherchée> (Exemple: locate blabla donnera tous les emplacements des fichiers ou dossiers qui s'appellent blabla. locate bin/blabla donnera l'emplacement de tous les fichiers ou dossiers qui se nomment "blabla" et se trouvent dans un dossier qui s'appelle bin ou dont le nom finit par bin).

Les commandes Linux pour manipuler le contenu des fichiers :

cat (catenate) : Permet d'afficher à l'écran le contenu d'un fichier, d'une traite. Il quitte sitôt qu'il a tout affiché.
Syntaxe : cat <chemin vers le fichier> (exemple : cat /dossier/fichier.txt affiche le texte de fichier.txt tel quel).

more : Permet d'afficher à l'écran le contenu d'un fichier, mais page par page, attendant pour chaque page que l'utilisateur valide.
Syntaxe : more <chemin vers le fichier>

echo : Permet d'écrire un texte à l'écran. Nous verrons ci-dessous comment utiliser cette commande pour écrire directement dans un fichier.
Syntaxe : echo <le texte que vous voulez>

tr (trim) : Permet de modifier une chaîne de caractère pour lui supprimer des caractères ou les remplacer par d'autres.
Syntaxe : tr <les arguments de la commande> (voir le manuel pour cette commande particulièrement complexe et souple à la fois, qui ne saurait être résumée en 2 lignes).

grep : Permet de trouver une expression précise au sein d'un fichier ou d'un élément retourné par une commande précédente.
Syntaxe : grep <expression recherchée> <endroit dans lequel on cherche l'expression> (exemple: grep hadopi touspirates.html affichera toutes les lignes où se trouvent le mot "hadopi" dans le fichier touspirates.html).

Les commandes linux système :

uptime : Permet de voir l'heure, le temps depuis lequel l'ordinateur n'a pas redémarré, et un indice de taux d'activité moyen de la machine (load average)  à 1 minute, 5 minutes, et 15 minutes.

date : Permet d'afficher ou de modifier la date et l'heure de la machine.
Syntaxe : date pour afficher la date et l'heure. date MMJJHHmmYYYY (exemple: pour mettre la date au 05 Décembre 2008 à 23h57, on tape date 120523572008).

su (substitute user ou switch user) : Permet de changer d'utilisateur en cours de route. Le mot de passe de l'utilisateur sera demandé, sauf si vous êtes en root (administrateur).
Syntaxe : su <utilisateur que l'on souhaite devenir>
Note: On tape su tout court (suivi de rien du tout) pour devenir root (administrateur). Le mot de passe root sera alors demandé.

sudo (substitute user do) : Permet d'effectuer une seule commande sous un autre nom d'utilisateur (le plus souvent en tant que root).

reboot : Permet de redémarrer le système de façon fiable et sécurisée.

shutdown : Permet d'éteindre l'ordinateur de façon fiable et sécurisée, après un délai ou tout de suite.
Syntaxe : shutdown -t <nombre de secondes avant l'extinction> ou shutdown tout court pour une extinction immédiate.

fsck : Permet de scanner un disque ou une partition (ou tout périphérique de stockage) à la recherche d'erreurs. Il est généralement appliqué de manière automatique en cas de besoin (ce qui arrive rarement).

man : Permet d'afficher le manuel d'utilisation d'une commande ou d'un programme. Très utile car il donne souvent une aide détaillée et traite la plupart des questions qu'un débutant peut se poser.
Syntaxe : man <programme ou commande dont on veut le manuel> (exemple : man grep).

chmod : Permet de changer les permissions d'un fichier ou d'un dossier (lecture, écriture, exécution, pour le propriétaire, le groupe, et le reste des utilisateurs). Voir l'aide pour la syntaxe, potentiellement très complexe.

Les principaux opérateurs pour les commandes Linux.

Ces opérateurs permettent une plus grande souplesse dans l'utilisation des commandes linux, afin de les lier entres elles ou d'en avoir une utilisation plus spécifique.

| (pipe) : Permet de rediriger le résultat d'une commande A comme argument de la commande B.
Syntaxe : Commande A | Commande B (Exemple: cat fichier.txt | grep tralalère permet de rechercher tralalère (grep) dans le contenu de fichier.txtà
Note: Ce système de redirection n'est généralement utile que lors de scripts relativement complexes. Dans l'exemple ci-dessus par exemple, il aurait été plus efficace de taper directement grep tralalère fichier.txt, mais il est des cas où le système de pipe se justifie.

> : Envoyer le résultat d'une commande vers un endroit en écrasant son contenu. Typiquement, envoyer ce qu'envoie une commande dans un fichier texte.
Syntaxe : Commande > Destination (exemple type : echo tralalère > fichier.txt permet d'avoir un fichier.txt qui contient le texte "tralalère", et seulement ce texte).

>> : Envoyer le résultat d'une commande vers un endroit en l'ajoutant à la suite de son contenu précédent.
Syntaxe : Commande >> destination (exemple type : echo tralala >> fichier.txt - si le fichier.txt contenait déjà notre tralalère de tout à l'heure, il contiendra désormais le texte "tralalèretralala").

&& : Permet d'écrire plusieurs commandes à la suite, sur une seule ligne.
Syntaxe : Commande && autre commande && autre commande... (exemple : echo tralala && ls && echo tralali).

Les arguments de commande Linux :
La plupart des commandes linux peuvent être suivies d'arguments, soit sous la forme --argument soit sous la forme -a (initiale de l'argument). Un argument est une précision à la commande qui permet d'en préciser le comportement ou de le modifier.

Quelques exemples d'arguments que l'on retrouve pour la plupart des commandes :

--help : permet d'obtenir une aide basique sur la commande, et ses principaux arguments avec leur effet.

--version
: Permet d'avoir le numéro de version (et parfois la date de compilation) d'une commande ou d'un programme.

-f : Bien que ce ne soit pas systématique, sur beaucoup de commandes permettant de manipuler des fichiers, l'argument -f signifie "force", c'est à dire que la commande s'exécute de force, sans demander de confirmation à l'utilisateur même en cas de problème ou d'action dangereuse.

Quelques commandes avec leurs arguments : Des exemples de que vous pourrez être amenés à taper :

rm -rf /dossier : Permet d'effacer un dossier avec tout son contenu, sans demander aucune confirmation à l'utilisateur. Peut être particulièrement dangereux.

date > date.txt : Permet d'enregistrer l'heure et la date dans un fichier.

ls -1d /mon/dossier/musique/*.mp3 >> playlist.m3u : Permet de se créer une playlist de tous les mp3 contenus dans le dossier musique. (vous noterez deux arguments à ls : -1 permet d'afficher un fichier par ligne, pour le format m3u, et d permet d'avoir le chemin absolu du fichier, plutôt que relatif).

chmod 777 fichier.txt : "777" signifie "tout est autorisé à tout le monde". Donne l'autorisation de tout faire à tout le monde sur ce fichier.

mkdir /nouveau/dossier && cp /ancien/dossier/fichier.txt /nouveau/dossier/fichier.txt : Permet de créer un nouveau dossier et aussitôt fait, d'y placer un fichier particulier. En effet, tenter de copier un fichier vers un dossier qui n'a pas encore été créé donnera une erreur. Vous devez créer le dossier d'abord, il ne se créera pas automatiquement.

etc.

Les possibilités sont nombreuses et quasi illimitées et nous ne venons que de frôler les bases des possibilités du bash (système de commande le plus utilisé sous Linux).
Pour déplacer quelques fichiers sous Linux, vous n'aurez que rarement besoin de toute la complexité de bash. Mais chacun peut avoir ses raisons d'utiliser ensemble, de manière un peu tordue, des commandes, de manière plus ou moins complexes.

Généralement, les enchaînements tordus commencent à se faire au sein de scripts. Nous verrons dans un prochain article à quoi sert un script et comment fabriquer un script basique.

En attendant, vous avez déjà les commandes de base, histoire de pouvoir faire les opérations de survie même sans interface graphique.