<h2><imgsrc="../../images/apps-images/cli-app-icon_64.png"alt="cli-app-icon_64.png"width="64"height="64"/>Programmes en ligne de commande spécifiques à Haiku</h2>
<p>Tous les programmes en ligne de commande livrés avec Haiku se trouvent dans <spanclass="path">/boot/system/bin/</span>. Vos commandes personnalisées ou additionnelles, installées depuis un paquet .hpkg apparaitrons dans ce même répertoire ou dans <spanclass="path">~/config/bin/</span>.Autrement, vous pouvez les mettre dans <spanclass="path">/boot/system/non-packaged/bin/</span> ou <spanclass="path">~/config/non-packaged/bin/</span>. Ces répertoires faisant tous partie de la variable PATH, l'emplacement d'un programme est donc automatiquement détecté.<br/>
Ce qui suit n'est pas une liste exhaustive de toutes les commande spécifiques à Haiku, mais juste un mise en évidence des quelques commandes les plus utiles pour vous en donnez un aperçu. N'hésitez pas à explorer le contenu du dossier <spanclass="path">bin/</span> de vous même, en exécutant une commande avec le paramètre <tt>--help</tt>, vous accéderez à ses différentes options disponibles pour l'utiliser.</p>
<aid="cli-attributes"name="cli-attributes">Concernant les attributs : <spanclass="cli">listattr</span>, <spanclass="cli">catattr</span>, <spanclass="cli">addattr</span>, <spanclass="cli">rmattr</span>, <spanclass="cli">copyattr</span></a></h3>
<p>Ces commandes sont utilisées pour afficher, lire, ajouter et supprimer des attributs de fichiers. Rappelez-vous que ces méta-données ne sont actuellement disponibles que sur les volumes formatés en BFS. Si vous déplacez un fichier vers un autre systèmes de fichiers, vous perdrez tous les attributs !<br/>
Toutes ces commandes sont décrites dans le sujet consacré aux <ahref="../attributes.html#attributes-terminal">attributs dans le Terminal</a>.</p>
<aid="cli-index"name="cli-index">Concernant les index : <spanclass="cli">lsindex</span>, <spanclass="cli">mkindex</span>, <spanclass="cli">reindex</span>, <spanclass="cli">rmindex</span></a></h3>
<p>Avec ces commandes vous pouvez lister, créer, ré-indexer et retirer des attributs au mécanisme d'indexation BFS. Chaque volume a son propre index, souvenez-vous en quand copiez des fichiers d'un volume à l'autre.<br/>
Ces commandes sont décrites dans le sujet qui traite des <ahref="../index.html">Index</a>.</p>
Consultez l'article <ahref="https://www.haiku-os.org/guides/daily-tasks/install-applications">Installing applications</a> pour apprendre les rudiments.
Habituellement, l'outil <ahref="https://github.com/haikuports/haikuports/wiki">haikuporter</a> est utilisé pour créer automatiquement des paquets à partir de règles appelées «recettes».</p>
<p><spanclass="cli">pkgman</span> sert à rechercher, installer, mettre à jour et désinstaller les paquets. Les dépôts de paquets peuvent être ajoutés, retirés, et la liste de leurs paquets peut être rafraîchi. Le paramètre <tt>full-sync</tt> appelle un type de mise à jour plus agressif : si nécessaire, il retire ou rétrograde des paquets.<br/>
pour plus de détails sur un paramètre, ajouter "--help", e.g. <tt>pkgman search --help</tt>.</p>
<aid="cli-scripting"name="cli-scripting">Commandes utiles dans les scripts</a></h3>
<p>Voici quelques outils en ligne de commande qui sont particulièrement utiles pour les scripts (voir aussi le sujet sur <ahref="../bash-scripting.html">le Bash et les Scripts</a>).</p>
<tdvalign="top"><p><spanclass="cli">alert</span> conjures up the typical alert window with a pre-defined icon, explanatory text and up to three buttons. It will return the title of the pressed button and an exit status (starting with 0). For example, this is made of the line:</p>
<tdvalign="top"><p><spanclass="cli">filepanel</span> displays a load or save file panel and lets the user choose a file or location. As a return value you'll get the chosen file or folder's path. There are several parameters available, for example to set a starting directory, a window title, a default name when saving or restrictions to the allowed types of files. This is an example of</p>
<tdvalign="top"><p><spanclass="cli">hey</span> est un petit utilitaire pour envoyer des BMessages aux applications et afficher leurs réponses. Il peut être utilisé pour écrire des scripts d'applications, i.e. «contrôle à distance » d'un programme à partir d'un script ou de la ligne de commande. Son utilisation est un peu complexe… <ahref="https://www.haiku-os.org/blog/humdinger/2017-11-05_scripting_the_gui_with_hey/">l'article du blog de Humdinger</a> constitue une bonne introduction, et dans la "BeOS Bible" de Scot Hacker, vous trouverez un <ahref="http://www.birdhouse.org/beos/bible/bos/ch_scripting6.html">tutoriel pour hey</a> par Chris Herborth, très complet.</p></td></tr>
<tdvalign="top"><p><spanclass="cli">notify</span> shows a notification panel with a message. There are various parameters that are described when you call <spanclass="cli">notify --help</span>. A notification can also be used to show the progress of some action. When doing that, it's important to set a <i>messageID</i> and always use it when you update the progress (a float between 0.0 and 1.0 that's printed as percent). Otherwise you'll see several notification panels if you update quicker then the set timeout.<br/>
<tdvalign="top"><p><spanclass="cli">query</span> est la version ligne de commande de la fenêtre de recherche. En fait, une façon rapide de créer une expression de recherche, est de construire une requête dans la fenêtre de recherche, de basculer vers les formules (<spanclass="menu">by formula</span>), et de copier le tout entre doubles quottes (<tt>"</tt>) en paramètre à la commande <spanclass="cli">query</span> que vous appelez à partir du Terminal ou de votre script.</p></td></tr>
<tdvalign="top"><p><spanclass="cli">waitfor</span> est une méthode élégante pour attendre qu'une application ou une tâche particulière soit démarrée, ou terminée.</p>
<td><p><spanclass="cli">checkfs</span> est un outil important pour détecter les erreurs dans votre système de fichiers. Il suffit d'ajouter le nom du volume comme par exemple <spanclass="path">/Haiku</span> ou du périphérique, et il va parcourir tous les fichiers et si possible, corriger des incohérences.</p>
<tdvalign="top"><p><spanclass="cli">desklink</span> vous permet d'installer une icône dans le cartouche de la Deskbar à partir de n'importe quel fichier, dossier, requête ou application. Vous pourrez également pourvoir le menu contextuel d'actions spécifiques à exécuter quand vous ferez un clic droit sur l'icône.
Voici par exemple comment ajouter <spanclass="app">Screenshot</span> avec diverses options (le "<tt>\</tt>" à la fin de la première ligne sert juste au saut de ligne dans Terminal) :</p>
<tdvalign="top"><p><spanclass="cli">diskimage</span> vous permet d'inscrire un ficher ordinaire en tant que periphérique disque. Par exemple, vous pouvez inscrire l'image disque "anyboot" d'Haiku, puis monter le volume qu'elle contient dans le Tracker et copier, éditer ou supprimer les fichiers avant de l'utiliser comme source dans le programme d'installation.</p></td></tr>
<tdvalign="top"><p>The launch_daemon starts all sorts of services and applications at boot-up. For some it was instructed to re-start them if they were quit. If you don't want that – maybe you'd like to test a modified Tracker, for example – you use <spanclass="cli">launch_roster</span> to <tt>stop</tt> the re-starting of the application before quitting it. Similarly, you can <tt>start</tt> it again or get <tt>info</tt> about it.c The parameter <tt>log</tt> prints out a log of all launch_daemon related events.<br/>
Without parameter, <spanclass="cli">launch_roster</span> lists all apps/services that are under its control.<br/>
<tdvalign="top"><p><spanclass="cli">mountvolume</span> is preferred by many to mount local partitions and disks, because its usage is so easy: just call it with the name of the partition and you're done. Try <tt>--help</tt> for more options.</p>
<p><spanclass="cli">mount</span> can additionally mount remote disks by using a network filesystem, like NFS4. You specify the used filesystem with the <tt>-t</tt> parameter and the remote location with the <tt>-p</tt> parameter. As filesystem parameter you can use anything you find in <spanclass="path">/system/add-ons/kernel/file_system</span> (and corresponding file hierarchies under <spanclass="path">~/config</span> or "<spanclass="path">non-packaged</span>", of course). You also have to create a folder as mountpoint. Here's an example:</p>
<preclass="terminal">mkdir -p /DiskStation
mount -t nfs4 -p "192.168.178.3:volume1" /DiskStation</pre></td></tr>
<tdvalign="top"><p><spanclass="cli">open</span> est un petit outils très pratique pour ouvrir n'importe quel fichier avec son application préférée, ou pour démarrer une application particulière à partir de sa signature sans avoir besoin de connaître son emplacement exact. Ça fonctionne également avec les URLs, et même avec les dossiers "virtuels" <tt>.</tt> et <tt>..</tt> qui représentent respectivement le dossier courant et le dossier parent, qui seront ainsi ouvert dans le Tracker.</p></td></tr>
<tdvalign="top"><p>A ramdisk is like a harddisk running only in the computer's memory. That makes it very fast but also volatile, because its contents vanishes when you shut down the computer, or it crashes or you experience a blackout.<br/>
To create a ramdisk of 1 GiB, format to the name "RAMses" and mount it, you enter this in Terminal or create a script of it:</p>
<preclass="terminal">ramdisk create -s 1gb
mkfs -q -t bfs /dev/disk/virtual/ram/0/raw RAMses
mountvolume RAMses</pre>
<p>Note: When creating a ramdisk, the <spanclass="cli">ramdisk</span> command prints out the path to it. If you create several disks, that path <spanclass="path">/dev/disk/virtual/ram/0/raw</span> will change!</p>
<p>To preserve the contents, at least if no calamity like a blackout etc. strikes, a ramdisk can be set up to read/write an image on the harddisk. For that, you need to supply a file of the desired size that will be read from every time you start your ramdisk, and written to when you unmount it. To create an image file "RAMimage" of 500MiB and format it, do this:</p>
<p>From now on, you start the ramdisk like this:</p>
<preclass="terminal">ramdisk create RAMimage
mountvolume RAMimage</pre>
<p>It's very important to always cleanly unmount you ramdisk, either from Tracker or with <spanclass="cli">unmount /RAMimage</span>, or the changes won't be written back to the image file!</p>