Initiation puredata/python, ArsLonga, automne 2005, vincent Rioux Initiation à la ligne de commande sous Linux et MacosX en vue d'utiliser Puredata. Introduction On rentre une ligne de commande par l'intermédiaire d'un terminal (par exemple xterm ou gnome-terminal pour linux, /Applications/Utilitaires/Terminal ou iterm pour osx). Un terminal offre une alternative à la combinaison gestionnaire de fenêtres/pointeur(souris)/clavier. Pouvant être perçu comme obsolète il n'en offre pas moins un certain nombre de caractéristiques qui sont difficilement atteignables par un paradigme purement graphique : Accès aux options de lancement des programmes. Programmation de tâches complexes (e.g. successions de tâches). Meilleure ergonomie en cas d'utilisation prolongée. Définition d'un véritable environnement de travail au moyen d'alias, de variables, etc. Utilisation aisée de la complétion (en appuyant sur la touche de tabulation ↦ ), des expressions régulières (par exemple *.py désigne tous les fichiers finissant par .py). Meilleur contrôle de la machine (les ordinateurs et leurs programmes ne sont pas réalisés graphiquement). Le shell Une fois un terminal lancé on peut connaître le type de langage de commande disponible en tapant: # echo $SHELL echo est la commande unix la plus simple, elle affiche le contenu de ses arguments. $SHELL est une variable (le signe $, le spécifie) qui contient le type de shell par défaut. Le shell (au sens de coque ou enveloppe entourant un noyau ou kernel) le plus utilisé est le bash (bourne shell). A chaque fois que l'on lance un terminal, un script d'initialisation est lu (pour le bash, il s'agit du script ~/.bashrc). Le signe tilde ~ désigne le compte utilisateur (ici toto) courant (home repertory), par exemple ~/patchs est un raccourci pour /home/toto/patchs pour Linux et /Users/toto/patchspour macosx. cd, pwd, ls, arborescence de puredata, et spécificités de macosx Les ordinateurs Macintosh sont désormais livrés avec un système d'exploitation dérivé d'UNIX, dénommé FreeBSD et déposé en licence libre GPL. Les applications MacOsx sont livrés dans des bundles une sorte de dossier /4 Initiation puredata/python, ArsLonga, automne 2005, vincent Rioux regroupant fichiers binaires, bibliothèques, documentation etc. et portant l'extension .app . Tous les dossiers bundles ont une architecture commune. Pour accéder à l'arborescence de Puredata il faut par exemple taper dans un Terminal: # cd /Applications/pd39.app/Contents/Resources/ # pwd /Applications/pd39.app/Contents/Resources # ls -lh ... drwxr-xr-x 8 vincent vincent 272B 31 Aug 22:29 bin drwxr-xr-x 11 vincent vincent 374B 8 Oct 04:44 doc drwxr-xr-x 32 vincent vincent 1K 21 Oct 12:13 extra ... cd veut dire change directory et permet de changer de répertoire courant. pwd affiche le répertoire courant absolu (çàd partant de la racine de l'arborescence unix donc commençant par un slash /). ls liste les fichiers et répertoires présent dans le répertoire courant. Il existe une syntaxe commune pour toutes les commandes de shell. ls par exemple, peut prendre comme argument un répertoire (par défaut le répertoire courant) et une série d'options (souvent indiqué par le préfixe - ou -- ). Par exemple ls -lh ./ liste le répertoire courant en formant une liste (-l = liste) détaillé des droits (écritures, lectures, ...) et donnant à la taille des fichiers une forme lisible (-h = human-readable) La syntaxe de chaque commande est documentée (en anglais et généralement de façon quelque peu absconse) par la commande man. # man ls Le répertoire courant est aussi noté ./ , cette notation permettant d'accéder à des fichiers ou répertoires de façon relative. Le répertoire juste au-dessus du répertoire courant est noté ../, ainsi ~/../ pointe vers /home (linux) ou /Users (macosx). Dans l'exemple précédent (la liste de l'arborescence de Pd) les répertoires les plus importants sont soulignés. Dans ./bin, on trouve l'exécutable pd (un fichier binaire directement interprétable par le système d'exploitation) # ls ./bin/ libPdTcl.dylib pd pd-watchdog pd.tk pdreceive pdsend Dans ./extra, on trouve toutes les bibliothèques binaires que l'on doit charger à /4 Initiation puredata/python, ArsLonga, automne 2005, vincent Rioux l'initialisation de Pd. On les reconnaît à leur extension: .pd_linux pour linux .pd_darwin pour macosx .dll pour windows Dans ./doc on trouve la documentation de Puredata et également les fichiers d'aide rangés dans le répertoire ./doc/5.reference et noté help-nom_du_patch.pd Les options de la commande ligne pd L'option - - help ou -h (commune à la plupart des commandes unix) permet d'afficher les options de la commande. Par exemple: # ./bin/pd -h affiche une liste assez fournie d'options diverses. On retiendra notamment: -audiodev no -> indique la carte son à utiliser par son numéro -mididev -> idem pour la carte midi no -path path1:path2 -> ajoute les répertoires path1 et path2 où sont situés des abstractions, des patchs ou des extensions à utiliser. Ceci permet notamment de maintenir des abstractions personnelles dans un répertoire distant de l'arborescence interne de Puredata. -helppath path1 -> idem pour les répertoires de fichiers d'aide. -lib lib1:lib2 -> liste les bibliothèques ou extensions à charger. Un appel typique de pd en commande ligne pourra prendre la forme suivante: #/Applications/pd39.app/Contents/Resources/bin/pd -lib py:playlist:Gem -audiodev 2 -mididev 2 -path ~/mes_abstractions mon_patch.pd On peut heureusement se passer d'avoir à taper toutes les informations contenues dans ce type de commande en faisant appel aux alias. .bashrc et définitions d'alias Il existe un moyen relativement simple (en tout cas très utile) de configurer un environnement personnel de commandes usuelles par le biais d'un fichier dénommé ~/.bashrc qui s'exécute automatiquement à la création d'un nouveau terminal ou d'un shell (par la commande bash). Sur macox, il faut auparavant créer un fichier ~/.bash_profile # touch ~/.bash_profile /4 crée un fichier vide Initiation puredata/python, ArsLonga, automne 2005, vincent Rioux # open ~/.bash_profile l'ouvre avec l'éditeur par défaut à l'intérieur de ce fichier taper: source ~/.bashrc sauver et quitter # touch ~/.bashrc # open ~/.bashrc Dans le fichier ~/.bashrc désormais ouvert vous pouvez indiquer les variables shell et les alias dont vous voulez disposer, par exemple: pd39='/Applications/pd39.app/Contents/Resources/bin/pd' affecte à la variable pd39 la valeur qui correspond au chemin vers l'exécutable puredata. alias pd39=$pd39 définit l'alias pd39 correspondant simplement à la valeur de la variable $pd39. alias pd39gem=$pd39' -lib Gem -helppath ~/gemdoc -noaudio ' définit l'alias pd39gem avec un série d'options. mes_libs=' -lib py:Gem ' mes_paths=' -helppath ~/gemdoc -path ~/mes_abstractions ' alias pd39gem=$pd39$mes_libs$mes_paths Ce dernier exemple démontre l'intérêt d'utiliser plusieurs variables pour la définition d'un seul alias. Attention: notez bien l'absence d'espace de part et d'autre du signe égal (var='blabla'), le langage bash possédant une syntaxe contraignante. Sauver ~/.bashrc une fois que vous avez créé de nouveaux alias Lancer la commande bash ou bien source ~/.bashrc Vous devez désormais pouvoir simplement utiliser vos alias comme de nouvelles commandes par exemple: # pd39gem mon_patch.pd Il est vrai que toutes ces options sont accessibles via les menus de Puredata et peuvent être prises en compte par défaut à chaque fois que l'on lance Pd, ceci dit, il s'avère à la longue que la solution la plus souple demeure l'utilisation de la ligne de commande... Pour de plus amples informations concernant les commandes shell on pourra par exemple se reporter à: http://lea-linux.org/cached/index/Admin-admin_env-shell.html /4