cli-app-icon_64.pngHaiku-spezifische Konsolenprogramme

Ort:/boot/system/bin/
/boot/system/non-packaged/bin/
~/config/bin/
~/config/non-packaged/bin/


Alle Konsolenprogramme, die zusammen mit Haiku installiert werden, befinden sich in /boot/system/bin. Eigene oder zusätzliche Konsolenprogramme erscheinen falls sie aus einem .hpkg Paket stammen entweder auch dort oder in ~/config/bin/. Ansonsten werden sie in /boot/system/non-packaged/bin/ oder ~/config/non-packaged/bin/ abgelegt. Diese Orte sind alle Teil der PATH Variable und werden daher automatisch gefunden.
Die folgende Liste an Haiku-spezifischen Programmen ist natürlich nicht vollständig; sie beschreibt nur einige der nützlichsten um auf den Geschmack zu kommen. Es ist empfehlenswert die bin/ Verzeichnisse selbst etwas zu erkunden. Wird ein Konsolenprogramm mit dem Parameter --help aufgerufen, wird der Gebrauch des Befehls mit sämtlichen Optionen angezeigt.

index Attribute betreffend: listattr, catattr, addattr, rmattr, copyattr

Diese Befehle werden benutzt, um Attribute einer Datei aufzulisten, anzuzeigen, hinzuzufügen, zu entfernen und zu kopieren. Diese Metadaten werden momentan nur auf BFS formatierten Medien unterstützt. Schiebt man die Dateien auf andere Dateisysteme, gehen alle Attribute verloren!
All diese Befehle sind im Kapitel Attribute im Terminal beschrieben.

index Index betreffend: lsindex, mkindex, reindex, rmindex

Mit diesen Befehlen lassen sich Attribute in BFS' Index auflisten, hinzufügen, re-indizieren und entfernen. Werden Dateien zwischen Partitionen ausgetauscht, sollte man daran denken, dass jede Partition ihren eigenen Index hat.
Die Befehle sind im Kapitel Index beschrieben.

index Paketmanagement betreffend: package, pkgman

Mit dem package Befehl werden HPKG Pakete verwaltet. Der Artikel Installing applications zeigt die grundsätzliche Anwendung. Normalerweise wird das Tool haikuporter benutzt, um automatisiert Pakete aus sogenannten "Recipes" ("Rezepten") zu erstellen.

Mit pkgman lassen sich Pakete suchen, installieren, aktualisieren und deinstallieren. Paket-Repositories können hinzugefügt, entfernt und deren Paketlisten aktualisiert werden. Eine besondere Art des Updates ist der Parameter full-sync: Er geht aggressiver zu Werke und ersetzt wenn nötig auch eine Software mit einer älteren Version, oder entfernt Pakete komplett.
Mehr Details zu einzelnen Parametern erhält man durch Anhängen von "--help", beispielsweise pkgman search --help.

index Nützliche Skript-Befehle

Hier einige Konsolenprogramme, die besonders beim Skripten interessant sind (siehe auch Bash und Skripten).

alert

alert erzeugt das typische Hinweis-Fenster mit einem vordefinierten Symbol, erklärenden Text und bis zu drei Buttons. Als Rückgabewert dient der Titel des geklickten Buttons, bzw. ein Exitstatus, beginnend mit 0). Zum Beispiel:

alert --idea "SpitzenApp(tm) wurde erfolgreich installiert! \
Soll eine Verknüpfung erstellt werden?" "Auf dem Desktop" "In der Deskbar" "Nein Danke"

cli-alert.png

filepanel

filepanel öffnet einen Öffnen- oder Speicher-Dialog, in dem der Benutzer eine Datei oder Verzeichnis auswählen kann. Der Rückgabewert ist der gewählte Datei- oder Ordnerpfad. Es stehen diverse Parameter zur Verfügung, um beispielsweise einen Startordner oder einen Fenstertitel zu setzen, oder einen Dateinamen beim Speichern vorzugeben oder erlaubte Dateitypen einzuschränken. Zum Beispiel:

filepanel -s -t "Logdatei speichern" -d ~/config/settings -n Spitzen.log

cli-filepanel.png

hey

hey ist ein kleines tool das BMessages an Anwendungen sendet und deren Antwort ausgibt. Es kann zum Skripten von Anwendungen benutzt werden, also zum "Fernsteuern" von Programmen mittels Skripts oder von der Kommandozeile aus. Das ist leider etwas kompliziert... Humdingers Blogpost ist eine gute Einführung, und Dank Scot Hacker's BeOS Bible gibt es ein schönes hey Tutorial von Chris Herborth.

notify

notify zeigt eine Benachrichtigung. Mit notify --help erhält man eine Beschreibung aller möglichen Parameter. Eine Benachrichtigung kann auch zur Fortschrittsanzeige eines Vorgangs benutzt werden. Dann ist es wichtig eine messageID zu vergeben, die man bei jeder Aktualisierung des Fortschritts (eine Zahl zwischen 0.0 und 1.0, die als Prozent ausgegeben wird) angibt. Sonst sieht man womöglich mehrere Benachrichtigungen gleichzeitig, wenn man schneller aktualisiert als der gesetzte Timeout die Fenster verschwinden lässt.
Ein Beispiel:

notify --type progress --group "--group" --title "--title" --icon /boot/home/bebook.hvif \
--messageID MeineMessageID --progress .75 "Bitte warten"

cli-notification.png

query

query ist die Konsolen-Variante des Find Panels. Um eine Suchformel bequem zu generieren lässt sich übrigens sehr gut eben dieses Find Panel benutzen: Einfach dort die entsprechende Suche zusammenklicken, dann umschalten zum "by formula" Mode, Anführungszeichen (") an Anfang und Ende und anschließend das Ganze hinter den query Befehl ins Terminal oder Skript einfügen.

waitfor

Mittels waitfor lässt sich auf den Start bzw. die Beendigung eines bestimmten Threads oder einer Anwendung warten.

index Weitere Befehle

checkfs

checkfs ist ein wichtiges Tool um das Dateisystem zu überprüfen. Es wird einfach ein Partitionsname, beispielsweise /Haiku oder ein Device-Pfad übergeben, um dort alle Dateien durchzusehen und Inkonsistenzen zu beheben, sofern möglich.

desklink

Mit desklink kann im Deskbar Tray ein Icon für jedwede Datei, Ordner, Query oder Anwendung installiert werden. Dabei gibt es die Möglichkeit bei einem Rechtsklick auf das entsprechende Icon ein Kontextmenü mit besonderen Funktionen anzubieten. Folgendes Beispiel macht das mit dem Konsolenprogramm screenshot (das "\" in der ersten Zeile dient nur einem Zeilenumbruch im Terminal):

desklink "cmd=Aktives Fenster (2s):/bin/screenshot --window --border --delay 2" \
"cmd=Replicant entfernen:desklink --remove=screenshot" /bin/screenshot

cli-alert.png

diskimage

Mittels diskimage können normale Dateien als "Disk" angemeldet werden. So lässt dich beispielsweise ein Haiku Anyboot Image anmelden. Anschließend kann es per Tracker eingehängt werden, um Dateien darauf zu kopieren, zu ändern oder zu löschen, bevor man es als Quelle für den Installer benutzt.

launch_roster

Der launch_daemon startet beim Hochfahren verschiedene Dienste und Anwendungen. Einige werden bei ihrer Beendigung automatisch neu gestartet. Soll das nicht geschehen – vielleicht will man einen veränderten Tracker ausprobieren – kann man per launch_roster stop den Neustart der Anwendung verhindern, bevor man sie beendet. Mittels start lässt sich der automatische Neustart wieder einschalten, info gibt zusätzliche Informationen aus. Mit log werden alle den launch_daemon betreffenden Ereignisse ausgegeben.
Ohne Parameter zeigt launch_roster alle Anwendungen/Dienste an, die so gesteuert werden können.
So lässt sich zum Beispiel der Neustart der Deskbar anhalten:

launch_roster stop x-vnd.be-tskb

mountvolume
mount

mountvolume ist der allgemein bevorzugte Befehl zum Einhängen lokaler Partitionen und Disks, weil er so simpel zu benutzen ist: einfach mit dem Namen der Partition aufrufen und fertig. --help zeigt die weiteren Optionen.

mount kann zusätzlich auch nicht-lokale Disks per Netzwerk-Dateisystemen wie NFS4 einhängen. Das zu benutzende Dateisystem wird mit dem -t Parameter übergeben, die Zieladresse mit dem -p Parameter. Als Dateisystem können alle unter /system/add-ons/kernel/file_system (bzw. dessen Entsprechungen unter ~/config oder "non-packaged") gelisteten benutzt werden. Außerdem muss ein Verzeichnis als Einhängepunkt angelegt werden. Ein Beispiel:

mkdir -p /DiskStation
mount -t nfs4 -p "192.168.178.3:volume1" /DiskStation

open

open ist ein nützliches kleines Tool. Es öffnet jedwede Datei mit ihrer bevorzugten Anwendung oder startet eine bestimmte Anwendung anhand ihrer Signatur ohne ihren genauen Pfad kennen zu müssen. Das funktioniert auch mit URLs und sogar den "virtuellen" Verzeichnissen, . für das aktuelle Verzeichnis und .. für das übergeordnete, die dann im Tracker geöffnet werden.

ramdisk

Eine Ramdisk lässt sich als eine Art Festplatte verstehen die ausschließlich im Speicher des Rechners läuft. Dadurch ist sehr schnell, aber auch vergänglich, da ihr Inhalt verschwindet sobald der Rechner ausgeschaltet wird, er abstürzt oder der Strom ausfällt.
Um eine Ramdisk mit 1 GiB Größe zu erzeugen, sie auf den Namen "RAMses" zu formatieren und einzuhängen, tippt man folgendes ins Terminal, bzw. macht ein Skript daraus:

ramdisk create -s 1gb
mkfs -q -t bfs /dev/disk/virtual/ram/0/raw RAMses
mountvolume RAMses

Achtung: Erzeugt man eine Ramdisk, gibt der ramdisk Befehl deren Pfad aus. Erzeugt man mehrere Ramdisks, ändert sich der Pfad /dev/disk/virtual/ram/0/raw !

Um den Inhalt zu behalten, zumindest sofern kein Unglück wie ein Stromausfall geschieht, lässt sich eine Ramdisk auch so einrichten, dass sie eine Imagedatei auf der Festplatte benutzt. Dazu muss man eine Datei mit einer entsprechenden Größe zur Verfügung stellen, von der bei jedem Start der Ramdisk gelesen und beim Aushängen geschrieben wird. So erzeugt man eine 500 MiB große Datei "RAMimage" und formatiert sie:

dd if=/dev/zero of=RAMimage bs=500M count=1
mkfs -q -t bfs /dev/disk/virtual/ram/0/raw RAMimage

Ab jetzt lässt sich diese Ramdisk so starten:

ramdisk create RAMimage
mountvolume RAMimage

Dabei ist es äußerst wichtig die Ramdisk immer sauber auszuhängen, entweder im Tracker oder per unmount /RAMimage. Ansonsten werden die Änderungen nicht zurück in die Imagedatei geschrieben!