Bash-Versteher dank Strace
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Title of Series | ||
Part Number | 58 | |
Number of Parts | 59 | |
Author | ||
License | CC Attribution - NonCommercial 2.0 Germany: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor. | |
Identifiers | 10.5446/20958 (DOI) | |
Publisher | ||
Release Date | ||
Language | ||
Production Place | Sankt Augustin |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
00:00
Computer programmingSoftware testingBitDebuggerPhysical systemGastropod shellScripting languagePlastikkarteSpeciesCarriagewaySoftwareMilitary baseUMLXMLComputer animation
01:16
Assembly languageComputer hardwareCalculationSelf-organizationSoftwareUNIXComputer programmingLibrary (computing)Video cardPAPReal-time operating systemUniformer RaumComputer configurationBitComputer fileDebuggerUniverse (mathematics)Group actionIntelCluster samplingMereologyMoment (mathematics)Physical systemRadical (chemistry)Term (mathematics)Device driverQuicksortSystem callConfiguration spaceVAX/VMSCoprocessorProcess (computing)ModularityDEBUG <Programm>Presentation of a groupGastropod shellPoint (geometry)Control flowPolar coordinate systemLINUXKernel (computing)Web pageDirectory (computing)Film editingSource codeComputer fileGene clusterOpen sourcePasswordGraphics processing unitWebsiteAktion <Informatik>NeuroinformatikSinc functionSingle-precision floating-point formatMultiplication signFreewareSpacetimeOperating systemInterface (computing)StatisticsUNIXTEXUniformer RaumAlgebraComputer fileIntelDataflowGastropod shellLINUXKernel (computing)CarriagewayXMLComputer animationLecture/Conference
08:01
SequenceComputer clusterStaff (military)Random matrixUNIXZahlString (computer science)Function (mathematics)Physical quantityComputer programmingRead-only memoryType theoryWindowProgrammer (hardware)Computer configurationCloningArithmetic meanBitComputer fileFunctional (mathematics)Sheaf (mathematics)Line (geometry)Letterpress printingLinear regressionMoment (mathematics)Physical systemRadical (chemistry)Term (mathematics)Device driverNumberEmailSystem callCounterexampleComputer virusParameter (computer programming)CASE <Informatik>Process (computing)Directory serviceBinary fileError messagePressureGastropod shellPoint (geometry)IP addressoutputOpen setLINUXKernel (computing)Reading (process)POSIXProcess (computing)Scripting languageApache <Programm>Address spaceComputer fileClient (computing)Escape characterPasswordMultiplication signWritingRight angle1 (number)CodeSimulationExecutive information systemLevel (video gaming)LeadDOSBefehlsprozessorTerminal equipmentDAWIDForced inductionMaxima and minimaNIL <Programmiersprache>Software developerSubstitute goodHIT <Programm>NeWSNFSWEBGastropod shellAdditionSet (mathematics)outputHOLLINUXKernel (computing)MIKE <Programm>PICA <Bibliotheksinformationssystem>Module (mathematics)Insertion lossEnhanced IDEAliasingClient (computing)HANS <Datenbanksystem>Block (periodic table)FlagCarriagewaySocket-SchnittstelleBayerische Landesbibliothek OnlineComputer animation
16:57
Operating systemCodeTouch typingComputer clusterGame theoryFunction (mathematics)Computer programmingMS-DOSLibrary (computing)Type theoryModemEASY <Programm>WindowModule (mathematics)Integrated development environmentArithmetic meanBitComputer fileDebuggerStructural loadMereologyMoment (mathematics)Physical systemDevice driverHeat transferWINDOWS <Programm>System callCounterexampleParameter (computer programming)CASE <Informatik>Process (computing)Normal (geometry)ModularityBinary fileError messageRootPresentation of a groupSIMPL <Programmiersprache>Gastropod shellOpen setKernel (computing)S3-ProblemReading (process)Process (computing)Sign (mathematics)Computer fileDifferent (Kate Ryan album)TimestampContrast (vision)TypFlagSymbol tableMultiplication signCase moddingRight angleSoftwareRothe-VerfahrenNIL <Programmiersprache>Local ringSubstitute goodDevice driverVersion <Informatik>SoliDRoundingGNU <Software>AliasingNoten <Programm>Sound <Multimedia>FlagStack (abstract data type)Bayerische Landesbibliothek OnlineComputer animation
25:53
Medical imagingTouch typingStaff (military)String (computer science)Function (mathematics)Computer programmingType theoryWindowComputer configurationComputer fileDoubling the cubeComplex (psychology)Object-oriented programmingStandard errorLink (knot theory)System callComputer virusParameter (computer programming)CASE <Informatik>Error messageGastropod shellPoint (geometry)outputWordScripting languageAliasingSign (mathematics)Sicker <Programm>Computer fileEscape characterQuoteDifferent (Kate Ryan album)Single-precision floating-point formatMultiplication signCarriagewayDemo (music)Game controllerNIL <Programmiersprache>Device driverHIT <Programm>Gastropod shellSoliDACCESS <Programm>Hash functionMIKE <Programm>Aliasing9 (number)IBASFlagCarriagewayBayerische Landesbibliothek OnlineComputer animation
34:49
Medical imagingImplementationNumerical analysisCalculationFeedbackZahlFunction (mathematics)Computer programmingVariable (mathematics)Software testingFehlererkennungProgrammer (hardware)Fiber bundleHecke operatorBitComputer fileDoubling the cubeFunctional (mathematics)Sheaf (mathematics)Line (geometry)Compact spaceMereologyCountingNumberCellular automatonLink (knot theory)System callComputer virusCoprocessorCASE <Informatik>Binary fileError messageRandomizationGastropod shellOpen setWordWeb pageOnline helpProcess (computing)Frame problemExpressionGraph coloringRegulärer Ausdruck <Textverarbeitung>Sign (mathematics)Regular expressionComputer filePasswordQuoteLoginSingle-precision floating-point formatMultiplication signRule of inferenceSpacetimeRight anglePattern languageInformationUNIXDisplayData terminal equipmentMaxima and minimaVersion <Informatik>NeWSParameter (computer programming)Gastropod shellHash functionElectronic mailing listRegulärer Ausdruck <Textverarbeitung>Value-added networkComputer animation
43:45
Computer hardwareUNIXFunction (mathematics)Computer programmingVariable (mathematics)PAPSoftware testingUniformer RaumCloningLine (geometry)MereologyPhysical systemAngleLink (knot theory)GodMatching (graph theory)Computer virusParameter (computer programming)Process (computing)Directory serviceState observerInformation securityGastropod shellPoint (geometry)Router (computing)CuboidLINUXKernel (computing)AliasingExpressionDesire pathComputer fileZoom lensSlash <Programm>Multiplication signComputer wormPattern languageHospital information systemLinseNIL <Programmiersprache>Device driverHIT <Programm>NFSGastropod shellSoliDHash functionArmValue-added networkBuilding information modelingComputer animation
52:41
UNIXType theoryVariable (mathematics)Software testingPropositional calculusComputer configurationComputer fileThermal expansionDataflowSystem callParameter (computer programming)CASE <Informatik>Directory serviceALT <Programm>Binary filePoint (geometry)Online helpExpressionRegulärer Ausdruck <Textverarbeitung>Computer fileCondition numberMultiplication signSpacetimeCodeTask (computing)ICONPhysical systemComputer fontKernel (computing)PICA <Bibliotheksinformationssystem>Regulärer Ausdruck <Textverarbeitung>PasswordTypSocket-SchnittstelleValue-added networkComputer animation
58:42
CodeData managementSchaleUNIXComputer programmingSemiconductor memoryType theoryComputer fileLimit (category theory)Maxima and minimaObject-oriented programmingThermal expansionNumberSystem callLengthParameter (computer programming)CASE <Informatik>UpdateError messageGastropod shellPoint (geometry)LINUXKernel (computing)Reading (process)Web pageOnline helpStress (mechanics)Crash (computing)Scripting languageExpressionRegulärer Ausdruck <Textverarbeitung>Regular expressionComputer fileDifferent (Kate Ryan album)Fitness functionGoogleSingle-precision floating-point formatLengthMultiplication signSIZAtomic nucleus2 (number)Stack (abstract data type)SpacetimeSignalTask (computing)Queue (abstract data type)MAX <Programm>Kernel (computing)Sound <Multimedia>Regulärer Ausdruck <Textverarbeitung>SIZComputer animation
01:04:42
DampingImplementationType theoryVariable (mathematics)BitComputer fileTerminal equipmentFunctional (mathematics)Line (geometry)Physical systemRadical (chemistry)Cellular automatonParameter (computer programming)CASE <Informatik>Error messageC-ShellGastropod shellExterior algebraWeb pageReverse engineeringScripting languageAliasingFilm editingSound effectCursor (computers)Computer fileEscape characterKey (cryptography)Different (Kate Ryan album)Multiplication signCodeKernel (computing)Regulärer Ausdruck <Textverarbeitung>Ende <Graphentheorie>Computer animation
01:11:11
CodeSoftwarePlotterType theoryProbability density functionBitComputer fileTerminal equipmentLine (geometry)Limit (category theory)Projective planeNumberStapeldateiVersion <Informatik>Server (computing)Parameter (computer programming)Metropolitan area networkGastropod shellPoint (geometry)InternetmakeReading (process)Scripting languageApache <Programm>Computer filePDF <Dateiformat>Network socketMultiplication signDigital photographyMessage passingRight angleDefault (computer science)PlotterTransmitterServer (computing)UpdateNumber theoryEIBPrint <4->makeKernel (computing)PICA <Bibliotheksinformationssystem>Ende <Graphentheorie>Value-added networkComputer animation
01:17:40
CodeCalculationVolumeTerminal equipmentRevision controlSoftware bugLINUXWeb pageHTMLScripting languageSource codePDF <Dateiformat>BootingNeuroinformatikLoginGoogleVolume (thermodynamics)Military baseMAX <Programm>Gastropod shellAbsolute valueInsertion lossScripting languageWindows RegistryEnde <Graphentheorie>XMLComputer animationSource code
01:20:29
Computer animation
Transcript: German(auto-generated)
00:08
Guten Morgen, der Arte noch so. Ja, wie gesagt, wie er schon gesagt hat, ich mache einmal sehr gerne Bash-Skripte, Shell-Skripte, das hat sich einfach so ergeben und bin aber auch viel Systemproblemen auf die Spur gekommen mit S-Trace und da hat sich dann übernachher
00:22
herausgestellt, dass S-Trace auch ein ganz tolles Tool ist, was ich letztes Jahr vor zwei Jahren vorgestellt habe, um überhaupt zu verstehen, wie die Shell funktioniert und auch das schön zeigen zu können. Wie Shell funktioniert, gestern hatte ich schon einen Workshop gemacht, wer war im Workshop? Im Workshop waren wenig, waren mehr Leute wie hier und wenn man halt mit der Shell anfängt, da erzähle ich dir so ein bisschen die Shell-Einführung, was
00:44
White-Cards sind und Gänsefüßchen und Quoting und sowas. Ich habe immer viel erzählt, das muss man alles selber probiert und wirklich erlebt und ins Brückenmark gekriegt haben und damit es besser ins Brückenmark geht, geht es mehr zu, wenn ich wirklich was sehen und testen und messen kann und das S-Trace ist ein tolles Tool, um dann wirklich zu sehen, was passiert
01:03
und eventuell dann auch beim Debuggen herauszufinden, was der Aufruf, wenn man mal sieht, wie komisch das nächste Programm aufgerufen wird, dann versteht man auch, was man der Shell falsch gemacht hat. Ja, seit Kurzem arbeite ich bei der Bosch und da die mir hier den Aufenthalt zahlen, eine Minute Werbung für Bosch Sensortech. Die machen ganz tolle
01:23
Beschleunigungs-Sensoren und so Zeugs, was ihr alle hoffentlich in euren Handys drin habt für Gyro, Magnet, keine Ahnung was und die machen auch noch andere Hardware, die nicht unannounced ist, die hoffentlich nächstes Jahr in euren Handys überall drin ist. So eine kleine Tochterfirma der Bosch, weil Bosch sonst ein bisschen Automotive-Elektronik macht, hat ganz viele Erfahrungen mit Mems, mit diesen mikromechanischen Sensoren hat
01:43
und die gleiche Technologie eben auch im Kleinkram, keine Ahnung wie Handy, Schnickschnackes und demnächst mehr Vino-Sensoren. Ende der Werbung und ja, und ich bin noch nicht dazugekommen viel mehr vorhin, das ist meine erste Bosch-Folie gewesen, jetzt hat alles sehr Bosch, Rest kommt dann mal. Zu mir noch kurz, Open Source macht sich schon ganz lang,
02:06
schon in der Schule haben wir Open Source gemacht, da hieß das noch nicht so, da konnten wir wenig Englisch, aber die drei Gymnasien bei uns in der Straße haben alle das gekriegt, was wir bei uns in der Schule gemacht haben. Mein erstes Open Source-Tag an der Uni war dann schon Tech, haben wir 1986 angefangen zu implementieren und portieren, hey,
02:20
das war auch schon frei, noch viel freier, man durfte alles damit machen, so freien Lizenz, dass es bei Debian mal schwierig war, VMS war nicht so frei, aber war ein schönes Betriebssystem, das viel mehr konnte, wie Unix und Linux heute, aber so ganz langsam entwickelte sich das Linux auch dahin, was VMS damals schon konnte, Clustern und andere Sachen, immer noch eine coole Sache. Dann habe ich irgendwann mal
02:41
gesagt, ja ich habe viel mit PCs zu tun gehabt und so Assembler kamen und auch Hardware gespielt schon seit der Schulzeit und diese Intel-Prozessoren waren so gruselig mit ihren vier Registern und da war ich mal ganz froh, mit Intel nichts mehr zu tun zu haben, bis dieses blöde Linux kam, da war endlich frei Unix-Quellen und aber da muss man halt wieder ein Intel-PC für haben und dann habe ich es halt auch wieder angefangen und
03:01
dann gab es da so Grafikkarten, die eben angeblich funktioniert haben, da habe ich meine Grafikkarte für meinen Linux-PC gekauft und prompt tat die natürlich auch nicht, dann schreibt man sich halt einen Grafik-Server für, das habe ich dann auch relativ lang gemacht, so lange, bis ich dann also einfach von der Uni weg war, ein bisschen weniger Zeit hatte für so ein 8-Stunden-freier
03:21
Software-Job und habe dann bei S&C eben Beschlüpte, S3s und vieles andere gemacht und jetzt seit kurzem bei der Bosch Sensortech mache ich Beschlüpte und S3s und andere Sachen für Hardware. Ja, warum das Ganze? Also dieser Teil des Vortrags ist mal initiiert mit dem lieben Kollegen bei S&C, wo wir abends mal noch einen Kernel-Treffer für irgendwas gebastelt haben und ich
03:41
habe dann gesagt, ja jetzt haben wir das Kernel-Modul gebaut, das hat alles toll getan, das Make-up hat funktioniert und ich habe gesagt, jetzt kannst du insmod-standpunkt.co, damit es schnell geht und kam die Frage zurück, kann denn insmod wildcards? Und dem werden wir jetzt heute nachgehen, ob insmod wildcards kann und dann ist so etwas, was ich ganz oft so echo, Gänsefüßchen,
04:00
hallo, wofür braucht man denn diese Gänsefüßchen? Oder so Sachen, also soweit werden wir wahrscheinlich in der kurzen Zeit nicht kommen, cut, irgendwie Dateiname, pipe sort, so most useless use of pipes and cut und irgendwas, einfach mit den S3s könnte man dann schön sehen, wie so eine Pipe aufgebaut wird, wenn das mehr ist und man kann dann wirklich gucken,
04:21
an welcher Stelle die Pipe kaputt geht, aber das ist in der ersten Stunde S3s und schnell, ich kliebe hier fest, Moment, weg. Und was macht den Feinstandpunkt C so alles Lustiges und Schönes? Da werden wir dann auf jeden Fall
04:43
hinkommen. S3s, habe ich vor zwei Jahren schon mal gesagt, ist einfach ein System-Call-Trace-Tool, da werde ich gleich ein paar Beispiele für zeigen, wo man einfach sehen kann, welcher einzelne System-Call-Aufruf, Kernel-Aufruf, einen Prozess macht und da sieht man also alle die Daten öffnen, aus einer Datei was rauslesen und so Zeugs, den nächsten
05:01
Prozess aufrufen und da kann man schön zugucken, das macht man von außen auf den Prozess, das heißt, man muss das Programm nicht für Debug übersetzen, kriegt relativ viel mit, was da so abläuft in Echtzeit, so schnell es halt geht mit dem Rechner und ist dafür ein relativ schönes Tool, einfach mal von außen drauf zu gucken, was macht mein Rechner, was macht mein Tool
05:20
und immer dann auch wenn irgendwas crasht, kann man einfach mal S3s programmen, dann sieht man, was so die letzten Aktionen waren und da kriegt man dann eine Idee für, eine von den letzten Aktionen kann das ja vielleicht ausgelöst haben, das letzte Fall, das er geöffnet hat, ist ein Konfig-Fall des Schimmelichs und so Zeugs. Vor zwei Jahren, da gibt es auch ein schönes Paper zu. Das könnt ihr alles in dem Paper von vor zwei Jahren nachlesen, die Doku ist ja individuell so schön, gibt man Pages
05:43
für alles, also wie S3s überhaupt geht, natürlich mein S3s, 10 von den 40 Optionen habe ich letztes Jahr erklärt, zwei davon verwende ich glaube dieses Jahr wieder und das System-Interface ist das System-Call, das macht das P3s, wenn es so was interessiert, da kann man mal mein P3s, kann man sich so ein S3s selber schreiben, das ist das gleiche kernel interface
06:01
mit dem auch der Debugger funktioniert, mit dem kann ich mit P3s, kann ich irgendeinen anderen Prozess kontrollieren, machen, tun und L3s ist noch so ein praktisches Tut für leibraue D3s, auch nicht topic hier. So, da ist ein kleines bisschen Übungsschritte, nachher geht es gleich ins Terminal, dann werde ich das alles vortun,
06:20
man kann einfach sagen S3s, irgendein Programm und gucken, was das so macht und dann sieht man, wie das durchploppert, das ist jetzt glaube die Folie, die ich nicht habe, weil das geht jetzt wirklich schon die S3s Details rein, aber können wir auch einmal kurz lassen, wäre eh die letzte Folie, wie komme ich hier zurück, da, S3s irgendein Programm oder S3s minus,
06:42
sieht man schon gar nicht, wenn man viele Programme, viele Http-Deams hat, dann tut er die alle dreißen, was dahintersteht, S3s minus P-Prozess-ID, das ist das, was ich gleich, den Rest könnt ihr erst mal vergessen und ja, das waren die Folien, jetzt back to something completely different, die Praxis.
07:02
Netz ist weg, okay, das brauche ich jetzt glaube auch nicht mehr, den brauchen wir gar nicht, viel Platz. Wie ist das wieder, Schriftgröße ganz hinten? Kann es irgendjemand nicht lesen, kann mich jemand nicht verstehen? Okay, also die Organisatoren haben diesen Vortrag ganz bewusst
07:24
vor die Mittagspause gelegt, dass auch wenn es schnell geht, ihr jederzeit raus dürft, auch schon vor der Mittagspause, ihr dürft auch die Mittagspause machen, es kann passieren, dass ich ein bisschen überziehe, aber ich nehme das niemanden persönlich und ich bin auch nachher noch für Fragen da, es gibt zu diesem Vortrag auch ein Paper, das noch nicht auf der Webseite ist,
07:41
das habe ich schon mal geschrieben, wo man dann irgendwelche Prosaat zu diesem Thema durchlesen kann, was nicht unbedingt mit dem was zu tun hat, was jetzt passiert. So, ich will jetzt erklären, wie die Bash funktioniert, also erst mal schön 5 Minuten S3, also man kann so was S3 zu gucken, wie das geht, das Kommando PWD, was macht das Kommando PWD,
08:01
macht Print Working Directory, genau so wie ich bin, und S3, PWD macht ganz, ganz viele Sachen, die ich jetzt alle nicht erklären möchte. Man sieht, S3 ist immer so, man sieht den System Call, den Kernelaufruf, mit allen Parametern, da muss man jetzt immer ein bisschen wissen, was der System Aufruf macht, ob das Parameter sind,
08:21
die rein in den Kernel gehen, hier zum Beispiel das Open, gibt einen Dateinamen einen Kernel und er möchte das Read-Only öffnen und so was, da sind manchmal dann auch Parameter dabei, da kommen wir gleich, und dann kommt hinten immer gleich 3, das ist der Rückgabewert, fast alle Kernel Calls liefern immer bloß eine Zahl oder hier oben mal eine Adresse zurück. Mehr kann von einem POSIX System Call nicht zurückgegeben werden,
08:43
und hier in dem speziellen Fall, dieser Open blablabla hat irgendwas versucht zu öffnen, da kommt eine Minus 1 zurück, bei Open kann man dann in One Open in Section 2, also wenn man das dann genau wissen möchte, Man 2 Open, weil 2 die Kernel Calls sind, kann man dann genau nachlesen, was sind die Parameter denn wirklich,
09:00
wenn man es aus dem Output nicht erahnen kann, und es gibt eigentlich immer irgendwo noch eine Section Return Value, wenn man dann blablabla, kann man das nachlesen, wie es tut, und damit dann den Output analysieren und verstehen. Hier sagt er halt Minus 1, bei Open heißt es, es ging schief, und dann ist das S3 noch so nett und tut gleich noch so eine Errorvariable Error mit ausgeben, da steht der Wert Enoend drin, das ist vordefiniert in den C-Hetterfalls,
09:25
und sogar noch den Errortext, den man mit der Funktion P Error kriegen wird, das heißt, man hat die Datei nicht gefunden, man hat versucht zu öffnen, geht nicht, der nächste, da geht er halt weiter, ich will ECC Type öffnen, öffnet das woanders, anderer Pfad, also dann 3, das heißt, da gibt es jetzt den Fall Descriptor 3 zurück,
09:41
und man kann dann unter Datei Name 3 mit der Datei irgendwas treiben, und das nächste, was der treibt, ist jetzt z.B. F-Stat, mach mal irgendwas mit 3, nehme ich den Status ausgeben, und jetzt kommt hier eben der Status zurück, das muss man jetzt im F-Stat wissen, das ist ein Rückgabeparameter, da sagt er, Mode, E-Effekt, braucht uns alles nicht interessieren, die Datei hat die Größe blablabla, 0 heißt mit dem Fall ging gut.
10:03
Dann macht er wieder noch irgendwas, was uns gar nicht interessiert, und schließt das Ding wieder, und das war so die Bearbeitung von 3. Und so geht es halt in dem S3's Output, bei GetCWD, letztes Beispiel, Get Current Working Directory, und dann, wenn man halt guckt, dem sagt man irgendwie, ich hätte gern bis zu 4096 Zeichen, und das ist das, was aus dem Kernel zurückkommt,
10:21
da hat man wohl offensichtlich, da darfst du hinschreiben, bis 4096 Zeichen, und der Kernel gibt in dem Speicherbereich dann den String zurück und sagt, das waren aber übrigens 42 Zeichen, die ich dir gegeben habe, blablabla, Dann macht er hier write die Ausgabe auf Fildeskriptor, das ist Output. So, die 3 Unix Fildeskriptoren, Input, Output, Error, 0, 1, 2.
10:42
Mit dem Grundwissen gucken wir jetzt, was diesn bestmacht. Ich kann nicht nur S3's und Programme zu was machen,
11:08
Ich kann jetzt auch hergehen, da hat meine Shell, die hier gerade läuft, hat die Prozess-ID 4010. Und wenn ich jetzt hier oben hergehe, drehe ich mir doch bitte mal den Prozess mit 4010.
11:22
Das kann ich mit jedem anderen schon laufend im Programm aufmachen, wenn irgendwas erst mal lang hochstarten braucht. Ich brauche drei Minuten, so mein Apache oder so was mal. Dann lässt man den mal hochstarten und macht dann s3s-p, lasst den mal zugucken und so was. Dann kann ich jetzt zugucken, was die Shell macht. Die macht nichts. Das ist nicht ganz wahr, die sagt jetzt irgendwie Read, sie will von null Input was lesen.
11:43
Wenn ich jetzt hier unten anfange zu tippen und mache ein E, dann kriegt die Shell wirklich das E zurück und schreibt dann ein E auf, falls es gibt da zwei, das ist ein Error. Das ist halt der Output, der auf den Errorkanal geht, wenn es nicht so schnell umgelenkt wird. Das ist das Echo für hier unten, weil das wirklich schon der Best-Prozess macht.
12:02
Dann wartet er wieder und dann kann ich, wenn man sieht, wie man da tippt, der Moment. Und man sieht, dass das mit den Größen wird. Wird so arrangiert werden, dass man beides gut sieht. Echo, wenn ich da auf Return drücke, sieht man in diesem ganzen Gefrickel irgendwie auch vielleicht mal,
12:28
dass er das Echo-Hallo irgendwo ausgegeben hat. Das sind jetzt ganz viele Sachen, die uns nicht interessieren, die wir jetzt langsam wegzaubern würden.
12:44
Ah, das ist jetzt schon mein Prompt. Jetzt bin ich weitergegangen. Echo, Write, 2, irgendwas. Das ist der Prompt mit irgendwelchen Escape-Sequenzen, für was weiß ich was löschen, blablabla, was er hier vorne hingemalt hat. Das Hallo muss ein bisschen weiter oben sein.
13:01
Und sagen im S3s, ich hätte gerne nur noch keinen sagen, was man so wirklich angegeben haben möchte. Read, Write, Open. Und execve ruft neue Prozesse auf. Wenn ich sowas mache, dann kann ich Echo, dann sehe ich nur noch das Lesen schreiben, Hallo. Und dann sieht man auch irgendwie, ah, das Hallo kommt an und dann kommt wieder der nächste Prompt.
13:24
Der Output von Echo geht auf 1, der geht auf 2. Weil das die Shell macht für Echo und sonst was. Aber der wirkliche Output von meinem Kundenmeiner geht auf 1, das gibt nur 1 Standard Output. Jetzt war irgendwie... Ja?
13:50
Ah, stimmt, da war was. Die Frage war, ob das Blablabla-Punkt mit meiner Fensterzeile oben zu tun hat. Ja, jetzt wo es auch jemand aufragt. Dann ist das wahrscheinlich die Escape-Sequenz, die dem X haben, sagt mal da oben mal irgendwas rein.
14:03
Damit man das besser sehen kann, und diese Punkte gibt es bei S3s minus S, ich mache mal die Strings etwas länger, dass man mehr sieht, dann kann man das auch... Das brauche ich bloß return drücken, dann sieht man, was er insgesamt ausgibt. Alle 70 Zeichen vorher dabei, ein paar weniger Zeichen einfach aufhören, damit es nicht so lang wird. Escape irgendwas, PTS1, blablabla.
14:20
Dieses PTS1, das ist hier oben die Titelzeile von meinem X-Term. Und hier geht dann wirklich der eigentliche Prompt los. Dann noch ein Carriage-Return. Das hat irgendwas gerade mit da oben zu tun. Aber wollen wir gar nicht wissen. Wir wollen jetzt eigentlich wissen, kann Winsmod write Cards.
14:41
Und da war das dann irgendwie so, wir haben hurra irgendwie unseren tollen driver.co übersetzt. Und der lag dann da irgendwie rum. Jetzt nur so als Beispiel. Und dann Winsmod darf ich natürlich als normaler Benutzer jetzt erstmal nicht aufrufen. Aber nur so als Beispiel.
15:00
Wir sehen das jetzt gerade eh noch nicht gleich. Winsmod.co. Und dann war die Frage, kann Winsmod.co, die Frage, kann Winsmod mit Valtcars umgehen oder nicht? Da kam sofort ein Nein und muss es nicht können. Und das ist genau das, wo wir jetzt auch hinwollen. Warum ist das so? Das kann ich jetzt an diesem Beispiel leider noch nicht demonstrieren.
15:24
Wer vor zwei Jahren aufgepasst hat, weiß schon warum. Was man jetzt erstmal sieht, ist Read-Write und irgendwie. Und das, was mich eigentlich interessiert hätte, habe ich nämlich hier schon mal zu suggestiv hing. Ich würde gern die execs alle sehen. Wie ruft er die anderen Prozesse auf? Weil Unix ja immer so einen neuen Kommando aufrufen ist. Ich mache einen Fork, was in Linux zwischen Clone heißt.
15:43
Und mache dann einen exec mit dem neuen Prozess. Die sehe ich jetzt alle nicht. Nur die sehe ich deswegen hier nicht, weil ich dem S3 nicht gesagt habe, Minus F. Eine der wichtigsten Optionen, folge den Kindprozess. Sonst wird jetzt erstmal nur diese Shell selber getraced. Und alles, was ich da drin tippe.
16:00
Und alles, was die Shell wieder ausgibt. Und da haben wir dann auch schon gesehen, das Echo war ein Shell-Internist-Kommando. Dann ist ein Shell bildet. Deswegen habe ich den Output von Echo gesehen. Also, man könnte das Gegenbeispiel machen. Wenn ich jetzt hier z.B. auch bin, Echo, Hallo sage.
16:22
Und da Return drücke. Dann sehe ich hier noch, ich habe das Return gedrückt. Das ist das Echo von dem Return. Und dann kommt nur noch der Prompt und irgendwelche Signale von dem Signalschalt. Ich sehe jetzt nicht, dass auf alle Skripte alles Hallo ausgegeben wird. Weil ich nicht sehe, wie das extra Programm aufgerufen wird. Und deswegen gibt es hier auch so ein Minus F. Dass man der Shell und all ihren Kindern, die sie startet folgen kann.
16:43
Damit man genau diese Sachen sehen kann. Das Klo interessiert mich glaube ich nicht. Aber mal gucken. Wenn ich jetzt das gleiche nochmal möchte mit dem Bin-Echo. Und auf Return drücke. Oh, jetzt kommt wieder ganz viel. Dann müssen wir ein bisschen hoch scrollen.
17:01
Jetzt machen wir einmal das Fenster groß. Wo es denn interessant wird. Da habe ich das Return gedrückt. Dann kommt ein Clone. Er macht einen neuen Prozess. Der Colonel sagt mir noch, der Prozess heißt so und so viel. Und sobald ich mit dem S3 mehrere Prozesse sehe, kriege ich hier vorne angezeigt, von welchem der Prozesse,
17:23
der eigentlichen Shell, die war glaube ich 4010, genau. Oder jetzt dem neuen, der Output ist. Und da sieht man jetzt der neue Prozess. Der liest irgendwo drei, keine Ahnung, irgendwie. Und kriegt, man hätte gern ein Zeichen, kriegt aber irgendwie nichts. Null Zeichen zurück. Keine Ahnung, was das bedeuten hat.
17:41
Wenn man es nicht versteht, man ignorieren. Dann kann man immer, muss ja nicht alles wichtig sein, was hier passiert. Dann sieht man aber, hier wird Bin-Echo aufgerufen. Und das ist jetzt, was wir öfter brauchen werden. Der Exec-Output wird halt schon System-Call. Kriegt einmal das Programm übergeben mit dem absoluten Pfad. Führt mir dieses Programm aus. In dem Programm werden die ganzen Parameter und Argumente übergeben.
18:01
Im ersten Argument, das ist diese ARC-V-Liste, Argument-Values. In ARC-V vor Null oder $0 in der Shell und solchen Sachen. Da steht dann nochmal der Programmname selber drin. Das muss nicht mit vollem Pfad sein. Die können sich durchaus unterscheiden. Und es gibt ja Programme, die gucken nach, mit welchem Namen wurde ich aufgerufen. Und wenn ich mit Copy aufgerufen wurde, dann kopiere ich.
18:21
Und wenn ich mit RM aufgerufen wurde, dann lösche ich. Und wenn ich mit irgendwas, dann bin ich, keine Ahnung, was. Dann dürfen die da nachgucken. Mit welchen Sim-Links und solchen Sachen kann man machen. Mit welchem Namen wurde ich heute aufgerufen und verschieden. Und dieses Bin Echo hat noch genau ein Argument mitgekriegt. Da steht Hallo drin. Und diese 139 Variabel, die das mit eckigen,
18:41
kann man als Kommentar mal drinstehen. Da steht das ganze Environment. Vortrag von zwei Jahren. Die kann man gucken, was das so macht. Mit S3s minus V zeigt da eben dann alle an. Dann wird der Bild schon noch voller. Da sieht man jetzt irgendwie auf jeden Fall, Bin Echo wird ausgerufen als externes Programm. Und ich kann genau sehen, wie das Ding aufgerufen wurde. Und das Read. Jetzt fängt er an, weil ich gesagt habe, ich will alle Read sehen.
19:01
Dann sieht man jetzt, wie er anfängt. Er öffnet die C-Library als Fall Descriptor 3. Und dann fangen wir halt mal von der libc an, die ersten 832 bytes zu lesen. Daran kann er dann wohl erkennen, ob das eine 11-Library ist. Und wie das weitergeht. Und da kann man jetzt schön verfolgen, wie Schertlibraries reingelesen werden. Das würden wir euch jetzt gerade nicht wissen.
19:23
Deswegen klein beschränken wir uns jetzt das Read. Das Read und Write hat seine Schuldigkeit getan. Files öffnen er vielleicht noch. Jetzt geht es mir wirklich darum, wie werden Prozesse aufgerufen. Dann wird das immer weniger geblubbert. Ich brauche das OpenEich auch nicht. Das reicht mir jetzt mal.
19:41
Also jetzt nur, wie werden Prozesse aufgerufen. Was geht da so alles und was kann da auch schiefgehen? Und jetzt ist das relativ übersichtlich. Bis auf diese blöden Signale. Aber das ist irgendwie eklig. Man kann die irgendwie wegkonfigurieren und sagen, ich will das und das nicht sehen. Das probiere ich jetzt auf die Schnelle nicht aus. Steht auch irgendwo.
20:00
Und da sehe ich jetzt im Wesentlichen wieder, hallo, war easy. Jetzt wollen wir das InSmart nochmal probieren. Kann InSmart. Und da sieht man jetzt, wie InSmart aufgerufen wird. Und InSmart beschwert sich sofort, dass ich jetzt nicht rot bin. Deswegen darf ich das nicht. Das merke ich dann, weil ich nicht alle System-Callzater versucht, irgendwas im Körnl aufzurufen.
20:21
Und da hört man, genau die Minus 1, die man vorher bei dem Open auch schon mal gesehen hat. Und statt E-No-Ent, E-No-Entry, ich habe die Datei nicht gefunden, es kommt jetzt E-Perm, E-Permission Denied. Und dieses P-Error sagt mir immer schön Text, weil Minus 1 zu E-Perm oder keine Ahnung, Return Code 17. Das ist nicht so jedermanns Sache.
20:41
Aber wo ich hin will, ist da. Ich habe auf der Kommandozelle InSmartStand.co eingegeben. Und was aber wirklich passiert ist, driver.co. Weil die Shell diese Wildcards schon expandiert hat. Und das ist eben ein ganz, ganz wichtiges Konzept, das man wissen muss. Und man immer wissen muss, was möchte man haben oder nicht.
21:01
Lange Rede, kurzer Sinn, ist halt, die normalen Unix-Tools brauchen sich mit Wildcards erst mal keine Gedanken machen. Ganz im Gegensatz zu anderen Command Line-Tools und Betriebssystemen und so was. Auch bei MS-DOS, Windows irgendwie und so was. Die kriegen das halt übergeben. Und dann geht jedes Programm über LaiPoW oder mit eigenem Code her und denkt sich mal an den Standpunkt K.O.
21:22
Was möchte mir der Benutzer sagen? Da steckt das einfach in dem Shell-Konzepten-Unix drin. Man hat das an einer Stelle, die mit Simple und der expandiert das. Und die einzelnen Tools kriegen dann schon vorverdauert das, wofür sie gebaut sind. Ich habe keine Ahnung. Aber im MS-DOS war das so.
21:41
Und warum soll man schlechte Dinge neu schreiben? Falsches Thema, falsche Taken.
22:00
Also, InSmart kann keine Wildcards. Das merkt man dann auch daran. Jetzt geht es mit dem Quoting das erste Mal los. Einfach das Gegenbeispiel. Um so was jetzt zu vermeiden, dann macht man immer um alles Gänsefüßchen. Ist das wirklich wahr? Teil 1 merkt man hieran.
22:22
Wenn ich da Gänsefüßchen drum mache, dann kommt tatsächlich die Wildcards in das InSmart rein. Jetzt könnte das ja richtig funktionieren. Jetzt müsste ich wirklich mal root. Blödes Beispiel. Jetzt müsste man root-werten. Das habe ich vor 2 Jahren erklärt. Bei einem GS-Racer-Prozess darf nicht SETUID sein.
22:40
Das SUDU ist SETUID-Root. Damit es das machen darf, was für mich jetzt wichtig wäre. Damit ich root-werten darf. SETUID-Flag. Weil ich aber schon im S-Racer oder im Debugger laufe, ist aus Sicherheitsgründen das abgeklemmt. Der SUDU hat keine SETUID-Rechte mehr in diesem Aufruf. Solche Sachen gehen unheimlich schief. Wenn irgendwas dann damit mal zu tun hat,
23:04
dann muss man sich andere Dinge ausdenken. Kommentare stehen. Das ist einfach ein S3-Problem. Will ich jetzt aber auch gar nicht haben. Wenn man jetzt guckt, vorher hat das InSmart ohne Gänsefüßchen, wenn man die Fehlermeldung liest, dann sieht man das. Hier hat er gesagt,
23:21
driver.ko und ich darf nicht. Hier oben sagt er wirklich, stand.ko habe ich nicht gefunden. Da steht drin, lade das kernel-Modul mit dem Datein name stand.ko und dann sagt er, die Datein liegt nicht. Wo muss ich nicht machen?
23:41
Dann gibt es natürlich Leute, die so gemeint sind und so hässliche Sachen machen wie touch. Nein, die Leute machen natürlich touch stand.ko. Was hat touch jetzt gemacht? Weil hier ein kernel-driver schon rum lag, hat es den getouched und hat den neuen timestamp verpasst. Wenn man jetzt guckt, der hat jetzt hier,
24:01
wir haben schon 11.39, sagt der kernel-driver. Wenn ich jetzt hergehe, aus welchen Gründen auch immer, man macht ja immer um alles Gänsefüßchen rum, echo, hallo und so. Dann macht touch stand.ko. Wenn man jetzt hinguckt, was passiert jetzt, liegt da eine Datei stand.ko um.
24:21
Und das ist natürlich dann auch, wenn ich jetzt ins Mod stand.ko mit Gränsefüßchen mache, was passiert jetzt? Jetzt kriegt er, genau wie vorher, stand.ko, hat sich nichts geändert. Aber jetzt gibt es die Datei, d.h. er darf die öffnen und würde die jetzt dem kernel weiterreichen,
24:40
dann sagt der kernel, ist ja nicht root. Wenn ich jetzt root wäre, würde er sagen, oh, die Datei ist ja leer. Und wenn ich da irgendeinen Modul mache, dann sagt er, oh, das ist ja gar kein kernel-Modul. Aber das sind dann die Folgeprobleme davon. Es gibt die Datei, ich darf die machen. Und das nächste Spiel ist ja immer, wie lösche ich Dateien? Ja, ich mach da jetzt
25:00
noch schlimmer. Touch, irgendwas soll es ja geben. Und dann machen die Leute sowas. Das liegt ja schon rum. Man kann mit strace beobachten, was dann passiert. Die vorsichtigen Leute, Shell Workshop gestern, habe ich das einmal gezeigt. Immer wenn man nicht so richtig weiß, was eine Kommandozelle
25:21
macht, kann man mal ein Echo davor schreiben. Und dann sieht man schon, dass das wieder eine blöde Idee war. Dann merke ich, ihr kennt das alle. Aber wir sind jetzt hier im strace-Vortrag. Wenn man jetzt wieder hier sieht, ich will ja immer sehen, was passiert. Und strace zeigt nichts. Das ist eben wieder die Gemeinheit, dass es ein paar interne Kommandos gibt.
25:41
Das habe ich auch schon mal gezeigt. Das Type Echo sagt so die halbe Miete. Type minus A ist noch viel schöner. Type sagt mir alles über Echo. Aber es gibt auch noch ein anderes, wenn man es dann wirklich haben möchte. Was jetzt gar nicht? Ich glaube, ein Backslash reicht in dem Fall nicht. Es käme nur die Alias.
26:01
Das heißt, da muss ich dann wirklich sagen, ich bin Echo und sowas. Und dann sehe ich auch wieder, wie wird Echo aufgerufen? Echo wird aufgerufen mit WinEcho, rm, Stern, Standpunkt, ko und irgendwie. Und jetzt, wenn Echo Wildcards
26:21
könnte, hier kriegt er eine Wildcard ab, dann würde man erwarten, dass dann alle die Dateinamen doppelt sind. Wer das jetzt durchzählt, stellt fest, es gibt keine Dateinamen doppelt. Weil hier nämlich der Stern auftaucht und auch Echo keine Wildcards kann. Wie gut. Weil ja die Shell dafür zuständig ist.
26:40
So, ah, ein Schritt zurück für Echo, Hallo, St. August, irgend sowas. Nein, genau so wollte ich es ja nicht machen. Ich wollte Echo Hallo sagen, und dann sehe ich wieder nichts. Wir wollen ja sehen, warum Gänsefüßchen. Wissen wir nicht,
27:05
dann probiere ich es mal aus. Was passiert, wenn ich keine Gänsefüßchen mache? Also hier ist das erste Echo. Jetzt mache ich das nochmal. Wo ist der Unterschied? Es gibt keinen, richtig. Weil, ja, das ist so eins dringend, der wird irgendwie übergeben
27:21
und da ist überhaupt nichts besonders dabei. Hallo ist halt Hallo. So, wenn ich das so mache, dann kann man jetzt sehen, Echo, Hallo, St. Augustin, Echo kriegt drei Worte übergeben und gibt die wieder aus.
27:42
Und da fangen dann so die Feinden und subtilen Unterschiede an. Wenn ich jetzt so was mache, dann gibt Echo, weil die Shell diesen Input macht und tut es zusammen und dann ruft es das Echo auf mit dem ersten, dem zweiten und dem dritten. Echo kriegt das erste, zweite und dritte Wort und gibt die immer mit dem Leerzeichen aus. Deswegen
28:00
ja, und da fangen dann jetzt die wichtigen Sachen mit Gänsefüßchen an. Und irgendwelche Gänsefüßchen drum. Und wenn man jetzt guckt, wie es aufgerufen wird, jetzt ist es ein einziges, warte, jetzt hat Echo ein Argument. Der Output ist erstmal gleich, also dem Echo ist ja nicht wurscht, was es so kriegt. Da wäre es jetzt zum einen wichtig, wenn ich
28:21
wieder so was mache, in dem einen Argument sind alle Leerzeichen schön erhalten. Und deswegen kommen die auch schön raus. Viel wichtiger wird natürlich der Unterschied, wenn ich jetzt so was wie ja, ein lieber Windows-Kollege hat mir die Datei Hallo, St. Augustin
28:42
.doc verehrt. Ja, dann liegt die jetzt irgendwie so rum. Und jetzt mache ich Nein. Und jetzt weiß ich, dass hier die Datei Hallo, St. Augustin .doc klingt und ich will die angucken. Und er lässt mir eine SL aufgerufen
29:01
mit Hallo, St. Augustin und alle drei gibt es nicht. Das sind immer so die Drammen, die dann passieren. Und da merkt man dann halt, da wird es dann so richtig wichtig, das so zu machen, weil wenn ich jetzt Touch, oder wenn ich für meinen Windows-Kollegen die Datei Hallo, St. Augustin anlegen wollte, und ich das so mache, dann macht er ein Touch auf Hallo,
29:21
St. Augustin. Und wenn ich dann nachher nachgucke, da gestern, Workshop LL-TR macht so was, Zeit sortiert, dann sind immer die neuesten Sachen unten. Das heißt, ganz wichtig, wenn ich den Kopfkrieg dazwischen habe, genau das was passiert. Also, vorher hatte ich schon irgendwie ein Beispiel zuvor, das mit Gänsefüßchen gemacht, und wenn ich
29:40
die Gänsefüßchen weglasse, solche Sachen sieht man im S3s. Das heißt, wenn ich jetzt auch ein ganzes Skript durchlaufen lasse, jetzt nicht so die Kommandozeile, das Schöne an der Shell, auch gestern im Workshop, ist, ich kann jede kleine Sache einfach einzeln üben. Da hatten wir dann so irgendwas, was macht denn das Kommando TR? Dann sage ich halt Echo, Hallo,
30:02
und dann üben wir irgendwie, wir üben TR, und dann was macht denn zum Beispiel, und dann kann man so was angucken in so kleinen Sachen. So kann ich auf der Kommandozeile schonmal üben, bis das so lang richtig, dass es A richtig abläuft, was ich denn erwartet habe, und bis vielleicht auch die Ausrufe, genau das sind, was ich haben möchte.
30:26
Das ist nicht das Beispiel, das ich gesucht habe, schade. Aber das gleiche ist natürlich auch, wenn ein großes, komplexes Shell-Skript, also wie dieses Tankzeug gestern Abend, wenn das da nicht richtig läuft, dann kann man das Ganze mit S3s minus F, zeigt mir alles an, und dann
30:41
kann ich mir da die XX raussuchen, und dann sehe ich ja da vielleicht, oh, der ruft das ja gar nicht so auf, wie ich das erwartet hätte, weil Wide-Cards-Gänsefüße, da kriegt man schon mal eine Idee, an welcher Stelle vielleicht, wo was schiefgehen kann, auch für ein ganzes Skript und alles, was dahinter hängt. Aber eben einmal zum Üben, und dann wirklich auch zum Analysieren, wenn es halt mal dann die Übung alleine nicht geholfen hat.
31:04
Fahrten suchen? Ah, dann machen wir nochmal Einzel-Gänsefüßchen oder doppelte Gänsefüßchen, ist auch mal so ein Problem. Muss ich jetzt Echo St. Augustin oder Echo St. Augustin
31:22
sagen? Und wenn man hier oben hinguckt, stellt man fest, hier kommen jetzt, also halt falsches Beispiel, hier kommen jetzt keine Single Quotes an, es macht in diesem speziellen Fall einfach keinen Unterschied. Weil für Gänsefüße und sowas ist das alles gar kein Thema. Wenn ich mach Echo
31:43
Standpunkt C, lässt sich jetzt alles üben und gucken. Das ist wirklich blöd, das müsste man rausgehen, wenn man das Bild in Echo abschaltet für diese Demos. Dann sieht man Standpunkt C und Standpunkt C, macht auch
32:01
keinen Unterschied und Echo Dollar Home, da kommt halt Dollar Home zurück. Oh, macht einen Unterschied. Die Idee war, ob ich das
32:21
Echo mit einem Alias überlagern kann, ich vermute ja. Wunderbar, danke schön. Gute Idee.
32:43
Noch eine gute Idee. Das ist die einfache Lösung, das ist ja total brutal. Man möchte das Sick Child rausfiltern. Wenn man es so macht, tut nicht, weil der S3's Output auf Standard Error
33:00
rauskommt. Liegt daran, man macht so S3's und irgendein Programm für das Programm möchte, vielleicht wieder Output liefern, S3's Vortrag. Irgendwann macht man Minus O, schmeißt es in die Datei rein, ist hier natürlich auch praktisch, man sagt irgendwie, gib mir mal den Error auf den Output und dann kann ich alles das wegfiltern. Wunderbar, danke schön.
33:21
Weniger gepluppert. Man kann das auch mit der S3's Minus E irgendwas, Optionen. Da verhärtere ich mich jedes Mal ein bisschen. Man kann Signale aktivieren, deaktivieren. Wenn man zu viel von S3's verlangt, dann ist die Syntax ein bisschen komisch. Also mit speziell diesen Traces und Signalen, das ist, gibt es eine lange Manpage für, wenn es geht.
33:49
Ah, Unterschied haben wir festgestellt. Das ist jetzt eben im Wesentlichen natürlich Shellcos. Die doppelten Gänsefüßchen verhindern das Quoting oder das Aufbrechen von
34:01
Leerzeichen und all solchen Sachen. Auch dass ein Tapp, wird als Tapp überge- ah, das haben wir ja gar nicht gezeigt. Home. Wie mache ich das jetzt am einfachsten? Das ist ein Tappzeichen, werdet ihr gleich sehen. Ich habe Ctrl-V, Ctrl-I. Kann man irgendwas quoten?
34:21
$home ist... Woran merkt ihr das? Wenn ich jetzt hier, wenn ich jetzt hier Leerzeichen eintippe, dann merke ich, ja, da ist der Tapp zwischendrin. Und wenn ich sowas mache, dann sehe ich das im Output auch tatsächlich. Wenn die Gänsefüßchen nicht, also $, das macht natürlich auch mit einzelnen Gänsefüßchen, weil nicht $home
34:40
ist mycastle, sondern home-harald, backslash-t, das Tappzeichen ist mycastle. Wenn ich hier die Gänsefüßchen weglasse, dann sind erstens die vielen, vielen Leerzeichen wieder verschwunden und das Echo kriegt harald ist, home-harald ist mycastle und das Tappen und alles ist auf verloren gegangen, weil das dann halt nur noch Wildspace und tut die Sachen unter.
35:02
Und die doppelten Gänsefüßchen, also fast alles außer eben die Dollars für die Shell-Variabeln und ah, kommen wir gleich noch hin. Back, ja, machen wir. Und mit Single Quotes wird wirklich alles gequoted. Und was halt wirklich passiert oder nicht passiert, sehe ich in den Execs, wo ich dann merken kann,
35:22
da steht ja $home, wenn ich mal eigentlich einen falschen Gänsefüßchen gemacht habe und das nicht, dann sagt das nächste Programm und da finde ich irgendwie Datei nicht gefunden und sagt mir vielleicht, wenn es blöd geschrieben ist, dann nicht mehr welche Datei und schon sehe ich hier drin, er versucht jetzt die Datei $home zu öffnen statt home, harald ist irgendwas. Und alle solche schön Sachen kann man dann sehen. Und man sieht eben
35:42
und man kann jetzt wirklich für so elementare Tests wirklich durchprobieren, welche sind denn die richtigen Gänsefüßchen, wenn ich $home da drin brauche, weil das $ vielleicht so regular expression ist. Ich will hinter dem Zeilenende noch home haben, was nicht richtig gut geht, aber dann kann es nützlich sein. Ah, genau, regular expression.
36:01
Da wird es dann wieder wichtig. Jetzt, reguläre Ausdrücke sind ganz tolle Suchpattern und sowas. Da kann man jetzt irgendwie sagen, ich suche harald most useless Gänsefüßchen oder ich suche im EDC Passwort und da gibt es halt einen Eintrag harald und so. Ich suche alle, die irgendwas mit SH zu tun haben.
36:21
Ja, das ist jetzt ein bisschen trivial, erstens ist es schon schön bunt. Da würde man jetzt sagen, also ich will alle, die zum Beispiel die Bash als Loginshell haben, wo Bash am Zeilenende steht. Und da ist es jetzt natürlich im Normalfall wieder wichtig, dass das $ gesingelquoted wird, dass das ankommt, wobei hier die Shell inzwischen so intelligent ist,
36:42
dass, weil danach kein Variablenamen mehr kommt, das machen nicht alle Shells so, aber hier ist tatsächlich das $ bleibt zufälligerweise erhalten, weil was soll es auch sonst machen? Aber wenn jetzt hier noch, warum auch immer ein A nicht kommen würde oder sowas, dann tut er hier den Inhalt der Variablen $ A einfügen, der ist jetzt zufällig auch noch leer. Zufällig noch leer ist, aber das hätte ja auch was
37:01
anderes sein können, dann sucht er die Bash 1 und findet gar nichts. Ja, aber ihr seht, wo das hingeht und wenn ich dann wieder den Cramp aufrufe, da hätte doch $ sein sollen und das A war eh ein Tippfehler, ja, und dann merkt man halt, dass es jetzt wieder geht, dass wir so ein bisschen passiv programmieren und eigentlich die Regeln brechen, dahinter jetzt sich beschweren
37:21
sollen und sagen, ja, $, what the heck irgendwie, ja. Aber ist natürlich genau das, was man für Shell erwartet, in kleinen Rahmen ein bisschen mitdenken und mithelfen, statt hergehen und da irgendwie so auf Regeln bestehen. Quoting. Was das Quoting auch noch macht, was so was Schönes ist.
37:42
Ah, wieder. Vernünftiges Beispiel. Man macht Echo, Hallo, irgendwas. WordCount ist so was richtig Schönes, der zählt einfach, ich will einfach wissen, wieviel Zeilen kamen jetzt aus irgendeinem Programm raus, WordCount minus L und mit dem Output, wieviel Zeilen sind irgendwo drin
38:00
oder was ist da gerade so hergekommen, möchte man vielleicht was vergleichen und kann so entweder so ein Test machen, wenn und dann den Output dieses Zeugs jetzt liefert, wenn das irgendwie eins ist, dann Echo, das sind so in der
38:25
Shell. Danke schön. In der Shell lässt es jetzt irgendwie so ein Test kommen. Normalerweise macht man if-eckige Klammern, test mal irgendwas, then, blah, Echo, else, irgendwas anderes. Wenn das klein und kompakt ist, kann man das auch so schreiben, wenn diese Bedingungen
38:42
und dann mach mal dieses, das ist ein then-Teil, oder mach was anderes, das tut und dann mach auch noch irgendwie, passt genau, weil da halt jetzt eins rauskommt und wenn ich aber zwei Zeilen hätte haben wollen. Und da sieht man jetzt, wenn man guckt, was so alles passiert, dass er erst mal das Echo aufruft
39:01
und das WC aufruft. Wenn man jetzt mehr gemacht hätte, sieht man auch noch, wie diese Pipe funktioniert, dass er wirklich die beiden Prozesse öffnet und den Pipe aufbaut, dass die sich unterhalten können. Das ist jetzt alles versteckt, welcher Plus. Dann gibt es dann ein Pipe-Call, dann sieht man die Falldeskriptur, dann sieht man die Daten von hier nach da fließen. Dann kann man richtig schön zugucken und das alles. Hier sieht man
39:20
jetzt nur, dass dann das WC ein Write 1 machen würde, als Rückgabewert. Man sieht aber am Schluss blöderweise nicht, was hier drin ist, weil das ist ja jetzt wieder in meiner Shell und das ist ein warum sehe ich es denn nicht?
39:41
Das ist ein Shell-Bild. Aber da das nicht jede Shell eingebaut hat, User Bin, die Frage war, warum hat X11 ein
40:01
hier kam das jetzt dreimal, ist ein Shell-Bild, es gibt den User Bin und User Bin X11, damit werde ich gleich auflösen, aber erstmal jetzt irgendwie, ich nehme jetzt das externe User Bin-Eckige Klammer, dann kann ich dem auch zugucken und dann sehe ich tatsächlich, die Eckige Klammer wird aufgerufen mit 1 gleich 2 und das ist genau eben diese Backvotes,
40:21
die da so kamen. Dann mache ich den Fall fertig und dann kommen wir zu X11, warum die das alles nochmal selber brauchen. Ein Schritt zurück, wenn ich jetzt irgendwie gucke, ist die Variable $b gleich 2. Das hatten wir gestern schon mal irgendwie so.
40:41
Dann gibt es immer eine Fehlermeldung, warum? Weil $, achso, warum? Weil, das sind wir genial. Hier sehen wir jetzt tatsächlich, weil ich ja den User Bin-Eckige Klammer, was ruft er wirklich auf? Er sagt, mach mal den Test. Um das noch schön aufzulegen, User
41:00
Bin-Eckige Klammer und bin ich mal gespannt, Test. Das sind zwei verschiedene Variable. Eigentlich ist es das gleiche, aber man sieht sogar der Fall, das sind unterschiedlich. Das ist manchmal auch ein symbolischer Link auf das andere, weil auch ManTest, Eckige Klammer und Test, ist das gleiche auch in der Shell und extern, die ManPages.
41:21
Ich weiß nicht, warum das zwei Sachen sind. Es gibt Implementierungen, aber egal. ManTest, auch wenn ich hier sage, wenn ich Shell-Workshop wieder mal kann, für die internen Sachen. Was hatten wir vor der internen Echo? ManEcho ist das externe Echo. Das sind wir die Programme für irgendwas in Section 3. Help-Echo sagt mir, was
41:41
das Bash-Echo in dem Fall helpt. So die internen Funktionen, helppor, helpp. Auch Echo muss man wirklich aufpassen zum Thema Shell-Workshop. Das interne und das externe Echo, die sind nicht kompatibel.
42:00
Die haben unterschiedliche Optionen und verhalten sich recht unterschiedlich, was mit Minus E und irgendwas betrifft. Wenn man sich dann wundert, warum man das auf der Kommandozone noch machen konnte und sich das später anders verhält, mag das daran liegen, dass plötzlich ein externes Echo kommt. Wenn es um mehr geht wie bloß Hallo sagen, ist Echo auch schon kompliziert. Und man sieht dann, hier wieder,
42:21
hurra, welches Echo ist es denn? Dann muss man für das Echo, das man wirklich verwendet, irgendwie die Doku nehmen und dann kann man vielleicht verstehen, was da so komisch anders ist. Ja? Ja? Ja?
42:43
Nein, ja? Weiß ich nicht. Das war Shell-Workshop, das hättest du gestern fragen müssen. Wenn es überhaupt geht, also auf der Kommandozone ist das ein arithmetischer Ausdruck. Und wenn überhaupt, dann kann man arithmetischer Ausdruck in der Shell so was machen. Und der kann sogar arithmetisch
43:00
rechnen. Das ist wirklich 7. Und der kann, das ist dann machen wir jetzt zwei Minuten Shell. Du bist schuld. Das ist die schnellste Möglichkeit, die ich kenne, wenn man sich die Hexadezimalzahlen umrechnen. Weil da drin kann er Hexadezimalzahlen. Es gibt sowas Schönes wie Printf, wo man auch Zahlen ausgeben kann,
43:20
was weiß ich, da kann ich zwei hoch und noch einen Zellenende. Und wenn ich dem 0x2a sage, das ging früher nicht. Okay. Interessant. Printf hat dazu gelernt, früher konnte Printf keine Hexadezimalzahlen haben. Ist ja keine Zahl, weil das ist 0%d weniger eine Zahl. Dann hätte man hier
43:42
einen numerischen... Erstens, ja, er hat natürlich völlig recht. Das ist das Schöne, dass es inzwischen von allem so viel gibt. So geht's. Ja, wie auch immer.
44:00
Das kommt ja jetzt alles von Knoon. Das neumodische Zeug kann dann ein paar sagen. Ist ja gut so. Früher hatten wir das alles noch nicht. Zeug. Aber arithmetischer Ausdruck, dann machen wir den wenigstens noch. Also wenn überhaupt, weil arithmetisch, dann könnte ich sagen 1 plus 1, Fragezeichen 2, das sind das,
44:21
was der C-Programme so gerne hätte. Wenn's true ist, dann ist 2 dazu addieren und sonst 3. Das sieht sehr suggestiv aus. Works. Ja, die Bash kann auch das inzwischen. Ja, was würde ich jetzt hier erwarten? Was willst du jetzt, dass jetzt passiert?
44:44
Was würde ich jetzt erwarten, dass passiert? Wir rutschen ganz arg in den Bash Workshop. Aber wir können jetzt zugucken, was passiert.
45:00
Ideen. Ich hab jetzt leider... Die Winkelkatze ist auch nicht... Die Winkelkatze winkt gar nicht. Oh Gott. Fragezeichen ist ein Dateinamen-Pattern, ist richtig. Und da hätten wir sogar was anzubieten. Wir haben eine Datein mit einem Zeichen. Ich biete noch eine zweite Datein... Also wir haben jetzt mehrere Datein mit einem Zeichen.
45:20
Was gibt's so ungefähr aus? Man kann ja so Sub-Shales... Das hab ich gerade schon mal gehört. Man kann so Sub-Shales machen. Aber das macht dann ja so irgendwie Echo A, Echo B, ja. Und das ist jetzt eine Shell, wo die beiden Sachen läuft.
45:41
Und jetzt kann ich mit dem zum Beispiel den Output von Echo A und Echo B zusammenzählen. Das sind jetzt 2 Zeilen Output von den 2 Echoes. Hätte ich das ohne die Klammern gemacht? Sagt er? 1, 2, viele? Er sagt erst A. Und das B wird gezählt und sagt 1. Ja, und die Klammern macht eine Shell, eine Sub-Shell
46:01
draus, da läuft das alles ab. Das ist ziemlich genau das Gleiche, wie wenn ich sagen würde Bash minus C, lasst das mal alles in dieses Kommando irgendwie laufen. So mehr oder weniger. Ihr dürft euch überlegen, was der Unterschied zwischen Klammern und Bash minus C ist bis zum nächsten Workshop. Und deswegen ist da oben die Syntax insgesamt einfach falsch.
46:21
Ja, das ist so mitten auf der Seile. Jetzt mache ich mal eine Sub-Shell. Das wird dann wieder richtig. Richtig, ja, nein, richtig ist anders. Wenn ich das so mache, das ist die Pussy Syntax für diese Back Quotes, diese Backticks, die ich schon mal gemacht habe, für das Kommando hier drin aus und mache den Output. Wenn ich das mache, dann sieht man, hoffentlich,
46:43
ich bin Echo. Ich hätte jetzt gehofft, dass ich sehe, wie er ein Exec auf 0 versucht mit den Argumenten. Alles, was auf Fragezeichen mesht, jetzt muss ich dann ein Echo reinschweinen, dann geht es tatsächlich. Liefert den Output zurück von Echo?
47:01
Das Fragezeichen, sieht man hier oben, mesht auf alle die einbuchstabigen Sachen. Das ist das erste, was hier noch steht. Das ist jetzt der Output von das Fragezeichen, ist die 0 und dann zwei, drei, alle, und dahinten muss noch irgendwie zwei, drei, drei hinzukommen.
47:21
Ja, ja, es kann, aber nur da, wo es ... Doch, natürlich. Sonst würde ich ja nichts sehen, sonst würde ich nicht sehen, dass er einen Exec macht. Weil der Exec läuft in dem Kind-Prozess, er macht erst den Clone, den ich vorher noch mit drin gehabt habe, der immer noch, glaube ich, mit drin ist. Er macht erst einen Fork,
47:42
Linux-Neumotisch-Clone und wenn ich das nicht mache, ich kann es nur zeigen, was ohne passiert. Hier ist das minus F, ja, ich hab's. Wo ich das gleich nochmal machen würde. Alles passiert in den Sub-Shells. Ich guck nur Execs an. Meine Bash selber macht keinen Exec, weil der Kind-Prozess dazu erst generiert wird
48:01
und wenn kein minus F da ist, sehe ich nichts. S3s vor zwei Jahren gibt's einen Paper Zoom. Ja, ich hab minus F, weil sonst tut das alles nicht zum Zugucken. Ah, da war noch irgendwie eckige Klammer. Warum braucht X11 wieder seine eigene eckige Klammer?
48:21
Ja, das ist auch so ein trauriges Kapitel. Die X11-Leute, versteh ich ja auch nicht. Nein, die X11-Leute können überhaupt nichts dafür. Da bin ich ein bisschen mit dran schuld. X11 ist einfach ein symbolischer Link eigentlich auf Punkt. Der Slash gehört... Der Slash ist wieder so ein Artefakt von irgendeinem blöden LS-Aliases. Ah, warum? Weil, hier oben sehen wir das,
48:42
irgendjemand LS auf ein minus groß F gemacht hat, was sie überhaupt nicht brauchen. Dann hängt er immer noch mal zu Klammeraffen und Slashes an Dateinamen dran, die nicht zum Dateinnahmen gehören, die keiner braucht. Eigentlich muss das so aussehen, es zeigt auf Punkt. Warum ist das so? Früher gab's mal ein, damals in der guten Einzeit hatten wir, hab ich auch X11 gemacht, ein eigenes Verzeichnis, wo unsere Sachen hinkamen,
49:02
da war alles gut und schön. Und dann sind die Distros gekommen, oh, so viele Verzeichnisse. Hat ja nur 20.000 oder so. Allein der ganze KDE-Baum. Und dann haben sie die X11-Sachen alle nach User Bin getan. Kann man einmal machen. Dann haben wir schon wieder einen direkt in den Pfad gespart. Das Blöde dabei ist, es gibt einen User Bin Xout,
49:20
für Xauthorize und sonst irgendwas, und noch zwei andere Tools, glaube ich, die seit Jahrzehnten traditionell von den Tools aufgerufen werden, und die werden immer mit festem absoluten, die müssen an einer Stelle mindestens aus Sicherheitsquitten mit absolutem Pfad aufgerufen werden, denn der fährt immer so aus. Und dann haben die das Zeug alles hin verschoben, haben gesagt, jetzt liegt es halt in User Bin, und dann tut es halt nicht.
49:41
Ja, ihr könnt ja jetzt mal eure Programme alle umschreiben. Das kann ich bei xfree86 natürlich machen, es ist FreeSource, und dann tut es auch, und dann kann dann halt irgendwelche Proprietären sagen, die jetzt auch gewohnt sind, und die vielleicht sogar auf einem alten oder einem neuen Linux laufen lassen wollen, tut nicht. Also wir haben mit meiner Lieblingsdistro auch länger gekämpft, und irgendwann haben sie eingesehen, dass ich meine, der symbolische Link ist jetzt wirklich
50:00
tatsächlich Mainstream geworden. Es war nicht so richtig einfach, aber es gibt halt einige Sie-Programme, und es gibt Systeme, wo das heute noch so ist, weil das war schon immer so. Ja, und der gehört jetzt tatsächlich in irgendeinen RPM rein, und das ist essential. Boah ey. Und dadurch ist das halt jetzt in dem Suchpfad doppelt drin. Man müsste User Bin X11 nicht mehr im Pfad haben. Ich hab das aus Tradition im Pfad,
50:20
weil mein Pfad ist 30 Jahre alt, und das war schon immer da drin. Und dadurch kommt so Zeugs halt. Er sucht halt über alle Pfadsachen sonst irgendwie, und da ist halt noch ein User Bin X11 und User X11 A6, das muss nicht das gleiche sein, je nachdem, wo man sich gerade rumtreibt und so. Ja, aber natürlich, ich will ja arbeiten können.
50:41
Da war der Kommentar, und Punkt im Pfad, erstens, ich weiß, was ich tu, und seit wenigen Jahren ist meine User ID für den Benutzer Harald nicht mehr null. Das löst viele Probleme, vor allem, wenn man einfach nur mit Hardware und Körner und sonst was zu tun hat, immer Rout sein muss, weil sonst geht nichts. Deswegen, dem Punkt im Pfad ist ja zweistätig
51:02
und Sicherheit, und da legt mir jemand irgendwie mein, keine Ahnung, Virus hin, über das LS-Paket, hier legt mir niemand was hin und sonst was. Meine erstes Erlebnis an der Uni in dem C-Kurs war, wir haben unser allererstes C-Programm geschrieben, das hat Hello World gemacht, und wir haben das laufen lassen, und es hat nicht Hello World gemacht, es hat irgendwie...
51:21
Und warum war das so? Weil das Programm natürlich Test hieß. Jeder fängt an irgendwie Test zu schreiben, und wir haben lange gesucht, wenn man doch keine Ahnung von Unix hat, und keine Ahnung von C hat, und der Tutor damals, das war ein externer Kurs, der hat sich dadurch einen abgekugelt, weil er das schon kannte, und bis man dann...
51:41
Also er hat uns dann gelernt, ja, macht mal Test zwei. Es ist einfach total ärgerlich, und ich will nicht immer diese ganzen Treppviren, die zufällig an dem Pfad liegen, und mein Tool, ich hab's hinten dran inzwischen, aber normalerweise, und das immer mit Punkt slash irgendwas, es ist so ätzend.
52:02
Geschmackssache, ihr braucht das nicht machen, ich kann so nicht arbeiten. Aber gut beobachtet, danke. Und um ganz sicher zu sein, habe ich den Tutor, auch das ist sicher wieder irgendwas Historisches gewesen, dass da Pfade zusammengebaut werden, und jeder Teil denkt, ah, Punkt ist wichtig. MIT habe ich glaube auch schon länger nicht mehr gebraucht.
52:22
Aber egal. Aber auch solche Sachen sieht man, ja. Man würde das dann auch sehen, wenn man die Environment Variable auspackt, da steht dann wirklich auch nochmal Path drin, auch da kann ich gucken, was mein Path wirklich ist. Pfadensuchen.
52:41
Ist cool, was ich da alles behauptet habe. Wofür habe ich denn eine Folie gemacht? Irgendwo, ah. Ob man da schon, die erste Hälfte ungefähr, ins Wort Wildcard, ah, doch, Wildcard kommen noch zwei Sachen. Gänsefüßchen haben wir schon ein bisschen was, die Pipes kann man angucken, also
53:01
man sieht dann wirklich den Datenfluss, man kann mal sehen, wo in so einer Pipe etwas hängen bleibt, Feind, ah, auch so ein Lieblingsliefer, Feind, das wunderschöne Feindkommando in Unix. Wer kennt Feind nicht? Man kann irgendwo Dateien suchen. Man, in dem richtigen Unix muss man da noch einen Pfad angeben und sagt, such mal, such mal die Dateien mit
53:21
Standpunkt C. Dann sucht er eine Weile. Okay, da muss ich jetzt lange suchen. Ich gebe es zu. Ach, da war eine Lehrstelle davor. Wenn die Lehrstelle davor ist, geht es nicht in die Historie rein. Dafür gibt es eine Bechvariable, habe ich vor wenigen Jahren gelernt. Such mal in Home, Harald.
53:41
Ja? Die Frage ist, warum würde das Standchen jetzt nicht auf sehr gute Frage, genau da will ich jetzt hin. Weil kein C-Feind in dem Leerenverzeichnis, sehr richtig. Jetzt war ich in der glücklichen Lage, ganz zufällig. Normalerweise mache ich das subtil anders.
54:01
Weil ich nicht weiß, wo ich bin, dann ist es noch sicherer. Ich bin in einem Leerenverzeichnis, mache dieses Feind. Hier oben sehe ich, was passiert. Und es werden alle C-Dateien, die da so herum liegen, gefunden. Müssen wir jetzt glauben, dass das alles sind, die da so herum liegen. Dann gehe ich normalerweise ganz subtil, jetzt müsst ihr alle mal weggucken.
54:21
Und mache dann hier in diesem Leerenverzeichnis so ein Touchpunkt C, das keiner gesehen hat. Wenn ich dann ein Find mache, dann findet er plötzlich gar nicht mehr so viele Dateien, obwohl ich so viele C-Feinds hatte. Ja, wenn ich jetzt irgendwie voll war und das Find standpunkt C getippt habe und plötzlich, im ganzen Home-Directo gibt es nur so ganz komische, ich hätte vielleicht Testpunkt C
54:41
machen sollen, hätte vielleicht ein paar mehr gefunden. Aber das Rätselslösung sieht man eben da oben. Jetzt macht er wirklich Find-Testpunkt C. Und das ist eine der subtilen Probleme, weil Find ja ist ein Tool, das mit Wildcards umgehen kann. Surprise, surprise.
55:01
Und deswegen ist es wichtig, dem Find die Wildcards auch einzukriegen, was jetzt in diesem speziellen Fall nicht geklappt hat. Das wird noch viel gruseliger, wenn ich jetzt noch mache, Find muss mit Wildcards umgehen, weil... Der Kommentar Find...
55:21
Wie war der Formulierung? Find kann mit Wildcards umgehen, das war die Formulierung, ich sage, Find muss mit Wildcards umgehen, weil wenn ich jetzt Find mache, was passiert jetzt? Also ich zeige nochmal, was passiert ist, um es einfacher zu machen.
55:42
Der Kommentar war ein Syntaxfehler. Ja, es wird etwas subtiler formuliert. Paths must precede Expression. Testpunkt C. Also da möchte ein Find mitteilen, also diese Paths, das ist das, was ich hier vornehin gemacht habe, was man in Linux eigentlich nie hinschreibt, weil Find ab hier in dem richtigen Unix muss dann mindestens ein Punkt stehen, sonst sagt er eh schon,
56:01
da ist keine Path Expression. So Solaris, HPOX, irgendwas. Das ist ziemlich nervig. Aber alles das und das Name, ah hier sehen wir ja, was aufgerufen wurde, Name, dann kommt das Hellpunkt und die ganzen Wildcard Expansions. Das Name kriegt den Parameter Hellpunkt C. Ok, such mal nach Hellpunkt C, wo?
56:21
Aber Find kann noch mehr, man kann im Find mehrere Sachen angeben, man kann ja sowas sagen, Name, also wenn die Syntax mal richtig ist, machen wir das mal richtig, nein, das war auch nicht richtig, Sternen und dann, aber nur die wirklich auch Typefile sind und Mtime bis, also das sind alles so Unverplüpfungen irgendwas,
56:40
das heißt, such mal die Dateinamen, irgendwas, Standpunkt C, aber gib's dir nur aus, wenn's ein File ist und gib's nur aus, wenn's Modification Time bis drei Tage und so Zeugs und das nächste, was hier hinkommt, ist eben die nächste Bedingung und die nächste Bedingung hat keinen Minus und sonst irgendwas und die Syntax freut halt vor, Option ist jetzt wieder auch zu viel, das Find ist ja insgesamt so komisch von den, das ist halt
57:02
ein sehr, sehr altes Unix Tool, wo man sich richtig klar war, wie das alles wird und dass man so lange Optionen mit so vielen Buchstaben eher nicht tippen möchte. Und dann ist das eben ein Path, weil's keine Option ist, und dann müsste das Syntax schon vorne hingehören. Was auch, wenn ich nur Find Standpunkt C mache,
57:22
was passiert dann? Was er aufruft, er ruft dann Find mit Standpunkt C irgendwie auf und alle Bedingungen, die ich angegeben habe, was er suchen soll, stimmen und Find, wenn alle Bedingungen wahr sind, die man angegeben hat, dass es ein Name und irgendwie ist, wenn alles das
57:41
true ist, dann wird's ausgegeben und alle Bedingungen, die ich angegeben habe, sind nicht falsch, also müssen sie ja wohl wahr sein, wenn keine Bedingungen da sind, das ist so Aussagenlogik. Und also gebe ich alles aus. Man kann wirklich sagen, einfach Find, das ist so ähnlich wie Echo Bin, außer es würde noch unterverzeichnet. Also wenn ich dann
58:01
Find Slash mache, dann wird's Slash Stern, dann sind da ja Directories dabei, dann laufen die Directories rein, aber Find Bin Stern macht mehr oder weniger einen Echo. Und man sieht hier oben, das sind alles Dateien und alles, was da auf der Kommandozeile als Pfad ist, wird dann angeguckt. Ah, es ist eine Datei, ich muss nicht mehr rein, aber genügt allen Anforderungen
58:21
passt. Also bei diesen Find Auf hätte man vielleicht so einen Aufruf nicht unbedingt erwartet. Aber ich kann auch hier noch sagen, mach die alle mal, aber bloß die mit Amp Time bis, was weiß ich, 100 Tage. Ja, es gibt ein paar Dateien, die relativ neu sind. Und alles, was drunter wäre auch, das kann man find.
58:42
Aber das ist eigentlich ein Problem, das hat jetzt vorher mal ganz subtil getan, weil ich da immer so ganz frech Standpunkt 10 geschrieben hab und keine Dateien da waren. Keine Dateien da waren. War ich im richtigen Verzeichnis? Und wenn's eine Datei
59:01
ist, dann ging's eben subtil schief, aber es läuft noch, wenn zwei Dateien sind, komplett gruselig schlechte Fehlermeldung, die einem auch nicht richtig weiter hilft. S3 ist your friend, da sieht man wenigstens was aufgerufen und dann fällt vielleicht der Groschen so, wollt ich's ja noch gar nicht haben wollen. Feind kann nicht richtig damit umgehen, dass da hinten die Wildcard Expansion schon passiert ist.
59:21
Muss wirklich in dem Fall zu sein. Ist halt einfach ein gruseliges Unix-Tool an der Stelle. Total toll, aber die Syntax ist mit Überraschungen gespickt.
59:47
Der Kommentar war, dass Feind ganz viele Probleme hat mit langen Kommandozeilen und sowas. Und lange Kommandozeilen, Space und so was. Ja, man muss es halt richtig gequotet haben, dann tut's auch wieder.
01:00:00
Richtig, das ist das gleiche wie mit ls-l, wenn da Leerzeichen in so einem Datalarm drin sind, haben wir vorher gesehen, müssen die Leerzeichen drin sein. Das mit der Kommandozeile 4k stimmt nicht ganz. Also wenn es Linux mäßig, also ja, Liege sie unix, sollte man unter 4 oder mindestens 10 Kilobyte brechen. Die Linux-Kommandozeile darf bis 2 Megabyte, die fortmäßig, groß werden.
01:00:21
Stack size viertel, die Stack size kann man dann immer angucken. Ulimit, ups. Ja, Ulimit minus A, in der Schale kann man zu alle möglichen Limits gucken und auch setzen. Und irgendwo gibt es eine Stack size, die jetzt acht, die fortmäßig acht Megabyte groß ist. Eine Viertel Stack size ist die maximale Kommandozeilenlänge.
01:00:44
Das und, also manche alten Unix sind nur 10k, aber das klappt relativ gut. Und wenn ich größere Kommandozeilen habe, dann mache ich hier mal eine Stack size größer, so viel ich Speicher habe, und dann kann man wirklich lange Kommandozeilen machen. Aber ich musste letztes Jahr ganz schmerzlich lernen, das ist zwar richtig für die gesamte Länge der Kommandozeile,
01:01:04
es ist nicht richtig für ein Einzel, wir haben das vorher mit dem Echo und dann Hallo, Sankt August und diese drei Parameter, ein einzelnes Kommandozeilenargument ist längenbegrenzt. Und das sind 128 Kilobyte. Im Kern hat vertratet auf 32 Pages A Page Size, bei den meisten Windungskernen 4 Kilobyte und mehr wie 32 Pages für einen einzelnen Dateinamen geht nicht.
01:01:29
Ganz doof, also Dateinamen mit 32k Länge lasse ich ja noch mit mir diskutieren, bei mir war es ein kleiner SED-Ausdruck, also der kleine reguläre Ausdruck für SED. Und der ist automatisch generiert, ich habe den nicht getippt, aber der wird automatisch generiert
01:01:42
und der ist dann irgendwann mal größer wie 32 Kilobyte geworden, ich habe lange gesucht. Warum ist die Kommandozeile zu lang? Ich gucke nach, das waren 300 Kilobyte. Und dann geguckt und die Fehlermeldung war auch noch SED irgendwas, warum sagt man SED das? Bis ich dann aber gemerkt habe, nein die Shell sagt mir für den SED auf Ruf,
01:02:04
weil SED irgendwas, normalerweise ist die Fehlermeldung immer da vorne das Programm und wenn ich so weit bin, dann sagt mir eigentlich wirklich, jetzt sagt mir wirklich SED-Food und das Kommandozeugs, die regulären Ausdrucken, kenne ich nicht, das ist keine SED-Syntax. In dem Fall hat mir aber Basch gesagt, für den SED-Aufruf, die Kommandozeile ist zu lang.
01:02:24
Und da dachte ich, warum sagt man SED das? Bis ich dann wirklich mit S3s auch gesehen habe, der EXAC-Car geht schief und der EXAC sagt, argumentlich ist zu lang, obwohl die bloß 300 Kilobyte waren. Dann habe ich dann den Colonel gefunden, ja da gibt es noch mehr Limits und wenn man dann mal weiß, wo das ist und sowas, dann hilft einem spätestens bei der Fehlermeldung auch Google weiter
01:02:41
und sagt, ja die Colonel, die will aber wissen das auch, und der Linus Torwald hat vor vielen Jahren, wo das dann schon mal irgendwie hochkam auf der Colonel-Liste, gesagt, 32 Kilobyte Argument-Size-Limit ist enough for everyone. Geschichte wiederholt sich.
01:03:00
Ich habe es auch überleert, in den Kommentaren, weil es gibt Leute, die Pätschenkarten, habe ich mir dann ernsthaft überlegt, weil das von Embedded-Controller ist, von ganz vielen Leuten, aber dann kommt wieder ein neuer Update und irgendwie und dann geht das wieder subtil schief und das ist total blöd. Man kann das dann auch anders machen, es muss nicht wirklich so sein. Da habe ich erst über meine SED-Instruktion nachgedacht und dachte, ich kann das intelligent anders machen. Habe das subtil verändert und statt einer Sekunde Execution Time waren es dann viereinhalb Minuten.
01:03:26
Wobei ich gehofft habe, dass, weil das einfacher war, die zweite Variante, das müsste eigentlich, ich hatte gehofft, das geht schneller, als die eine Sekunde, die mich schon genervt hat. Das war dann irgendwie eine ganz blöde Idee und dann, man kann dann erstmal die Expression in eine Datei reinschreiben und dann sagen, SED, machen wir die Dateien in den Kommandos, dann liegen immer Mülldateien rum,
01:03:44
aber es geht auch ohne Dateien. Nächster Shell-Werkstuck. Aber ja, also die Kommandozeilen-Argumente sind zu lang und wenn die dann mal zuschlagen, dann sieht man die in diesem Exec-Aufruf, da kommt dann hinten E2B, dann sieht man zumindest, ja, es ist zu lang, aber wenn ich weiß, es sind nur 300 KB
01:04:02
und der Herr halt hat immer gesagt, zwei Megawatt-Limit, da muss man dann Kernelcode lesen und das ist einfach, weil man sucht durch den ganzen Kernel durch, wo wird return E2B? Man findet das wirklich schnell. Das passt ja nicht zu vielen Stellen und man weiß irgendwo, wo der Exec ist und es ist ganz schnell, es gibt zwei Stellen, wo er E2B sagt und einmal guckt er halt,
01:04:20
sind es mehr wie zwei Meg und dann guckt er halt noch, sind es mehr wie 32 Pages. Aber auch da war S3 wirklich hilfreich, ja, ich hab dann höchstens gesehen und dann wusste ich, mein Shell-Skip, das war halt so SED, Backquote, mach mal was Geniales und dann sieht es halt anders aus.
01:04:42
Find hatten wir gerade mal, Cut Pipe, da wollen wir nicht hin, boah, weg, so kann man richtig viele schöne Sachen spielen. Was können wir noch schönes mit S3 und Shell treiben? Da hatte ich es
01:05:04
gestern schon mal ein bisschen, der Kommentar war die Bash-Historie-Funktion und alle diese Sachen. Ja, ich kann jetzt zeigen, das Problem ist, das hat mit dem S3 gar nicht zu tun, weil es gibt in der Bash aus alter C-Shell-Tradition, aus den Shells, die noch keine Cursor-Tasten hatten,
01:05:22
weil Cursor-Tasten ist nur modisches Zeug, gab es ja auf dem Fernschreiber nicht, im Fernschreiber, wenn man getippt, konnte man nicht mit dem Cursor hoch und das Zeug wegkratzen und löschen, gab es alles nicht damals, wir hatten ja keine Cursor-Tasten. Aber man konnte schon immer sagen, ausrufe ich jetzt auch nicht, das letzte Echo-Commando zum Beispiel, hat die C-Shell reingebracht, fühl mir das letzte Echo-Commando noch mal aus,
01:05:42
heutzutage macht man das bis Ctrl-R, Reverse-Search, irgendwas, ich will irgendwas mit Path haben, und dann kann man, das Ausruf ist ein Kommando und da gibt es noch zwei schöne, drei schöne andere Varianten, was ich sehr gerne nutze, wenn man ein Copy von A nach B irgendwie gemacht hat, gab es jetzt nicht, egal, aber das Copy kriegt irgendwas und sagt dann da drin,
01:06:05
wenn man jetzt den S3 ist, Open A und dann beschwert es sich, geht nicht. Aber jetzt habe ich halt das als Kommando und jetzt kann man sagen, Ausrufezeichen Dollar sind von der letzten Seile alle Argumente, so ähnlich wie man Dollarstern macht in der Shell,
01:06:20
Echo-Dollarstern sind, wenn man in der Shell dann Dollarstern sind, alle Argumente, wenn man den in den Shell-Scripters anfangen möchte und Ausrufezeichen-Stern ist jetzt von der letzten Seile alle Argumente, was einfach mal lützlich sein kann, wofür soll ich da noch und das zweite davon ist Ausrufezeichen Dollar, Ausrufezeichen Dollar, von der letzten Seile das letzte Argument, nur so wie Dollar Dollar wollte ich sagen,
01:06:45
das ist Dollar, hier? Das könnte vielleicht die ganze Seile sein, Dollar, interne Varianten gibt es furchtbar viele, das macht irgendwas, aber ich weiß nicht was, ah ok, neumonische,
01:07:02
ja das eine ist eine History-Funktion und das ist eine Shell-Variante, History ist jetzt auf der Kommando-Seile, wenn ich in dem Shell-Script Dollar Ausrufezeichen schreiben würde, dann würde das entweder gar nicht tun, zumindest nicht von der letzten Shell-Script-Seile irgendwas machen, ja, das ist Historie, diese Ausrufezeichen, das ist wirklich Kommando-Zellen only, aber da ist das total nützlich, also jetzt einfach wenn das,
01:07:24
ich hab da mein Copy irgendwie gemacht, was ich ganz gerne mache und dann mach ich, was weiß ich jetzt, zum Beispiel Edit, da ist ein Alias irgendwie, Ausrufezeichen, ich hab das nach woanders hin kopiert oder gemovet, dann brauch ich nur Ausrufezeichen Dollar, die Destination, mit der möchte ich jetzt was machen, entweder wieder löschen, ach nein, da wollte ich es nicht haben, editieren, whatever, Akrobat, Widerstand,
01:07:44
ein bisschen Zustand, mal kompilieren, ja, also die Alternative zu Ausrufezeichen
01:08:00
Dollar wäre ja Escape Punkt, wird hier gesagt, mag sein, aber warum brauche ich zwei, Escape Punkt führt das dann überhaupt sofort aus, Escape Punkt, mal testen, aha, scheint zu klappen, aber schon wieder was Neues, ich hab das andere doch schon erst vor 30 Jahren gelernt, der feine Unterschied ist, wo ich aber jetzt nicht wirklich hinkomme, ich wollte gerade sagen, es kann auch toll sein, dann
01:08:24
sehe ich schon was passiert und die gruseligen Erfahrungen, gibt es auch was für alle wieder herholen, wenn man schon ein Escape Punkt hat, für Escape Sternen, ja, das ist es halt wieder, so halblebig implementiert, also es ist quasi, dass man sieht, was geht, wo ich gerne hinwöre, aber was genauso nicht
01:08:43
geklappt hat, ist, wenn ich jetzt mit dem Cursor wieder nach oben gehe, dass ich dieses Ausrufezeichen Dollar nochmal kriege, aber auch in der History wurde das schon ersetzt, ja, auch wenn ich jetzt hier Escape, ich mach jetzt hier Echo, dann brauche ich nicht immer mein Editor-Ausrufezeichen, irgendwas, wenn ich wieder hochgehe, dann steht auch da schon das A und sowas, wenn
01:09:02
ihr jetzt auch in die History setzt, was auch irgendwie sinnvoll ist, weil es gibt so ein Kommando-History, wo man sich einfach alles anzeigen lassen kann, was getippt ist, und in Seite 731 steht den Stand, den ich noch nie gesehen habe, das ging vielleicht schief, Copy, da ist eine Fehlermeldung, vielleicht möchten wir sagen, ich habe keine Ahnung, False, das ist ja irgendwas anderes,
01:09:28
ach, da war das mit dem Ausrufezeichen Escape Punkt, sehr erstaunlich, kann man in der Man-Page nachlesen, warum ich gerade ein bisschen am zögern war, mit der History ist natürlich, ich sehe, da wird nichts nach außen ausgeführt, das ist wieder überhaupt kein schönes Beispiel für mein S3, außer ich tue die
01:09:42
ganze Bash S3, da kann ich noch gucken, wo kommt die History her, wenn ich alle System Cards von dem Bash angucken würde, zumindest Dateien öffnen, gestern, also mit History kann man schöne Sachen machen, er merkt sich das dann auch, wenn man die Shell verlässt, bei der Bash in der Datei Punkt Bash-History, wenn man so einen Shell-Werkschaft macht, dann braucht
01:10:02
man bloß die History-Kommandos aufrufen und kann die dann statt Folien irgendwie hier dann mal noch auf der Webseite ablegen, wo dann eben die Frage aufkam, wann wird es denn abgespeichert und eingelesen und solche Sachen zähle ich dann wieder im S3, würde dann zum Beispiel, man kann der Bash irgendwie sagen, dass jedes Mal, wenn ich was Tippes sofort
01:10:21
abgespeichert wird, im Normalfall wird nur gespeichert, wenn ich einen Exit mache, wenn ich meine Shell verlasse, dann wird abgespeichert, da war so das Problem, dass jemand mal schon aufgefallen, der auch so Histories gern hat, man hat zwei Terminals offen, schließt das eine Terminal, hat er was Wichtiges gemacht, geht raus, schließt ein
01:10:40
zweites Terminal, dann macht man Neues auf und findet die wichtigen Sachen, die man am ersten macht, gar nicht wieder, wobei da dann eben der Effekt ist, das erste Terminal, wenn die wichtigen Sachen geschlossen sind, speichert die History ab, von dem das zweite Terminal ja nichts weiß, das ist das Terminal für die unwichtigen Sachen gewesen, wenn man das schließt, tut der seine History drüberschreiben, dann werden die Historie, die unwichtige
01:11:02
History überschreibt die wichtige und dann ist halt weg und deswegen gibt es da so ein Modus, dass jede Bash, jede Zeile sofort hinten an die History anhängt, dann kann man in dem Terminal was tippen und in jenem und jede Zeile geht sofort rein, ob man das dann immer haben möchte, dass von verschiedenen Verzeichnissen, Projektteilen, ich mach hier,
01:11:20
was weiß ich, Code für Kunde eins, dort Code für Kunde zwei im Terminal und dass die sich dann wieder mischen, das gibt dann ein ziemliches Durcheinander, so hatten wir gestern so Sachen im Workshop und man würde zumindest mit dem S3s auf die komplette Bash auf den Prozess sehen, wann er schreibt, wie er schreibt, allgemein so ist mein, was ich sehr oft und viel mache, Beispiel, wenn ich dann irgendwo
01:11:42
in so einem Verzeichnis war, mein Workshop auch immer, ich geh ganz ganz oft her und sag am Schluss, History, die History-Dateien fange ich immer mit einem großen H an und haben kurze Namen, also das ist meine erste History und wenn ich dann nochmal komme, dann mach ich Tab, oh gibt nur eine, dann sag ich History 2 und dann sag ich, ah es gibt schon und dann irgendwann ist es die History Nummer 13 und
01:12:02
wenn ich halt später wieder in mein Verzeichnis reinkomme, sag ich, ah hier hab ich die und die kann ich wirklich nachlesen und hier wieder ein Wechselsch hin, damit er das Fragezeichen, ja, da liegen ganz viele H, eins, zwei, drei, vier, fünf, neun, irgendwas, wo ich dann halt
01:12:20
wirklich nachgucken kann, auch nach Jahren wieder für irgendwie Tech-Zeugs, wie hab ich denn das getippt, wie war das letzte magische Kommando für irgendwas? Das ist, ich teche ein Buch und guck dann irgendwas Wichtiges nach drin, ja, das ist also, hier wird noch so ein bisschen, das wär auch ein schöner Vortrag gehabt, das ist, den Vortrag wird's irgendwann bei einer Tech-Tagung geben,
01:12:40
warum man mit Latech keine schönen Fotobücher machen kann. Da kann man so die Antwort ungefähr nachlesen. Oder wie man's doch kann, also das Buch, dieses Buch ist dann mit Latech entstanden, mit sehr viel Schweiß und Nächten ohne Schlaf und sowas, aber das ist ein Tech-Thema. Schöne kleine Kommandozelle, die ganz lustige Sachen machen, aber da müssen wir ja tiefer in Tech einsteigen. Und aber das find ich extrem praktisch, dass
01:13:03
man immer da, wo man ist, jetzt läuft das, Historie abspeichern und auch mehrere davon und wenn man dann nach einer Woche wieder reinkommt, ich brauch das gleiche Kommando wieder, weil ich möchte meine Logfiles aufrufen, dann guck ich in dem Historie-File nach und wenn ich das ein paar Mal gemacht hab und immer wieder merk, hey, ich geh da jedes Mal wieder in das Verzeichnis rein und guck da jedes Mal in die Historie
01:13:22
nach, dann macht man aus der Historie geschüttene Datei machsmal.sh und wenn ich da wieder reinkomm, dann legt das schon in den machsmal.sh oder auch ein Make-File, das das aufruft, dann braucht man bloß noch Make sagen. Wenn man Make-File in dem Verzeichnis sagt, dann, ah, da kann man ja mal Make sagen oder vielleicht auch, wenn man das schreibt. Da hatte ich gestern was, da war dann so eine Frage, da ging es ums Tanken und am
01:13:42
Schluss hab ich irgendwie, da sind meine Tankstellen-Daten und dann sagt man halt Makeplot, was macht den Makeplot um alles in der Welt und macht dann irgendeinen komischen Plot mit Tankstellendaten, hätte da gestern da sein müssen, aber einfach die Message dafür. Am Schluss hab ich mir halt ein kleines Make-File gemacht, dann, ja, der kann ein paar Kommandos, was
01:14:02
irgendwie wichtig ist und der Default steht oben, Vortrag zum Make. Wenn man nur Make sagt, dann macht er immer das oberste Wasser, dann macht er ein Update, schickt irgendwas auf den Server und holt was und mit Push kann ich es noch auf den Server schicken und dann kann ich halt irgendeinen Plot machen, den ich mir ausgewählt habe, dann gibt es Plot eins, zwei, drei, vier. Finde ich total praktisch, mach mal dies, mach mal jenes so bei den C-Programmierern,
01:14:21
das nennt man Make Clean, Make irgendwas, Make, Make Install und so, das kann ich mir für ganz andere Dinge auch machen, ja, und kann man für diesen Arbeitsablauf in dem Verzeichnis, ah, ich hab noch Zeit, hervorragend, so Zeugs machen, wie es genau geht, ja, wir sind jetzt ziemlich weit weggekommen von Estris gerade, aber man sieht, wie Make
01:14:41
aufgerufen wird, das ist total toll, wenn ich jetzt hier nämlich Make sag, ups, ah, so, dann sieht man Make hat keine Parameter und macht dann komische Sachen mit Asyngon und ist unglücklich, das ist jetzt könnte ich, wenn ich jetzt hier anfange zu tippen, ah, ihr seht, ha, ha, ha, das ist der
01:15:02
schöne an Estris, wenn man jetzt hier Ried und Ride gehabt hätte, hallo, und jetzt holt er die
01:15:21
Tankstellendaten von den letzten Nächten so etwas rum, aber, das wollen wir jetzt auch nicht alles ab, oh, das geht schnell, das geht jetzt länger, wie? Jetzt weiß ich wieder, was der wird bei mir daheim gerade gegrüßtet. Was kann man noch schönes lernen von der
01:15:46
Shell? Also die Gänsefüße und sowas. Also Shell lernen muss man wirklich interaktiv und so. Dafür gibt es ja Workshops und einfach hinsitzen. Vielleicht überhaupt Shell. Da kam gestern noch eine sehr schöne Frage. Wie lernt man denn die Shell, außer mit S3s zugucken und so was und sich
01:16:01
was liest man da? Und einmal gibt es ein, glaube ich, es gibt eine tolle Man-Page und das reicht eigentlich, wenn man das dann zehn Jahre lang übt. Es gibt ein Oreni-Buch, das auch glaube ich wirklich klasse ist. Also die erste Auflage habe ich auch mal noch reingeguckt und gelesen. Ich lese nicht immer alles neu und wäre gut, weil die Beshk hat viel Neues und auch in
01:16:23
jeder Version und 4 und 4, 2, 4, 3 kommen tolle Sachen dazu, die man gern haben möchte. Aber solange man sie nicht braucht, nutzt man sie auch nicht und wenn man sie weiß, dass es sowas gibt, dann über Man-Page. Deswegen lohnt sich es ab und zu mal Man-Pages oder Release Notes zu lesen. Einfach sehen, was kommt mindestens die Release Notes, was kommt in der neuen Version an tollen
01:16:40
Features dazu. Da sind jetzt Socket-Sachen drin. Das heißt, ich kann mein ganzes Netzwerk, sagen wir mal, mit der Besh schreiben. Ich brauche keine Apache mehr. Das ist vielleicht ein bisschen übertrieben, wo es mal wirklich praktisch war. Wir haben eine NetCat gebraucht auf Kundenrechnern, um was zu erreichen. Und wenn kein NetCat ins Internet ist, ist das problematisch. Und so ein primitiv NetCat
01:17:01
kann man da mal kurz mit der Besh schreiben. Dann habe ich wirklich ein Socket verreihen und raus und irgendwie eine Schleife machen. So Kleinkram geht dann vielleicht schon auch mal. Also immer mit so Shell-Skripten, Skriptlösungen im Allgemeinen, auch wenn es Python und Pearl ist, gibt es immer irgendwo ein Limit, wo man sagen muss, das ist vielleicht auch nicht das richtige Tool. Das Limit ist bei Besh sicher noch kleiner wie bei Python und Pearl und ich habe auch schon Python-Projekte gesehen, wo man
01:17:22
sich am Schluss gewünscht hätte, es wäre nicht Python gewesen, gibt es einfach. Wo werde ich in A? Dann war irgendwie, was liest man noch schönes. Und da gibt es ein PDF für. Beim Workshop das Einzige. Man findet es auf dem Netz, man findet es in der Historie vom Workshop von gestern.
01:17:42
Das nennt sich Besh Guide. Gestern ist mir was eingefallen, jetzt könnte ich ja nachgucken, ich habe es schon rumliegen. Besh Guide irgendwas.
01:18:01
Das ist eine der ersten, und man sagt noch PDF dazu und dann findet man es noch besser. Ich habe doch gerade ein Netz. Wir warten für Google. Das ist jetzt blöd. Dann gucken wir einfach das PDF an. Da ist das Terminal. Dann gucken wir halt das Advanced Besh-Skripting. Besh-Skripting oder
01:18:26
Besh Guide PDF findet ihr jetzt auch, wenn Google mal wieder da ist. Das sind inzwischen über 900 Seiten mit vielen, vielen, vielen Beispielen. Das gibt es auch als HTML. Man muss es nicht so runterladen, aber ich bin viel offline. Gibt es als Webseite und so was,
01:18:41
wo halt in vielen Kapiteln ich möchte, irgendwo steht dann auch mal was über Socket, sonst irgendwas Restricted Shell, keine Ahnung, wenn man was über RAs mit Beispielen. Die letzte Version, die ich runtergeladen habe, die ich gestern gestellt habe, war von 2009. Und lange Zeit davor habe ich es mal irgendwie gelesen, war am Anfang
01:19:01
irritiert aus didaktischen Gründen und weil wirklich Bugs drin waren. Ich weiß nicht, wie es heute ist. Ich habe schon lange nicht mehr eingeladen. Also allein das Volumen ist klasse. Und wenn dann immer ein Fehler drin ist, dann sicher nur aus didaktischen Gründen, weil da lernt man ja noch mehr dazu. Also das ist so das umfangreichste, was mir zu Besch einfällt. Da kann man immer was draus lernen. Und sonst natürlich alle, wer noch ein gutes, altes Linux hat, der soll sich das aufheben, wo es noch
01:19:23
Buchboot und Login-Skripte und so was gab. In diesem neumodischen Zeit kann man ja nichts mehr über Skripte lesen, lernen, weil ja alles halt System-D und Abstart und sonst was ist und niemand so richtig weiß, was es zu bedeuten hat. Also ich habe wirklich viel einfach durch System-Giraffel auch. Warum tut mein Rechner nicht gut? Und warum geht
01:19:42
dieses nicht? Und all diese Sachen, genau wie Programmieren, man lernt durch fremden Code und solche Sachen. Man lernt durch Fehler. So ist das bei der Besche auch. Aber dieses Advanced-Skripting-Dingens ist glaube ich schon eine Quelle für ganz, ganz viel Zeugs. Ja, also noch Fragen, Ideen, Anregungen. Irgendwas, was ich ganz wichtig vergessen
01:20:03
habe. Das mag durchaus sein, weil wie gesagt, das ist kein so ganz durchgeplanter Vortrag ist. Alle glücklich zufrieden und nur hungrig. Entschlafen. Dann ganz neu, dann hören wir einfach zehn Minuten früher auf. Ich wünsche euch einen guten Appetit.