Accueil > Le Terminal de Mac OS X > Le Terminal de Mac OS X : Partie 4

Le Terminal de Mac OS X : Partie 4

Dans les trois premiers articles de cette série vous vous êtes sali les mains en apprenant à utiliser les commandes Unix. Maintenant il est temps d’avoir un peu de plaisir avec une fonctionnalité très cool de l’application Terminal, les fichiers term.


Avant que vous ne commenciez ce tutoriel, vous devez avoir les Outils Développeur d’Apple installés, si ce n’est déjà fait. Vous saurez s’ils sont installés si vous avez un répertoire /Developer sur votre disque. Si vous ne les avez pas et n’avez pas de copie du CD d’installation, vous pouvez télécharger une image disque gratuite après vous être enregistré sur le site Apple Developer Connection ici.


Comme vous avez pu déjà le découvrir, le Terminal vous fournit des tas de façons de personnaliser ses fenêtres. Vous pouvez appliquer des couleurs au texte et au fond, changer la taille de la fenêtre, le texte de barre de titre et plus encore.

Ces changements deviennent vos réglages par défaut de manière globale (ils s’appliquent à toutes les nouvelles fenêtres) dés lors que vous vous servez de la palette des Préférences (Menu Terminal –> Préférences…), mais vous pouvez les appliquer à des fenêtres individuelles en employant la palette de l’Inspecteur (Menu Shell –> Inspecteur…).

Les fichiers term représentent la troisième méthode pour enregistrer les réglages de fenêtre. Ils vous permettent de sauvegarder les paramètres de fenêtres individuelles dans un fichier, qui une fois ouvert, crée une nouvelle fenêtre avec toutes vos paramètres préconfigurées. L’utilisation de fichiers term peut vous permettre d’ouvrir rapidement plusieurs nouvelles fenêtres, chacune avec des paramètres prédéterminées différents.

Les choses deviennent vraiment intéressantes, cependant, dès lors que vous profitez de la fonctionnalité peu connue des fichiers term, à savoir la possibilité de définir une ligne de commande à exécuter au moment où la fenêtre s’ouvre. Ainsi vous pouvez créer vos propres fichiers double-cliquables qui au moment de leur exécution ouvriront le Terminal avec une fenêtre respectant vos spécifications exactes et exécuteront n’importe quelle ligne de commande (ou le fichier script) de votre invention.

Ce tutoriel vous guidera tout au long du processus simple de création d’un fichier term. En plus, vous apprendrez à éditer des fichiers XML semblables à des fichiers plist, à installer des applications Unix et même un peu sur la diffusion de fichiers MP3 sur Internet.

En guise de bon exemple pour illustrer ce tutoriel, j’ai choisi Streamripper, l’application Unix open-source qui permet de “ripper” des fichiers MP3 sur votre disque dur à partir de quelques stations d’émission Internet, y compris celles inscrites dans le Tuner Radio de iTunes.


Cet article présente la version ligne de commande de Streamripper pour démontrer l’utilisation des fichiers term. Cependant, si vous voulez essayer une version de Streamripper dotée d’une interface Aqua, vous pouvez essayer StreamCatcher et la trouver ici.


Vous en saurez plus sur Streamripper dans peu de temps, mais d’abord configurons votre fenêtre Terminal et sauvegardons les paramètres dans un fichier term. Bien sûr vous pouvez paramétrer votre fenêtre selon vos préférences, mais pour les besoins de ce tutoriel, je vais essayer de faire une fenêtre qui aura un look dans le genre affichage à cristaux liquides.

Pour commencer, ouvrez le Terminal et sa palette Inspecteur. Dans le menu contextuel de l’Inspecteur choisissez l’article “Fenêtre“. La largeur par défaut de 80 colonnes sera suffisante, mais vous aurez seulement besoin de 5 lignes de texte. Vérifiez seulement que la boîte à cocher “Titre personnalisé” est activée et tapez dans son champ : “Tapez Contrôle + C pour arrêter“. Cette instruction vous rappellera comment arrêter Streamripper.

Ensuite, vous pouvez choisir une police au look agréable et un thème de couleurs pour la fenêtre. Je veux faire en sorte de donner un look à la iTunes (cristaux liquides) aux fenêtres, nous allons donc essayer avec les paramètres applicables aux fenêtre Terminal. D’abord, choisissez “Texte” dans le menu contextuel de l’Inspecteur. J’ai fait en sorte que le curseur soit aussi invisible que possible (juste un souligné) et j’ai désactivé toutes les autres options.

La fenêtre iTunes emploie la police Lucida Grande en taille 10, mais puisque ce n’est pas une police non-proportionnelle elle ne semble pas adaptée à une fenêtre Terminal. Au lieu de cela, je choisis une police non-proportionnelle, VT100 en 12 points, qui se rapproche de celle utilisé par iTunes.

Pour appliquer les couleurs, choisissez “Couleurs” dans le menu contextuel de l’Inspecteur. Double cliquez sur l’échantillon coloré applicable à l’arrière-plan pour ouvrir la palette de couleurs. Pour dupliquer la couleur d’iTunes, j’ai employé l’outil Loupe situé en bas de la palette de couleurs pour capter la couleur d’une fenêtre iTools. Faites de même avec l’échantillon appliquable au Curseur.

Finalement, pour éviter les barres de défilement de la fenêtre Terminal, choisissez “Tampon” dans le menu de l’Inspecteur et désactivez la longueur de tampon pour mettre ce dernier hors de service, désactivez l’enroulement des lignes trop longues et activez “Afficher le bas lors de la saisie”. Votre fenêtre doit maintenant ressembler à quelque chose dans ce genre là :

Vous êtes presque prêt à sauvegarder le tout dans un fichier term, mais avant que vous ne le fassiez, vous devez d’abord placer la fenêtre là où vous voudrez qu’elle apparaisse puisque cet emplacement est aussi sauvegardé dans le fichier.

Si vous êtes prêts à sauvegarder le fichier, choisissez “Enregistrer” dans le menu Shell. Vous devez le sauvegarder dans le répertoire ~/Library/Application Support/Terminal . Cependant, il est probable que vous n’ayez pas encore de dossier Terminal dans ce répertoire, donc vous devrez d’abord en créer un à l’intérieur de la boîte de dialogue de sauvegarde. Nommez le fichier “streamripper.term” et sauvegardez-le dans ce nouveau répertoire.

La deuxième option de la boîte de dialogue d’enregistrement vous permet de choisir le fichier term à ouvrir au démarrage de Terminal. Vous pouvez aussi régler cette option dans la palette Préférences du Terminal, sous l’onglet “Démarrage“.

Une fois que le fichier est sauvegardé, vous verrez que dans le menu Shell, l’article “Bibliothèque” est maintenant activé. Chaque fois vous choisirez “streamripper” à partir du menu “Bibliothèque”, une nouvelle fenêtre s’ouvrira avec les réglages exactes indiqués dans le fichier term. Essayez pour voir ! Souvenez-vous que l’emplacement de chaque fenêtre est le même, donc elles s’ouvriront empilées les unes sur les autres. (Ce n’est qu’une manière rapide d’accès à vos fichiers term.)

Avant d’installer Streamripper, vous devrez d’abord vous assurer que le répertoire dans lequel il va travailler existe. La commande de mkdir avec son option -p créera le répertoire bin et tous les répertoires intermédiaires s’ils n’existent pas déjà. Employez sudo pour obtenir les droits de l’utilisateur root :

[localhost:~] chris% sudo mkdir -p /usr/local/bin

Il est maintenant temps de télécharger et d’installer Streamripper. Un clic sur ce lien provoquera le téléchargement du code source au format compressé “tarball” :

http://streamripper.sourceforge.net/dl/streamripper-1.0.5.tar.gz

Un fichier tarball est une archive simple que produit l’utilitaire tar en combinant tous les fichiers classiques d’une distribution typique de code source Unix. Puisque les fichiers sont seulement combinés et non comprimés, les tarballs sont habituellement comprimés au format zip, d’où l’extension “.tar.gz“.

La dernière version d’Aladdin Expander traitera correctement ce type de fichier (il devrait le faire automatiquement après le téléchargement). Vous pouvez aussi décompacter des tarballs zippés avec une commande Unix, qui décompressera le fichier zip et recréera la structure complète de répertoires, basée sur l’utilitaire tar :

[localhost:~/Desktop] chris% tar xzvf streamripper-1.0.5.tar.gz

Que ce soit Expander qui fasse le travail, ou tar, vous vous trouverez avec un répertoire streamripper-1.0.5 dans le même répertoire que le fichier téléchargé. (Bien sûr, il se peut que le numéro de version soit plus récent).

Maintenant dirigez-vous dans ce dossier avec la ligne de commande suivante :

[localhost:~/Desktop] chris% cd streamripper-1.0.5

Au fur et à mesure que vous installerez des logiciels Unix, vous constaterez que les trois commandes suivantes sont courantes dans le processus d’installation. Il y a beaucoup plus à dire sur ces commandes, mais je peux vous donner l’essentiel de ce que se passe.

Tapez cette commande d’abord :

[localhost:~/Desktop/streamripper-1.0.5] chris% ./configure 

Là, vous lancez l’exécution d’un scénario shell qui découvre votre machine et les propriétés de l’OS (gardez en mémoire que le même code source est le même qui sera porté sur la plupart des autres machines Unix) afin de préparer en réalité la compilation du code qui interviendra dans l’étape suivante, ce que vous serez prêts à lancer une fois que vous aurez récupérer le prompt :

[localhost:~/Desktop/streamripper-1.0.5] chris% make

La compilation prendra quelques temps, mais vous pourrez en observerer la progression grâce aux lignes de reporting affichées. Une fois que le prompt sera de nouveau affiché, vous serez peut être alors curieux de jeter un oeil dans le répertoire; vous verrez le fichier binaire Streamripper nouvellement élaboré qui est en fait le fichier réel de l’application qui maintenant n’a plus qu’à être placé dans le répertoire approprié. Vous ferez cela avec la commande suivante, qui exige un sudo puisque le fichier doit être placé dans /usr/local/bin/ (un répertoire réservé en écriture à root) :

[localhost:~/Desktop/streamripper-1.0.5] chris% sudo make install - Installing streamripper

Et voilà ! Streamripper est maintenant installé et vous pouvez le lancer pour en faire rapidement le tour. Tapez juste son nom et vous obtiendrez quelques informations en rapport à son utilisation :

[localhost:~/Desktop/streamripper-1.0.5] chris% streamripper
Usage: streamripper URL [OPTIONS]
Options:
        -d <dir>       - The destination directory
        -s             - Don't create a directory for each stream
        -r <base port> - Create a relay server on base port, defaults to port 8000
        -z             - Don't scan for free ports if base port is not avail
        -p <url>       - Use HTTP proxy server at <url>
        -o             - Write over tracks from incomplete
        -c             - Don't auto-reconnect
        -v             - Print version info and quite
        -l <seconds>   - number of seconds to run, otherwise runs forever
        -q             - add sequence number to output file
        -i             - dont add ID3V1 Tags to output file
[localhost:~/Desktop/streamripper-1.0.5] chris%

Si le fait de taper streamripper résulte en un Command not found, taper la commande rehash, ce qui forcera le shell à reconstruire sa liste d’exécutables présents sur le système :

 
[localhost:~] chris% streamripper
streamripper: Command not found.
[localhost:~] chris% rehash
[localhost:~] chris% streamripper
Usage: streamripper URL [OPTIONS]
...

Il y a quelques options, comme vous pouvez le voir, mais pour notre besoin seuls une URL et le répertoire cible sont nécessaires. En fait, la recherche de l’URL pourrait être la partie la plus dure. La meilleure manière d’en trouver une est d’aller sur SHOUTCAST (un portail populaire de stations MP3 cool), trouver une station et faire un contrôle-clic sur son bouton “Tune-in”. Ensuite, choisissez “Copier le lien dans le presse-papiers” dans le menu contextuel qui s’affiche puis coller ce texte quelque part et extrayez-en juste la partie l’adresse IP et le numéro du port. Par exemple :

http://www.shoutcast.com/sbin/shoutcast-playlist.pls?rn=9035&addr=205.188.234.36:8046&file=filename.pls

Vous pourriez en extraire 205.188.234.36:8046. Une fois extraite, vous pouvez l’employer dans la commande de Streamripper de cette manière :

[localhost:~] chris% streamripper 205.188.234.36:8046 -d ~/Music/ 

Le répertoire après l’option -d indique le répertoire où les fichiers seront placés, dans ce cas le dossier /Music de mon répertoire utilisateur.

Voici ce que vous vous observerez après avoir pressé Retour :

Connecting...
stream: Japan-A-Radio - Anime Music & Japanese Pop (JPOP / Anime)
server name: SHOUTcast/SolarisSparc v1.8.8
bitrate: 128
meta interval: 24576
[ripping...    ] SES - Love isDay By Day [  120kb]

Pour arrêter le flux, pressez Contrôle + C :

shuting down
bye..
[localhost:~] chris%

Si vous faites tourner Streamripper assez longtemps, vous verrez que les fichiers musicaux commencent à remplir le répertoire de destination que vous avez choisi, avec en guise d’intitulé le titre de la chanson. Vous en apprendrez plus sur Streamripper ne serait qu’en jouant avec, en lisant son fichier README placé dans son répertoire source et en vous rendant aussi sur sa page d’accueil.

Mais il est maintenant temps de retourner à notre fichier term et d’y ajouter la commande Streamripper (et une petite touche supplémentaire). Comme vous le savez peut être déjà, le format de fichier officiel pour les préférences Mac OS X est le “XML plist“. Je ne rentrerai pas trop en profondeur dans XML à ce stade, mais ce qui est important de noter est que tous ces fichiers sont au format texte, donc modifiables par n’importe quel éditeur de texte. Le fait est que les fichiers term sont aussi écrits en XML, exactement comme des fichiers plist.

Maintenant, bien qu’il soit possible de passer à l’étape suivante en employant n’importe quel éditeur de texte, puisque vous avez installé les Outils de Développement vous avez un outil bien meilleur pour cette tache, l’application PropertyListEditor, que vous trouverez dans /Developer/Applications. Rendez-vous dans ce répertoire et lancez PropertyListEditor.

A partir du menu Fichier, choisissez Ouvrir…, et naviguez jusqu’à
~/Library/Application Support/Terminal et ouvrez le fichier streamripper.term. Comme dans les fichiers plist, les données contenues dans des fichiers term sont arrangées de manière hiérarchique avec “root” comme niveau le plus haut. Un clic sur le petit triangle noir situé en face du niveau root provoque l’affichage du niveau suivant, “WindowSettings“. Ouvrez aussi ce niveau et le niveau “0″ apparaîtra en-dessous et vous verrez alors la liste complète des propriétés du fichier term, dont la plupart vous sembleront familières.

Ensuite, faites défiler vers le bas jusqu’à la ligne “ExecutionString“, un double-clic sur son champ dans la colonne “Value” provoquera l’ouverture en mode édition du champ texte.

Entrez alors cette chaîne :

streamripper 205.188.234.36:8046 -d ~/Music/;open ~/Music/Japan-*;exit

Et pressez Retour pour fermer ce champ. La chaîne que vous avez entrés est une ligne de commande simple faite de trois commandes, chacune séparée par un point-virgule. Le fait de rassembler ces commandes de cette manière vous permet de lancer les commandes séquentiellement (la suivante ne s’exécutant qu’après la fin de la précédente), comme si vous les aviez saisies sur trois lignes différentes. Donc, la ligne que vous avez saisie lance d’abord Streamripper :

streamripper 205.188.234.36:8046 -d ~/Music/

Puis, une fois que vous avez arrêté le flux, la commande suivante est passée :

open ~/Music/Japan-*

La commande open ouvre le dossier de destination dans le Finder, vous permettant ainsi de voir les fichiers que vous venez de télécharger. De fait que le nom du dossier de destination est fonction de “la station” fournissant le flux, le nom du chemin d’accès sera bien sûr différent pour une autre station.
Le * dans le nom du chemin d’accès est un caractère de remplacement qui vous permet désigner le répertoire par seulement ses premiers caractères. Finalement, la commande exit termine votre session shell (ça reste toujours une bonne idée quand on a en fini avec le shell).

Maintenant pour la touche finale. Faites défiler vers le bas jusqu’à la ligne “TerminalOpaqueness“. Ce paramètre caché vous permet d’appliquer un effet de transparence à la fenêtre, ce qui donnera à notre fenêtre un look “verre” plus réaliste. La valeur que vous devez entrer est l’équivalent décimal du pourcentage d’opacité désiré. Le paramètre est à 1.0 par défaut, ce qui représente une fenêtre opaque à 100%. Une bonne valeur pour ce paramètre serait .85, ce qui provoquera une faible transparence. Entrez “.85″ dans le champ “value” et pressez Retour.

Nous en avons fini avec le fichier term et nous devons maintenant le sauvegarder. A partir du menu Fichier, choisissez “Enregistrer sous...” et sauvegardez le fichier avec un nouveau nom approprié (en ajoutant toujours l’extension “.term“) dans le même répertoire que l’original.

Vous aurez peut être à relancer le Terminal pour que votre fichier apparaisse dans votre menu “Bibliothèque“. Une fois fait, choisissez-le et admirez votre création :

Pour finir, voici quelques points supplémentaires se rapportant aux fichiers term et à Streamripper qui vous aideront à faire votre propre version de ce fichier (et d’autres) :

  • Un fichier term, quand il double-cliqué dans le Finder, s’ouvre et s’exécute dans le Terminal comme si vous l’aviez choisi à partir du menu “Bibliothèque“. Vous pourriez vouloir coller une icône personnalisée sur votre fichier et le mettre dans le Dock, la Barre d’outils, ou le dossier des Favoris. Ou alors, vous pourriez faire un dossier rempli de fichiers term Streamripper se rapportant à des stations différentes et mettre ce dossier dans le Dock.
  • De la même façon qu’une ligne de commande crontab peut faire référence à un script shell, la ligne de commande que vous ajouter à votre fichier term peut aussi le faire, vous permettant ainsi de faire à peu près tout avec un fichier term.
  • Le terminal reconnaît aussi des fichiers de commandes double-clickable qui sont au format texte et qui contienent juste des lignes de commande et des scripts, et dont l’ intitulé se termine par .command. L’ouverture d’un fichier commande dans le Terminal ouvrira une nouvelle fenêtre, aux réglages par défaut, dans laquelle la commande s’exécutera. Cela diffère du comportement d’un fichier term, qui lui permet d’indiquer les propriétés de la fenêtre. Vous trouverez plus de fichiers commande ici.
  • Chaque session Streamripper exigera une bonne dose de CPU. En fonction de votre machine, vous ferez attention à ne pas lancer plusieurs cessions en même temps.
  • Si vous voulez écouter le flux en même temps que vous le téléchargez, ajoutez l’option -r à la commande Streamripper, comme cela :
  • streamripper 205.188.234.36:8046 -r -d ~/Music/

    Ouvrez alors iTunes, choisissez “Ouvrir le flux” à partir du menu Avancé et entrez l’URL comme cela : LOCALHOST:8000

  • Certaines stations n’envoient pas les meta-données permettant de diviser le flux en autan de fichiers individuels qu’il y a de chansons. Dans ce cas, Streamripper téléchargera un long fichier.
  • Tous les logiciels Unix ne s’installent pas aussi facilement que Streamripper sur Mac OS X. Pour des astuces sur l’installation d’autres packages, allez voir ce site.

Avec les procédures que vous avez apprises dans ce tutoriel, vous serez maintenant capables de tirer plus de profit des racines Unix de Mac OS X, tout comme des fonctionnalités uniques du Terminal. Si vous inventez des fichiers term intéressants, n’hésitez pas à les partager avec tout le monde.

Textes originaux sur O’Reilly : Learning the Mac OS X Terminal : Part 4

Thierry Le Terminal de Mac OS X , , ,

  1. Pas encore de commentaire
  1. Pas encore de trackbacks
Vous devez être identifié pour poster un commentaire