Imprimer

Les Bases du Terminal en 5 minutes

(Traduction par killinjoe du tutoriel "The 5-Minute Essential Shell Tutorial" du site communautaire linuxmint.com)

FICHIER PDF / ODT

 

C'est vrai. Bien trop souvent (en particulier sur IRC), vient un moment où même le plus parfait débutant se retrouve face à face avec le terminal.

Il possède plusieurs noms : terminal, shell, console, et même "ligne de commande", amené dans leurs bagages par les transfuges de Windows. Nombreux sont ceux qu'il terrifie pour une raison ou pour une autre, et ce tutoriel va tenter de vous fournir les commandes essentielles requises pour pouvoir naviguer et exécuter les opérations de base dans votre système depuis le confort de votre clavier .

Allons-y. Puisque la version de Mint que vous utilisez peut varier, je ne vais pas détailler comment ouvrir un terminal. Je vais partir du principe ahurissant que vous êtes capable de le trouver dans le menu ou en cliquant – droit sur le bureau.

 

QUELQUES FAITS

  1. Vous pouvez faire dans un terminal quasiment tout ce que vous feriez avec une interface graphique.

  2. La plupart des commandes ont été prévues à l'origine pour fonctionner dans un terminal, avant que l'on mette une interface graphique par-dessus. Ce pour quoi certaines interfaces utilisateur peuvent paraître bizarres : elles sont été rajoutées après-coup.

  3. L'emplacement par défaut à l'ouverture du terminal est votre dossier personnel ou /home, aussi noté « ~ ».

  4. le répertoire courant (dans lequel vous êtes) peut être représenté par l'opérateur « . » .  La plupart des commandes agissant sur le dossier en cours utilisent cet opérateur (.).

  5. Les commandes, chemins, et noms de dossiers sont sensibles à la casse (case sensitive).  /home n'est pas la même chose que /HOME ou /Home.

  6. Utilisez la touche « Tabulations » afin de compléter les noms de fichier. Par exemple, si vous avez un nom de driver assez long comme driver-128947232jaseu.sh, tapez simplement « dri » puis utilisez cette touche, et le reste sera complété automatiquement, si tant est que vous n'ayez pas deux fichiers dont le nom débute avec « dri ». Si c'est le cas, ajoutez un caractère afin d'obtenir "driv" et essayez encore.

  7. Des renseignements exhaustifs sont disponibles à propos de la presque totalité des commandes à travers leur page « man » (manuel) ou en tapant « -h » ou « --help » après le nom de la commande en question. La syntaxe est donc : soit man nom_de_la_commande,  soit nom_de_la_commande -h, ou soit nom_de_la_commande –help.

  8. Si cela ne vous suffit pas, vous pouvez utiliser info.  Une commande peut être recherchée en utilisant info nom_de_la_commande.  Pour la plupart de ces commandes appartenant au paquet coreutils, il est également possible de trouver des informations par le biais de info coreutils nom_de_la_commande invocationnom_de_la_commande doit être remplacé par le nom de la commande qui vous intéresse.

  9. Presque toutes les commandes peuvent afficher ce qu'elles font, au fur et à mesure qu'elles le font. Ceci est généralement obtenu en utilisant l'option -v ou –verbose.

  10. Vous pouvez spécifier plusieurs paramètres d'exécution (command flags) en même temps à une commande afin d'obtenir plus d'information (voir l'exemple avec ls -al ci-dessous.)

  11. Les noms des commandes ne sont pas toujours ésotériques – en raison des restrictions d'espace aux débuts d'Unix, ils ont été raccourcis, et les conventions ont perduré.

LES COMMANDES

cd → Utilisée pour se déplacer dans les répertoires (directories).

Vous permet de vous rendre à n'importe quel emplacement en spécifiant son chemin (d'accès).

  1. cd vous ramène dans votre /home, même chose que cd ~

  2. cd .. Vous amène en arrière d'un seul répertoire. Si je suis dans /home/justin/Desktop, cd .. me ramènera dans /home/justin.  On peut même en faire plus, cd ../../ depuis l'emplacement Desktop me ramènera en arrière de deux répertoires, de mon bureau (Desktop) vers mon /home.

  3. cd nom_de_dossier/Ceci vous amènera dans le dossier spécifié, qui deviendra votre dossier courant. Notez l'absence du / devant le nom de dossier : c'est un détail important. Si je suis dans /home/justin et que je veux aller dans Desktop, je dois taper cd Desktop/ sans le « / » avant « Desktop ».  Taper « / » désigne la racine du système, ce qui n'est pas correct (Desktop n'est pas dans celle-ci, mais dans /home/justin/).

  4. cd /un/autre/chemin Ceci vous amènera dans le dernier répertoire (ici « chemin ») du chemin spécifié, en supposant qu'il existe tel que vous l'avez tapé. N'oubliez pas d'utiliser l'auto-complétion avec la touche « tabulations ».

ls→ Utilisée pour lister le contenu d'un dossier.

    Vous pouvez également obtenir le détails des fichiers/dossiers et de leurs caractéristiques (ex : permissions d'accès).

  1. ls  → tout seul, « ls » va simplement lister tous vos fichiers dans le fichier courant.

  2. ls -laffiche une liste plus détaillée comportant également les propriétaires, permissions, tailles, date de modifications.

  3. ls -a affiche les fichiers et les dossiers cachés en plus de la liste normale.

  4. ls -alCombine les options « l » et « a » : affiche les éléments cachés et le reste en format détaillé.

  5. ls -h affiche les tailles dans un format compréhensible par un humain (tailles en Ko, Mo, Go au lieu d'octets.  Souvent utilisé avec l'option « -l ».

  6. Vous pouvez voir des fichiers dans des répertoires où n'êtes même pas.

    Exemple : si je suis dans /home/justin/Desktop, et que je veuille voir un fichier dans /home/justin, je peux faire un ls ../ pour lister les fichiers un niveau au- dessus de celui où je me trouve, sans à avoir à remonter effectivement.

     

cp -> Copier des fichiers

  1. cp fichier /chemin /du /dossier Copie le fichier (nom « fichier ») depuis le répertoire courant (dans lequel vous vous trouvez) vers le dossier dont le chemin est indiqué.

  2. cp -r dossier /chemin/du/dossier Copie récursivement (y compris les niveaux inférieurs) les contenus d'un dossier vers un autre dossier.

  3. cp *.extension /chemin/du /dossierCopie les fichiers dont l'extension correspond à celle spécifiée vers le dossier dont le chemin est indiqué.Pour copier tous les fichier .doc, cela donne « cp *.doc /chemin/du/dossier » et le répertoire en question doit exister.

  4. cp abcd* /chemin/du /dossierCopie tous les fichiers dont le nom commence par « abdc » vers le répertoire désigné.  Pour copier tous les fichiers dont le nom commence avec « exemple », cela donne « cp exemple* /chemin/du/dossier» et le répertoire en question doit exister.

     

mv -> déplacer des fichiers (move → mv)

  1. La syntaxe de mv est similaire à celle de l'exemple ci-dessus avec cp sauf dans le cas de l'exemple #2. mv ne peut pas s'exécuter avec une option -r puisque déplacer un répertoire entraine déjà de fait le déplacement de son contenu.  La syntaxe n'ext pas identique dan tous les cas mais fonctionne dans la plupart des cas. Consultez les pages man pour plus de détails ("man mv" dans un terminal).

     

rm -> Supprimer des fichiers (remove → rm)

  1. Quelle qu'en soit l'utilisation, l'effacement de fichiers au moyen de rm est permanente. Cette commande n'utilise pas la corbeille. A utiliser avec précaution donc, en prenant soin de vous assurer que vous effacez bien ce que vous voulez effacer et non pas autre chose.  Si vous décidez de faire le cow-boy (ou la cow-girl Content) avec cette commande, vous vous en mordrez les doigts un jour..

  2. rm fichier -> Supprime le fichier spécifié du système.

  3. rm -r répertoire -> Supprime le répertoire spécifié du système.

  4. rm -rf répertoire -> Force la suppression du répertoire spécifié du système. Cette commande peut sévèrement endommager votre configuration système si utilisée à mauvais escient puisqu'elle n'émettra pas d'avertissement si un élément critique est supprimé. Si vous avez à utiliser ceci, il y a des chances que quelque chose d'autre soit endommagé ou qu'une erreur ait été commise auparavant. Ceci ne devrait être utilisé qu'en tout dernier ressort et n'est en aucun cas recommandé.

     

nano → Editeur de texte tout en ligne de commande

  1. On peut éditer des fichiers en utilisant nano dans un terminal, depuis de petits fichiers moisis jusqu'à des configurations complètes.  C'est pratique, mais gardez à l'esprit qu'il ne gère normalement que des fichiers texte ou de code. Des choses comme des documents MS Word ne s'ouvriront pas proprement!

  2. Si un fichier est la propriété de"root" (administrateur ou superutilisateur), il ne sera pas éditable par un utilisateur lambda. nano devra être précédé de sudo afin de pouvoir sauvegarder les modifications effectuées. Autrement, il ne sera ouvert qu'en lecture seule.

  3. nano nouveau_fichier.extension -> Nano crée un nouveau fichier avec le nom spécifié (nouveau_fichier.extension) et l'ouvre pour édition.

  4. nano fichier_existant -> Nano ouvre le fichier existant pour édition.

  5. Depuis nano

    1. Sauvegarder des fichiers via le raccourci clavier ctrl+o et changez le nom du fichier édité, ou gardez le même nom en appuyant sur "entrée". Ceci sauvegardera le fichier.

    2. Quitter nano via le raccourci clavier ctrl+x. Si vous avez effectué des modifications sans les sauvegarder, il vous demandera si vous souhaitez le faire avant de quitter.

mkdir -> Créer des répertoires

  1. mkdir nom_de_répertoire -> Crée le répertoire avec le nom spécifié.

  2. mkdir -p /chemin/du/répertoire_à_créer -> Crée tous les répertoires nécessaires jusqu'au dernier.  Par exemple, pour créer le répertoire /home/justin/nouveau_répertoire/répertoire_à_créer, alors que seuls /home/justin existent, utiliser mkdir -p entrainera la création des deux répertoires manquants: nouveau_répertoire et répertoire_à_créer.

 

ps → Lister les processus

  1. ps aux liste en détail tous les processus (a = autres, u= utilisateur, x = en cours) en cours d'exécution dans le système, en fournissant les utilisateurs, les identités des processus (Process ID ou PID), et le nom du processus. En utilisant ceci on peut identifier les processus et, si nécessaire, y mettre fin (voir "kill" ci-dessous).

  2. Astuce: si l'on cherche un processus particulier dont on connait une partie du nom, par exemple "thunderbird", on peut demander la recherche de ce nom dans la liste afin d'afficher seulement les processus pertinents: ps aux | grep thunder.


kill / killall / xkill -> "tue" (= met fin) les processus concernés.

  1. kill PID -> le PID est un nombre qui constitue la référence du processus en question. On peut l'obtenir via la commande ps aux.  Si un processus refuse de "mourir", il est possible de spécifier l'option kill -9 PID qui force la clôture du processus par tous les moyens, quelles que puisse en être les conséquences pour le système.

  2. killall programme -> Killall tue *nominativement* toutes les instances dudit programme. S'il y a, par exemple, trois sessions de Firefox ouvertes, killall firefox fera exactement cela: tuer toutes les sessions firefox. kill va simplement rechercher les PID des processus firefox et tuez ceux-ci seulement.

  3. xkill est un moyen de tuer les fenêtres récalcitrantes en interface graphique.  Si vous tapez xkill dans un terminal, vous devriez obtenir un pointeur souris en forme de crâne et ossements croisés, et la prochaine fenêtre sur laquelle vous cliquerez sera tuée.

     

« Pipes » ->  Redirection du résultat d'une commande vers une autre commande.

Le truc le plus important que vous apprendrez en UNIX.

  1. les "Pipes" sont représentées par une "barre verticale" connu également comme la touche ' | ' (Alt Gr + 6 sur un portable français par exemple).

  2. Très rarement utilisées dans Windows, elles  sont souvent situées sur la touche de slash arrière (backslash ou "\").

  3. Elles sont utilisées pour lier des commandes ensemble. "|" prend le résultat (sortie) d'une commande et le dirige comme entrée vers une autre commande accolée à la première.

exemple: ps aux | grep firefox : liste les processus en cours d'éxécution (ps aux) et envoie la liste à "grep" qui prélève dans celle-ci les lignes qui comportent la chaine de caractères "firefox" et renvoie ces lignes comme résultat final.

Consultez les très nombreux usages des "pipes" en ligne pour plus d'infos.

     

les opérateurs de redirection > et >> -> envoient le résultat (sortir d'une commande vers un fichier au lieu du terminal..

  1. > est utilisé pour "écraser" le contenu de fichiers existants et le remplacer par le résultat de l'exécution d'une commande.

  2. >> est utilisé pour ajouter des informations au contenu existant. Utile pour les journaux de fonctionnement notamment (logs).

  3. Exemple: ps aux > processes.log -> Envoie la sortie de ps aux (liste de processus) vers le fichier processes.log pour affichage du résultat de la commande dans un éditeur de texte et écrase le contenu du fichier.

     

tee -> Envoie le résultat d'une commande simultanément vers un fichier et vers le terminal.

  1. tee est utilisé en conjonction avec un ' | ' afin de prendre la sortie de la commande et de l'expédier ailleurs. cela est utile dans le cas où des messages d'erreur défilent sur l'écran trop vite pour que vous puissiez les lire. De cette façon, tout ce qui défile sur l'écran est également envoyé vers un fichier texte.

  2. Exemple: dmesg | tee boot.txt va lancer la commande dmesg qui affiche les informations initiales de démarrage, et le ' | ' envoie le résultat de dmesg vers tee, qui fait son travail en l'envoyant à la fois vers le terminal et vers le fichier journal boot.txt.

     

chmod et chown -> changer le propriétaire et les droits d'un fichier ou d'un répertoire.

ces commandes vos sauveront la vie plus d'une fois. Comme nous l'avons déjà vu, ls -l vous permet d'afficher les droits des éléments situés dans le répertoire courant.

1. chown modifie le propriétaire d'un fichier ou d'un répertoire, généralement utilisé avec "sudo" pour les droits administrateurs,mais soyez vigilant(e)! Il possède les options courantes, comme -R pour la récursivité sur les éléments contenus. la syntaxe est la suivante: sudo chown options identifiant_utilisateur:identifiant_groupe /chemin/du/répertoire/concerné.

exemple: sudo chown -R jo:parents /home/Commun/Musique

(attribue le répertoire Musique et tout son contenu à l'utilisateur "jo" et au groupe "parents")

2. chmod modifie les permissions d'un fichier ou d'un répertoire, généralement aussi utilisé avec "sudo" pour les droits administrateurs,mais soyez vigilant(e)! Il possède les options courantes, comme -R pour la récursivité sur les éléments contenus. la syntaxe est la suivante: sudo chmod options définition_permissions /chemin/du/répertoire/concerné.

exemple: sudo chmod -R rwxr-xr-- /home/Commun/Musique

(permissions dans l'ordre utilisateur (u) - groupe (g) - autres (o), avec r=lire, w=écrire/modifier et x=exécuter)

exemple avec valeurs numériques des droits: sudo chmod -R 754 /home/Commun/Musique

(idem, avec r=4, w=2 et x=1, donc 7=r+w+x, 5=r+x et 4=r)

tout n'est pas là, bien sûr, mais c'est l'essentiel. si vous voulez creuser, il y a entre autres ça: tuto Ubuntu sur les droits

     

EXECUTER UN FICHIER

 

Alors comme ça, vous voulez exécuter des fichiers ou des programmes dans un terminal ? Assurez-vous d'abord qu'il soit marqué "exécutable"... sinon, allez directement à l'astuce N°4 ci-dessous.

  1. Besoin d'exécuter un fichier dans le répertoire courant après qu'il est marqué exécutable ? L'opérateur ./ peut faire cela en tant qu'utilisateur normal, si tant est que vous n'ayez pas besoins d'être "root". . ./ signifie littéralement "dans le répertoire courant" et ne fonctionne donc pas pour des fichiers en-dehors de celui-ci.

  2. Besoin d'exécuter un fichier qui n'est PAS dans le répertoire courant ?  Vous devez spécifier le chemin d'accès exact au programme d'exécution. Si c'est un programme python program, ce sera python /chemin/du/fichier et si c'est un fichier shell, ce sera sh /chemin/du/fichier par exemple. Il y a bien sûr d'autres programmes, mais ceux-ci sont les plus fréquents pour les débutants.

  3. Besoin d'exécuter un fichier avec des droits "root" parce que vous avez reçu un message "operation not permitted"?  Faites précéder votre commande de sudo.  Ainsi, dans l'exemple précédent: sudo python /chemin/du/fichier exécutera le script avec les droits superutilisateur.

  4. Besoin d'exécuter un programme en interface graphique depuis le terminal? Tapez simplement le nom du programme (ATTENTION à la casse!) et il se lancera.  Ceci accaparera le présent terminal. Fermer ce terminal entrainera la fermeture du programme lancé. Un meilleur moyen consiste à mettre le programme en tâche de fond en utilisant nom_du_programme & puis en tapant le mot exit dans le terminal pour le fermer en laissant le programme tourner.

  5. Besoin d'exécuter un programme en interface graphique depuis le terminal en tant que "root" ? faites précéder son nom de gksudo ou gksu ET PAS sudo.  Utiliser sudo pour lancer des applications dotées d'interfaces graphiques (GUI) est une mauvaise habitude et doit être évité.

  6. N'utilisez surtout pas sudo, simplement parce que quelque chose reçoit une réponse "Operation not permitted". Gardez à l'esprit que ce que vous êtes en train de faire peut absolument "détruire" des systèmes en exécutant certaines commandes au mauvais endroit avec les droits "root". Ce point soit être souligné autant que possible. Assurez vous que vos fichiers proviennent de sources fiables...

 

QUELQUES ASTUCES

  1. Vous êtes perdu(e)? Tapez pwd pour obtenir le répertoire dans lequel vous êtes (print working directory).

  2. Vous voulez calculer votre espace disque rapidement? df -h vous donne une vérification rapide.

  3. Vous voulez calculez la taille d'un dossier ou d'un fichier rapidement ? du -cksh nom_de_la_cible sert exactement à ça. Vous voulez calculez la taille du dossier courant ? du -cksh .

  4. Besoin de marquer un dossier comme exécutable? chmod +x nom_du_fichier le fera très bien.  La prochaine fois que vous voyez un fichier que vous devez exécuter et qui n'est pas marqué, vous saurez régler ça.

  5. Vous voulez monter une ISO comme avec Daemon-Tools sous Window$? Linux possède cette fonctionnalité par défaut.  Créez simplement un répertoire quelque part avec mkdir, par exemple /home/justin/isomount, et lancez la commande mount -o loop /chemin/vers/monfichier.iso /home/justin/isomount et l'image ISO sera montée dans ce répertoire.

  6. Vous avez lancé une commande auparavant, et vous avez besoin de le refaire, mais vous ne vous en rappeler pas exactement ? Tapez history dans le terminal et il affichera votre historique de commandes. vous voulez effacer cet historique ? history -c effacera cette information.

Écrit par killinjoe. Posté dans Documentation