Initiation au terminal - Partie 2
Si vous commencez à lire ce second article, c'est que le premier vous a intéressé et vous a incité à continuer. Nous allons donc rentrer un peu plus dans les détails, et plus particulièrement dans la configuration du terminal tout en continuant à apprendre de nouvelles fonctions.
Remerciements : Maddy
Note : Une mauvaise utilisation du terminal peut être désastreuse pour la stabilité de Mac OS X, toutes les fonctionnalités données dans cet article sont sans risques pour votre ordinateur, si vous suivez l'article à la lettre, rien ne peut vous arriver. skymac ne pourra être tenu responsable d'un disfonctionnement de votre système dû à une mauvaise utilisation du terminal.
Continuons donc ...
2.1 Différents terminaux
Avant de poursuivre, nous allons voir qu'il n'y pas qu'un seul type de terminal disponible, il y en a plusieurs qui permettent faire la même chose comme on pourrait avoir plusieurs lecteurs pour lire la même video. On choisira son terminal selon ses besoins, même si à notre niveau on ne verra pas trop la différence. On fera surtout en sorte d'éviter celui utilisé par Apple par défaut auquel il manque des fonctionnalités intéressantes.
Le prompt peut avoir un affichage différent selon le type de terminal utilisé, il peut même être configurable. En général, le prompt affiche le nom de la machine ainsi que de l'utilisateur courant, c'est à dire vous.
Pour changer de terminal, il suffit de marquer son nom comme une fonction sans paramètre.
tcsh : lancé comme terminal par défaut, il est simple, voir trop simple.
bash : un step au dessus de tcsh, il a l'avantage d'être rapide tout en étant efficace.
zsh : l'usine à gaz par excellence, il est ultra efficace et extrêmement configurable, il n'est pas très utile pour des débutants.
Ce sont 3 types de terminaux fournis par Apple dans OS X, il en existe d'autres, que vous pourrez installer si le coeur vous en dit.
Pour commencer, je vous conseille bash qui sera le mieux adapté à nos besoins.
Pour que le terminal se lance avec bash par défaut, il faut aller dans les préférences de l'application Terminal, cliquer sur le bouton radio Exécuter cette commande et taper /bin/bash dans le champ qui s'est activé.
2.2 La complétion automatique
Lorsque les noms de fonction, de dossier ou de fichier sont un peu longs ou compliqués à écrire, on utilisera la complétion automatique. Elle permet d'une seule touche de compléter le nom commencé avec les noms disponibles. Par exemple, pour accéder à son dossier Musics, on tapait :
cd Musics
Avec la complétion automatique, on tape :
cd Mu
Puis la touche tabulation de notre clavier. Le terminal ajoute tout seul la fin du mot.
Voyons maintenant le cas où il y a plusieurs possibilités à la complétion demandée. Par exemple, en tapant :
cd M
Puis tabulation, le terminal ne sait quel dossier afficher parmi les dossiers Musics et Movies. Selon les types de terminaux, le comportement est différent.
Avec tcsh, il ne se passe rien mis à part un petit avertissement sonore, il attend que vous l'aidiez en indiquant une ou plusieurs lettres supplémentaires.
Avec bash, un avertissement sonore vous prévient, puis si le nombre de possibilités est faible, il les affiche pour vous aider, vous n'avez plus qu'à indiquer une lettre de plus. Si, par contre, le nombre de possibilités est grand, il vous met un message :
Display all 1017 possibilities? (y or n)
A vous de choisir, en tapant 'y' pour accepter le listage complet ou 'n' pour refuser.
Avec zsh, cela dépend de la configuration de votre zsh, mais par défaut, il a un comportement proche de celui de bash. Si il y a trop de possibilités il affiche le message :
zsh: do you wish to see all 145 possibilities (145 lines)?
Sinon il liste les possibilités, en appuyant de nouveau sur tabulation sans ajouter de caractère supplémentaire, il affiche successivement tous les éléments par ordre alphabétique.
Nous en avons fini avec la complétion automatique, et j'espère que vous prendrez l'habitude d'utiliser ces raccourcis.
2.3 Gérer les dossiers
Comme le Finder, le terminal, permet de créer ou de supprimer des dossiers. La commande mkdir permet de créer un ou plusieurs dossiers ( 'mkdir' pour l'abréviation de 'make directory' ). Nous allons nous placer sur le bureau pour faire nos tests, ainsi nous aurons le résultat visuellement.
cd Desktop
mkdir tests
Le dossier tests est créé sur votre bureau.
Dans le dossier tests, nous allons créer deux nouveaux dossiers, mais en même temps cette fois-ci.
cd tests
mkdir test1 test2
Pour vérifier que les dossiers ont bien été créés, nous utilisons la commande vue dans le premier article :
ls -l
Nous venons de voir qu'il faut un espace entre deux noms de dossiers, mais comment faire pour créer un dossier dont le nom contient lui même un espace ?
Il faut utiliser le caractère d'échappement avant l'espace qui indique que l'on reste dans le même mot. Par exemple, pour créer un dossier test 3 :
mkdir test 3
Vous pouvez vérifier comme à notre habitude. Ce caractère d'échappement peut être utilisé avec les commandes vues dans le premier article.
La commande mkdir permet aussi de créer des dossiers imbriqués les uns dans les autres avec l'option -p. Dans ce cas, le paramètre à donner est un chemin. Tous les dossiers successifs sont tous créés s'ils n'existent pas.
mkdir -p dossier1/dossier2/dossier3
Pour vérifier, accédons au dernier dossier ajouté et affichons le chemin complet :
cd dossier1/dossier2/dossier3
pwd
On peut demander à mkdir d'afficher tous les dossiers qu'il crée avec l'option -v. La lettre v est utilisée pour le terme verbose, elle indique à la commande qu'il faut écrire dans le terminal tout ce qu'elle fait. Cette option est disponible pour beaucoup de commandes, on la reverra certainement plus tard.
cd ../../..
mkdir -pv dossier4/dossier5/dossier6
La question, maintenant, est de savoir comment nettoyer tous les dossiers vides qui traînent sur notre bureau. Bien sûr, un simple glisser-déposer dans la corbeille résoudrait notre problème simplement, mais le but reste tout de même d'apprendre à se servir des commandes du terminal. La commande la plus simple pour supprimer un dossier est rmdir ( pour 'remove directory' ). On peut directement la tester :
rmdir dossier1
Normalement, la commande vous répond :
rmdir: dossier1: Directory not empty
En effet, rmdir, par sécurité, ne détruit pas de dossier non vide. Il va falloir effacer les dossiers un à un :
rmdir dossier1/dossier2/dossier3
rmdir dossier1/dossier2 dossier1
Légèrement rébarbatif. rmdir est construit de la même manière que mkdir, on peut supprimer tous les dossiers, toujours vides, d'un chemin avec l'option -p :
rmdir -p dossier4/dossier5/dossier6
2.4 Gérer les fichiers
Nous allons commencer par écrire un fichier qui nous servira de test tout au long de cette partie. La commande cat permet soit d'afficher le contenu d'un fichier, soit d'écrire du texte. Par exemple :
cat
Vous vous retrouvez alors avec le prompt sur une ligne blanche, attendant que vous écriviez. Pour sortir de cat, sautez une ligne et utilisez le raccourci ctrl+c, attention il s'agit bien de la touche ctrl et pas de la touche pomme. Un ˆC apparaît sur votre terminal et le prompt du shell revient.
Le but est maintenant d'enregistrer ce que l'on écrit, sinon cela ne sert strictement à rien. Le caractère > suivit du nom du fichier et éventuellement un chemin vers ce fichier indique que l'on écrit dans le fichier ciblé.
cat > test.txt
Nous revoilà en train d'écrire mais cette fois, quand nous quitterons ( ctrl+c ), toutes les lignes seront écrites dans un nouveau fichier. Pour le vérifier, utilisons les capacités de cat à nous afficher le contenu d'un fichier.
cat test.txt
Si vous relancez l'écriture du fichier, vous verrez que le contenu actuel n'apparaît pas, et si vous quittez, le contenu sera écrasé. Il est impossible de modifier le contenu avec cette méthode. On peut par contre, concaténer deux fichiers. Pour réaliser ce test, nous aurons besoin de 2 fichiers, créez donc 2 fichiers test.txt et test2.txt , ensuite il suffit d'indiquer les fichiers que l'on veut concaténer et le fichier dans lequel on veut écrire :
cat test.txt test2.txt > test3.txt
cat test3.txt
Et voilà, nous avons un troisième fichier qui contient l'intégralité des deux premiers au moment de la copie. Nous verrons dans un autre article de la série un éditeur de texte typique de linux/UNIX qui lui, permettra de modifier un texte et de faire tout ce qu'un bon éditeur de texte est capable de faire.
La commande cat n'est là que pour gérer ou afficher de petits morceaux de texte ou la concaténation de fichier déjà existant.
Comme pour les dossiers, il faut maintenant nettoyer les fichiers en trop de notre dossier, nous ne garderons que le premier fichier. La commande rm est l'équivalent de rmdir pour les fichiers. rm est tout de même un peu plus puissant puisque cette commande permet aussi d'effacer des dossiers ( vide ou non ). Pour la même raison, elle est aussi plus dangereuse puisque l'on peut, par mégarde effacer rapidement l'intégralité d'un dossier de document, votre dossier utilisateur ou encore le disque dur complet. Il faut donc relire à 2 fois la commande que l'on envoit pour être sûr de ne pas faire une bêtise irréparable. Comme pour l'ensemble des commandes déjà vues jusqu'à maintenant, il suffit de donner le ou les fichiers à effacer. Nous vérifierons que les fichiers ont bien disparu.
rm test2.txt test3.txt
ls -l
Nous voilà de retour avec notre unique fichier test.txt. Nous disions que rm permettait de supprimer les dossiers, pourquoi ne pas tester tout de suite cette fonction. Nous allons préparer le terrain, avec des fonctions que nous avons déjà vu. Nous allons faire 2 dossiers imbriqués avec dans chaque un fichier ( nous copierons le fichier test.txt que nous avons conservé ) :
mkdir -p dossier1/dossier2
cat test.txt > dossier1/fichier1.txt
cat test.txt > dossier1/dossier2/fichier2.txt
Nous voila avec nos dossiers et fichiers prets à être perdus à tout jamais. L'option -r indique qu'il doit supprimer ce qu'on lui donne de manière récursive. Nous utiliserons l'option -v pour voir tout ce que cette commande réalise, et oui, il s'agit de l'option verbose que nous avions vu pour la commande mkdir.
rm -r dossier1
Et voila, tout a été définitivement supprimé. J'insiste bien sur le terme définitif parce qu'il est impossible de récupérer ces fichiers par la suite et que l'utilisation d'une telle fonction sur un dossier important le détruirait instantanément.
Après ce petit coup de stress sur cette fonction rm , reposons nous avec une fonction toute simple mais qui peut être vraiment pratique. Il s'agit de la commande open , qui comme son nom l'indique permet d'ouvrir un fichier.
open test.txt
Normalement, votre fichier test.txt s'est ouvert avec votre éditeur de texte, sur Mac OS X, par défaut, il s'agit de TextEdit.
Nous pouvons spécifier l'application avec laquelle le fichier sera ouvert, il suffit d'ajouter le paramètre -a suivit du nom exact de l'application à désigner. Par exemple, pour l'ouvrir avec Safari :
open -a Safari test.txt
Il est possible de faire la même chose avec les dossiers en utilisant le finder. Par exemple, nous allons ouvrir le dossier courant ( pour rappel, le dossier courant possède un raccourci : . et le dossier parent : .. ) :
open .
Notez qu'il est inutile de préciser -a Finder puisque les dossiers sont automatiquement ouverts par Finder.
2.5 Application des connaissances
Vous allez enfin pouvoir appliquer vos connaissances dans un but précis. Le premier exercice consistera à apprendre à construire une liste de vos albums contenu dans iTunes. Première étape, déplaçons nous dans notre bibliothèque iTunes.
cd ~/Music/iTunes/iTunes Music
Nous allons maintenant lister les dossiers tel que l'on voudrait qu'ils apparaissent dans notre liste. Chaque album doit être regroupé par artiste, on liste donc le contenu de chaque dossier :
ls *
Normalement, le résultat devrait ressembler à quelque chose comme cela ( avec vos albums, bien sûr ) :
A Perfect Circle:
Thirteenth Step
eMOTIVe
Alan Silvestri:
Van Helsing
Anastacia:
Anastacia
Angra:
Angels Cry
Holy Land
Rebirth
Unplugged Live 1997
Barry White:
The Barry White Collection
...
Maintenant que l'on a vérifié que l'affichage nous convient, nous allons l'enregistrer dans un fichier ( que l'on placera sur le bureau ) :
ls * > ~/Desktop/Ma liste de musique.txt
Et voilà, le tour est joué. Nous avons une liste de nos albums, certes un peu simpliste.
Le second exercice consistera, si vous avez un iPod, à aller chercher les musiques normalement inaccessibles via le Finder. Comme pour le premier exercice, nous allons nous placer dans le bon dossier. A la racine de votre disque dur se trouve un dossier Volumes dans lequel se trouvent tous les volumes montés sur votre macintosh ( disques externes, disques réseaux, iPod, PSP, etc ... ). L'exercice se fait ici avec mon iPod, vous devez bien sûr changer le nom et mettre celui de votre iPod ( n'oubliez pas la complétion automatique si son nom est long ).
cd /Volumes/skyPod/
Nous sommes donc à la racine de notre iPod, il faut donc chercher le dossier invisible dans lequel se trouvent les musiques :
ls -la
Le dossier ipod_control semble correspondre à ce que l'on cherche. On poursuit le chemin vers les musiques :
cd ipod_control/music/
ls *
Comme vous pouvez le voir, il y a un certain nombre de dossiers nommés F suivi d'un nombre qui contiennent toutes les musiques de votre iPod. A partir d'ici vous avez plusieurs possibilités, vous pouvez ouvrir un ou plusieurs dossiers :
open F01
ou :
open *
et ainsi rechercher la musique à la main et récupérer celle qui vous intéresse. Vous aurez ainsi le fichier de la musique.
Mais sans vouloir forcement le fichier, on veut peut être ajouter le fichier à votre bibliothèque iTunes :
open -a iTunes F01/mamusique.mp3
On peut aussi vouloir ajouter toutes ses musiques à son iTunes, dans le cas d'une perte de donnée par exemple :
open -a iTunes */*
Cette méthode un peu bourrin peut demander un certain temps si votre iPod est plein, en effet, il faut laisser l'ordinateur récuperer les musiques une à une sur votre lecteur MP3. Comme vous pouvez le voir dans la commande, on demande bien à iTunes d'ouvrir tous les fichiers de tous les dossiers.
La majorité des logiciels proposant de récupérer les musiques de votre iPod utilise le procédé que nous venons de voir. Ils ajoutent une interface graphique ( et parfois des options vraiment très pratiques comme le regroupement par album grâce aux tags ID3 ) pour que ce soit utilisable par le commun des mortels mais au fond, le principe n'est pas plus compliqué que ça.
2.6 Conclusion
Vous êtes maintenant capable de gérer vos dossiers et vos fichiers comme bon vous semble, vous savez par la même occasion détourner la faible protection des iPods. Dans le prochain article, nous verrons comment faire du monitoring sur notre Mac OS X, et tout cela en ligne de commande bien sûr.