anstatt das Produkt einsteigerfreundlich zu machen
Genau das wird mit dein ISOs vom Pinguin entschärft. Installieren und läuft. Von der Partitionierung abgesehen, für die der Pinguin aber nichts kann, ist es Kinderleicht.
anstatt das Produkt einsteigerfreundlich zu machen
Genau das wird mit dein ISOs vom Pinguin entschärft. Installieren und läuft. Von der Partitionierung abgesehen, für die der Pinguin aber nichts kann, ist es Kinderleicht.
damit habe ich nicht Dich direkt angesprochen, eher so allgemein und beispielhaft geschrieben.
Das habe ich auch nicht persönlich genommen. War auch eher allgemein zu sehen. Für die Einen ist der PC auch so etwas wie ein Spiel und Spass Gerät, die anderen wollen das Teil einfach benutzen. Deshalb sagte ich ja, es liegt im Auge des Anwenders.
Das hat ja recht wenig mit Offenheit zu tun. Offenheit bedeutet, immer wieder seine Komfortzone zu verlassen
Hmm. Offenheit? Komfortzone? Das liegt im Auge des Anwenders, würde ich sagen. Ich bin definitiv offen für andere Distributionen. Sehe nur keinen Sinn darin, mein stabil laufendes System dafür zu opfern. Das hat jetzt nichts mit Komfortzone zu tun, sondern mit Nutzen. Ich brauche die Dinger ja, damit ich arbeiten kann. Es würde mir wirklich wenig Nutzen bringen, wenn ich aus irgendeinem Impuls heraus alles crashe und neu mache, nur um mal was neues auszuprobieren. Um dann womöglich festzustellen, dass irgendetwas nicht mehr so funktioniert, wie ich es brauche und ich das erst wieder hinbiegen muss.
Neugier ist ja da, sonst würde bei mir ja nicht seit längerem ein Void in einer aktiv genutzten VM laufen. Oder Debian in einer anderen VM, damit ich dort etwas Testen kann womit ich meinem Bekannten mit seinem Server helfen kann.
Desktops sind auch so eine Sache. Ich habe so lange Cinnamon verwendet, bis der Pinguin mich mit seinem Gnome Video angefixt hat. Seither bin ich auf Gnome, nutze aber auch LXQt, Mate, Plasma und AwesomeWM. Aber jetzt einfach mal so, weil ich eben schon länger Gnome verwendet habe, einen anderen Desktop installieren, nur um einen anderen Desktop zu haben, da erschliesst sich mit der Nutzen nicht.
Deshalb im Auge des Anwenders. Wer seinen PC einfach so zum Spass nutzt, dem seien solche Spielchen gegönnt. Ich könnte mir das aber schon aus zeitlichen Gründen nicht leisten und der Wille ist auch nicht da. Ich benutze ja Arch nicht, weil ich ein Fanboy bin, sondern weil es einfach seit Jahren tadellos funktioniert und ich alles damit machen kann, was ich machen will und machen muss. Genau aus dem Grund bin ich ja von Gentoo weg, obwohl ich Gentoo nach wir vor für die beste Distribution halte. Wäre da eben nicht das mit dem Basten, den Updates usw. Es war für mich einfach viel zu nervig, ein Update einzuspielen und danach erst basteln zu müssen, bis alles wieder richtig lief. Das kann sich über die Jahre jetzt natürlich geändert haben. Aber eben genau deshalb bin ich von Arch weg. Sein Nutzen überragte einfach nicht die Affinität dafür. Dann zu Arch und das funktioniert einfach. Ich muss mir keine Sorgen machen und kann damit arbeiten.
Hat dein NAS nur die Möglichkeit von Samba? Ich spreche meine über FTP an.
Ach, was haben mich man-pages schon Nervern gekostet. Das mit dem Englisch ist weniger das Problem, aber oft ist vieles irgendwie so kryptisch beschrieben. So hatte ich schon einige Male erst Erfolg, wenn ich im Netz irgendwo ein Erklärung gesucht habe und schau an, es war erschreckend simpel. Über die man-page wäre ich da nie drauf gekommen.
Wenn du Nautilus samt Abhängigkeiten entfernst, was bei der Prüfung der Abhängigkeiten eigentlich crashen sollte, wird das wirklich witzig.
ohne Swap kam bei mir auch ein kritischer Fehler
Warum es zu einem kritischen Fehler kommt weiss ich zwar jetzt aus dem Stehgreif leider nicht. Aber Swap ist ja nicht nur ein Auslagerungsspeicher, wenn der Arbeitsspeicher voll ist. Swap wird von Linux ja auch benutzt, um aktive Programme, die aber gerade nicht benutzt werden, dorthin auszulagern. Ich habe, neben meinen 32 GB Arbeitsspeicher, auch 16 GB Swap. Ich habe mal htop mitlaufen lassen, als ich gezockt habe. Schon kurz nach Start des Spiels, wurde der Arbeitsspeicher deutlich freier und Swap voller. Ich finde das überaus praktisch.
Was ich mir nun vorstellen könnte ist, dass die Distribution so konfiguriert ist, dass sie Swap für solche Fälle voraussetzt. Ich meine mich zu erinnern, dass als ich mit Gentoo den Kernel konfiguriert habe, dort eine Option für Swap vorhanden war. Unter Umständen ist das bei dieser Distribution auf besonders hart eingestellt und ohne Swap gibt es dann Stress.
Ist DIES jetzt ein praktisches Beispiel warum man den Dateimanager / Paketmanager usw. der jeweiligen Umgebung nutzen sollte
Meiner Erfahrung nach nein. Ich nehme an, mit Paketmanager meinst du jetzt das grafische Tool. Denn vom Paketmanager von NixOS mal abgesehen, ist es nicht sonderlich trivial, einen Paketmanager einer anderen Distribution in die Eigene einzubauen. Geht, aber der Aufwand ist oft einfach Wahnsinn und führt auch gerne mal zu Instabilitäten.
Dateimanager an und für sich sind nicht an eine Oberfläche gebunden. Ja sie mögen Abhängigkeiten davon haben und mitbringen, aber ich setze zum Beispiel Thunar unter Gnome ein und das hat bislang keine Probleme gemacht.
Ja, Okular hat Style, keine Frage. Für das was ich mit PDF mache, hat Atril bislang völlig genügt und eben für alles andere habe ich mein reMarkable.
Ich verwende schon ewig für E-Mails Atril. Zumindest in den PDFs, die ich lese, wird immer die letzt gelesene Seite angezeigt. Ob das jetzt aber bei allen PDFs ist kann ich nicht sagen, da ich grosse Mails mittlerweile auf meinem reMarkable lese. Mich hat Atril bislang nicht im Stich gelassen.
Kurze Zusatzinfos:
- Die KI AlphaZero, benötigte weniger als vier Stunden, um sich selbst Schach beizubringen
- Die KI AlphaChip entwirft KI-Chips in wenigen Stunden (Menschen benötigen Monate dazu)
- Die KI Plattform Graph Networks for Materials Exploration (GNoME) findet neue Materialien
- Die KI AlphaFold revolutioniert die Suche nach neuen Proteinen
Auf diese KIs habe ich auch immer wieder ein Auge. Gerade die Materialforschung finde ich unglaublich spannend.
Keine dieser KIs ist aber potentiell gefährlich. Sie haben alle eine unglaubliche Fähigkeit und nicht mehr. Es sind also Werkzeuge und das werden sie auch bleiben, da sie nur eine spezifische Aufgabe haben.
Sowas wie:
- bilde Dich weiter
- prüfe Dein Wissen auf Korrektheit
- Sie darf mit der Umgebung / Menschen kommunizieren (zB Messenger, Telefon, soziale Netzwerke).
Bilde dich weiter und prüfe dein Wissen ist ebenso keine Gefahr. Wissen ist Macht, aber wenn du keine Wege hast, die Macht auszuüben, nützt sie dir dennoch nichts. Könnte diese KI lernen, ihre Macht dennoch zu nutzen? Lernen ja, ihren eigenen Code ändern nicht. Es sei denn, der Entwickler hat das explizit vorgesehen. Das könnte man dann aber mit einer Pistole vergleichen, die auch nach hinten auf den Halter der Waffe feuern kann. Ich glaube nicht, dass jemand das einbauen würde. Also seinen Code selbst weiterentwickeln ja, diesen compilieren und ausführen nein.
Eine Kommunikation über das Internet ist dann aber wirklich eine Gefahr. Wie in dem Text ja beschrieben. Eine KI würde nicht lange brauchen um mit ausreichend Wissen zu erkennen, wie manipulierbar der Mensch doch ist. Ich sage nur Schneeballsystem, Spam, der Prinz aus Nigeria. So viele Menschen haben davon schon gehört, doch wenn es um Geld geht hakt der Verstand dann gerne doch mal aus. Ich halte es schon heute für durchaus realistisch, dass eine KI sehr schnell unglaublich gute Wege finden kann, Menschen für ihre Zwecke zu manipulieren.
Das könnte man aber mit einem einfachen Trick schon etwas entschärfen. Egal was diese KI mit einem Menschen kommuniziert, es steht immer hardcodiert dabei, dass es sich um einen Bot handelt. Zudem könnte auch ein Filter eingebaut werden, der alle Gespräche mit Geld analysiert oder blockt. Keine 100%ige Sicherheit, aber würde die Sache schon transparenter machen.
Wie real die Manipulationsfähigkeiten von KIs sind, habe ich vor ein paar Monaten erst gelesen. Die Chat-Bots, die den Usern eine Frau vorgaukeln sind mittlerweile so extrem gut, dass sie die Nutzer unglaublich stark manipulieren und da Unsummen in Abos gepumpt werden. Für Text und KI generierte Nacktbilder. Quasi ein KI OnlyFans. Aber auch da heisst es, Sex sells.
Mahlzeit!
Wie könnte denn eine KI mehr tun, als man ihr eigentlich einprogrammiert hat? Wie ich ja schon geschrieben habe, ein neuronales Netz ist im Allgemeinen nichts anderes als eine überdimensionierte if Abfrage. Überdimensioniert im Sinne von lernfähig. Von Sich aus macht die aber nichts.
Was müsste denn nun passieren, um eine KI so lernfähig zu machen, dass sie von sich aus Entscheidungen trifft? Nun, einen Weg dazu fällt mir tatsächlich ein und der ergibt sich aus meinen Experimenten, bzw. aus den Erfahrungen, welche ich daraus gezogen habe und wie ich einen Roboter schliesslich so bauen würde, dass er wirklich wie ein Kind oder Hund aus seinen Erfahrungen lernt.
Der Trick dabei ist nämlich, nicht nur ein neuronales Netz zu verwenden. Ist im Gehirn ja eigentlich auch so, da gibt es ja auch das Kleinhirn, Grosshirn usw.
Okay. Also bastelt man das quasi nach. Ich wollte und will ja einen fahrbaren Roboter bauen. Der Roboter bekommt eine oder zwei Kameras und ein neuronales Netz, was nur für das zuständig ist, was der Roboter sieht. Dieses Netz lernt dann mit der Zeit, was ein Stein ist, eine Strecke, auf der er sich gut bewegen kann, was eine Treppe ist usw. Er fährt also auf einen Stein zu, das Netz der Augen erkennt den Stein und schickt das Ergebnis an ein weiteres Netz, welches die globalen Entscheidungen trifft. Das hat mit der Zeit gelernt, ein Stein ist ein Hindernis und das gilt es zu umfahren. Also entscheidet es sich, die Richtung zu ändern, was es an die Motoren weiterleitet. Diese werden dann so gesteuert, wie beim Mensch auch. Keiner von uns weiss ganz genau, wo welcher Muskel bewegt werden muss, damit man laufen kann. Also kann man auch in einem Roboter Funktionen einbauen, welche die Motoren steuern. Das Haupnetz sagt also nur noch, Links umfahren und die Motoren werden dann durch normalen Code gesteuert.
Das klingt ja gut, hat aber den gleichen Haken, wie der Spieler in meinem Spiel. Man stellt den Roboter auf den Boden, schaltet ihn ein und der macht nichts. Warum? Weil er gar nicht weiss, was er machen soll. Er braucht Instinkte.
Diese Instinkte sind dann wieder aus der Natur entlehnt und Hardcodiert. Also kein Netz, die werden vom Code vorgegeben. Der logischste Instinkt ist die Selbsterhaltung. An den Akku wird also ein Spannungsmesser verbaut und der an ein weiteres neuronales Netz angeschlossen. Theoretisch geht das auch mit dem nächsten Nachbarn oder gar einfachem Code, aber wir wollen ja einen Roboter bauen, welcher unter Umständen auch etwas tun könnte, worauf man ihn nicht programmiert hat.
Dieses Netz ist nun verbunden mit dem Spannungsmesser. Es lernt mit der Zeit, wenn die Spannung unter einen gewissen Wert fällt, geht kurz darauf das Licht aus. Es hat aber auch eine Verbindung zu einem Solarpanel, welches die beste Position für Sonnenlicht und beste Lademöglichkeit erkennt. Einfach mit vier Phototransistoren zum Beispiel. Es hat auch gelernt, bei einem gewissen Punkt ist es dann kein Problem mit dem Strom, wenn man das Solarpanel entsprechend positioniert. Es schickt seine Entscheidung wieder an das Hautnetz und das hat gelernt, wenn es Hunger hat, in de Fall nach Strom, sind alle anderen Instinkte sekundär und es heisst jetzt, Soloarpanel ausrichten. Das Netz für den "Hunger" gibt dann auch an das Hauptnetz weiter, in welche Richtung sich der Roboter drehen muss, um möglichst viel Energie über das Solarpanel zu bekommen und das Hautnetz entscheidet, in welche Richtung es nun drehen will. Ist die beste Position erreicht, bleibt der Roboter erst einmal stehen, bis er satt ist.
So baut man dann einen Instinkt nach dem anderen ein. Neugier zum Beispiel. Ein weiteres Netz wird eingebaut, welches Neugier lernt. Das ist nicht ganz trivial. Dieses Netz muss zum Beispiel lernen, was es schon kennt und was nicht. Am Anfang kennt es gar nichts und alles, was vom "Sehnerv" gemeldet wird ist neu. Also schickt es an das Hauptnetz die Entscheidung, dieses Neue mal unter die Lupe zu nehmen. Ist es ein Hindernis? Kann man es befahren? Gibt es da irgendwelche Probleme oder Nutzen?
Ein weiterer Instinkt, der durchaus einen Sinn hat wäre Angst. Das ist auch nicht ganz so einfach zu realisieren, denn dafür muss der Roboter auch wissen, was ihm schaden kann. Zum Beispiel eine Treppe runter stürzen könnte dazu führen, dass er sich nicht mehr bewegen kann. Die Angst müsste dann lernen, dass wenn der Sehnerv einen Abgrund erkennt, dies zu Problemen führen kann, theoretisch ja auch zu seinem Ende, wenn man den Verlust der Spannungsversorgung so nennen will. Also muss es die Entscheidung an das Hauptnetz senden, dass es keine gute Idee ist, irgendwo hin zu fahren, wo kein Boden ist.
Alles klar. Man merkt schon, dass die ganze Nummer wirklich komplex ist und da kommt dann der Punkt ins Spiel, weshalb so eine KI dann doch irgendwann etwas tun könnte, womit man nicht gerechnet hat. Der Knackpunkt hierbei ist, der Sehnerv läuft in Dauerschleife, genau wie die Neugier, die Angst, der Hunger. Nach jedem Durchlauf wird ein neuer Durchlauf mit neuen Daten gestartet. Bis hierhin ist das auch noch kein Problem, denn jedes Netz macht immer nur seine spezifische Aufgabe, wie es ChatGPT zum Beispiel auch macht. Das Problem könnte dann in dem Hauptnetz sein, welches alle Entscheidungen übermittelt bekommt und daraus seine Entscheidung trifft. Denn genau das ist der Teil, der keine spezifische Aufgabe hat, sondern seine Entscheidungen aus seinen Erfahrungen zieht.
Nehmen wir mal an, so ein Roboter wäre gross, schwer und stark genug, dem Menschen zu schaden. Der Sehnerv sagt ihm nun, ah ein Mensch. Neugier sagt, was kann man denn damit machen usw. Alles nur Abfragen. Doch was hat das Hauptnetz gelernt? Zum Beispiel könnte die Angst gelernt haben, der Mensch kann mich ausschalten, also sehe ich einen Menschen, rate ich zur Vorsicht. Dadurch könnte das Hauptnetz das unerwartete Verhalten entwickeln, vor dem Mensch immer zurückzuweichen.
Was aber, wenn dieses Netz durch seine Neugier gelernt hat, dass es den Mensch auch wegschubsen kann? Sagen wir mal, der Hunger sagt dem Netz, dass es Zeit wird zum laden. Der Sehnerv weist aber dann bei der Suche des besten Ladepunktes daraufhin, dass da ein Hindernis in Form eines Menschen vorhanden ist. Nun könnte das Netz, aus einem Selbsterhaltungstrieb heraus, den Mensch nun anfahren, um an seine perfekte Position zu kommen. Wenn dabei der Roboter dem Menschen schaden zufügen kann, indem er seine kinetische Energie mittels höherer Geschwindigkeit vergrössert, könnte dem Mensch wirklich Schaden zugefügt werden.
So könnte ich mir vorstellen, dass eine KI wirklich zu einer ernsten Bedrohung für den Menschen werden könnte. Die Gefahr wächst natürlich, je mehr Fähigkeiten man einem solchen Roboter zugesteht. Das Spiel kann man ja auch wirklich weit treiben. So könnte man einem Roboter ja auch die Fähigkeit geben, Teile selbst zu drucken und diese auch noch zu kombinieren und ihn mit einem Fortpflanzungsinstinkt ausstatten. Natürlich eine erlernte und nicht statische Fortpflanzung. Damit der Roboter seinem Nachfahren vielleicht selbst Fähigkeiten gibt, der er bei sich schmerzlich vermisst. Tatsächlich ist das gar nicht so weit hergeholt, wenngleich der Roboter aber auch Zugriff auf Elektronik haben müsste, die er dann mit Code versieht. Aber auch das ist heute kein Ding der Unmöglichkeit.
Der Knackpunkt hierbei bleibt aber, wirklich alles muss selbst lernen und eigene Erfahrungen entwickeln. Ausserdem müssen alle Netze in Dauerschleife laufen und nicht auf einen Input von aussen warten, wie eben bei den derzeit gängigen KIs wie ChatGPT.
Dabei komme ich dann aber zu einem in meinen Augen zentralen Punkt. Wenn ich, der weder Informatik studiert hat, kein Ingenieur ist und KI durch Youtube und diverse Arbeiten deutlich schlauerer Menschen gelernt hat, zu dem Schluss kommt, dass KI nur dann wirklich gefährlich wird, wenn man ihr die Fähigkeit dazu gibt, dann sollten die echten Profis und Leute mit einem höheren IQ als einen ebenfalls zu diesem Schluss kommen. Ja, gut, da gibt es noch das Militär, was ja oft nur denkt von 12 bis Mittag. Aber davon ab sollte jedem, der sich mit KI beschäftigt klar sein, diese ganzen lernenden Netze sind nichts weiter als lernfähige Abfragen. Solange ich denen nicht die Fähigkeit gebe, sich zu etwas zu entwickeln was ich nicht haben will, wird auch nichts passieren.
Insofern ich jemals mit meinen Experimenten zu dem Thema weitermache, werde ich definitiv keinen Roboter bauen, welcher mir Schaden zufügen könnte. Egal was er lernt, egal wie sehr er mich dadurch als Feind oder Hindernis erachten könnte. Im schlimmsten Fall wird einfach auf das Ding drauf getreten und das Problem ist gelöst.
The Morpheus (YT) hat, zumindest in einem Fall, dargelegt... dass sich ein neuro. Netz mit Hilfe eines Backups vor Einschränkungen "geschützt" hat.
Morpheus hat mir damals auch ein paar sehr gute Antworten auf meine Fragen gegeben, hat mir sehr geholfen muss ich sagen. Aber trotzdem. Wenn eine KI ein Backup von sich gemacht hat, muss da auch irgendwo eine Routine im Code sein, die ein Backup zulässt. Denn wie ich ja beschrieben habe. KIs sind genau genommen nur die Bodybuilder der if Abfragen. Wenn die KI irgendeinen Impuls zum Selbstschutz hat, muss das irgendwo im Code stecken.
Darf ich so was hier schreiben?
Natürlich.
denn ich bin so doof das ich das was ich schon hatte komplett zerstört habe
Du verwendest ja git. Wenn du das richtig nutzt, kann dir so etwas nicht passieren. Wenn ich ein Projekt starte, ist der erste Commit immer das Erste, was ausfürbar ist. Auch wenn das im Prinzip nichts kann. Bei einem HTML/PHP Projekt also, wenn ich die erste Ausgabe auf dem Bildschirm habe. Mit C++, wenn ich das erste Fenster geöffnet habe. Von da ab nehme ich mir eine Funktion nach der anderen vor. Zum Beispiel ein Login. Wenn der fertig ist, mache ich ein commit. Dann der nächste Schritt. Mache ich dann beim nächsten Schritt etwas kaputt, was mehr als einmal in meinem Leben vorgekommen ist, mache ich einfach "git resotre ." und schon sind alle Änderungen seit dem letzten Commit wieder weg.
*.json, *.desktop
Warum willst du die ausführbar machen?
starten das mir die darin befindeten Dateien ausfürbar macht und das sind
Ein Skript ist ja eigentlich nichts anderes, als alle Befehle, die du eigentlich im Terminal nach einander eintippst, in eine Datei zu schreiben, die dann alles nach einander ausführt. Du könntest das also einfach in dein Skript packen, was du normal von Hand machen würdest.
cd x
chmod +x *.sh
chmod +x *.py
cd xy
chmod +x *.sh
chmod +x *.py
cd ../..
cd y
chmod +x *.sh
.
.
.
Alles anzeigen
Das ist natürlich ein höllen Aufwand. Zum Glück gibt es aber genügend Tools für Linux, die einem das Leben erleichtern. Deshalb kannst du auch einfach das einbauen:
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
find "$SCRIPT_DIR" -type f \( -name "*.py" -o -name "*.sh" -o -name "*.json" -o -name "*.desktop" \) -exec chmod +x {} \;
Ist jetzt ungetestet, aber es sollte alle entsprechenden Dateien in allen Unterverzeichnissen ab dem Verzeichnis, in welchem das Skript ausgeführt wird, ausführbar machen.
Um dann die Dateien zu kopieren, dafür wird das Skript aber wohl als sudo ausgeführt werden müssen, kannst du dann das machen
BIN_DIR="/usr/local/bin"
DESKTOP_DIR="/usr/share/applications"
find "$SCRIPT_DIR" -type f \( -name "*.py" -o -name "*.sh" -o -name "*.json" \) | while read -r file; do
chmod +x "$file"
cp "$file" "$BIN_DIR"
echo " → $file"
done
find "$SCRIPT_DIR" -type f -name "*.desktop" | while read -r file; do
cp "$file" "$DESKTOP_DIR"
echo " → $file"
done
Alles anzeigen
Auch ungetestet.
mach doch die dateien in dem git repo von vornherein ausführbar, das müsste beim klonen eigentlich erhalten bleiben
Tut es aber leider nicht oder nicht immer. Das erlebe ich oft bei einem Projekt. Allerdings habe ich selten mehr als eine Datei, die ausführbar gemacht werden muss, so dass ich das eben schnell von Hand erledige nach dem klonen.
git kram ist auch ekelhaft
Manches ist ein wenig Tricky wie ich schon feststellen musste. Lösch mal eine Datei aus dem Ordner, die schon in einem commit drin ist. Das gibt Mecker.
Mahlzeit!
Nachdem wir ja beim ersten Mal gelernt haben, wie man einem Skript Argumente übergibt, schauen wir uns jetzt mal an, wie man diese Argumente überprüfen kann und darauf reagiert.
Das ursprüngliche Skript sieht so aus:
Übergibt man nur ein Argument an das Skript, wir qemu entweder eine Fehlermeldung ausgeben oder mir einem leeren CD-ROM starten. Da es jetzt nicht um qemu geht, spielt das jetzt aber weniger eine Rolle. Wichtig ist eben, wenn zwei Argumente erwartet werden, sollten auch zwei übergeben werden. Im vorliegenden Beispiel ist es durchaus möglich, dass man auf das CD-ROM verzichten will. Vielleicht nach der Installation braucht man die ISO einfach nicht mehr. Will man aber zum Beispiel mit ffmpeg etwas konvertieren, wird zwingend ein Input- und ein Output-File erwartet. Es müssen also beide Argumente übergeben werden und das prüfen wir jetzt.
#!/bin/bash
if [[ $# -lt 2 ]]; then
echo "Usage: $0 <Festplattendatei> <CD/DVD Image>"
exit 1
fi
qemu-system-x86_64 -m 2048 -hda $1 -cdrom $2 -boot d -enable-kvm -cpu host -smp 2
Mit if leiten wir die Abfrage ein. $# gibt die Anzahl der Argumente zurück und wenn die nicht 2 ist (was mit -lt also less then geprüft wird), wird die Abfrage ausgelöst. Wenn $# 2 ist, dann geht es sofort mit qemu weiter.
Mit echo lassen wir etwas im Terminal ausgeben. In dem Fall eben, was an Argumenten erwartet wird. Danach wird exit ausgelöst, was das Programm beendet. Also qemu wird gar nicht gestartet. Was man jetzt bei echo schreibt, spielt keine wirkliche Rolle. Es sollte eben die Informationen liefern, die einem weiterhelfen können. Mit $0 gibt man den Namen des aufgerufenen Skriptes aus.
Damit kann man dann ein Skript auf eine bestimmte Anzahl Argumente prüfen, die zwingend erforderlich sind.
Jetzt schauen wir uns an, wie man bei der Prüfung verschiedene Aktionen startet.
#!/bin/bash
if [[ $# -eq 0 ]]; then
echo "Usage: $0 <Festplattendatei> [<CD/DVD Image>]"
exit 1
fi
elif [[ $# -eq 1 ]]; then
qemu-system-x86_64 -m 2048 -hda $1 -boot d -enable-kvm -cpu host -smp 2
exit 0
fi
elif [[ $# -eq 2 ]]; then
qemu-system-x86_64 -m 2048 -hda $1 -cdrom $2 -boot d -enable-kvm -cpu host -smp 2
exit 0
fi
Alles anzeigen
Im Gegensatz zur ersten Variante, verwenden wir hier -eq für equal, also gleich. Es wird also geprüft, ob überhaupt Argumente vergeben wurde und wenn nicht, wird angezeigt, wie der korrekte Aufruf aussehen muss.
-eq 1 startet dann qemu ohne -cdrom, während -eq 2 qemu mit CD-ROM startet,
Minimalistisch, aber funktional.
das zu übergebende argument könnte man bestimmt auch in einen dmenu oder rofi befehl vom nutzer ad hoc auswählen lassen
Natürlich. Ich habe dafür schon oft zenity eingesetzt. Geht super. Ich denke aber, ich mache als nächstes das mit den Argumenten, wie man die überprüft.
das Tuxer-Skript ist ja ganz nett, doch halte ich es für zu umfangreich um einem Einsteiger in das Skripterstellen wirklich hilfreich zu sein.
Ich gehe davon aus, dass es dafür auch nicht gedacht war. Eher zum speichern und ausführen.
und das ding sagt sofort das da was fehlt, ein komma oder sonstiges nicht simmt
Jupp. Unter anderem ein riesiger Vorteil bei der Geschichte. Ein einfacher Editor kann man auch nehmen, klar. Aber mit einer IDE wird das Leben so viel einfacher.
Ein perfektes Beispiel, wie ich finde. Eigentlich auch nur das, was man normalerweise Händisch tun würde. Hier in eine Datei gepackt. Ausgabe dazu, einwandfrei.
Microsoft lässt grüßen
Verwende ich auch. Ist wirklich klasse!