[{"data":1,"prerenderedAt":60536},["ShallowReactive",2],{"subject-bsa":3},[4,1171,2733,3328,4522,10987,11449,34384],{"id":5,"title":6,"body":7,"class":1154,"description":18,"extension":1155,"meta":1156,"navigation":1157,"path":1159,"pdfDownload":1160,"scope":1161,"scopeName":1162,"seo":1163,"stem":1164,"subject":1165,"subjectName":1166,"type":1167,"typeName":1168,"year":1169,"__hash__":1170},"faecher\u002Ffaecher\u002Fbsa\u002F3-4-zsmf-sa1.md","Zusammenfassung – Schulaufgabe 1",{"type":8,"value":9,"toc":1116},"minimark",[10,15,19,36,39,53,58,110,114,117,131,134,148,152,155,175,178,192,195,209,213,217,220,227,232,279,283,286,318,322,325,375,379,396,400,404,427,430,438,442,447,451,477,481,486,512,516,519,522,542,546,557,561,604,608,640,644,737,745,749,752,757,761,775,779,804,808,851,855,860,880,884,922,926,948,952,989,994,999,1013,1018,1022,1073,1078,1082,1086,1097,1101,1104,1108,1111],[11,12,14],"h1",{"id":13},"betriebssysteme","Betriebssysteme",[16,17,18],"p",{},"Im engeren Sinne nur der Kernel",[20,21,22,30],"ul",{},[23,24,25,29],"li",{},[26,27,28],"strong",{},"Kernel",": sehr klein, enthält Grundfunktionen",[23,31,32,35],{},[26,33,34],{},"Pakete",": Rest der Betriebssysteminstallation",[16,37,38],{},"Beispiel: Bestandteile Linux",[20,40,41,47],{},[23,42,43,46],{},[26,44,45],{},"Linux-Kernel",": hardwarenahe Software für Scheduling, Multitasking, Gerätetreiber, Speicherverwaltung etc.",[23,48,49,52],{},[26,50,51],{},"GNU-Paketen",": Shell, Compiler, Bibliotheken usw.",[54,55,57],"h2",{"id":56},"aufgaben","Aufgaben",[20,59,60,80,91,99],{},[23,61,62,63],{},"Prozessverwaltung\n",[20,64,65,71,74,77],{},[23,66,67,70],{},[26,68,69],{},"Prozess",": ausführbares Programm – besteht aus Code, Daten und Ressourcen",[23,72,73],{},"Überwacht Prozesse",[23,75,76],{},"Erzeugt neue Prozesse",[23,78,79],{},"Regelt Kommunikation unter den Prozessen",[23,81,82,83],{},"Speicherverwaltung\n",[20,84,85,88],{},[23,86,87],{},"Verwaltung des Hauptspeichers",[23,89,90],{},"Speicherzuteilung zu Prozessen",[23,92,93,94],{},"Verwaltung des Dateisystems\n",[20,95,96],{},[23,97,98],{},"Erzeugung eines Namensraums mit dem auf das Dateisystem zugegriffen werden kann",[23,100,101,102],{},"Verwaltung von Geräten\n",[20,103,104,107],{},[23,105,106],{},"Zugriff auf Ein- und Ausgabegeräte mittels überwachter Aufrufe",[23,108,109],{},"Effiziente Aufteilung der E\u002FA Geräte zu Prozessen",[54,111,113],{"id":112},"ringe-der-cpu","Ringe der CPU",[16,115,116],{},"Ring: Sicherheitsstufe eines Prozesses. Bestimmt nutzbaren Befehlssatz und Speicherbereich",[20,118,119,125],{},[23,120,121,124],{},[26,122,123],{},"Kernel-Mode",": Ring 0",[23,126,127,130],{},[26,128,129],{},"User-Mode",": Ring 1-3",[16,132,133],{},"Ringe:",[20,135,136,139,142,145],{},[23,137,138],{},"0: meisten Berechtigungen, direkte Hardwarezugriffe & Zugriff auf alle RAM-Bereiche",[23,140,141],{},"1: wird nicht verwendet",[23,143,144],{},"2: wird nicht verwendet",[23,146,147],{},"3: Anwenderprogramme: eingeschränkte Rechte (z.B. keine Interrupts – Programmunterbrechungen – erlaubt)",[54,149,151],{"id":150},"arten","Arten",[16,153,154],{},"Allgemein",[20,156,157,163,169],{},[23,158,159,162],{},[26,160,161],{},"Batch-System",": z.B. DOS",[23,164,165,168],{},[26,166,167],{},"Dialogsystem",": z.B. Windows, Linux, Unix",[23,170,171,174],{},[26,172,173],{},"Echtzeitsystem",": für Industrieanwendungen",[16,176,177],{},"Anzahl der parallel bedienbaren Benutzer",[20,179,180,186],{},[23,181,182,185],{},[26,183,184],{},"Singleuser-System",": nur ein Nutzer",[23,187,188,191],{},[26,189,190],{},"Multiuser-System",": mehrere Nutzer",[16,193,194],{},"Anzahl der parallel bearbeitbaren Aufträge",[20,196,197,203],{},[23,198,199,202],{},[26,200,201],{},"Ein-Prozess-Betriebssysteme"," (Single Tasking): DOS",[23,204,205,208],{},[26,206,207],{},"Mehr-Prozess-Betriebssysteme"," (Multi-Tasking): Linux, Windows",[11,210,212],{"id":211},"rechnerarchitektur","Rechnerarchitektur",[54,214,216],{"id":215},"von-neumann","Von-Neumann",[16,218,219],{},"Code und Daten des Programms liegen im gleichen Speicherbereich",[16,221,222],{},[223,224],"img",{"alt":225,"src":226},"","\u002Fdownloads\u002FBSA\u002Fimages\u002F3-4-zsmf-sa1_img_1.png",[228,229,231],"h3",{"id":230},"komponenten","Komponenten",[20,233,234,240,246,267,273],{},[23,235,236,239],{},[26,237,238],{},"Rechenwerk (ALU):"," Ausführung von Befehlen (Addition, logische Operationen)",[23,241,242,245],{},[26,243,244],{},"Steuerwerk",": Koordiniert die Abarbeitung des Programms (Laden von Befehlen, Operanden holen)",[23,247,248,251,252],{},[26,249,250],{},"Bussystem",": Kommunikation zwischen den einzelnen Komponenten\n",[20,253,254,261],{},[23,255,256,260],{},[257,258,259],"em",{},"Adressbus",": Auf welche Adresse soll zugegriffen werden?",[23,262,263,266],{},[257,264,265],{},"Datenbus",": Liefert Daten",[23,268,269,272],{},[26,270,271],{},"Speicher",": Arbeitsspeicher mit Daten und Code",[23,274,275,278],{},[26,276,277],{},"Ein-\u002FAusgabewerk",": Schnittstellen zum Anwender oder anderen Systemen",[228,280,282],{"id":281},"zyklus","Zyklus",[16,284,285],{},"5 Phasen:",[20,287,288,294,300,306,312],{},[23,289,290,293],{},[26,291,292],{},"Fetch",": Nächsten Befehl holen",[23,295,296,299],{},[26,297,298],{},"Decode",": Befehl dekodieren (Mit Mikrocode – Befehlssatz der CPU)",[23,301,302,305],{},[26,303,304],{},"Fetch Operands",": Benötigte Operanden holen",[23,307,308,311],{},[26,309,310],{},"Execute",": Befehl ausführen",[23,313,314,317],{},[26,315,316],{},"Write back",": Ergebnis zurückschreiben",[54,319,321],{"id":320},"simplifizierte-rechnerarchitektur","Simplifizierte Rechnerarchitektur",[228,323,231],{"id":324},"komponenten-1",[20,326,327,333,339,345,351,357,363,369],{},[23,328,329,332],{},[26,330,331],{},"ALU",": Führt Rechenoperationen aus",[23,334,335,338],{},[26,336,337],{},"Mehrzweck- und Gleitkommaregister",": Spezielle Speicher mit denen die CPU rechnen kann",[23,340,341,344],{},[26,342,343],{},"Befehlsregister",": Spezielles Register, in dem der Maschinencode des aktuell ausgeführten Befehls steht",[23,346,347,350],{},[26,348,349],{},"Programmstatuswort\u002FStatusregister",": Enthält Flags die ALU setzt (Überlauf, negatives Ergebnis etc.)",[23,352,353,356],{},[26,354,355],{},"Stackpointer",": Spezielles Register, das auf die Adresse des obersten Elements des Programmstacks zeigt",[23,358,359,362],{},[26,360,361],{},"Befehlszähler",": Register, das auf die Adresse des nächsten Befehls zeigt, der geholt werden soll",[23,364,365,368],{},[26,366,367],{},"Memory Management Unit (MMU):"," Verwaltet Zugriff auf den Arbeitsspeicher",[23,370,371,374],{},[26,372,373],{},"L1\u002FL2\u002FL3 Cache:"," Sehr schneller Pufferspeicher zwischen RAM und CPU – Speichert häufig benutze Daten",[54,376,378],{"id":377},"maschinensprache","Maschinensprache",[20,380,381,384,390],{},[23,382,383],{},"Programmiersprache, die aus Elementen besteht, die der Prozessor direkt ausführen kann",[23,385,386,389],{},[26,387,388],{},"Befehlssatz",": Menge der Befehle eines Prozessors",[23,391,392,395],{},[26,393,394],{},"Mnenomics",": Für bessere Lesbarkeit von Maschinencode",[54,397,399],{"id":398},"betriebssystemaufrufe","Betriebssystemaufrufe",[228,401,403],{"id":402},"ablauf","Ablauf",[20,405,406,409,412,415,418,421,424],{},[23,407,408],{},"Die zugehörige Interrupt-Service-Routine wird ausgeführt (dadurch wird Betriebssystem-Code ausgeführt)",[23,410,411],{},"Es wird in den Kerne-Mode geschaltet",[23,413,414],{},"Notwendige Überprüfungen werden durchgeführt (z.B.: dürfen nicht quasi-gleichzeitig mehrere Prozesse in eine Datei schreiben)",[23,416,417],{},"Der Datenzugriff wird entweder erlaubt und durchgeführt oder verweigert",[23,419,420],{},"Es wird in den User-Mode zurückgeschaltet",[23,422,423],{},"Der zuvor angehaltene Prozess wird wieder gestartet",[23,425,426],{},"Dabei wird ihm ein Rückgabewert mit dem Ergebnis des Systemaufrufs zur Verfügung gestellt",[16,428,429],{},"Interrupt: Signal, das von Gerät oder Thread an das OS geschickt wird, um rauszufinden, was als Nächstes zu tun ist:",[20,431,432,435],{},[23,433,434],{},"Software: Programm fordert Betriebsdienste an oder Gerätetreiber mit System interagieren wollen",[23,436,437],{},"Hardware: Hardware benötigt OS (bewegen der Maus, drücken einer Taste)",[228,439,441],{"id":440},"aufruf-unter-linux","Aufruf unter Linux",[16,443,444],{},[223,445],{"alt":225,"src":446},"\u002Fdownloads\u002FBSA\u002Fimages\u002F3-4-zsmf-sa1_img_2.png",[11,448,450],{"id":449},"prozesse","Prozesse",[20,452,453,459,462,468,474],{},[23,454,455,458],{},[26,456,457],{},"Prozess\u002FTask",": Ablaufumgebung für ein Programm auf einem Rechnersystem",[23,460,461],{},"Prozess ist Programm zur Laufzeit",[23,463,464,467],{},[257,465,466],{},"Multitasking",": Mehrere Prozesse konkurrieren um Betriebsmittel wie CPU und Speicher",[23,469,470,473],{},[257,471,472],{},"Single-Task",": Immer nur ein Prozess",[23,475,476],{},"Zuteilung\u002FScheduling: Wird vom Betriebssystem übernommen",[54,478,480],{"id":479},"prozesslebenszyklus","Prozesslebenszyklus",[16,482,483],{},[223,484],{"alt":225,"src":485},"\u002Fdownloads\u002FBSA\u002Fimages\u002F3-4-zsmf-sa1_img_3.png",[20,487,488,494,500,506],{},[23,489,490,493],{},[26,491,492],{},"Bereit",": Prozess wird erzeugt",[23,495,496,499],{},[26,497,498],{},"Aktiv",": Prozess arbeitet gerade und ist einer CPU zugeteilt",[23,501,502,505],{},[26,503,504],{},"Blockiert",": Prozess wartet auf Ressource\u002FBetriebsmittel während der Ausführung",[23,507,508,511],{},[26,509,510],{},"Nicht-existent",": Nicht erzeugt oder bereits beendet",[54,513,515],{"id":514},"prozesskontext","Prozesskontext",[16,517,518],{},"Informationen zu einem Prozess",[16,520,521],{},"Drei Bereiche des Prozesskontexts:",[20,523,524,530,536],{},[23,525,526,529],{},[26,527,528],{},"Benutzerkontext",": Daten des Prozesses",[23,531,532,535],{},[26,533,534],{},"Hardwarekontext",": Inhalte der CPU-Register, Stackpointer, Befehlszähler, Programmstatuswort",[23,537,538,541],{},[26,539,540],{},"Systemkontext",": Informationen aus Sicht des Betriebssystems (Prozessnummer, geöffnete Dateien…)",[228,543,545],{"id":544},"kontextwechsel","Kontextwechsel",[20,547,548,551,554],{},[23,549,550],{},"CPU wird dem aktuell laufenden Prozess entzogen und einem anderen Prozess zugeteilt",[23,552,553],{},"Prozesskontext des alten Prozesses muss gesichert werden",[23,555,556],{},"Prozesskontext des neuen Prozesses muss geladen werden",[54,558,560],{"id":559},"prozesstabelle-process-control-block","Prozesstabelle & Process Control Block",[20,562,563,569,601],{},[23,564,565,568],{},[26,566,567],{},"Prozesstabelle",": Alle Prozesse eines Betriebssystems",[23,570,571,574,575],{},[26,572,573],{},"Process Control Block",": Datenstruktur in der Prozesstabelle, die wichtige Informationen eines Prozesses speichert\n",[20,576,577,580,583,586,589,592,595,598],{},[23,578,579],{},"Programmzähler",[23,581,582],{},"Prozesszustand",[23,584,585],{},"Priorität",[23,587,588],{},"Verbrauchte Prozessorzeit",[23,590,591],{},"Eigene Prozessnummer",[23,593,594],{},"Prozessnummer des erzeugenden Prozesses (Elternprozess)",[23,596,597],{},"Zugeordnete Betriebsmittel (geöffnete Dateien)",[23,599,600],{},"Registerinhalte, Stackpointer, Programmstatuswort",[23,602,603],{},"Beim Kontextwechsel werden Daten aus dem alten Prozess in einen PCB gespeichert und aus dem PCB des laufenden Prozesses geladen.",[54,605,607],{"id":606},"threads-leichtgewichtprozesse","Threads (Leichtgewichtprozesse)",[20,609,610,632],{},[23,611,612,613],{},"Kontextwechsel bei einem Prozess ist zeitaufwändig\n",[20,614,615,618],{},[23,616,617],{},"Innerhalb eines Prozesses kann es nebenläufige Aufgaben geben, die sich Betriebsmittel teilen, sog. Threads",[23,619,620,621],{},"Wechsel zwischen Threads ist schneller als zwischen Prozessen unter anderem aufgrund von geteilten Betriebsmitteln zwischen Threads:\n",[20,622,623,626,629],{},[23,624,625],{},"Codesegment",[23,627,628],{},"Datensegment",[23,630,631],{},"Dateideskriptoren (geöffnete Dateien)",[23,633,634,635],{},"Beispiel Word:\n",[20,636,637],{},[23,638,639],{},"Je ein Thread für Eingabeverarbeitung, Darstellung, Druckaufträge",[228,641,643],{"id":642},"kernel-level-threads-heavy-weight-threads-user-level-threads","Kernel-Level-Threads (Heavy-Weight-Threads) & User-Level-Threads",[645,646,647,669],"table",{},[648,649,650],"thead",{},[651,652,653,659,664],"tr",{},[654,655,656],"th",{},[26,657,658],{},"Art",[654,660,661],{},[26,662,663],{},"Kernel Level Threads",[654,665,666],{},[26,667,668],{},"User Level Threads",[670,671,672,686,699,712,724],"tbody",{},[651,673,674,680,683],{},[675,676,677],"td",{},[26,678,679],{},"Verwaltung",[675,681,682],{},"Werden durch das Betriebssystem verwaltet:   - Erzeugen, Beenden - Scheduling",[675,684,685],{},"Betriebssystem kennt die Threads nicht. Werden durch Threadbibliothek verwaltet:   - Erzeugen, Beenden - Scheduling",[651,687,688,693,696],{},[675,689,690],{},[26,691,692],{},"Basisinfo",[675,694,695],{},"- Aktuelle Werte eines Threads werden in einem Thread Control Block (TCB) gespeichert - Äquivalent zu PCB",[675,697,698],{},"- Threadbibliothek wird durch den Prozess eingebunden - Threadbibliothek teilt CPU auf Threads auf",[651,700,701,706,709],{},[675,702,703],{},[26,704,705],{},"Verhalten",[675,707,708],{},"Warten auf ein Signal blockiert andere Threads nicht",[675,710,711],{},"Warten auf ein Signal blockiert andere Threads",[651,713,714,718,721],{},[675,715,716],{},[26,717,545],{},[675,719,720],{},"Fast wie bei Prozessen",[675,722,723],{},"Sehr einfach",[651,725,726,731,734],{},[675,727,728],{},[26,729,730],{},"Beispiel",[675,732,733],{},"Windows",[675,735,736],{},"Java-Threads",[16,738,739,742],{},[223,740],{"alt":225,"src":741},"\u002Fdownloads\u002FBSA\u002Fimages\u002F3-4-zsmf-sa1_img_4.png",[223,743],{"alt":225,"src":744},"\u002Fdownloads\u002FBSA\u002Fimages\u002F3-4-zsmf-sa1_img_5.png",[54,746,748],{"id":747},"cpu-scheduling","CPU-Scheduling",[16,750,751],{},"Nebenläufige Prozesse müssen sich die CPU teilen",[20,753,754],{},[23,755,756],{},"Zuteilung der CPU wird durch das CPU-Scheduling geregelt",[228,758,760],{"id":759},"arten-des-cpu-scheduling","Arten des CPU-Scheduling",[20,762,763,769],{},[23,764,765,768],{},[26,766,767],{},"Non-preemptiv"," (nicht verdrängend): Prozess wird nicht unterbrochen, bis er selbst die CPU frei gibt",[23,770,771,774],{},[26,772,773],{},"Preemptiv"," (verdrängend): Einem Prozess kann die CPU durch das Betriebssystem entzogen werden",[228,776,778],{"id":777},"bestandteile-des-cpu-scheduling","Bestandteile des CPU-Scheduling",[20,780,781,787,798],{},[23,782,783,786],{},[26,784,785],{},"Prozessmanager",": Verwaltet Prozesse",[23,788,789,792,793],{},[26,790,791],{},"Scheduler",": Teil des Prozessmanagers – regelt Planung der CPU-Zuteilung\n",[20,794,795],{},[23,796,797],{},"Bereite Prozesse stehen in der „Ready-Queue“. Scheduler legt die Reihenfolge fest",[23,799,800,803],{},[26,801,802],{},"Dispatcher",": Führt Prozesswechsel aus",[228,805,807],{"id":806},"verschiedene-schedulingziele","Verschiedene Schedulingziele",[20,809,810,816,822,828,833,839,845],{},[23,811,812,815],{},[26,813,814],{},"Fairness",": Garantierte Mindestzuteilung",[23,817,818,821],{},[26,819,820],{},"Effizienz",": Möglichst hohe CPU-Auslastung",[23,823,824,827],{},[26,825,826],{},"Minimale Antwortzeit",": Reaktionszeit auf ein Ereignis soll minimiert werden",[23,829,830],{},[26,831,832],{},"Durchschnittliche Wartezeit",[23,834,835,838],{},[26,836,837],{},"Durchsatz",": Möglichst viele Prozesse bearbeiten",[23,840,841,844],{},[26,842,843],{},"Durchlaufzeit",": Mittlere Zeit, bis ein Prozess abgearbeitet ist, soll möglichst gering sein",[23,846,847,850],{},[26,848,849],{},"Kalkulierbarkeit",": Zeit, bis zu der ein Prozess abgearbeitet ist, ist berechenbar",[228,852,854],{"id":853},"arten-des-scheduling","Arten des Scheduling",[16,856,857],{},[223,858],{"alt":225,"src":859},"\u002Fdownloads\u002FBSA\u002Fimages\u002F3-4-zsmf-sa1_img_6.png",[20,861,862,868,874],{},[23,863,864,867],{},[26,865,866],{},"Kurzfristig (Short-Term)",": Regelt, welcher Prozess aus der Warteschlange als nächstes die CPU bekommt",[23,869,870,873],{},[26,871,872],{},"Mittelfristig (Medium-Term)",": Kann Prozesse aus dem Hauptspeicher auf die Festplatte auslagern, wenn der Prozess lange nicht im Zustand „Bereit“ war",[23,875,876,879],{},[26,877,878],{},"Langfristig (Long-Term):"," Regelt, welche Prozesse überhaupt in die Warteschlange dürfen. Bei Überlastung des Systems können Prozesse abgewiesen werden",[228,881,883],{"id":882},"strategien","Strategien",[20,885,886,892,898,904,910,916],{},[23,887,888,891],{},[26,889,890],{},"First Come First Serve:"," Abarbeitung nach Ankunftszeit",[23,893,894,897],{},[26,895,896],{},"Shortest Job First",": Kürzeste Bearbeitungszeit zuerst",[23,899,900,903],{},[26,901,902],{},"Priority Scheduling",": Höchste Priorität zuerst",[23,905,906,909],{},[26,907,908],{},"Shortest Remaining Time First",": Kürzeste Restbearbeitungszeit zuerst – Prozess mit kürzerer Restbearbeitungszeit als laufender Prozess kommt an -> laufender Prozess wird unterbrochen",[23,911,912,915],{},[26,913,914],{},"Round Robin",": Nach bestimmtem Zeitabschnitt wird der Prozess gewechselt",[23,917,918,921],{},[26,919,920],{},"Dynamic Priority Round Robin",": Statische Priorität zu Prozessbeginn, kann sich aber zur Laufzeit ändern",[54,923,925],{"id":924},"prozesssynchronisation","Prozesssynchronisation",[20,927,928,931,934],{},[23,929,930],{},"Auf Mehr-Programm-Betriebssystemen werden Prozesse oder Threads quasi-parallel ausgeführt (Nebenläufigkeit)",[23,932,933],{},"Durch präemptives (verdrängendes) Scheduling kann einem Prozess der CPU entzogen werden, wenn ein anderer Prozess aktiviert werden muss",[23,935,936,937],{},"Prozess kann nicht wissen wann er unterbrochen wird und es nur teilweise beeinflussen\n",[20,938,939,942],{},[23,940,941],{},"Bearbeitet ein Prozess ein Betriebsmittel, das mit anderen geteilt wird, muss es in einem konsistenten Zustand hinterlassen werden",[23,943,944,947],{},[26,945,946],{},"Atomare Aktionen",": Codebereiche, die an einem Stück bearbeitet werden müssen um Betriebsmittel konsistent zu hinterlassen",[228,949,951],{"id":950},"lost-update-problem","Lost-Update-Problem",[20,953,954,957,977,980,983],{},[23,955,956],{},"Zwei Prozesse wollen auf dieselbe Variable zugreifen",[23,958,959,960],{},"Prozess A erhöht die Variable um 1, Prozess B um 5\n",[20,961,962],{},[23,963,964,965],{},"Aktion „Erhöhen um x“ auf Maschinenbefehlsebene:\n",[966,967,968,971,974],"ol",{},[23,969,970],{},"Counter lesen",[23,972,973],{},"Counter um x erhöhen",[23,975,976],{},"Counter schreiben",[23,978,979],{},"Wird Prozess A zwischen 1. Und 2. Von Prozess B unterbrochen, so wird das Ergebnis von Prozess B überschrieben, sobald Prozess A wieder CPU-Zeit hat, da Prozess A noch mit dem Variablenwert vor der Ausführung von Prozess B arbeitet.",[23,981,982],{},"Das Ergebnis der beiden Prozesse hängt von ihrer zeitlichen Reihenfolge ab",[23,984,985,988],{},[26,986,987],{},"Race Condition",": Ergebnis zweier Prozesse mit dem gleichen Betriebsmittel, das von der zeitlichen Reihenfolge abhängt",[16,990,991],{},[223,992],{"alt":225,"src":993},"\u002Fdownloads\u002FBSA\u002Fimages\u002F3-4-zsmf-sa1_img_7.png",[995,996,998],"h4",{"id":997},"lösung-wechselseitiger-ausschluss","Lösung: wechselseitiger Ausschluss",[20,1000,1001,1007],{},[23,1002,1003,1006],{},[26,1004,1005],{},"Kritischer Abschnitt",": Programmteil, der eine atomare Aktion beinhält",[23,1008,1009,1012],{},[26,1010,1011],{},"Wechselseitiger Ausschluss",": Sorgt dafür, dass sich in einem kritischen Abschnitt immer nur ein Prozess befindet (z.B. mit Hilfe einer Semaphore)",[16,1014,1015],{},[223,1016],{"alt":225,"src":1017},"\u002Fdownloads\u002FBSA\u002Fimages\u002F3-4-zsmf-sa1_img_8.png",[995,1019,1021],{"id":1020},"praktische-implementierung-binäre-semaphoren","Praktische Implementierung: (binäre) Semaphoren",[20,1023,1024,1035,1054,1070],{},[23,1025,1026,1029,1030],{},[26,1027,1028],{},"Semaphorenzähler",": Bestimmt wie viele Prozesse in einem kritischen Abschnitt sein dürfen\n",[20,1031,1032],{},[23,1033,1034],{},"Binäre Semaphore: Maximal ein Prozess in einem kritischen Abschnitt",[23,1036,1037,1038],{},"Eintritt in kritischen Abschnitt:\n",[20,1039,1040],{},[23,1041,1042,1043],{},"Funktion P() wird aufgerufen\n",[20,1044,1045,1048,1051],{},[23,1046,1047],{},"Sperrt kritischen Bereich",[23,1049,1050],{},"Reduziert Semaphorenzähler um 1, sofern er größer als 0 ist",[23,1052,1053],{},"Semaphorenzähler ist 0: Eintritt in kritischen Bereich wird verwehrt – Prozess verliert CPU",[23,1055,1056,1057],{},"Verlassen eines kritischen Abschnitts:\n",[20,1058,1059],{},[23,1060,1061,1062],{},"Funktion V() wird aufgerufen\n",[20,1063,1064,1067],{},[23,1065,1066],{},"Gibt kritischen Bereich frei",[23,1068,1069],{},"Semaphorenzähler wird um 1 erhöht",[23,1071,1072],{},"Jeder kritische Abschnitt\u002Fjedes Betriebsmittel hat eine zugeordnete Semaphore",[16,1074,1075],{},[223,1076],{"alt":225,"src":1077},"\u002Fdownloads\u002FBSA\u002Fimages\u002F3-4-zsmf-sa1_img_9.png",[228,1079,1081],{"id":1080},"probleme-mit-nebenläufigen-prozessen","Probleme mit nebenläufigen Prozessen",[995,1083,1085],{"id":1084},"blockieren","Blockieren",[20,1087,1088,1091,1094],{},[23,1089,1090],{},"Prozess 1 belegt ein Betriebsmittel",[23,1092,1093],{},"Prozess 2 benötigt das gleiche Betriebsmittel",[23,1095,1096],{},"Prozess 2 ist blockiert",[995,1098,1100],{"id":1099},"verhungern","Verhungern",[16,1102,1103],{},"Ein Prozess erhält ein Betriebsmittel nie, da immer andere Prozesse das Betriebsmittel belegen",[995,1105,1107],{"id":1106},"deadlock","Deadlock",[16,1109,1110],{},"Mehrere Prozesse versuchen auf Betriebsmittel zuzugreifen, die von jeweils einem der anderen Prozesse blockiert sind.",[16,1112,1113],{},[223,1114],{"alt":225,"src":1115},"\u002Fdownloads\u002FBSA\u002Fimages\u002F3-4-zsmf-sa1_img_10.png",{"title":225,"searchDepth":1117,"depth":1117,"links":1118},2,[1119,1120,1121,1122,1127,1130,1131,1135,1136,1139,1140,1143,1150],{"id":56,"depth":1117,"text":57},{"id":112,"depth":1117,"text":113},{"id":150,"depth":1117,"text":151},{"id":215,"depth":1117,"text":216,"children":1123},[1124,1126],{"id":230,"depth":1125,"text":231},3,{"id":281,"depth":1125,"text":282},{"id":320,"depth":1117,"text":321,"children":1128},[1129],{"id":324,"depth":1125,"text":231},{"id":377,"depth":1117,"text":378},{"id":398,"depth":1117,"text":399,"children":1132},[1133,1134],{"id":402,"depth":1125,"text":403},{"id":440,"depth":1125,"text":441},{"id":479,"depth":1117,"text":480},{"id":514,"depth":1117,"text":515,"children":1137},[1138],{"id":544,"depth":1125,"text":545},{"id":559,"depth":1117,"text":560},{"id":606,"depth":1117,"text":607,"children":1141},[1142],{"id":642,"depth":1125,"text":643},{"id":747,"depth":1117,"text":748,"children":1144},[1145,1146,1147,1148,1149],{"id":759,"depth":1125,"text":760},{"id":777,"depth":1125,"text":778},{"id":806,"depth":1125,"text":807},{"id":853,"depth":1125,"text":854},{"id":882,"depth":1125,"text":883},{"id":924,"depth":1117,"text":925,"children":1151},[1152,1153],{"id":950,"depth":1125,"text":951},{"id":1080,"depth":1125,"text":1081},"3-4","md",{},{"title":1158},"Zusammenfassung – Schulaufgabe 1 (2023\u002F2024)","\u002Ffaecher\u002Fbsa\u002F3-4-zsmf-sa1","\u002Fdownloads\u002FBSA\u002FBSA_3-4_ZSMF_SA1.pdf","SA1","Schulaufgabe 1",{"title":6,"description":18},"faecher\u002Fbsa\u002F3-4-zsmf-sa1","BSA","Betriebssysteme und Administration","ZSMF","Zusammenfassung","2023\u002F2024","UCml3q7ij2FGv2JpnjORZX6xjuNJlPZXqP7CYuzGgBY",{"id":1172,"title":1173,"body":1174,"class":1154,"description":225,"extension":1155,"meta":2723,"navigation":2724,"path":2726,"pdfDownload":2727,"scope":2728,"scopeName":2729,"seo":2730,"stem":2731,"subject":1165,"subjectName":1166,"type":1167,"typeName":1168,"year":1169,"__hash__":2732},"faecher\u002Ffaecher\u002Fbsa\u002F3-4-zsmf-sa2.md","Zusammenfassung – Schulaufgabe 2",{"type":8,"value":1175,"toc":2673},[1176,1180,1200,1204,1221,1225,1229,1240,1242,1289,1293,1304,1308,1347,1351,1355,1408,1412,1443,1447,1458,1462,1487,1491,1496,1500,1531,1535,1541,1587,1591,1663,1667,1706,1710,1747,1750,1798,1802,1804,1827,1831,1835,1859,1863,1883,1887,1914,1918,1934,1938,1952,1956,1975,1979,2010,2014,2045,2048,2090,2094,2132,2136,2140,2166,2170,2187,2191,2210,2213,2253,2257,2262,2266,2300,2304,2319,2323,2325,2330,2334,2348,2352,2368,2372,2388,2392,2403,2406,2410,2446,2450,2467,2471,2496,2500,2527,2531,2583,2587,2623,2627,2632,2635,2649,2653],[11,1177,1179],{"id":1178},"speicherverwaltung","Speicherverwaltung",[20,1181,1182,1185,1188,1194],{},[23,1183,1184],{},"Zuweisung von Speicher an Prozesse",[23,1186,1187],{},"Schutz vor unerlaubtem Zugriff auf OS-reservierten Bereich",[23,1189,1190,1193],{},[26,1191,1192],{},"Belegungstabelle (Memory Management Unit – MMU):"," Speichert freie und belegte Speicherbereiche",[23,1195,1196,1199],{},[26,1197,1198],{},"Seite",": Block von x Bytes, die zusammengefasst sind",[54,1201,1203],{"id":1202},"direkte-speicherbelegung","Direkte Speicherbelegung",[20,1205,1206,1212,1218],{},[23,1207,1208,1211],{},[26,1209,1210],{},"Ein Programm",": Prozess erhält den gesamten Speicher",[23,1213,1214,1217],{},[26,1215,1216],{},"Mehrere Programme",": Zuordnung erfolgt über Speicherbelegungstabelle",[23,1219,1220],{},"Wird ein freier Platz gesucht, wird die gesamte Tabelle auf eine passende Anzahl aufeinanderfolgender Nullen durchsucht",[228,1222,1224],{"id":1223},"speicherbelegungsstrategien","Speicherbelegungsstrategien",[995,1226,1228],{"id":1227},"kriterien","Kriterien",[20,1230,1231,1234,1237],{},[23,1232,1233],{},"Möglichst wenig Verschnitt",[23,1235,1236],{},"Restblöcke sollen noch eine „nutzbare“ Größe haben",[23,1238,1239],{},"Möglichst schnelles finden von freiem Speicher",[995,1241,883],{"id":882},[20,1243,1244,1250,1256,1259,1265,1268,1274,1277,1283,1286],{},[23,1245,1246,1249],{},[26,1247,1248],{},"First-Fit",": Erster passender, freier Speicherplatz wird gewählt",[23,1251,1252,1255],{},[26,1253,1254],{},"Best-Fit",": Am besten passender Speicherplatz wird gewählt",[23,1257,1258],{},"Wenig Verschnitt",[23,1260,1261,1264],{},[26,1262,1263],{},"Worst-Fit",": Am schlechtesten passender Speicherplatz wird gewählt",[23,1266,1267],{},"Viel Verschnitt",[23,1269,1270,1273],{},[26,1271,1272],{},"Next-Fit",": Nächster Platz an dem der angeforderte Speicher passt wird gewählt",[23,1275,1276],{},"Nächste Suche beginnt an dieser Stelle",[23,1278,1279,1282],{},[26,1280,1281],{},"Halbierung",": Speicher wird iterativ halbiert",[23,1284,1285],{},"Verschiedengroße Blöcke entstehen",[23,1287,1288],{},"Es wird immer ein kompletter Block belegt",[228,1290,1292],{"id":1291},"probleme","Probleme",[20,1294,1295,1301],{},[23,1296,1297,1300],{},[26,1298,1299],{},"Fragmentierung",": Speicher hat viele kleine, unbrauchbare Stücke",[23,1302,1303],{},"Belegungstabelle benötigt ebenfalls Platz",[54,1305,1307],{"id":1306},"virtuelle-speicherbelegung","Virtuelle Speicherbelegung",[20,1309,1310,1316,1322,1325],{},[23,1311,1312,1315],{},[26,1313,1314],{},"Logischer Adressraum",": Adressraum, auf den die Befehle eines Programms referieren",[23,1317,1318,1321],{},[26,1319,1320],{},"Physischer Adressraum",": Adressraum, in dem sich das Programm bei der Abarbeitung befindet",[23,1323,1324],{},"Beide Adressräume werden in gleichgroße Seiten eingeteilt",[23,1326,1327,1330,1331],{},[26,1328,1329],{},"Seitentabelle",": Dient zur Transformation von virtuellen in physische Seitenrahmen. Übersetzt virtuelle Adressen in reale Adressen.\n",[20,1332,1333],{},[23,1334,1335,1336],{},"Enthält:\n",[20,1337,1338,1341,1344],{},[23,1339,1340],{},"Für welche virtuelle Seite welche physische Seite verwendet werden soll",[23,1342,1343],{},"Bei nicht verwendeten Seiten, dass keine reale Seite dafür verwendet wird",[23,1345,1346],{},"Bei Auslagerung, wo in einer Programm-\u002FBibliotheks-\u002FAuslagerungsdatei der Inhalt gespeichert ist",[228,1348,1350],{"id":1349},"seitentabelleneintrag","Seitentabelleneintrag",[995,1352,1354],{"id":1353},"aufbau","Aufbau",[20,1356,1357,1363,1369,1380,1394],{},[23,1358,1359,1362],{},[26,1360,1361],{},"Seitenrahmennummer",": Physische Adresse im Arbeitsspeicher, auf die der Eintrag verweist",[23,1364,1365,1368],{},[26,1366,1367],{},"Present-Absent-Bit",": Im RAM(1) oder ausgelagert(0)",[23,1370,1371,1374,1375],{},[26,1372,1373],{},"Protection-Bits",": Regelt Zugriff auf die Seite\n",[20,1376,1377],{},[23,1378,1379],{},"z.B.: 1 Bit: 0 -> Lesen und Schreiben – 1 -> Schreiben",[23,1381,1382,1385,1386],{},[26,1383,1384],{},"Modified-Bit (M-Bit):"," Wird gesetzt, wenn auf eine Seite geschrieben wird\n",[20,1387,1388,1391],{},[23,1389,1390],{},"Beim Auslagern wird dadurch entschieden, ob die Version auf der Festplatte aktualisiert werden muss oder ob diese noch aktuell ist",[23,1392,1393],{},"Wurde es geändert?",[23,1395,1396,1399,1400],{},[26,1397,1398],{},"Referenced-Bit (R-Bit):"," Wird bei jedem Zugriff auf die Seite gesetzt\n",[20,1401,1402,1405],{},[23,1403,1404],{},"Hilft beim entscheiden welche Seite ausgelagert werden soll",[23,1406,1407],{},"Wurde es benutzt?",[995,1409,1411],{"id":1410},"adressabbildung","Adressabbildung",[20,1413,1414,1420,1426,1432],{},[23,1415,1416,1419],{},[26,1417,1418],{},"Virtuelle Adresse",": Seitennummer + Offset",[23,1421,1422,1425],{},[26,1423,1424],{},"Reale Adresse",": Basisadresse der realen Seite + Offset",[23,1427,1428,1431],{},[26,1429,1430],{},"Länge des Offsets",": Größe der Seite",[23,1433,1434,1437,1438],{},[26,1435,1436],{},"Länge der Seitentabelle",": Anzahl der Bits für die Seitennummer\u002FBasisadresse\n",[20,1439,1440],{},[23,1441,1442],{},"z.B.: Seite mit 1024 Byte -> 210 -> 10 Bit",[228,1444,1446],{"id":1445},"swapping","Swapping",[20,1448,1449,1452,1455],{},[23,1450,1451],{},"Kein freier Arbeitsspeicher -> Daten werden ausgelagert",[23,1453,1454],{},"Adressen von ausgelagerten Seiten werden nicht in der Seitentabelle gespeichert",[23,1456,1457],{},"Es kommt zum Seitenfehler -> OS greift auf eigene Tabellen zurück",[228,1459,1461],{"id":1460},"seitenfehler","Seitenfehler",[20,1463,1464,1467,1470,1473],{},[23,1465,1466],{},"Prozess spricht Adresse an, die nicht im RAM geladen ist",[23,1468,1469],{},"Seitenfehler entsteht",[23,1471,1472],{},"OS übernimmt Behandlung",[23,1474,1475,1476],{},"Mögliche Ursachen:\n",[20,1477,1478,1481,1484],{},[23,1479,1480],{},"Seite ist ausgelagert",[23,1482,1483],{},"Prozess greift das erste Mal auf die Seite zu",[23,1485,1486],{},"Seite ist ungültig bzw. Zugriff nicht erlaubt (Segmentation Fault)",[11,1488,1490],{"id":1489},"bootvorgang","Bootvorgang",[16,1492,1493],{},[223,1494],{"alt":225,"src":1495},"\u002Fdownloads\u002FBSA\u002Fimages\u002F3-4-zsmf-sa2_img_1.png",[54,1497,1499],{"id":1498},"bios-master-boot-record-mbr","BIOS: Master Boot Record (MBR)",[20,1501,1502,1508,1514,1519,1525],{},[23,1503,1504,1507],{},[26,1505,1506],{},"Bootloader",": Ruft Bootloader oder Bootmanager auf",[23,1509,1510,1513],{},[26,1511,1512],{},"Datenträgersignatur",": Identifikation des Datenträgers, der Bootinstruktionen enthält",[23,1515,1516],{},[26,1517,1518],{},"Schutzabstand",[23,1520,1521,1524],{},[26,1522,1523],{},"Partitionstabelle",": Partitionen auf dem physischen Laufwerk",[23,1526,1527,1530],{},[26,1528,1529],{},"Bootsektorsignatur",": 0x55AA als Ende des MBR",[54,1532,1534],{"id":1533},"uefi-general-partition-table-gpt","UEFI: General Partition Table (GPT)",[16,1536,1537,1540],{},[26,1538,1539],{},"LBA",": Logical Block Index z.B.: 1LBA = 512 Byte",[20,1542,1543,1549,1569,1575,1581],{},[23,1544,1545,1548],{},[26,1546,1547],{},"LBA0 – Protective MBR",": 512 Byte Platzhalter für MBR",[23,1550,1551,1554,1555],{},[26,1552,1553],{},"LBA1 – GPT Header",":\n",[20,1556,1557,1560,1563,1566],{},[23,1558,1559],{},"Position des Headers",[23,1561,1562],{},"Position des Backup-Headers",[23,1564,1565],{},"Anzahl und Größe der Partitionseinträge",[23,1567,1568],{},"CRC-Prüfsumme",[23,1570,1571,1574],{},[26,1572,1573],{},"LBA2 – LBA34",": Partitionseinträge",[23,1576,1577,1580],{},[26,1578,1579],{},"Ab LBA34",": Eigentliche Partitionen",[23,1582,1583,1586],{},[26,1584,1585],{},"In den letzten 34 LBAs",": Alles gespiegelt",[54,1588,1590],{"id":1589},"vergleich-mbr-vs-gpt","Vergleich: MBR vs. GPT",[645,1592,1593,1609],{},[648,1594,1595],{},[651,1596,1597,1599,1604],{},[654,1598],{},[654,1600,1601],{},[26,1602,1603],{},"Master Boot Record (MBR)",[654,1605,1606],{},[26,1607,1608],{},"General Partition Table (GPT)",[670,1610,1611,1624,1637,1650],{},[651,1612,1613,1618,1621],{},[675,1614,1615],{},[257,1616,1617],{},"Max. Festplattengröße",[675,1619,1620],{},"2TB",[675,1622,1623],{},"18 ExaByte",[651,1625,1626,1631,1634],{},[675,1627,1628],{},[257,1629,1630],{},"Primäre Partitionen",[675,1632,1633],{},"4",[675,1635,1636],{},"Unbegrenzt",[651,1638,1639,1644,1647],{},[675,1640,1641],{},[257,1642,1643],{},"Sicherheit",[675,1645,1646],{},"Keine Prüfsumme, nur ein Datensektor",[675,1648,1649],{},"Datensektor mit Prüfsumme und Backup",[651,1651,1652,1657,1660],{},[675,1653,1654],{},[257,1655,1656],{},"Standardisierung",[675,1658,1659],{},"Kein Standard; Lose Vereinbarung",[675,1661,1662],{},"Exakt definiert durch EFI",[11,1664,1666],{"id":1665},"datenträgerverwaltung","Datenträgerverwaltung",[20,1668,1669,1675],{},[23,1670,1671,1674],{},[26,1672,1673],{},"Unter Windows",": diskmgmt.msc (GUI) oder diskpart (CLI)",[23,1676,1677,1680,1681],{},[26,1678,1679],{},"Einfachste Variante",": Basisdatenträger\n",[20,1682,1683,1694,1700],{},[23,1684,1685,1688,1689],{},[26,1686,1687],{},"Partitionierung",": Einteilung in Untereinheiten (Volumes)\n",[20,1690,1691],{},[23,1692,1693],{},"Wird in MBR\u002FGPT geschrieben",[23,1695,1696,1699],{},[26,1697,1698],{},"Laufwerksbezeichnung",": Name und Laufwerksbuchstabe",[23,1701,1702,1705],{},[26,1703,1704],{},"Dateisystem",": Art, wie Dateien auf dem Datenträger abgelegt werden",[54,1707,1709],{"id":1708},"dynamische-datenträgerverwaltung","Dynamische Datenträgerverwaltung",[20,1711,1712,1718,1724,1730,1736,1741],{},[23,1713,1714,1717],{},[26,1715,1716],{},"Logical Volume Manager (LVM):"," kümmert sich um Verwaltung der logischen Datenträger",[23,1719,1720,1723],{},[26,1721,1722],{},"Physical Volume",": Physisches Laufwerk (HDD \u002F SSD)",[23,1725,1726,1729],{},[26,1727,1728],{},"Physical Partition",": Physische Partition auf einem Laufwerk",[23,1731,1732,1735],{},[26,1733,1734],{},"Logical Volume",": Logisches Laufwerk, das sich aus mehreren physischen Partitionen zusammensetzen kann",[23,1737,1738],{},[26,1739,1740],{},"Filesystem",[23,1742,1743,1746],{},[26,1744,1745],{},"Mounting-Point",": Ort, an dem ein Laufwerk eingegliedert wird",[228,1748,1673],{"id":1749},"unter-windows",[20,1751,1752,1758,1764,1781],{},[23,1753,1754,1757],{},[26,1755,1756],{},"Einfaches Volume",": zusammenhängender Bereiche einer physischen Festplatte",[23,1759,1760,1763],{},[26,1761,1762],{},"Übergreifendes Volume",": besteht aus Bereichen mehrere physischer Festplatten – max. 32",[23,1765,1766,1769,1770],{},[26,1767,1768],{},"Stripesetvolume",": Wie RAID 0\n",[20,1771,1772,1775,1778],{},[23,1773,1774],{},"Bestandteile auf Festplatten aufgeteilt",[23,1776,1777],{},"Beschleunigung von Lese- und Schreibvorgängen",[23,1779,1780],{},"Keine Redundanz",[23,1782,1783,1786,1787],{},[26,1784,1785],{},"Gespiegeltes Volume",": Wie RAID 1\n",[20,1788,1789,1792,1795],{},[23,1790,1791],{},"Daten auf Festplatten dupliziert",[23,1793,1794],{},"Fehlertoleranz",[23,1796,1797],{},"Beschleunigung von Lesevorgängen",[11,1799,1801],{"id":1800},"dateisysteme","Dateisysteme",[54,1803,57],{"id":56},[20,1805,1806,1809,1812,1815,1818,1821,1824],{},[23,1807,1808],{},"Physische Belegung von Speichereinheiten",[23,1810,1811],{},"Zuordnung von Speichereinheiten zu logischen Dateien",[23,1813,1814],{},"Benennung der logischen Dateien",[23,1816,1817],{},"Zugriffsberechtigung regeln",[23,1819,1820],{},"Führen von Dateiattributen (schreibgeschützt, versteckt…)",[23,1822,1823],{},"Verwalten von Metadaten (Größe, letzter Zugriff)",[23,1825,1826],{},"Bereitstellen standardisierter Zugriffsschnittstellen (open, read, write…)",[54,1828,1830],{"id":1829},"arten-der-speicherung","Arten der Speicherung",[228,1832,1834],{"id":1833},"kontinuierliche-speicherung","Kontinuierliche Speicherung",[20,1836,1837,1840,1843],{},[23,1838,1839],{},"Daten einer Datei werden aneinanderhängend in den Speicher geschrieben",[23,1841,1842],{},"Aufteilung in Blocks",[23,1844,1845,1846],{},"Probleme\n",[20,1847,1848,1851,1853,1856],{},[23,1849,1850],{},"Freien Speicherplatz finden",[23,1852,1299],{},[23,1854,1855],{},"Erweiterung schwierig",[23,1857,1858],{},"Größe von Dateien ggf. nicht im Voraus bekannt",[228,1860,1862],{"id":1861},"verkettete-speicherung","Verkettete Speicherung",[20,1864,1865,1868,1871],{},[23,1866,1867],{},"Dateien werden in Form einer verketten Liste gespeichert",[23,1869,1870],{},"Start jeder Datei wird in File Allocation Table gespeichert",[23,1872,1845,1873],{},[20,1874,1875,1877,1880],{},[23,1876,1299],{},[23,1878,1879],{},"Schlecht für random accesses",[23,1881,1882],{},"Fehleranfällig",[228,1884,1886],{"id":1885},"indizierte-speicherung","Indizierte Speicherung",[20,1888,1889,1892,1895,1906],{},[23,1890,1891],{},"Adressen der Speicherblöcke werden in einer Indextabelle gespeichert",[23,1893,1894],{},"Mehrere Stufen der Indizierung möglich",[23,1896,1897,1898],{},"Vorteile\n",[20,1899,1900,1903],{},[23,1901,1902],{},"Keine externe Fragmentierung",[23,1904,1905],{},"Random access sehr schnell",[23,1907,1908,1909],{},"Nachteil\n",[20,1910,1911],{},[23,1912,1913],{},"Speicher-Overhead für die zusätzlichen Indextabellen",[228,1915,1917],{"id":1916},"baumsequentielle-speicherung","Baumsequentielle Speicherung",[20,1919,1920,1923,1926],{},[23,1921,1922],{},"Adressen werden in einer Baumstruktur gespeichert",[23,1924,1925],{},"Nur unterste „Blätter“ enthalten Daten",[23,1927,1928,1929],{},"Vorteil\n",[20,1930,1931],{},[23,1932,1933],{},"Schneller Zugriff auf Dateien",[995,1935,1937],{"id":1936},"beispiel-ntfs","Beispiel NTFS",[20,1939,1940,1943,1946,1949],{},[23,1941,1942],{},"Jede Datei hat einen Eintrag im Master File Table (MFT)",[23,1944,1945],{},"Kleine Dateien sind direkt im MFT gespeichert",[23,1947,1948],{},"Bei größeren Dateien steht die Adresse der Daten im MFT",[23,1950,1951],{},"Bei Verzeichnissen wird weiter verzweigt",[54,1953,1955],{"id":1954},"unter-windows-10","Unter Windows 10",[20,1957,1958],{},[23,1959,1960,1961],{},"Mögliche Dateisysteme\n",[20,1962,1963,1966,1969,1972],{},[23,1964,1965],{},"NTFS (Standard)",[23,1967,1968],{},"FAT",[23,1970,1971],{},"FAT32",[23,1973,1974],{},"ReFS",[228,1976,1978],{"id":1977},"access-control-lists-acls-ntfs","Access Control Lists (ACLs) (NTFS)",[20,1980,1981,1984,1987,1993],{},[23,1982,1983],{},"Zugriffsrechte können verwaltet warden",[23,1985,1986],{},"Zugriffsrechte warden in Zugriffslisten (ACLs) gespeichert",[23,1988,1989,1992],{},[26,1990,1991],{},"ACL",": geordnete Liste von Zugriffseinträgen (Access Control Entries, ACEs)",[23,1994,1995,1998,1999],{},[26,1996,1997],{},"ACE",": Access Control Entry\n",[20,2000,2001,2004,2007],{},[23,2002,2003],{},"SID (Security Identifier): identifiziert User oder Gruppe",[23,2005,2006],{},"Spezifiziert Zugriffsrechte",[23,2008,2009],{},"Ein Bit, das besagt, ob das Recht vererbt wird",[11,2011,2013],{"id":2012},"registry","Registry",[20,2015,2016,2019,2022,2042],{},[23,2017,2018],{},"Zentrale Datenbank zur Speicherung von Informationen von System und Software",[23,2020,2021],{},"Einträge für OS, Anwendungen, Komponenten und Treiber",[23,2023,2024,2025],{},"Neue Einträge bei\n",[20,2026,2027,2030,2033,2036,2039],{},[23,2028,2029],{},"Installation",[23,2031,2032],{},"Systemeinstellungsänderungen",[23,2034,2035],{},"Programmeinstellungen",[23,2037,2038],{},"Konfig-Änderungen",[23,2040,2041],{},"Manuelles erstellen",[23,2043,2044],{},"Editieren über reg (CLI) oder regedit.exe (GUI)",[54,2046,1354],{"id":2047},"aufbau-1",[20,2049,2050,2074,2082],{},[23,2051,2052,2053],{},"Hauptschlüssel & Views\n",[20,2054,2055,2060,2065,2068,2071],{},[23,2056,2057],{},[26,2058,2059],{},"HKEY_LOCAL_MACHINE (Hauptschlüssel)",[23,2061,2062],{},[26,2063,2064],{},"HKEY_USERS (Hauptschlüssel)",[23,2066,2067],{},"HKEY_CLASSES_ROOT (View)",[23,2069,2070],{},"HKEY_CURRENT_USER (View)",[23,2072,2073],{},"HKEY_CURRENT_CONFIG (View)",[23,2075,2076,2077],{},"Unterschlüssel\n",[20,2078,2079],{},[23,2080,2081],{},"z.B.: \\SOFTWARE\\7-Zip",[23,2083,2084,2085],{},"Wert: Eintrag unter Unterschlüssel\n",[20,2086,2087],{},[23,2088,2089],{},"z.B.: \\SOFTWARE\\7-Zip\\Path",[54,2091,2093],{"id":2092},"datentypen","Datentypen",[20,2095,2096,2102,2108,2114,2120,2126],{},[23,2097,2098,2101],{},[26,2099,2100],{},"REG_BINARY",": binäre Darstellung",[23,2103,2104,2107],{},[26,2105,2106],{},"REG_DWORD",": 8 Hex-Stellen",[23,2109,2110,2113],{},[26,2111,2112],{},"REG_QWORD",": 16 Hex-Stellen",[23,2115,2116,2119],{},[26,2117,2118],{},"REG_SZ",": Zeichenkette (String)",[23,2121,2122,2125],{},[26,2123,2124],{},"REG_Expand_SZ",": Zeichenkette mit Systemvariablen",[23,2127,2128,2131],{},[26,2129,2130],{},"REG_MULTI_SZ",": Array aus Zeichenketten",[11,2133,2135],{"id":2134},"netzwerkverwaltung","Netzwerkverwaltung",[54,2137,2139],{"id":2138},"dns-domain-name-system","DNS: Domain Name System",[20,2141,2142,2145,2148,2151,2154,2160],{},[23,2143,2144],{},"„Adressbuch des Internets“",[23,2146,2147],{},"IP-Adressen schwer zu merken",[23,2149,2150],{},"Domain-Namen wurden entwickelt",[23,2152,2153],{},"Außerdem leichter wartbar, da beim benutzen eines Domain-Namen dem Nutzer nicht auffällt, wenn sich die IP-Adresse hinter dem Namen ändert",[23,2155,2156,2159],{},[26,2157,2158],{},"FQDN",": Fully Qualified Domain Name",[23,2161,2162,2165],{},[26,2163,2164],{},"NSLOOKUP",": Dienstprogramm zur “manuellen” Abfrage von Domain-Namen, z.B. für Debug",[228,2167,2169],{"id":2168},"schritte","Schritte",[966,2171,2172,2175,2178,2181,2184],{},[23,2173,2174],{},"Nutzer gibt Domain-Namen ein",[23,2176,2177],{},"Client sendet entsprechende DNS-Abfrage an DNS-Server",[23,2179,2180],{},"DNS-Server gleicht FQDN mit IP-Adresse ab",[23,2182,2183],{},"DNS-Server antwortet mit IP-Adresse des FQDN",[23,2185,2186],{},"Client verwendet die IP-Adresse für die tatsächliche Kommunikation mit dem Server",[54,2188,2190],{"id":2189},"dhcp-dynamic-host-configuration-protocol","DHCP: Dynamic Host Configuration Protocol",[20,2192,2193,2196,2199,2202],{},[23,2194,2195],{},"Automatisierte Zuweisung von Netzwerkeinstellungen wie IP-Adresse, Subnetzmaske, Gateway und DNS-Server",[23,2197,2198],{},"Gegenstück ist die statische Adressierung",[23,2200,2201],{},"DHCP-Netzwerkgeräte fordern beim Verbinden zum Netzwerk DHCP-Daten an",[23,2203,2204,2205],{},"Die DHCP-Daten haben eine definierte Gültigkeitsdauer (Lease-Dauer)\n",[20,2206,2207],{},[23,2208,2209],{},"Nach Ablauf werden die Daten neu angefordert",[228,2211,2169],{"id":2212},"schritte-1",[966,2214,2215,2221,2227,2233],{},[23,2216,2217,2220],{},[26,2218,2219],{},"Discover"," (Broadcast): Client sendet DHCP-Discover beim booten bzw. beim herstellen einer Verbindung in einem Netzwerk",[23,2222,2223,2226],{},[26,2224,2225],{},"Offer",": Ein DHCP-Server, der den Discover-Broadcast erhalten hat antwortet mit einem DHCP-Offer, in dem die Netzwerkdaten über eine bestimmte Lease-Dauer enthalten sind",[23,2228,2229,2232],{},[26,2230,2231],{},"Request",": Da ggf. mehrere DHCP-Server auf den Discover ein Offer senden muss der Client ein Offer wählen und es mit einem entsprechenden Request bestätigen",[23,2234,2235,2238],{},[26,2236,2237],{},"Ack",[966,2239,2240,2243],{},[23,2241,2242],{},"Wenn die angebotene Adresse aus dem Offer am Server noch verfügbar ist antwortet dieser mit einer entsprechenden Bestätigung",[23,2244,2245,2246,2249,2250,2252],{},"Ist die angebotene Adresse nicht mehr verfügbar antwortet der Server mit einer negativen Bestätigung (",[26,2247,2248],{},"NAK","). Das DHCP-Verfahren beginnt am Client mit einem ",[26,2251,2219],{}," von vorne.",[54,2254,2256],{"id":2255},"cli-befehle","CLI-Befehle",[16,2258,2259],{},[223,2260],{"alt":225,"src":2261},"\u002Fdownloads\u002FBSA\u002Fimages\u002F3-4-zsmf-sa2_img_2.png",[11,2263,2265],{"id":2264},"datensicherung-systembackup","Datensicherung & Systembackup",[20,2267,2268,2274,2280],{},[23,2269,2270,2273],{},[26,2271,2272],{},"Gründe",": Virusbefall, fehlerhafter Systemzustand, Hardwareausfall",[23,2275,2276,2279],{},[26,2277,2278],{},"Kosten",": Hardware, Software, Personal",[23,2281,2282,2283],{},"Kriterien für Art der Sicherung\n",[20,2284,2285,2288,2291,2294,2297],{},[23,2286,2287],{},"Häufigkeit der Sicherung",[23,2289,2290],{},"Häufigkeit der Wiederherstellung",[23,2292,2293],{},"Größe der Datenmenge",[23,2295,2296],{},"Dauer der Sicherung",[23,2298,2299],{},"Dauer der Wiederherstellung",[54,2301,2303],{"id":2302},"systemsicherung","Systemsicherung",[20,2305,2306],{},[23,2307,2308,2310,2311],{},[26,2309,733],{},": Wiederherstellungspunkte\n",[20,2312,2313,2316],{},[23,2314,2315],{},"Werden automatisch erstellt",[23,2317,2318],{},"Deinstalliert bei Wiederherstellung ggf. auch Programme",[54,2320,2322],{"id":2321},"userdatensicherung","Userdatensicherung",[228,2324,151],{"id":150},[16,2326,2327],{},[223,2328],{"alt":225,"src":2329},"\u002Fdownloads\u002FBSA\u002Fimages\u002F3-4-zsmf-sa2_img_3.png",[995,2331,2333],{"id":2332},"vollsicherung","Vollsicherung",[20,2335,2336,2339,2342,2345],{},[23,2337,2338],{},"Alle Daten werden gesichert",[23,2340,2341],{},"Einfache Wiederherstellung",[23,2343,2344],{},"Große Datenmenge",[23,2346,2347],{},"Lange Backupdauer",[995,2349,2351],{"id":2350},"differentielle-sicherung","Differentielle Sicherung",[20,2353,2354,2357,2360],{},[23,2355,2356],{},"Alle Daten seit der letzten Vollsicherung werden gesichert",[23,2358,2359],{},"Geringe Datenmenge",[23,2361,2362,2363],{},"Vollsicherung zur Wiederherstellung nötig\n",[20,2364,2365],{},[23,2366,2367],{},"Aufwändige Wiederherstellung",[995,2369,2371],{"id":2370},"inkrementelle-sicherung","Inkrementelle Sicherung",[20,2373,2374,2377,2380],{},[23,2375,2376],{},"Alle Daten seit der letzten inkrementellen Sicherung werden gesichert",[23,2378,2379],{},"Noch geringere Datenmenge als bei differentieller Sicherung",[23,2381,2382,2383],{},"Alle Inkremente notwendig für Wiederherstellung\n",[20,2384,2385],{},[23,2386,2387],{},"Noch aufwändigere Wiederherstellung",[11,2389,2391],{"id":2390},"verschlüsselung","Verschlüsselung",[20,2393,2394,2397,2400],{},[23,2395,2396],{},"Benutzt Schlüssel um Nachrichten unleserlich zu machen",[23,2398,2399],{},"Ohne Schlüssel kann die Nachricht nicht gelesen werden",[23,2401,2402],{},"Rainbow-Table: Tabelle mit Hashwerten zu vorgegebenen Passwörtern",[54,2404,151],{"id":2405},"arten-1",[228,2407,2409],{"id":2408},"symmetrische-verschlüsselung","Symmetrische Verschlüsselung",[20,2411,2412,2415,2426,2429,2432],{},[23,2413,2414],{},"Selber Schlüssel beim ver- und entschlüsseln",[23,2416,2417,2418],{},"Beispiel: Caesar \u002F Monoalphabetische Substitution\n",[20,2419,2420,2423],{},[23,2421,2422],{},"Buchstaben\u002FBytes werden durch einen anderen ersetzt",[23,2424,2425],{},"Leicht zu knacken durch Muster und Statistik",[23,2427,2428],{},"Schneller als asymmetrische Verschlüsselung",[23,2430,2431],{},"Beispiele: AES & DES",[23,2433,2434,2437,2438],{},[26,2435,2436],{},"Schlüsselaustauschproblem",": beide Parteien benötigen den gleichen Schlüssel für ver- und entschlüsseln -> Übertragung muss auf sicherem Weg erfolgen\n",[20,2439,2440],{},[23,2441,2442,2445],{},[26,2443,2444],{},"Lösung",": Asymmetrische Verschlüsselung zum Austausch des Schlüssels",[228,2447,2449],{"id":2448},"asymmetrische-verschlüsselung","Asymmetrische Verschlüsselung",[20,2451,2452,2455,2458,2461,2464],{},[23,2453,2454],{},"Öffentlicher Schlüssel zum verschlüsseln",[23,2456,2457],{},"Privater Schlüssel zum entschlüsseln",[23,2459,2460],{},"Langsamer als symmetrische Verschlüsselung",[23,2462,2463],{},"Sicherer Schlüsselaustausch",[23,2465,2466],{},"Beispiele: RSA & DSA",[228,2468,2470],{"id":2469},"hybride-verschlüsselung","Hybride Verschlüsselung",[20,2472,2473,2476,2479,2482,2493],{},[23,2474,2475],{},"Nutzt symmetrische und asymmetrische Verschlüsselung",[23,2477,2478],{},"Effizienz: Symmetrische Verschlüsselung für Datenübertragung (schnell)",[23,2480,2481],{},"Sicherheit: Asymmetrische Verschlüsselung für sicheren Schlüsselaustausch",[23,2483,2484,2485],{},"Ablauf\n",[20,2486,2487,2490],{},[23,2488,2489],{},"Daten werden mit symmetrischem Schlüssel verschlüsselt",[23,2491,2492],{},"Symmetrischer Schlüssel wird asymmetrisch verschlüsselt",[23,2494,2495],{},"Beispiele: HTTPS & verschlüsselte Mails",[54,2497,2499],{"id":2498},"methoden-der-verschlüsselung","Methoden der Verschlüsselung",[20,2501,2502,2508,2516],{},[23,2503,2504,2507],{},[26,2505,2506],{},"Permutation am Eingang",": Durcheinanderwürfeln der Daten (Keine Statistik möglich)",[23,2509,2510,2511],{},"Veränderung des Schlüssels während des Verschlüsselungsvorgangs\n",[20,2512,2513],{},[23,2514,2515],{},"Wenn eine Nachricht geknackt wird können nicht automatisch andere Nachrichten geknackt werden",[23,2517,2518,2521,2522],{},[26,2519,2520],{},"Sicherheit der Verschlüsselung – Schlüssellänge",": Anzahl der möglichen Schlüssel\n",[20,2523,2524],{},[23,2525,2526],{},"z.B.: 128 Bit Schlüssel -> 2128 Schlüssel möglich",[54,2528,2530],{"id":2529},"schlüsselmöglichkeiten","Schlüsselmöglichkeiten",[20,2532,2533,2556,2567],{},[23,2534,2535,2538],{},[26,2536,2537],{},"Benutzerkennwort",[20,2539,2540],{},[23,2541,1845,2542],{},[20,2543,2544,2547,2550,2553],{},[23,2545,2546],{},"Standardkennwörter",[23,2548,2549],{},"Kennwort ist hinterlegt",[23,2551,2552],{},"Kennwort wird vergessen",[23,2554,2555],{},"Länge ist begrenzt",[23,2557,2558,2561,2562],{},[26,2559,2560],{},"Trusted Platform Module (TPM):"," Chip auf Mainboard, der einen Schlüssel enthält\n",[20,2563,2564],{},[23,2565,2566],{},"Verschlüsselung für Hardwarekonfiguration",[23,2568,2569,2572],{},[26,2570,2571],{},"Smartcard",[20,2573,2574,2577,2580],{},[23,2575,2576],{},"User identifiziert sich mit Smartcard",[23,2578,2579],{},"Smartcard stellt Schlüssel zur Verfügung",[23,2581,2582],{},"Verschlüsselung für einen User",[54,2584,2586],{"id":2585},"bitlocker","Bitlocker",[20,2588,2589,2595,2601,2606,2609,2620],{},[23,2590,2591,2594],{},[26,2592,2593],{},"Festplattenverschlüsselung",": Komplettes Laufwerk wird verschlüsselt",[23,2596,2597,2600],{},[26,2598,2599],{},"Aktivierung",": Kontext-Menü am Laufwerk -> „Bitlocker aktivieren“",[23,2602,2603,2605],{},[26,2604,2530],{},": Kennwort, TPM, SmartCard",[23,2607,2608],{},"Wiederherstellungsschlüssel wird bei Aktivierung generiert: Verwendung wenn regulärer Schlüssel nicht mehr verfügbar\u002Fdefekt",[23,2610,2611,2612],{},"Eingabe des Schlüssels\n",[20,2613,2614,2617],{},[23,2615,2616],{},"Systempartition: Bei Start",[23,2618,2619],{},"Keine Systempartition: Bei Zugriff",[23,2621,2622],{},"Verschlüsselung mit AES 128\u002F256 Bit",[54,2624,2626],{"id":2625},"aes-advanced-encryption-standard","AES: Advanced Encryption Standard",[16,2628,2629],{},[223,2630],{"alt":225,"src":2631},"\u002Fdownloads\u002FBSA\u002Fimages\u002F3-4-zsmf-sa2_img_4.png",[16,2633,2634],{},"Zum Entschlüsseln notwendig:",[20,2636,2637,2640,2643,2646],{},[23,2638,2639],{},"Passwort",[23,2641,2642],{},"Salt",[23,2644,2645],{},"Geheimtext",[23,2647,2648],{},"Initialization Vector",[54,2650,2652],{"id":2651},"efs-encrypting-file-system","EFS: Encrypting File System",[20,2654,2655,2658,2661,2664,2667,2670],{},[23,2656,2657],{},"Dateiverschlüsselungssystem unter NTFS",[23,2659,2660],{},"Kann auch nur einzelne Dateien verschlüsseln",[23,2662,2663],{},"EFS verwendet sowohl symmetrische als auch asymmetrische Verschlüsselung",[23,2665,2666],{},"Nach Aktivierung wird ein File Encryption Key (FEK) generiert",[23,2668,2669],{},"Datei wird mittels DES\u002FAES + FEK symmetrisch verschlüsselt",[23,2671,2672],{},"FEK wird mittels RSA + Userkennwort asymmetrisch verschlüsselt",{"title":225,"searchDepth":1117,"depth":1117,"links":2674},[2675,2679,2684,2685,2686,2687,2690,2691,2697,2700,2701,2702,2705,2708,2709,2710,2713,2718,2719,2720,2721,2722],{"id":1202,"depth":1117,"text":1203,"children":2676},[2677,2678],{"id":1223,"depth":1125,"text":1224},{"id":1291,"depth":1125,"text":1292},{"id":1306,"depth":1117,"text":1307,"children":2680},[2681,2682,2683],{"id":1349,"depth":1125,"text":1350},{"id":1445,"depth":1125,"text":1446},{"id":1460,"depth":1125,"text":1461},{"id":1498,"depth":1117,"text":1499},{"id":1533,"depth":1117,"text":1534},{"id":1589,"depth":1117,"text":1590},{"id":1708,"depth":1117,"text":1709,"children":2688},[2689],{"id":1749,"depth":1125,"text":1673},{"id":56,"depth":1117,"text":57},{"id":1829,"depth":1117,"text":1830,"children":2692},[2693,2694,2695,2696],{"id":1833,"depth":1125,"text":1834},{"id":1861,"depth":1125,"text":1862},{"id":1885,"depth":1125,"text":1886},{"id":1916,"depth":1125,"text":1917},{"id":1954,"depth":1117,"text":1955,"children":2698},[2699],{"id":1977,"depth":1125,"text":1978},{"id":2047,"depth":1117,"text":1354},{"id":2092,"depth":1117,"text":2093},{"id":2138,"depth":1117,"text":2139,"children":2703},[2704],{"id":2168,"depth":1125,"text":2169},{"id":2189,"depth":1117,"text":2190,"children":2706},[2707],{"id":2212,"depth":1125,"text":2169},{"id":2255,"depth":1117,"text":2256},{"id":2302,"depth":1117,"text":2303},{"id":2321,"depth":1117,"text":2322,"children":2711},[2712],{"id":150,"depth":1125,"text":151},{"id":2405,"depth":1117,"text":151,"children":2714},[2715,2716,2717],{"id":2408,"depth":1125,"text":2409},{"id":2448,"depth":1125,"text":2449},{"id":2469,"depth":1125,"text":2470},{"id":2498,"depth":1117,"text":2499},{"id":2529,"depth":1117,"text":2530},{"id":2585,"depth":1117,"text":2586},{"id":2625,"depth":1117,"text":2626},{"id":2651,"depth":1117,"text":2652},{},{"title":2725},"Zusammenfassung – Schulaufgabe 2 (2023\u002F2024)","\u002Ffaecher\u002Fbsa\u002F3-4-zsmf-sa2","\u002Fdownloads\u002FBSA\u002FBSA_3-4_ZSMF_SA2.pdf","SA2","Schulaufgabe 2",{"title":1173,"description":225},"faecher\u002Fbsa\u002F3-4-zsmf-sa2","z71fEe6EULsyqnpYuyqb9bilzVh3cHubGq8RX55H9Uc",{"id":2734,"title":6,"body":2735,"class":3318,"description":225,"extension":1155,"meta":3319,"navigation":3320,"path":3322,"pdfDownload":3323,"scope":1161,"scopeName":1162,"seo":3324,"stem":3325,"subject":1165,"subjectName":1166,"type":1167,"typeName":1168,"year":3326,"__hash__":3327},"faecher\u002Ffaecher\u002Fbsa\u002F5-6-zsmf-sa1.md",{"type":8,"value":2736,"toc":3287},[2737,2741,2764,2768,2794,2798,2818,2822,2825,2829,2846,2850,2861,2865,2879,2883,2919,2923,2928,2932,2977,2981,3006,3010,3014,3022,3026,3031,3035,3052,3056,3061,3065,3070,3074,3085,3090,3092,3096,3109,3114,3118,3138,3143,3147,3163,3167,3196,3200,3222,3226,3239,3243],[11,2738,2740],{"id":2739},"powershell","PowerShell",[20,2742,2743,2749,2752,2758,2761],{},[23,2744,2745,2748],{},[26,2746,2747],{},"Objektorientiert",": Objekte haben Attribute und Methoden",[23,2750,2751],{},"Nachfolger der CMD",[23,2753,2754,2755],{},"CMDlets Aufbau: ",[26,2756,2757],{},"Verb-Substantiv",[23,2759,2760],{},"Variablen durch **vorgestelltes $-**Zeichen",[23,2762,2763],{},"Mit Pipe (|) kann das Ergebnis eines CMDlets als Eingabe an das nächste übergeben werden",[54,2765,2767],{"id":2766},"execution-policies","Execution-Policies",[20,2769,2770,2776,2782,2788],{},[23,2771,2772,2775],{},[26,2773,2774],{},"Restricted",": Skripte werden nicht ausgeführt",[23,2777,2778,2781],{},[26,2779,2780],{},"RemoteSigned",": Nur lokale Skripte und signierte Skripte werden ausgeführt",[23,2783,2784,2787],{},[26,2785,2786],{},"AllSigned",": Nur signierte Skripte werden ausgeführt",[23,2789,2790,2793],{},[26,2791,2792],{},"Unrestricted",": Alle Skripte werden ausgeführt",[54,2795,2797],{"id":2796},"parameterarten","Parameterarten",[20,2799,2800,2806,2812],{},[23,2801,2802,2805],{},[26,2803,2804],{},"Benannt",": Angabe mit Namen und vorangestelltem „-„(z.B. -Path)",[23,2807,2808,2811],{},[26,2809,2810],{},"Switch",": Boolean-Input allein durch die Nennung des Parameters (z.B. -Force)",[23,2813,2814,2817],{},[26,2815,2816],{},"Position",": Verwendung des Inputs abhängig von der Position des Inputs (z.B. Copy-Item \u003CQuelle> \u003CZiel>)",[54,2819,2821],{"id":2820},"assoziative-arrays","Assoziative Arrays",[16,2823,2824],{},"Ähnlich wie Objekte in JavaScript – Fördern die Übersichtlichkeit und Lesbarkeit",[54,2826,2828],{"id":2827},"foreach-schleifen","ForEach-Schleifen",[20,2830,2831,2834,2840,2843],{},[23,2832,2833],{},"Iteriert über eine vorgegebene Liste",[23,2835,2836,2837],{},"Keine Zählvariable, sondern eine ",[26,2838,2839],{},"Schleifenvariable",[23,2841,2842],{},"Schleifenvariable enthält aktuellen Datensatz des Durchlaufs",[23,2844,2845],{},"Bsp: ForEach($File in $FileList){…}",[54,2847,2849],{"id":2848},"csv-dateien","CSV-Dateien",[20,2851,2852,2858],{},[23,2853,2854,2857],{},[26,2855,2856],{},"Comma-separated-values",": Trennung durch definierte Trennzeichen (z.B. Komma)",[23,2859,2860],{},"Die 1. Zeile enthält die Namen der Datenfelder",[228,2862,2864],{"id":2863},"verwendung-in-powershell","Verwendung in PowerShell",[20,2866,2867,2873],{},[23,2868,2869,2872],{},[26,2870,2871],{},"Import",": Import-Csv (z.B. $csvfile = Import-Csv .\\File.csv -Delimiter “;”)",[23,2874,2875,2878],{},[26,2876,2877],{},"Export",": Export-Csv (z.B. Get-ChildItem . | Export-Csv -Path file.csv -Delimiter “;”)",[54,2880,2882],{"id":2881},"vergleichsoperator-like","Vergleichsoperator “like”",[20,2884,2885,2888,2891],{},[23,2886,2887],{},"Vergleicht String mit einem vorgegebenen Muster",[23,2889,2890],{},"Muster kann Platzhalter enthalten",[23,2892,2893,2894],{},"Platzhalter:\n",[20,2895,2896,2902,2908],{},[23,2897,2898,2901],{},[26,2899,2900],{},"Stern"," (*): Beliebige und beliebig viele Zeichen",[23,2903,2904,2907],{},[26,2905,2906],{},"Fragezeichen"," (?): Ein beliebiges Zeichen",[23,2909,2910,2913,2914,2918],{},[26,2911,2912],{},"Range"," (",[2915,2916,2917],"span",{},"q-w","): Ein beliebiges Zeichen aus einer Auswahl an Zeichen",[54,2920,2922],{"id":2921},"regular-expressions","Regular Expressions",[20,2924,2925],{},[23,2926,2927],{},"Siehe Cheat-Sheet",[11,2929,2931],{"id":2930},"active-directory-ad","Active Directory (AD)",[20,2933,2934,2940,2943,2950,2967,2974],{},[23,2935,2936,2939],{},[26,2937,2938],{},"Verzeichnisdienst"," in Windows-Netzen",[23,2941,2942],{},"Aufbau in Datenbank (NTDS.dit)",[23,2944,2945,2946,2949],{},"Zur Abfrage der Datenbank wird ",[26,2947,2948],{},"LDAP"," (Lightweight Directory Access Protocol) verwendet",[23,2951,2952,2953],{},"In der Struktur vorhanden:\n",[20,2954,2955,2961],{},[23,2956,2957,2960],{},[26,2958,2959],{},"Objekte",": Benutzer, Gruppen, Computer",[23,2962,2963,2966],{},[26,2964,2965],{},"Orte",": Organistationseinheiten (OU), Domäne",[23,2968,2969,2970,2973],{},"Jedes Objekt in der Datenbank wird durch den ",[26,2971,2972],{},"Distinguished Name"," gekennzeichnet (entspricht dem absoluten Pfad in der Baumstruktur; ähnl. Primary-Key)",[23,2975,2976],{},"Struktur eines Unternehmens wird im AD abgebildet",[54,2978,2980],{"id":2979},"hauptkomponenten","Hauptkomponenten",[20,2982,2983,2988,2994,3000],{},[23,2984,2985,2987],{},[26,2986,2948],{},": Protokoll für den Zugriff auf den Verzeichnisdienst, in dem Informationen über Nutzer, Gruppen, Computer und anderen Objekten abgelegt sind",[23,2989,2990,2993],{},[26,2991,2992],{},"Kerberos-Protokoll",": Authentifizierung von Benutzern",[23,2995,2996,2999],{},[26,2997,2998],{},"CIFS\u002FSMB"," (Common Internet File System \u002F Server Message Block): Ablage von Dateien im Netzwerk",[23,3001,3002,3005],{},[26,3003,3004],{},"DNS"," (Domain Name System): Namensauflösung (früher NetBIOS\u002FWINS)",[54,3007,3009],{"id":3008},"bestandteile-des-ads","Bestandteile des Ads",[228,3011,3013],{"id":3012},"schema","Schema",[20,3015,3016,3019],{},[23,3017,3018],{},"Definiert Objekttypen, Klassen, Attribute und Attributsyntax",[23,3020,3021],{},"Wichtige Klassen: User, Computer, OU, Group",[228,3023,3025],{"id":3024},"konfiguration","Konfiguration",[20,3027,3028],{},[23,3029,3030],{},"Beschreibt die Gesamtstruktur (besteht aus Domänen) und deren Bäume",[228,3032,3034],{"id":3033},"domäne","Domäne",[20,3036,3037,3040,3043,3046,3049],{},[23,3038,3039],{},"Beinhält alle Informationen über die Objekte einer Domäne",[23,3041,3042],{},"Informationen werden im globalen Katalog gespeichert",[23,3044,3045],{},"Zentral verwaltbarer Sicherheitsbereich",[23,3047,3048],{},"Wird erstellt durch Installation eines Domänencontrollers",[23,3050,3051],{},"Domänencontroller speichert sämtliche Objekte einer Domäne (immer nur eine Domäne)",[228,3053,3055],{"id":3054},"strukturtree","Struktur\u002FTree",[20,3057,3058],{},[23,3059,3060],{},"Entsteht wenn Subdomänen erstellt werden",[228,3062,3064],{"id":3063},"gesamtstrukturforest","Gesamtstruktur\u002FForest",[20,3066,3067],{},[23,3068,3069],{},"Zwei Strukturen, die sich im selben AD befinden (braucht zweiten DC)",[54,3071,3073],{"id":3072},"vertrauensstellung","Vertrauensstellung",[20,3075,3076,3079,3082],{},[23,3077,3078],{},"Kann zwischen zwei oder mehr Domänen aufgebaut werden",[23,3080,3081],{},"Ermöglicht es Benutzern einer Domäne auf Ressourcen einer anderen zuzugreifen",[23,3083,3084],{},"Vertrauende Domäne lässt Authentifizierungen der vertrauten Domäne zu",[16,3086,3087],{},[223,3088],{"alt":225,"src":3089},"\u002Fdownloads\u002FBSA\u002Fimages\u002F5-6-zsmf-sa1_img_1.png",[54,3091,151],{"id":150},[228,3093,3095],{"id":3094},"unidirektional","Unidirektional",[20,3097,3098,3101,3104],{},[23,3099,3100],{},"Nur in eine Richtung",[23,3102,3103],{},"Nicht durchlässig (Nicht transitiv)",[23,3105,3106],{},[257,3107,3108],{},"X vertraut Y, Y vertraut Z",[16,3110,3111],{},[223,3112],{"alt":225,"src":3113},"\u002Fdownloads\u002FBSA\u002Fimages\u002F5-6-zsmf-sa1_img_2.png",[228,3115,3117],{"id":3116},"bidirektional","Bidirektional",[20,3119,3120,3123,3126],{},[23,3121,3122],{},"Beide Richtungen",[23,3124,3125],{},"Durchlässig (transitiv)",[23,3127,3128,3131],{},[257,3129,3130],{},"Teamup vertraut marketing und service",[20,3132,3133],{},[23,3134,3135],{},[257,3136,3137],{},"Dadurch vertraut service automatisch marketing",[16,3139,3140],{},[223,3141],{"alt":225,"src":3142},"\u002Fdownloads\u002FBSA\u002Fimages\u002F5-6-zsmf-sa1_img_3.png",[54,3144,3146],{"id":3145},"ldap-lightweight-directory-access-protocol","LDAP: Lightweight Directory Access Protocol",[20,3148,3149,3152,3155],{},[23,3150,3151],{},"Netzwerkprotokoll zum Zugriff auf Verzeichnisdienste",[23,3153,3154],{},"Form einer Baumstruktur (directory information tree => dit)",[23,3156,3157,3158],{},"Arbeitet Objektorientiert: Alle Daten in Objekten, die einer Objektklasse zugeordnet sind\n",[20,3159,3160],{},[23,3161,3162],{},"Objekte haben Attribute und Methoden",[228,3164,3166],{"id":3165},"vererbung-bei-objekten","Vererbung bei Objekten",[20,3168,3169,3180,3187,3190,3193],{},[23,3170,3171,3172],{},"Neue Klassen können von einer Elternklasse abgeleitet werden\n",[20,3173,3174,3177],{},[23,3175,3176],{},"Sie erhalten alle Attribute der Elternklasse",[23,3178,3179],{},"Kann zusätzliche Attribute haben",[23,3181,3182,3183,3186],{},"Alle Klassen im AD sind von der Klasse ",[26,3184,3185],{},"top"," abgeleitet",[23,3188,3189],{},"Zu jeder Klasse kann ein Objekt angelegt werden und in der Baumstruktur abgelegt werden",[23,3191,3192],{},"Wurzel des Baumes ist die Domäne",[23,3194,3195],{},"Zur Strukturierung gibt es OUs (Organizational Units)",[54,3197,3199],{"id":3198},"ad-konten-verwalten","AD-Konten verwalten",[20,3201,3202,3213,3216,3219],{},[23,3203,3204,3205],{},"AD-Konten existieren für\n",[20,3206,3207,3210],{},[23,3208,3209],{},"Benutzer",[23,3211,3212],{},"Computer",[23,3214,3215],{},"Können in Gruppen zusammengefasst werden",[23,3217,3218],{},"Jedes Konto hat eine Sicherheitskennung SID",[23,3220,3221],{},"Zur Verwaltung von OUs können User einer OU Objektverwaltungsrechte eingeräumt werden",[228,3223,3225],{"id":3224},"verwaltungstools","Verwaltungstools",[20,3227,3228,3231,3234,3237],{},[23,3229,3230],{},"AD Benutzer und Computer",[23,3232,3233],{},"AD Verwaltungscenter",[23,3235,3236],{},"Kommandozeile",[23,3238,2740],{},[54,3240,3242],{"id":3241},"container-in-einer-domäne","Container in einer Domäne",[20,3244,3245,3251,3257,3263,3269,3275,3281],{},[23,3246,3247,3250],{},[26,3248,3249],{},"BuiltIn",": Spezielle lokale Sicherheitsgruppen (z.B. lokale Admins)",[23,3252,3253,3256],{},[26,3254,3255],{},"Computers",": Alle Computerkonten",[23,3258,3259,3262],{},[26,3260,3261],{},"Domain"," Controllers: Alle DCs einer Domäne",[23,3264,3265,3268],{},[26,3266,3267],{},"ForeignSecurityPrincipals",": Container für SIDs einer vertrauten Domäne",[23,3270,3271,3274],{},[26,3272,3273],{},"Program"," Data: Ablageort für Programmdaten im AD",[23,3276,3277,3280],{},[26,3278,3279],{},"Users",": Benutzerkonten und Gruppenkonten einer Domäne",[23,3282,3283,3286],{},[26,3284,3285],{},"Eigene",": Eigens erstellte OUs",{"title":225,"searchDepth":1117,"depth":1117,"links":3288},[3289,3290,3291,3292,3293,3296,3297,3298,3299,3306,3307,3311,3314,3317],{"id":2766,"depth":1117,"text":2767},{"id":2796,"depth":1117,"text":2797},{"id":2820,"depth":1117,"text":2821},{"id":2827,"depth":1117,"text":2828},{"id":2848,"depth":1117,"text":2849,"children":3294},[3295],{"id":2863,"depth":1125,"text":2864},{"id":2881,"depth":1117,"text":2882},{"id":2921,"depth":1117,"text":2922},{"id":2979,"depth":1117,"text":2980},{"id":3008,"depth":1117,"text":3009,"children":3300},[3301,3302,3303,3304,3305],{"id":3012,"depth":1125,"text":3013},{"id":3024,"depth":1125,"text":3025},{"id":3033,"depth":1125,"text":3034},{"id":3054,"depth":1125,"text":3055},{"id":3063,"depth":1125,"text":3064},{"id":3072,"depth":1117,"text":3073},{"id":150,"depth":1117,"text":151,"children":3308},[3309,3310],{"id":3094,"depth":1125,"text":3095},{"id":3116,"depth":1125,"text":3117},{"id":3145,"depth":1117,"text":3146,"children":3312},[3313],{"id":3165,"depth":1125,"text":3166},{"id":3198,"depth":1117,"text":3199,"children":3315},[3316],{"id":3224,"depth":1125,"text":3225},{"id":3241,"depth":1117,"text":3242},"5-6",{},{"title":3321},"Zusammenfassung – Schulaufgabe 1 (2024\u002F2025)","\u002Ffaecher\u002Fbsa\u002F5-6-zsmf-sa1","\u002Fdownloads\u002FBSA\u002FBSA_5-6_ZSMF_SA1.pdf",{"title":6,"description":225},"faecher\u002Fbsa\u002F5-6-zsmf-sa1","2024\u002F2025","wc6Ao1n9vLcHdHyzcC_c0u2w8ZuCIZv8Vin3E6VkJrA",{"id":3329,"title":1173,"body":3330,"class":3318,"description":225,"extension":1155,"meta":4514,"navigation":4515,"path":4517,"pdfDownload":4518,"scope":2728,"scopeName":2729,"seo":4519,"stem":4520,"subject":1165,"subjectName":1166,"type":1167,"typeName":1168,"year":3326,"__hash__":4521},"faecher\u002Ffaecher\u002Fbsa\u002F5-6-zsmf-sa2.md",{"type":8,"value":3331,"toc":4471},[3332,3336,3340,3362,3366,3382,3384,3388,3391,3419,3422,3425,3428,3437,3440,3443,3446,3449,3453,3457,3478,3482,3544,3608,3612,3629,3634,3638,3660,3664,3680,3684,3720,3734,3738,3843,3847,3851,3854,3857,3860,3882,3886,3905,3909,3936,3940,3973,3977,3994,3998,4014,4016,4030,4034,4064,4068,4071,4073,4081,4085,4088,4092,4103,4107,4123,4126,4140,4144,4148,4159,4163,4171,4175,4180,4184,4238,4241,4257,4261,4297,4301,4323,4327,4331,4339,4343,4351,4355,4374,4378,4394,4398,4409,4413,4427,4431,4442,4446,4450,4458,4462,4467],[11,3333,3335],{"id":3334},"active-directory","Active-Directory",[54,3337,3339],{"id":3338},"verwaltete-dienstkonten","Verwaltete Dienstkonten",[20,3341,3342,3345,3348,3351],{},[23,3343,3344],{},"Konten für Dienste",[23,3346,3347],{},"Interaktive Anmelden mit diesen Konten nicht möglich",[23,3349,3350],{},"Bsp.: SYSTEM",[23,3352,3353,3354],{},"Anwendungen\n",[20,3355,3356,3359],{},[23,3357,3358],{},"Datenbankserver",[23,3360,3361],{},"ERP-Server (SAP-Server)",[228,3363,3365],{"id":3364},"gruppenverwaltete-dienstkonten","Gruppenverwaltete Dienstkonten",[20,3367,3368,3371],{},[23,3369,3370],{},"Dienstkonten, die sich an verschiedenen Servern mit den gleichen Daten anmelden",[23,3372,3373,3374],{},"Typen:\n",[20,3375,3376,3379],{},[23,3377,3378],{},"Sicherheit: Gruppen, die Zugriffsrechte regeln (z.B. im Dateisystem)",[23,3380,3381],{},"Verteilung: Mailverteiler",[11,3383,2740],{"id":2739},[54,3385,3387],{"id":3386},"user-anlegen","User anlegen",[16,3389,3390],{},"$password = ConvertTo-SecureString \"LarsStinkt\" -AsPlainText -Force",[3392,3393,3397],"pre",{"className":3394,"code":3395,"language":3396,"meta":225,"style":225},"language-bash shiki shiki-themes github-light github-dark","New-ADUser -Name \"Max Mustermann\" `\n\n","bash",[3398,3399,3400],"code",{"__ignoreMap":225},[2915,3401,3404,3408,3412,3416],{"class":3402,"line":3403},"line",1,[2915,3405,3407],{"class":3406},"sScJk","New-ADUser",[2915,3409,3411],{"class":3410},"sj4cs"," -Name",[2915,3413,3415],{"class":3414},"sZZnC"," \"Max Mustermann\"",[2915,3417,3418],{"class":3414}," `\n",[16,3420,3421],{},"-GivenName \"Max\" `",[16,3423,3424],{},"-Surname \"Mustermann\" `",[16,3426,3427],{},"-SamAccountName \"mmustermann\" `",[16,3429,3430,3431,3436],{},"-UserPrincipalName \"",[3432,3433,3435],"a",{"href":3434},"mailto:mmustermann@domain.local","mmustermann@domain.local","\" `",[16,3438,3439],{},"-Path \"OU=IT,DC=domain,DC=local\" `",[16,3441,3442],{},"-AccountPassword $password `",[16,3444,3445],{},"-ChangePasswordAtLogon $true `",[16,3447,3448],{},"-Enabled $true",[54,3450,3452],{"id":3451},"ou-anlegen","OU anlegen",[228,3454,3456],{"id":3455},"root-ou","Root-OU",[3392,3458,3460],{"className":3394,"code":3459,"language":3396,"meta":225,"style":225},"New-ADOrganizationalUnit -Name \"IT\" -Path \"DC=domain,DC=local\"\n\n",[3398,3461,3462],{"__ignoreMap":225},[2915,3463,3464,3467,3469,3472,3475],{"class":3402,"line":3403},[2915,3465,3466],{"class":3406},"New-ADOrganizationalUnit",[2915,3468,3411],{"class":3410},[2915,3470,3471],{"class":3414}," \"IT\"",[2915,3473,3474],{"class":3410}," -Path",[2915,3476,3477],{"class":3414}," \"DC=domain,DC=local\"\n",[228,3479,3481],{"id":3480},"sub-ou","Sub-OU",[3392,3483,3485],{"className":3394,"code":3484,"language":3396,"meta":225,"style":225},"New-ADOrganizationalUnit -Name \"Support\" -Path \"OU=IT,DC=domain,DC=local\"\n\n# Gruppenrichtlinien\n\n- Konfigurationsanweisungen -> Einstellungen werden erzwungen\n",[3398,3486,3487,3501,3507,3513,3518],{"__ignoreMap":225},[2915,3488,3489,3491,3493,3496,3498],{"class":3402,"line":3403},[2915,3490,3466],{"class":3406},[2915,3492,3411],{"class":3410},[2915,3494,3495],{"class":3414}," \"Support\"",[2915,3497,3474],{"class":3410},[2915,3499,3500],{"class":3414}," \"OU=IT,DC=domain,DC=local\"\n",[2915,3502,3503],{"class":3402,"line":1117},[2915,3504,3506],{"emptyLinePlaceholder":3505},true,"\n",[2915,3508,3509],{"class":3402,"line":1125},[2915,3510,3512],{"class":3511},"sJ8bj","# Gruppenrichtlinien\n",[2915,3514,3516],{"class":3402,"line":3515},4,[2915,3517,3506],{"emptyLinePlaceholder":3505},[2915,3519,3521,3524,3527,3531,3535,3538,3541],{"class":3402,"line":3520},5,[2915,3522,3523],{"class":3406},"-",[2915,3525,3526],{"class":3414}," Konfigurationsanweisungen",[2915,3528,3530],{"class":3529},"sVt8B"," -",[2915,3532,3534],{"class":3533},"szBVR",">",[2915,3536,3537],{"class":3414}," Einstellungen",[2915,3539,3540],{"class":3414}," werden",[2915,3542,3543],{"class":3414}," erzwungen\n",[20,3545,3546,3549,3563,3589,3597,3600],{},[23,3547,3548],{},"Konfigurationsanweisungen -> Einstellungen werden erzwungen",[23,3550,3551,3552],{},"Vorteile:\n",[20,3553,3554,3557,3560],{},[23,3555,3556],{},"Handlungsmöglichkeiten von Nutzern festlegen",[23,3558,3559],{},"Verwaltungsaufwand senken",[23,3561,3562],{},"Aufrechterhaltung von Computerkonfigurationen",[23,3564,3565,3566],{},"Einsatz:\n",[20,3567,3568,3571,3574,3577,3580,3583,3586],{},[23,3569,3570],{},"Registry-Einträge überschreiben",[23,3572,3573],{},"Kennwortrichtlinie",[23,3575,3576],{},"RDP-Anmeldung",[23,3578,3579],{},"Softwareinstallation",[23,3581,3582],{},"Ordnerumleitung",[23,3584,3585],{},"Netzlaufwerk einbinden",[23,3587,3588],{},"Skript-Ausführung",[23,3590,3591,3592],{},"Lokale Richtlinien: Konfiguration des lokalen Systems\n",[20,3593,3594],{},[23,3595,3596],{},"Keine Auswirkung auf die Domäne",[23,3598,3599],{},"Standort-, Domänen-, OU-Richtlinien: Wirken auf alle Nutzer innerhalb des gewählten Scopes",[23,3601,3602,3603],{},"In Gruppenrichtlinienverwaltung können neue Vorlagen für Gruppenrichtlinien erstellt werden\n",[20,3604,3605],{},[23,3606,3607],{},"Werden erst aktiv, wenn sie an einen Scope verknüpft werden",[54,3609,3611],{"id":3610},"anwendungsreihenfolge","Anwendungsreihenfolge",[966,3613,3614,3617,3620,3623,3626],{},[23,3615,3616],{},"Lokale Richtlinien",[23,3618,3619],{},"Multi-Lokale Richtlinien",[23,3621,3622],{},"Standortrichtlinie (Site)",[23,3624,3625],{},"Domänenrichtlinie (Domain)",[23,3627,3628],{},"OU-Richtlinie – übergeordnet zu untergeordnet",[20,3630,3631],{},[23,3632,3633],{},"Last-Write-Wins: Spätere Richtlinien überschreiben vorherige Richtlinien",[11,3635,3637],{"id":3636},"freigaben","Freigaben",[20,3639,3640,3654,3657],{},[23,3641,3642,3643],{},"SMB\n",[20,3644,3645,3648,3651],{},[23,3646,3647],{},"Windows-Freigabe",[23,3649,3650],{},"Netzwerkprotokoll für Dateizugriff",[23,3652,3653],{},"Aktuelle Version: SMBv3",[23,3655,3656],{},"NFS: Linux-Freigabe",[23,3658,3659],{},"Freigabe über Explorer\u002FServer-Manager",[54,3661,3663],{"id":3662},"berechtigungen","Berechtigungen",[20,3665,3666,3669],{},[23,3667,3668],{},"Vererbung: Rechte werden von übergeordneter Instanz übernommen",[23,3670,3671,3672],{},"Einträge werden von oben nach unten abgearbeitet\n",[20,3673,3674,3677],{},[23,3675,3676],{},"Oben: Verweigern",[23,3678,3679],{},"Unten: Zulassen",[54,3681,3683],{"id":3682},"access-control-lists-acls","Access Control Lists (ACLs)",[20,3685,3686,3689,3703,3717],{},[23,3687,3688],{},"Geordnete Liste von Zugriffseinträgen (ACEs)",[23,3690,3691,3692],{},"Access Control Entry (ACE)\n",[20,3693,3694,3697,3700],{},[23,3695,3696],{},"SID des Nutzers oder der Gruppe",[23,3698,3699],{},"Spezifizierte Rechte",[23,3701,3702],{},"Bit zur Entscheidung der Vererbung",[23,3704,3705,3706],{},"Abarbeitung ist beendet, wenn\n",[20,3707,3708,3711,3714],{},[23,3709,3710],{},"Explizit zugelassen",[23,3712,3713],{},"Explizit verweigert",[23,3715,3716],{},"Alle ACEs durchgelaufen",[23,3718,3719],{},"Reihenfolge der Abarbeitung",[966,3721,3722,3725,3728,3731],{},[23,3723,3724],{},"ACEs die explizit verweigern",[23,3726,3727],{},"ACEs die explizit erlauben",[23,3729,3730],{},"ACEs die vererbt verweigern",[23,3732,3733],{},"ACEs die vererbt erlauben",[54,3735,3737],{"id":3736},"gruppenrechtevergabe","Gruppenrechtevergabe",[645,3739,3740,3764],{},[648,3741,3742],{},[651,3743,3744,3749,3754,3759],{},[654,3745,3746],{},[26,3747,3748],{},"Gruppenart",[654,3750,3751],{},[26,3752,3753],{},"Lokale Gruppe",[654,3755,3756],{},[26,3757,3758],{},"Globale Grupp",[654,3760,3761],{},[26,3762,3763],{},"Universelle Gruppe",[670,3765,3766,3782,3797,3813,3828],{},[651,3767,3768,3773,3776,3779],{},[675,3769,3770],{},[257,3771,3772],{},"Sichtbarkeit",[675,3774,3775],{},"Sichtbar nur in lokaler Domäne",[675,3777,3778],{},"Auch außerhalb der eigenen Domäne sichtbar",[675,3780,3781],{},"Überall",[651,3783,3784,3789,3792,3795],{},[675,3785,3786],{},[257,3787,3788],{},"Mitgliederherkunft",[675,3790,3791],{},"Aus allen Domänen",[675,3793,3794],{},"Aus eigener Domäne",[675,3796,3791],{},[651,3798,3799,3804,3807,3810],{},[675,3800,3801],{},[257,3802,3803],{},"Mitgliedertypen",[675,3805,3806],{},"Mitglieder und Gruppen",[675,3808,3809],{},"Keine anderen Gruppen",[675,3811,3812],{},"Benutzer und Gruppen",[651,3814,3815,3820,3823,3826],{},[675,3816,3817],{},[257,3818,3819],{},"Berechtigung",[675,3821,3822],{},"Innerhalb eigener Domäne",[675,3824,3825],{},"In beliebiger Domäne",[675,3827,3825],{},[651,3829,3830,3835,3838,3840],{},[675,3831,3832],{},[257,3833,3834],{},"Bemerkung",[675,3836,3837],{},"Zusammenfassen globaler Gruppen möglich",[675,3839],{},[675,3841,3842],{},"Alle Informationen stehen im globalen Katalog, werden repliziert und produzieren damit Netzlast",[54,3844,3846],{"id":3845},"agdlp-regel","AGDLP-Regel",[228,3848,3850],{"id":3849},"problem","Problem",[16,3852,3853],{},"Admin sieht nicht direkt welche Rechte für einen User aktiv sind",[228,3855,2444],{"id":3856},"lösung",[16,3858,3859],{},"AGDLP: Accounts Global, Domain Local, Permission",[20,3861,3862,3865,3868],{},[23,3863,3864],{},"Freigaben werden nur an lokale Gruppen vergeben, die nur dafür zuständig sind",[23,3866,3867],{},"Lokale Gruppen werden entsprechend ihres Zwecks und der damit verbundenen Rechte benannt",[23,3869,3870,3871],{},"Beispiel:\n",[20,3872,3873,3876,3879],{},[23,3874,3875],{},"Lokale Gruppe „Share-Verwaltung“ wird auf die Freigabe \\server\\Verwaltung berechtigt",[23,3877,3878],{},"Die globale Gruppe „Verwaltung wird Mitglied der lokalen Gruppe und bekommt somit die Rechte auf die Freigabe",[23,3880,3881],{},"In der globalen Gruppe sind die tatsächlichen User der Verwaltung",[54,3883,3885],{"id":3884},"sysvol","SYSVOL",[20,3887,3888],{},[23,3889,3890,3891],{},"Freigabe in der Dateien mit Domäneneinstellungen geteilt werden\n",[20,3892,3893,3896,3899,3902],{},[23,3894,3895],{},"Logon-Scripts",[23,3897,3898],{},"Gruppenrichtlinien",[23,3900,3901],{},"File-Replication-Service",[23,3903,3904],{},"Junction-Points: Ähnlich wie eine Verlinkung",[11,3906,3908],{"id":3907},"domain-name-system-dns","Domain Name System (DNS)",[20,3910,3911,3914,3917,3920,3923],{},[23,3912,3913],{},"DNS-Server: Zuordnung von FQDNs zu IP-Adressen und umgekehrt",[23,3915,3916],{},"Alternative unter Windows: NetBIOS",[23,3918,3919],{},"Hierarchische Gliederung – Getrennt durch Punkte",[23,3921,3922],{},"Abfrage läuft Hierarchisch ab -> Anfragen werden weitergeleitet",[23,3924,3925,3926],{},"AD-Domain = DNS-Domain (Domänencontroller oft auch DNS-Server)\n",[20,3927,3928],{},[23,3929,3930,3931],{},"Bei Vertrauensstellungen zwischen Domänen muss DNS-Auflösung domänenübergreifend funktionieren\n",[20,3932,3933],{},[23,3934,3935],{},"In Zonendatei werden Delegierungen für Subdomänen und andere Domänen angelegt",[54,3937,3939],{"id":3938},"zonendatei","Zonendatei",[20,3941,3942,3953,3956],{},[23,3943,3944,3945],{},"Enthält gesamten Inhalt einer Domäne\n",[20,3946,3947,3950],{},[23,3948,3949],{},"Autoritätsursprung (SOA): Eintrag für primären DNS-Server und Einstellungen z.B. zum Zonentransfer",[23,3951,3952],{},"Verschiedenste Records: NS, A, AAAA, PTR, CNAME, SRV, MX",[23,3954,3955],{},"Ein Primary-Server (Master) und beliebig viele Secondary-Server (Slave)",[23,3957,3958,3959],{},"Replikationsmethoden\n",[20,3960,3961,3964,3967,3970],{},[23,3962,3963],{},"Vollständige Zonenübertragung: Gesamte Zonendatei auf Slaves übertragen",[23,3965,3966],{},"Inkrementelle Zonenübertragung: Nur Änderungen werden auf Slaves übertragen",[23,3968,3969],{},"Benachrichtigung vom Master: Nach Veränderung benachrichtigt Master alle Slaves",[23,3971,3972],{},"Slave veranlasst Zonenübertragung: Slave fragt bei Master nach Änderungen",[54,3974,3976],{"id":3975},"abfragenablauf","Abfragenablauf",[966,3978,3979,3982,3985,3988,3991],{},[23,3980,3981],{},"Client prüft, ob Hostname bereits in der lokalen Hostdatei enthalten ist",[23,3983,3984],{},"Wenn nicht wird rekursives Forward-Lookup-Request an den primären DNS-Server gesendet",[23,3986,3987],{},"DNS-Server prüft, ob er eine Zone für die angefragte Domain hat, wenn ja: Autoritativ Antwort zurück",[23,3989,3990],{},"Wenn der DNS-Server keine passende Zone hat prüft er den Cache -> Cache-Hit: Nicht-Autoritative Antwort zurück",[23,3992,3993],{},"Wenn auch im Cache nichts vorhanden ist wird die Anfragen an den Root-Server weitergeleitet",[54,3995,3997],{"id":3996},"antwortarten","Antwortarten",[20,3999,4000,4003],{},[23,4001,4002],{},"Autoritativ: Server hat Antwort in lokaler Zonendatei",[23,4004,4005,4006],{},"Nicht Autoritativ: Antwort obwohl Server nicht zuständig ist\n",[20,4007,4008,4011],{},[23,4009,4010],{},"Rekursiv: Server holt die Daten von einem anderen DNS-Server",[23,4012,4013],{},"Iterativ: Server antwortet mit einem Verweis auf einen anderen DNS-Server",[11,4015,2190],{"id":2189},[20,4017,4018,4020,4022,4024],{},[23,4019,2195],{},[23,4021,2198],{},[23,4023,2201],{},[23,4025,2204,4026],{},[20,4027,4028],{},[23,4029,2209],{},[54,4031,4033],{"id":4032},"ablauf-dora","Ablauf (DORA)",[966,4035,4036,4041,4045,4050],{},[23,4037,4038,4040],{},[26,4039,2219],{}," (Broadcast): Client sendet DHCP-Discover beim booten bzw. beim Herstellen einer Verbindung in einem Netzwerk",[23,4042,4043,2226],{},[26,4044,2225],{},[23,4046,4047,4049],{},[26,4048,2231],{}," (Broadcast): Da ggf. mehrere DHCP-Server auf den Discover ein Offer senden muss der Client ein Offer wählen und es mit einem entsprechenden Request bestätigen. Das Paket ist ein Broadcast um ggf. anderen DHCP-Servern mitzuteilen für welches Offer sich der Client entschieden hat.",[23,4051,4052,4054],{},[26,4053,2237],{},[966,4055,4056,4058],{},[23,4057,2242],{},[23,4059,2245,4060,2249,4062,2252],{},[26,4061,2248],{},[26,4063,2219],{},[54,4065,4067],{"id":4066},"lease-verlängerung","Lease Verlängerung",[16,4069,4070],{},"Funktioniert nur innerhalb eines Lease Zeitraums",[228,4072,403],{"id":402},[966,4074,4075,4078],{},[23,4076,4077],{},"DHCP-Request (Unicast): Eine direkte Anforderung an den DHCP-Server von dem das aktuelle Lease ist. Erhält der Client in einem bestimmten Zeitabstand keine Antwort sendet er das Request als Broadcast um andere verfügbare DHCP-Server zu erreichen.",[23,4079,4080],{},"DHCP-Ack (Unicast): Der Server bestätigt die Verlängerung",[11,4082,4084],{"id":4083},"authentifizierung","Authentifizierung",[16,4086,4087],{},"Echtheit bezeugen bei der Kommunikation zwischen Server und Client",[54,4089,4091],{"id":4090},"password-authentication-protocol-pap","Password Authentication Protocol (PAP)",[20,4093,4094,4097,4100],{},[23,4095,4096],{},"Client sendet Username und Passwort im Klartext",[23,4098,4099],{},"Server akzeptiert bei korrekten Credentials",[23,4101,4102],{},"Nachteil: Credentials können sehr leicht abgehört werden",[54,4104,4106],{"id":4105},"new-technology-lan-manager-ntlm","New Technology LAN Manager (NTLM)",[20,4108,4109,4112],{},[23,4110,4111],{},"Vorteil: Weder Passwort noch Passworthash werden im Klartext übertragen",[23,4113,4114,4115],{},"Problem:\n",[20,4116,4117,4120],{},[23,4118,4119],{},"Viele Anfragen -> Große Verwaltungslast durch Authentifizierungsprozess",[23,4121,4122],{},"Keine MFA-Unterstützung",[228,4124,403],{"id":4125},"ablauf-1",[966,4127,4128,4131,4134,4137],{},[23,4129,4130],{},"Negotiate: Client sendet Anfrage mit Benutzernamen und Payload an Server",[23,4132,4133],{},"Challenge: Server generiert Zufallszahl und sendet diese an den Client",[23,4135,4136],{},"Authenticate: Client verschlüsselt die Zufallszahl mit DES und dem NT-Hash des eigenen Passworts als Schlüssel und sendet zurück an den Server. Damit beweist er, dass er das Passwort kennt.",[23,4138,4139],{},"Server führt parallel den gleichen Vorgang durch und gleicht die Ergebnisse ab. Server hat Zugriff auf den NT-Hash durch eigene SAM-Datenbank oder er leitet das Challenge\u002FResponse-Paar zur Validierung an den DC weiter",[228,4141,4143],{"id":4142},"angriffsvektoren","Angriffsvektoren",[995,4145,4147],{"id":4146},"pass-the-hash","Pass the Hash",[20,4149,4150,4153,4156],{},[23,4151,4152],{},"Sobald ein Angreifer an den NT-Hash und den passenden Username gekommen ist kann er die Authentifizierung durchführen -> Es wird kein Passwort benötigt",[23,4154,4155],{},"NT-Hash entweder aus lokaler SAM-Datei oder aus dem Arbeitsspeicher",[23,4157,4158],{},"Username wird oft im Klartext übertragen",[995,4160,4162],{"id":4161},"brute-force","Brute-Force",[20,4164,4165,4168],{},[23,4166,4167],{},"Hash-Algorithmus wird ohne Salt (Zufällige Zeichenkette am Ende des Passworts, vor der Verschlüsselung) verwendet",[23,4169,4170],{},"Mithilfe eines Rainbow-Tables können leicht Brute-Force-Angriffe durchgeführt werden",[995,4172,4174],{"id":4173},"ntlm-relay","NTLM-Relay",[20,4176,4177],{},[23,4178,4179],{},"Client kann die Identität des Servers nicht prüfen -> Angreifer kann sich als Server ausgeben (Man in the Middle)",[54,4181,4183],{"id":4182},"kerberos","Kerberos",[20,4185,4186,4189,4203,4229,4232,4235],{},[23,4187,4188],{},"Standard-Authentifizierungsprotokoll im AD",[23,4190,4191,4192],{},"Beteiligte Parteien:\n",[20,4193,4194,4197,4200],{},[23,4195,4196],{},"Client: Fordert Ressource an",[23,4198,4199],{},"Service-Server: Den der Client nutzen möchte",[23,4201,4202],{},"Kerberos-Server\u002FKey Distribution Center (KDC): Stellt Authentifizierung zur Verfügung",[23,4204,4205,4206],{},"Wichtige Komponenten:\n",[20,4207,4208,4219],{},[23,4209,4210,4211],{},"Ticket Granting Ticket (TGT): Ticket\u002FBerechtigung mit dem man weitere Tickets\u002FBerechtigungen erhalten kann (Vgl. Ticket für den Einlass zum Park)\n",[20,4212,4213,4216],{},[23,4214,4215],{},"Hat bestimmte Lebensdauer",[23,4217,4218],{},"Wird mit Passwort des krbtgt-Accounts verschlüsselt",[23,4220,4221,4222],{},"TGS\u002FServiceticket: Ticket\u002FBerechtigung für die Nutzung einer bestimmten Ressource\u002Feines Services (Vgl. Ticket für das Fahrgeschäft)\n",[20,4223,4224,4226],{},[23,4225,4215],{},[23,4227,4228],{},"Wird mit Passwort des angefragten Service-Nutzers verschlüsselt",[23,4230,4231],{},"Durch Ticketsystem kann der Client selbst die Authentifizierung durchführen ohne den DC",[23,4233,4234],{},"Es werden auch keine Passwort-Hashes verschickt",[23,4236,4237],{},"Zeitsynchronisation zwischen Client und KDC ist Voraussetzung",[228,4239,403],{"id":4240},"ablauf-2",[966,4242,4243,4246],{},[23,4244,4245],{},"Nutzer meldet sich am PC an",[23,4247,4248,4249],{},"Anmeldedaten werden an den DC übergeben\n",[966,4250,4251,4254],{},[23,4252,4253],{},"Client erhält TGT vom DC.",[23,4255,4256],{},"Client kann sich mit TGT am KDC authentifizieren und TGS lösen",[995,4258,4260],{"id":4259},"beispiel-webaufruf","Beispiel Webaufruf",[966,4262,4263,4266,4274,4277,4280,4291,4294],{},[23,4264,4265],{},"Client verwendet Webbrowser um Verbindung zum Server aufzubauen. Vorerst Anonym.",[23,4267,4268,4269],{},"Server antwortet mit HTTP-Status 401 (Unauthorized) und fordert Client zur Anmeldung auf.\n",[966,4270,4271],{},[23,4272,4273],{},"Durch die Aufforderung erhält der Client den Namen der Ressource für die er ein Ticket braucht",[23,4275,4276],{},"Der Client verlangt am KDC nach einem TGS für die entsprechende Ressource",[23,4278,4279],{},"KDC sucht im AD nach der angeforderten Ressource (über ServicePrincipalName)",[23,4281,4282,4283],{},"KDC stellt TGS auf den Namen und mit den Daten des Benutzers aus. TGS wird signiert und an den Client übergeben\n",[966,4284,4285,4288],{},[23,4286,4287],{},"Client speichert TGS im Cache",[23,4289,4290],{},"TGS ist mit dem Passwort des Service-Benutzers verschlüsselt. Dieses Passwort kennt der Webserver ebenfalls.",[23,4292,4293],{},"Client stellt die Anfrage an den Webserver erneut und übergibt das TGS dabei an den Webserver.",[23,4295,4296],{},"Der Webserver vertraut dem KDC und kann somit unabhängig das Ticket validieren",[11,4298,4300],{"id":4299},"betriebsmasterrollen-flexible-single-master-operations-fsmos","Betriebsmasterrollen \u002F Flexible Single Master Operations (FSMOs)",[20,4302,4303,4306,4314,4317,4320],{},[23,4304,4305],{},"AD kann über mehrere DCs verteilt sein",[23,4307,4308,4309],{},"Jeder DC darf Objekte im AD anlegen\n",[20,4310,4311],{},[23,4312,4313],{},"Es gilt „last write wins“ -> Nur der letzte Schreibvorgang ist gültig",[23,4315,4316],{},"FSMOs sind Aufgaben die eine zentrale Instanz benötigen, da ein Konflikt fatal wäre",[23,4318,4319],{},"FSMOs: Spezielle Aufgaben innerhalb einer Domäne, die auf verschiedene Server verteilt werden können",[23,4321,4322],{},"FSMOs sind immer einmalig (Gesamtstruktur\u002FDomäne)",[54,4324,4326],{"id":4325},"auflistung","Auflistung",[228,4328,4330],{"id":4329},"domain-naming-master-gesamtstruktur","Domain Naming Master (Gesamtstruktur)",[20,4332,4333,4336],{},[23,4334,4335],{},"Zuständig für (Sub-)Domainnamen",[23,4337,4338],{},"Muss neue Domainnamen freigeben",[228,4340,4342],{"id":4341},"schema-master-gesamtstruktur","Schema Master (Gesamtstruktur)",[20,4344,4345,4348],{},[23,4346,4347],{},"Zwingend gleicher Server wie Domain Naming Master",[23,4349,4350],{},"Definiert Klassen-Schablone für AD-Objekte",[228,4352,4354],{"id":4353},"relative-id-master-domäne","Relative ID Master (Domäne)",[20,4356,4357,4360,4371],{},[23,4358,4359],{},"Sorgt dafür, dass RID eindeutig ist",[23,4361,4362,4363],{},"SID besteht vereinfacht aus:\n",[20,4364,4365,4368],{},[23,4366,4367],{},"Local-ID",[23,4369,4370],{},"Relative-ID",[23,4372,4373],{},"SIDs identifizieren Objekte im AD",[228,4375,4377],{"id":4376},"primary-domain-controller-pdc-emulator-domäne","Primary Domain Controller (PDC) Emulator (Domäne)",[20,4379,4380,4388,4391],{},[23,4381,4382,4383],{},"Problem: Replikation des Ads dauert sehr lange\n",[20,4384,4385],{},[23,4386,4387],{},"Passwortänderungen sind erst nach langer Zeit aktiv",[23,4389,4390],{},"PDC-Emulator zieht Passwortänderungen vor",[23,4392,4393],{},"Bei fehlerhaftem Anmeldeversuch: PDC-Emulator wird befragt ob Passwort gültig ist",[228,4395,4397],{"id":4396},"domain-infrastructure-master-domäne","Domain Infrastructure Master (Domäne)",[20,4399,4400,4403,4406],{},[23,4401,4402],{},"Stellt referentielle Integrität zwischen verlinkten Objekten sicher",[23,4404,4405],{},"Bsp.: Bei Gruppen und Mitgliedern: Attribute „Members“ und „MemberOf“ müssen übereinstimmen",[23,4407,4408],{},"DIM sorgt dafür, dass Änderung eines Attributs in das andere nachgezogen wird",[11,4410,4412],{"id":4411},"just-enough-administration-jea","Just Enough Administration (JEA)",[20,4414,4415,4418,4421,4424],{},[23,4416,4417],{},"Administrative Mitarbeiter sollen nur die minimalen Rechte für bestimmte Arbeiten erhalten",[23,4419,4420],{},"Unter PowerShell: User kann nur bestimmte CMDlets ausführen",[23,4422,4423],{},"Rechte werden in Role Capability Files (.psrc) gespeichert",[23,4425,4426],{},"Funktioniert nur in Bereichen für die es entsprechend auch PowerShell-Befehle gibt",[11,4428,4430],{"id":4429},"just-in-time-administration-jit","Just-In-Time Administration (JIT)",[20,4432,4433,4436,4439],{},[23,4434,4435],{},"Nur temporäres freigeben von administrativen Berechtigungen",[23,4437,4438],{},"Administrative Fähigkeiten werden nur auf Anfrage erlangt",[23,4440,4441],{},"Zur Verwaltung der Time-To-Live wird ein TGT von Kerberos verwendet. Privilegierter Zugriff ist nur möglich solange das TGT gültig ist.",[11,4443,4445],{"id":4444},"offene-punkte","Offene Punkte",[54,4447,4449],{"id":4448},"nur-klick-für-klick-anleitungen","Nur Klick-Für-Klick Anleitungen",[20,4451,4452,4455],{},[23,4453,4454],{},"Freigaben und Gruppenrichtlinien: Netzlaufwerk freigeben, Software installieren, Skript beim Start ausführen",[23,4456,4457],{},"User Homes",[54,4459,4461],{"id":4460},"unbekanntes-thema","Unbekanntes Thema",[20,4463,4464],{},[23,4465,4466],{},"NTLM für Service Server",[4468,4469,4470],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}",{"title":225,"searchDepth":1117,"depth":1117,"links":4472},[4473,4476,4477,4481,4482,4483,4484,4485,4489,4490,4491,4492,4493,4494,4497,4498,4502,4505,4512,4513],{"id":3338,"depth":1117,"text":3339,"children":4474},[4475],{"id":3364,"depth":1125,"text":3365},{"id":3386,"depth":1117,"text":3387},{"id":3451,"depth":1117,"text":3452,"children":4478},[4479,4480],{"id":3455,"depth":1125,"text":3456},{"id":3480,"depth":1125,"text":3481},{"id":3610,"depth":1117,"text":3611},{"id":3662,"depth":1117,"text":3663},{"id":3682,"depth":1117,"text":3683},{"id":3736,"depth":1117,"text":3737},{"id":3845,"depth":1117,"text":3846,"children":4486},[4487,4488],{"id":3849,"depth":1125,"text":3850},{"id":3856,"depth":1125,"text":2444},{"id":3884,"depth":1117,"text":3885},{"id":3938,"depth":1117,"text":3939},{"id":3975,"depth":1117,"text":3976},{"id":3996,"depth":1117,"text":3997},{"id":4032,"depth":1117,"text":4033},{"id":4066,"depth":1117,"text":4067,"children":4495},[4496],{"id":402,"depth":1125,"text":403},{"id":4090,"depth":1117,"text":4091},{"id":4105,"depth":1117,"text":4106,"children":4499},[4500,4501],{"id":4125,"depth":1125,"text":403},{"id":4142,"depth":1125,"text":4143},{"id":4182,"depth":1117,"text":4183,"children":4503},[4504],{"id":4240,"depth":1125,"text":403},{"id":4325,"depth":1117,"text":4326,"children":4506},[4507,4508,4509,4510,4511],{"id":4329,"depth":1125,"text":4330},{"id":4341,"depth":1125,"text":4342},{"id":4353,"depth":1125,"text":4354},{"id":4376,"depth":1125,"text":4377},{"id":4396,"depth":1125,"text":4397},{"id":4448,"depth":1117,"text":4449},{"id":4460,"depth":1117,"text":4461},{},{"title":4516},"Zusammenfassung – Schulaufgabe 2 (2024\u002F2025)","\u002Ffaecher\u002Fbsa\u002F5-6-zsmf-sa2","\u002Fdownloads\u002FBSA\u002FBSA_5-6_ZSMF_SA2.pdf",{"title":1173,"description":225},"faecher\u002Fbsa\u002F5-6-zsmf-sa2","I9JuvyQtKKbEu_FTZ5wR7TPK8bffyEYdpKQhJCFtZeQ",{"id":4523,"title":4524,"body":4525,"class":10975,"description":225,"extension":1155,"meta":10976,"navigation":10977,"path":10979,"pdfDownload":10980,"scope":2728,"scopeName":2729,"seo":10981,"stem":10982,"subject":1165,"subjectName":1166,"type":10983,"typeName":10984,"year":10985,"__hash__":10986},"faecher\u002Ffaecher\u002Fbsa\u002F7-8-cs-sa2.md","Cheat-Sheet – Schulaufgabe 2",{"type":8,"value":4526,"toc":10918},[4527,4531,4761,4765,4869,4873,4917,4922,4927,4935,4939,4942,4998,5003,5005,5102,5105,5111,5114,5116,5270,5276,5279,5281,5334,5340,5343,5345,5400,5405,5435,5440,5446,5452,5458,5463,5596,5601,5606,5608,5732,5737,5739,5793,5798,5800,5852,5856,5860,5863,5879,5892,5901,5904,5908,5915,5918,5933,5936,5948,5951,5969,5973,5990,6001,6011,6021,6031,6041,6051,6061,6071,6081,6091,6101,6111,6121,6131,6141,6151,6169,6184,6199,6211,6221,6237,6251,6268,6282,6297,6312,6327,6342,6352,6362,6372,6375,6379,6382,6416,6420,6423,6469,6473,6476,6526,6529,6538,6542,6568,6572,6577,6582,6588,6592,6598,6604,6610,6613,6620,6623,6630,6633,6640,6643,6650,6653,6659,6670,6676,6682,6685,6705,6711,6714,6735,6741,6744,6752,6758,6761,6781,6783,6802,6817,6823,6843,6849,6860,6866,6869,6875,6889,6892,6936,6941,6969,6974,6980,6983,7069,7075,7078,7086,7093,7100,7103,7110,7113,7119,7152,7156,7161,7176,7181,7194,7199,7221,7226,7229,7254,7259,7262,7265,7278,7281,7286,7289,7302,7307,7319,7324,7357,7362,7386,7389,7392,7397,7415,7420,7432,7437,7449,7454,7466,7471,7483,7488,7500,7505,7517,7522,7538,7542,7552,7557,7569,7574,7604,7608,7616,7621,7632,7636,7649,7654,7699,7705,7809,7813,7816,7832,7835,7853,7856,7873,7877,7888,7892,7903,7907,7926,7930,7944,7947,7992,7996,8000,8012,8015,8019,8033,8037,8052,8056,8059,8073,8077,8091,8095,8109,8113,8116,8133,8137,8140,8154,8157,8171,8175,8182,8186,8197,8201,8217,8221,8251,8254,8342,8346,8386,8390,8430,8434,8473,8475,8492,8495,8499,8502,8521,8524,8552,8556,8567,8571,8582,8586,8601,8605,8608,8614,8617,8673,8677,8681,8695,8699,8713,8717,8720,8735,8739,8759,8763,8766,8781,8784,8798,8802,8848,8852,8855,8911,8915,8960,8968,8972,8981,8987,9110,9115,9119,9123,9244,9249,9817,9821,9823,9826,9830,9832,9834,9838,9840,9842,9846,9867,9869,9871,9883,9885,9890,9894,9898,10014,10019,10023,10027,10072,10077,10493,10497,10663,10667,10780,10784,10915],[11,4528,4530],{"id":4529},"buchseiten","Buchseiten",[645,4532,4533,4551],{},[648,4534,4535],{},[651,4536,4537,4541,4546],{},[654,4538,4539],{},[26,4540,1198],{},[654,4542,4543],{},[26,4544,4545],{},"Inhalt",[654,4547,4548],{},[26,4549,4550],{},"Beschreibung",[670,4552,4553,4564,4575,4586,4597,4608,4619,4630,4641,4652,4663,4674,4685,4696,4707,4718,4729,4740,4751],{},[651,4554,4555,4558,4561],{},[675,4556,4557],{},"180",[675,4559,4560],{},"SystemD",[675,4562,4563],{},"Diensteverwaltung und Init-System.",[651,4565,4566,4569,4572],{},[675,4567,4568],{},"28",[675,4570,4571],{},"Verzeichnisbaum",[675,4573,4574],{},"Hierarchische Dateistruktur ab \u002F.",[651,4576,4577,4580,4583],{},[675,4578,4579],{},"161",[675,4581,4582],{},"Sudo",[675,4584,4585],{},"Befehle mit Root-Rechten ausführen.",[651,4587,4588,4591,4594],{},[675,4589,4590],{},"63",[675,4592,4593],{},"Ls-Befehl",[675,4595,4596],{},"Verzeichnisinhalt auflisten.",[651,4598,4599,4602,4605],{},[675,4600,4601],{},"90",[675,4603,4604],{},"Touch-Befehl",[675,4606,4607],{},"Neue, leere Datei erstellen.",[651,4609,4610,4613,4616],{},[675,4611,4612],{},"65",[675,4614,4615],{},"Cp-Befehl",[675,4617,4618],{},"Dateien\u002FOrdner kopieren.",[651,4620,4621,4624,4627],{},[675,4622,4623],{},"66",[675,4625,4626],{},"Mv-Befehl",[675,4628,4629],{},"Verschieben oder Umbenennen.",[651,4631,4632,4635,4638],{},[675,4633,4634],{},"67",[675,4636,4637],{},"Rm-Befehl",[675,4639,4640],{},"Dateien oder Ordner löschen.",[651,4642,4643,4646,4649],{},[675,4644,4645],{},"72",[675,4647,4648],{},"Mkdir-Befehl",[675,4650,4651],{},"Neues Verzeichnis erstellen.",[651,4653,4654,4657,4660],{},[675,4655,4656],{},"41",[675,4658,4659],{},"Umgebungsvariablen",[675,4661,4662],{},"Werte zur Systemkonfiguration (z. B. $PATH).",[651,4664,4665,4668,4671],{},[675,4666,4667],{},"60",[675,4669,4670],{},"Man-Befehl",[675,4672,4673],{},"Handbuch für Befehle anzeigen.",[651,4675,4676,4679,4682],{},[675,4677,4678],{},"109",[675,4680,4681],{},"Grep-Befehl",[675,4683,4684],{},"Text nach Mustern durchsuchen.",[651,4686,4687,4690,4693],{},[675,4688,4689],{},"124",[675,4691,4692],{},"Awk-Befehl",[675,4694,4695],{},"Text- und Spaltenbearbeitung.",[651,4697,4698,4701,4704],{},[675,4699,4700],{},"125",[675,4702,4703],{},"Sed-Befehl",[675,4705,4706],{},"Automatisierte Textveränderung.",[651,4708,4709,4712,4715],{},[675,4710,4711],{},"100",[675,4713,4714],{},"Find-Befehl",[675,4716,4717],{},"Dateien im System suchen.",[651,4719,4720,4723,4726],{},[675,4721,4722],{},"76",[675,4724,4725],{},"Head-Befehl",[675,4727,4728],{},"Dateianfang anzeigen (Standard: erste 10 Zeilen).",[651,4730,4731,4734,4737],{},[675,4732,4733],{},"77",[675,4735,4736],{},"Tail-Befehl",[675,4738,4739],{},"Dateiende anzeigen (Standard: letzte 10 Zeilen).",[651,4741,4742,4745,4748],{},[675,4743,4744],{},"86",[675,4746,4747],{},"Stat-Befehl",[675,4749,4750],{},"Zeigt detaillierte Datei-Metadaten an.",[651,4752,4753,4755,4758],{},[675,4754,4689],{},[675,4756,4757],{},"Tee-Befehl",[675,4759,4760],{},"Schreibt Ausgabe in Datei und zeigt sie zeitgleich an.",[11,4762,4764],{"id":4763},"_1-skript-grundlagen-datenfluss","1. Skript-Grundlagen & Datenfluss",[20,4766,4767,4773,4779,4785,4791,4797,4803,4809,4815,4821,4832,4841],{},[23,4768,4769,4772],{},[26,4770,4771],{},"Shebang:"," Beginne ein Skript immer mit #! (z. B. #!\u002Fbin\u002Fbash), um die Shell festzulegen.",[23,4774,4775,4778],{},[26,4776,4777],{},"Ausführbar machen",": chmod +x \u003Cscriptname>.sh",[23,4780,4781,4784],{},[26,4782,4783],{},"Ausgabe überschreiben:"," > file erstellt oder überschreibt eine Datei.",[23,4786,4787,4790],{},[26,4788,4789],{},"Ausgabe anhängen:"," >> file fügt Text ans Ende einer Datei an.",[23,4792,4793,4796],{},[26,4794,4795],{},"Eingabe lesen:"," \u003C file liest den Inhalt einer Datei ein.",[23,4798,4799,4802],{},[26,4800,4801],{},"Pipe:"," a | b leitet die Ausgabe von Befehl \"a\" als Eingabe an Befehl \"b\" weiter.",[23,4804,4805,4808],{},[26,4806,4807],{},"Kommentare",": # am Beginn der Zeile",[23,4810,4811,4814],{},[26,4812,4813],{},"Variablen-Zuweisung",": variablenname=”\u003Cwert>” (Kein Leerzeichen um das =)",[23,4816,4817,4820],{},[26,4818,4819],{},"Variablen-Aufruf",": $variablenname (Case-Sensitive)",[23,4822,4823,4826,4827],{},[26,4824,4825],{},"Umgebungsvariable",": export global=”\u003Cwert>”\n",[20,4828,4829],{},[23,4830,4831],{},"Für Unterprozesse sichtbar",[23,4833,4834,4837,4838],{},[26,4835,4836],{},"Script-Aufruf",": .\u002Fscriptname.sh ",[2915,4839,4840],{},"param1",[23,4842,4843,4846,4847,4850,4851,4850,4854,4857,4858],{},[26,4844,4845],{},"User-Eingabe während des Scripts",": read ",[2915,4848,4849],{},"-s"," ",[2915,4852,4853],{},"-r",[2915,4855,4856],{},"-p “\u003Cprompt>”"," \u003Cvariablenname>\n",[20,4859,4860,4863,4866],{},[23,4861,4862],{},"-p “\u003Cprompt>”: Prompt vor der Eingabe",[23,4864,4865],{},"-s: verdeckte Eingabe (Passwörter)",[23,4867,4868],{},"-r: verhindert Escape-Sequenzen",[11,4870,4872],{"id":4871},"_2-wichtige-variablen","2. Wichtige Variablen",[20,4874,4875,4881,4887,4893,4899,4905,4911],{},[23,4876,4877,4880],{},[26,4878,4879],{},"$0",": Der Name des aufgerufenen Programms.",[23,4882,4883,4886],{},[26,4884,4885],{},"$1, $2, …",": Das erste und zweite übergebene Argument.",[23,4888,4889,4892],{},[26,4890,4891],{},"$#",": Die Anzahl der übergebenen Argumente.",[23,4894,4895,4898],{},[26,4896,4897],{},"$","*: Alle übergebenen Argumente auf einmal.",[23,4900,4901,4904],{},[26,4902,4903],{},"$?",": Der Rückgabecode des letzten Befehls (0 = Fehlerfrei).",[23,4906,4907,4910],{},[26,4908,4909],{},"$$",": Die Prozess-ID (PID) des aktuellen Skripts.",[23,4912,4913,4916],{},[26,4914,4915],{},"${V:-default}",": Gibt den Wert von $V aus, oder \"default\", falls die Variable leer ist.",[966,4918,4919],{"start":1125},[23,4920,4921],{},"Logik & Bedingungen",[16,4923,4924],{},[26,4925,4926],{},"Befehle direkt verketten:",[20,4928,4929,4932],{},[23,4930,4931],{},"cmd1 && cmd2: Führe cmd1 aus; wenn er erfolgreich war, führe cmd2 aus.",[23,4933,4934],{},"cmd1 || cmd2: Führe cmd1 aus; wenn er fehlschlägt, führe cmd2 aus.",[228,4936,4938],{"id":4937},"die-if-abfrage","Die If-Abfrage:",[16,4940,4941],{},"Bash",[3392,4943,4945],{"className":3394,"code":4944,"language":3396,"meta":225,"style":225},"if [ \"$x\" -lt \"$y\" ]; then\n\n# do something\n\nfi\n\n",[3398,4946,4947,4980,4984,4989,4993],{"__ignoreMap":225},[2915,4948,4949,4952,4955,4958,4961,4963,4966,4969,4972,4974,4977],{"class":3402,"line":3403},[2915,4950,4951],{"class":3533},"if",[2915,4953,4954],{"class":3529}," [ ",[2915,4956,4957],{"class":3414},"\"",[2915,4959,4960],{"class":3529},"$x",[2915,4962,4957],{"class":3414},[2915,4964,4965],{"class":3533}," -lt",[2915,4967,4968],{"class":3414}," \"",[2915,4970,4971],{"class":3529},"$y",[2915,4973,4957],{"class":3414},[2915,4975,4976],{"class":3529}," ]; ",[2915,4978,4979],{"class":3533},"then\n",[2915,4981,4982],{"class":3402,"line":1117},[2915,4983,3506],{"emptyLinePlaceholder":3505},[2915,4985,4986],{"class":3402,"line":1125},[2915,4987,4988],{"class":3511},"# do something\n",[2915,4990,4991],{"class":3402,"line":3515},[2915,4992,3506],{"emptyLinePlaceholder":3505},[2915,4994,4995],{"class":3402,"line":3520},[2915,4996,4997],{"class":3533},"fi\n",[16,4999,5000],{},[26,5001,5002],{},"Die Case-Anweisung (Mehrfach-Auswahl):",[16,5004,4941],{},[3392,5006,5008],{"className":3394,"code":5007,"language":3396,"meta":225,"style":225},"case $foo in\n\na) echo \"foo is A\" ;; #(foo = a)\n\nb) echo \"foo is B\" ;; #(foo = b)\n\n*) echo \"foo is not A or B\" ;; #(alles anderes)\n\nesac\n\n",[3398,5009,5010,5021,5025,5045,5049,5068,5073,5091,5096],{"__ignoreMap":225},[2915,5011,5012,5015,5018],{"class":3402,"line":3403},[2915,5013,5014],{"class":3533},"case",[2915,5016,5017],{"class":3529}," $foo ",[2915,5019,5020],{"class":3533},"in\n",[2915,5022,5023],{"class":3402,"line":1117},[2915,5024,3506],{"emptyLinePlaceholder":3505},[2915,5026,5027,5030,5033,5036,5039,5042],{"class":3402,"line":1125},[2915,5028,3432],{"class":5029},"sA_wV",[2915,5031,5032],{"class":3533},")",[2915,5034,5035],{"class":3410}," echo",[2915,5037,5038],{"class":3414}," \"foo is A\"",[2915,5040,5041],{"class":3529}," ;; ",[2915,5043,5044],{"class":3511},"#(foo = a)\n",[2915,5046,5047],{"class":3402,"line":3515},[2915,5048,3506],{"emptyLinePlaceholder":3505},[2915,5050,5051,5054,5057,5060,5063,5065],{"class":3402,"line":3520},[2915,5052,5053],{"class":3406},"b",[2915,5055,5056],{"class":3529},") ",[2915,5058,5059],{"class":3410},"echo",[2915,5061,5062],{"class":3414}," \"foo is B\"",[2915,5064,5041],{"class":3529},[2915,5066,5067],{"class":3511},"#(foo = b)\n",[2915,5069,5071],{"class":3402,"line":5070},6,[2915,5072,3506],{"emptyLinePlaceholder":3505},[2915,5074,5076,5079,5081,5083,5086,5088],{"class":3402,"line":5075},7,[2915,5077,5078],{"class":3406},"*",[2915,5080,5056],{"class":3529},[2915,5082,5059],{"class":3410},[2915,5084,5085],{"class":3414}," \"foo is not A or B\"",[2915,5087,5041],{"class":3529},[2915,5089,5090],{"class":3511},"#(alles anderes)\n",[2915,5092,5094],{"class":3402,"line":5093},8,[2915,5095,3506],{"emptyLinePlaceholder":3505},[2915,5097,5099],{"class":3402,"line":5098},9,[2915,5100,5101],{"class":3533},"esac\n",[16,5103,5104],{},"(Wichtig: Das ;; am Ende jedes Blocks ist zwingend erforderlich ).",[228,5106,5108],{"id":5107},"_1-for-loop-beispiel-über-eine-liste-iterieren",[26,5109,5110],{},"1. for – loop Beispiel: Über eine Liste iterieren",[16,5112,5113],{},"Dies ist der klassische Anwendungsfall: Du gehst eine Liste von Dateien oder Werten nacheinander durch.",[16,5115,4941],{},[3392,5117,5119],{"className":3394,"code":5118,"language":3396,"meta":225,"style":225},"#!\u002Fbin\u002Fbash\n\nMEIN_ARRAY=(\"Apfel Birne\" \"Banane\" \"Kirsche\")\n\nMEINE_LISTE=\"Apfel Birne Banane\"\n\nfor obst in $MEINE_LISTE; do\n\necho \"Ich mag $obst\"\n\nDone\n\n# Liste von Werten durchgehen\nfor tier in Hund Katze Maus; do\necho \"Das ist ein(e): $tier\"\ndone\n\n",[3398,5120,5121,5126,5130,5153,5157,5167,5171,5188,5192,5205,5210,5216,5221,5227,5251,5264],{"__ignoreMap":225},[2915,5122,5123],{"class":3402,"line":3403},[2915,5124,5125],{"class":3511},"#!\u002Fbin\u002Fbash\n",[2915,5127,5128],{"class":3402,"line":1117},[2915,5129,3506],{"emptyLinePlaceholder":3505},[2915,5131,5132,5135,5138,5141,5144,5147,5150],{"class":3402,"line":1125},[2915,5133,5134],{"class":3529},"MEIN_ARRAY",[2915,5136,5137],{"class":3533},"=",[2915,5139,5140],{"class":3529},"(",[2915,5142,5143],{"class":3414},"\"Apfel Birne\"",[2915,5145,5146],{"class":3414}," \"Banane\"",[2915,5148,5149],{"class":3414}," \"Kirsche\"",[2915,5151,5152],{"class":3529},")\n",[2915,5154,5155],{"class":3402,"line":3515},[2915,5156,3506],{"emptyLinePlaceholder":3505},[2915,5158,5159,5162,5164],{"class":3402,"line":3520},[2915,5160,5161],{"class":3529},"MEINE_LISTE",[2915,5163,5137],{"class":3533},[2915,5165,5166],{"class":3414},"\"Apfel Birne Banane\"\n",[2915,5168,5169],{"class":3402,"line":5070},[2915,5170,3506],{"emptyLinePlaceholder":3505},[2915,5172,5173,5176,5179,5182,5185],{"class":3402,"line":5075},[2915,5174,5175],{"class":3533},"for",[2915,5177,5178],{"class":3529}," obst ",[2915,5180,5181],{"class":3533},"in",[2915,5183,5184],{"class":3529}," $MEINE_LISTE; ",[2915,5186,5187],{"class":3533},"do\n",[2915,5189,5190],{"class":3402,"line":5093},[2915,5191,3506],{"emptyLinePlaceholder":3505},[2915,5193,5194,5196,5199,5202],{"class":3402,"line":5098},[2915,5195,5059],{"class":3410},[2915,5197,5198],{"class":3414}," \"Ich mag ",[2915,5200,5201],{"class":3529},"$obst",[2915,5203,5204],{"class":3414},"\"\n",[2915,5206,5208],{"class":3402,"line":5207},10,[2915,5209,3506],{"emptyLinePlaceholder":3505},[2915,5211,5213],{"class":3402,"line":5212},11,[2915,5214,5215],{"class":3406},"Done\n",[2915,5217,5219],{"class":3402,"line":5218},12,[2915,5220,3506],{"emptyLinePlaceholder":3505},[2915,5222,5224],{"class":3402,"line":5223},13,[2915,5225,5226],{"class":3511},"# Liste von Werten durchgehen\n",[2915,5228,5230,5232,5235,5237,5240,5243,5246,5249],{"class":3402,"line":5229},14,[2915,5231,5175],{"class":3533},[2915,5233,5234],{"class":3529}," tier ",[2915,5236,5181],{"class":3533},[2915,5238,5239],{"class":3414}," Hund",[2915,5241,5242],{"class":3414}," Katze",[2915,5244,5245],{"class":3414}," Maus",[2915,5247,5248],{"class":3529},"; ",[2915,5250,5187],{"class":3533},[2915,5252,5254,5256,5259,5262],{"class":3402,"line":5253},15,[2915,5255,5059],{"class":3410},[2915,5257,5258],{"class":3414}," \"Das ist ein(e): ",[2915,5260,5261],{"class":3529},"$tier",[2915,5263,5204],{"class":3414},[2915,5265,5267],{"class":3402,"line":5266},16,[2915,5268,5269],{"class":3533},"done\n",[228,5271,5273],{"id":5272},"_2-beispiel-über-einen-zahlenbereich-iterieren",[26,5274,5275],{},"2. Beispiel: Über einen Zahlenbereich iterieren",[16,5277,5278],{},"Wenn du eine Aktion eine bestimmte Anzahl an Malen wiederholen willst (z. B. 5-mal):",[16,5280,4941],{},[3392,5282,5284],{"className":3394,"code":5283,"language":3396,"meta":225,"style":225},"#!\u002Fbin\u002Fbash\n\n# Zählen von 1 bis 5\nfor i in {1..5}; do\necho \"Durchlauf Nummer: $i\"\ndone\n\n",[3398,5285,5286,5290,5294,5299,5318,5330],{"__ignoreMap":225},[2915,5287,5288],{"class":3402,"line":3403},[2915,5289,5125],{"class":3511},[2915,5291,5292],{"class":3402,"line":1117},[2915,5293,3506],{"emptyLinePlaceholder":3505},[2915,5295,5296],{"class":3402,"line":1125},[2915,5297,5298],{"class":3511},"# Zählen von 1 bis 5\n",[2915,5300,5301,5303,5306,5308,5311,5314,5316],{"class":3402,"line":3515},[2915,5302,5175],{"class":3533},[2915,5304,5305],{"class":3529}," i ",[2915,5307,5181],{"class":3533},[2915,5309,5310],{"class":3529}," {",[2915,5312,5313],{"class":3406},"1..5}",[2915,5315,5248],{"class":3529},[2915,5317,5187],{"class":3533},[2915,5319,5320,5322,5325,5328],{"class":3402,"line":3520},[2915,5321,5059],{"class":3410},[2915,5323,5324],{"class":3414}," \"Durchlauf Nummer: ",[2915,5326,5327],{"class":3529},"$i",[2915,5329,5204],{"class":3414},[2915,5331,5332],{"class":3402,"line":5070},[2915,5333,5269],{"class":3533},[228,5335,5337],{"id":5336},"_3-profi-tipp-dateien-im-verzeichnis-verarbeiten",[26,5338,5339],{},"3. Profi-Tipp: Dateien im Verzeichnis verarbeiten",[16,5341,5342],{},"Ein sehr häufiger Anwendungsfall in der Shell ist es, alle Dateien eines bestimmten Typs zu bearbeiten:",[16,5344,4941],{},[3392,5346,5348],{"className":3394,"code":5347,"language":3396,"meta":225,"style":225},"#!\u002Fbin\u002Fbash\n\n# Alle .txt Dateien im aktuellen Verzeichnis finden und ausgeben\nfor datei in *.txt; do\necho \"Verarbeite Datei: $datei\"\n# Hier könnte z.B. ein grep oder cat Befehl folgen\ndone\n\n",[3398,5349,5350,5354,5358,5363,5379,5391,5396],{"__ignoreMap":225},[2915,5351,5352],{"class":3402,"line":3403},[2915,5353,5125],{"class":3511},[2915,5355,5356],{"class":3402,"line":1117},[2915,5357,3506],{"emptyLinePlaceholder":3505},[2915,5359,5360],{"class":3402,"line":1125},[2915,5361,5362],{"class":3511},"# Alle .txt Dateien im aktuellen Verzeichnis finden und ausgeben\n",[2915,5364,5365,5367,5370,5372,5375,5377],{"class":3402,"line":3515},[2915,5366,5175],{"class":3533},[2915,5368,5369],{"class":3529}," datei ",[2915,5371,5181],{"class":3533},[2915,5373,5374],{"class":3414}," *.txt",[2915,5376,5248],{"class":3529},[2915,5378,5187],{"class":3533},[2915,5380,5381,5383,5386,5389],{"class":3402,"line":3520},[2915,5382,5059],{"class":3410},[2915,5384,5385],{"class":3414}," \"Verarbeite Datei: ",[2915,5387,5388],{"class":3529},"$datei",[2915,5390,5204],{"class":3414},[2915,5392,5393],{"class":3402,"line":5070},[2915,5394,5395],{"class":3511},"# Hier könnte z.B. ein grep oder cat Befehl folgen\n",[2915,5397,5398],{"class":3402,"line":5075},[2915,5399,5269],{"class":3533},[16,5401,5402],{},[26,5403,5404],{},"Zusammenfassung der Struktur:",[20,5406,5407,5412,5418,5423,5429],{},[23,5408,5409,5411],{},[26,5410,5175],{},": Startet die Schleife.",[23,5413,5414,5417],{},[26,5415,5416],{},"variable",": Ein frei wählbarer Name, der bei jedem Durchlauf den aktuellen Wert annimmt.",[23,5419,5420,5422],{},[26,5421,5181],{},": Definiert die Liste oder den Bereich, der abgearbeitet wird.",[23,5424,5425,5428],{},[26,5426,5427],{},"do",": Leitet den Codeblock ein, der für jedes Element ausgeführt wird.",[23,5430,5431,5434],{},[26,5432,5433],{},"done",": Beendet den Schleifenblock.",[16,5436,5437,5439],{},[26,5438,5175],{}," Wenn die Anzahl der Elemente feststeht.",[16,5441,5442,5445],{},[26,5443,5444],{},"while"," Wenn du auf einen Zustand wartest.",[16,5447,5448,5451],{},[26,5449,5450],{},"continue"," Wenn ein einzelnes Element ignoriert werden soll.",[16,5453,5454,5457],{},[26,5455,5456],{},"break"," Wenn die Arbeit vorzeitig erledigt ist.",[966,5459,5460],{"start":3515},[23,5461,5462],{},"Test-Operatoren (Bedingungen prüfen)",[645,5464,5465,5484],{},[648,5466,5467],{},[651,5468,5469,5474,5479],{},[654,5470,5471],{},[26,5472,5473],{},"Typ",[654,5475,5476],{},[26,5477,5478],{},"Operatoren",[654,5480,5481],{},[26,5482,5483],{},"Bedeutung",[670,5485,5486,5499,5509,5519,5531,5541,5554,5564,5574,5586],{},[651,5487,5488,5493,5496],{},[675,5489,5490],{},[26,5491,5492],{},"Zahlen",[675,5494,5495],{},"-eq \u002F -ne",[675,5497,5498],{},"Gleich \u002F Ungleich",[651,5500,5501,5503,5506],{},[675,5502],{},[675,5504,5505],{},"-lt \u002F -le",[675,5507,5508],{},"Kleiner als \u002F Kleiner oder gleich",[651,5510,5511,5513,5516],{},[675,5512],{},[675,5514,5515],{},"-gt \u002F -ge",[675,5517,5518],{},"Größer als \u002F Größer oder gleich",[651,5520,5521,5526,5528],{},[675,5522,5523],{},[26,5524,5525],{},"Text",[675,5527,5137],{},[675,5529,5530],{},"Strings sind gleich",[651,5532,5533,5535,5538],{},[675,5534],{},[675,5536,5537],{},"-z \u002F -n",[675,5539,5540],{},"Länge ist Null (leer) \u002F Nicht leer",[651,5542,5543,5548,5551],{},[675,5544,5545],{},[26,5546,5547],{},"Dateien",[675,5549,5550],{},"-d \u002F -x",[675,5552,5553],{},"Ist ein Verzeichnis \u002F Ist ausführbar",[651,5555,5556,5558,5561],{},[675,5557],{},[675,5559,5560],{},"-r \u002F -w",[675,5562,5563],{},"Ist lesbar \u002F Ist schreibbar",[651,5565,5566,5568,5571],{},[675,5567],{},[675,5569,5570],{},"-nt",[675,5572,5573],{},"Ist neuer als (newer than)",[651,5575,5576,5581,5584],{},[675,5577,5578],{},[26,5579,5580],{},"Logik",[675,5582,5583],{},"&& \u002F `",[675,5585],{},[651,5587,5588,5590,5593],{},[675,5589],{},[675,5591,5592],{},"!",[675,5594,5595],{},"Logisches NICHT",[16,5597,5598],{},[26,5599,5600],{},"4. Schleifen, Case & Funktionen",[16,5602,5603],{},[26,5604,5605],{},"While-Schleife (Datei zeilenweise einlesen):",[16,5607,4941],{},[3392,5609,5611],{"className":3394,"code":5610,"language":3396,"meta":225,"style":225},"while read f\n\ndo\n\necho \"Line is $f\"\n\ndone \u003C dateiname.txt\n\nwhile read benutzer\n\ndo\n\nmkdir \"\u002Fhome\u002F$benutzer\"\n\necho \"Ordner für $benutzer wurde erstellt.\"\n\ndone \u003C benutzerliste.txt #Datei einlesen wird als 1. ausgeführt\n\n",[3398,5612,5613,5623,5627,5631,5635,5647,5651,5661,5665,5674,5678,5682,5686,5699,5703,5715,5719],{"__ignoreMap":225},[2915,5614,5615,5617,5620],{"class":3402,"line":3403},[2915,5616,5444],{"class":3533},[2915,5618,5619],{"class":3410}," read",[2915,5621,5622],{"class":3414}," f\n",[2915,5624,5625],{"class":3402,"line":1117},[2915,5626,3506],{"emptyLinePlaceholder":3505},[2915,5628,5629],{"class":3402,"line":1125},[2915,5630,5187],{"class":3533},[2915,5632,5633],{"class":3402,"line":3515},[2915,5634,3506],{"emptyLinePlaceholder":3505},[2915,5636,5637,5639,5642,5645],{"class":3402,"line":3520},[2915,5638,5059],{"class":3410},[2915,5640,5641],{"class":3414}," \"Line is ",[2915,5643,5644],{"class":3529},"$f",[2915,5646,5204],{"class":3414},[2915,5648,5649],{"class":3402,"line":5070},[2915,5650,3506],{"emptyLinePlaceholder":3505},[2915,5652,5653,5655,5658],{"class":3402,"line":5075},[2915,5654,5433],{"class":3533},[2915,5656,5657],{"class":3533}," \u003C",[2915,5659,5660],{"class":3529}," dateiname.txt\n",[2915,5662,5663],{"class":3402,"line":5093},[2915,5664,3506],{"emptyLinePlaceholder":3505},[2915,5666,5667,5669,5671],{"class":3402,"line":5098},[2915,5668,5444],{"class":3533},[2915,5670,5619],{"class":3410},[2915,5672,5673],{"class":3414}," benutzer\n",[2915,5675,5676],{"class":3402,"line":5207},[2915,5677,3506],{"emptyLinePlaceholder":3505},[2915,5679,5680],{"class":3402,"line":5212},[2915,5681,5187],{"class":3533},[2915,5683,5684],{"class":3402,"line":5218},[2915,5685,3506],{"emptyLinePlaceholder":3505},[2915,5687,5688,5691,5694,5697],{"class":3402,"line":5223},[2915,5689,5690],{"class":3406},"mkdir",[2915,5692,5693],{"class":3414}," \"\u002Fhome\u002F",[2915,5695,5696],{"class":3529},"$benutzer",[2915,5698,5204],{"class":3414},[2915,5700,5701],{"class":3402,"line":5229},[2915,5702,3506],{"emptyLinePlaceholder":3505},[2915,5704,5705,5707,5710,5712],{"class":3402,"line":5253},[2915,5706,5059],{"class":3410},[2915,5708,5709],{"class":3414}," \"Ordner für ",[2915,5711,5696],{"class":3529},[2915,5713,5714],{"class":3414}," wurde erstellt.\"\n",[2915,5716,5717],{"class":3402,"line":5266},[2915,5718,3506],{"emptyLinePlaceholder":3505},[2915,5720,5722,5724,5726,5729],{"class":3402,"line":5721},17,[2915,5723,5433],{"class":3533},[2915,5725,5657],{"class":3533},[2915,5727,5728],{"class":3529}," benutzerliste.txt ",[2915,5730,5731],{"class":3511},"#Datei einlesen wird als 1. ausgeführt\n",[16,5733,5734],{},[26,5735,5736],{},"Case-Anweisung (Mehrfach-Auswahl):",[16,5738,4941],{},[3392,5740,5742],{"className":3394,"code":5741,"language":3396,"meta":225,"style":225},"case $foo in\n\na) echo \"foo is A\" ;;\n\n*) echo \"foo is not A\" ;;\n\nesac\n\n",[3398,5743,5744,5752,5756,5769,5773,5785,5789],{"__ignoreMap":225},[2915,5745,5746,5748,5750],{"class":3402,"line":3403},[2915,5747,5014],{"class":3533},[2915,5749,5017],{"class":3529},[2915,5751,5020],{"class":3533},[2915,5753,5754],{"class":3402,"line":1117},[2915,5755,3506],{"emptyLinePlaceholder":3505},[2915,5757,5758,5760,5762,5764,5766],{"class":3402,"line":1125},[2915,5759,3432],{"class":5029},[2915,5761,5032],{"class":3533},[2915,5763,5035],{"class":3410},[2915,5765,5038],{"class":3414},[2915,5767,5768],{"class":3529}," ;;\n",[2915,5770,5771],{"class":3402,"line":3515},[2915,5772,3506],{"emptyLinePlaceholder":3505},[2915,5774,5775,5778,5780,5783],{"class":3402,"line":3520},[2915,5776,5777],{"class":3533},"*)",[2915,5779,5035],{"class":3410},[2915,5781,5782],{"class":3414}," \"foo is not A\"",[2915,5784,5768],{"class":3529},[2915,5786,5787],{"class":3402,"line":5070},[2915,5788,3506],{"emptyLinePlaceholder":3505},[2915,5790,5791],{"class":3402,"line":5075},[2915,5792,5101],{"class":3533},[16,5794,5795],{},[26,5796,5797],{},"Funktionen definieren und aufrufen:",[16,5799,4941],{},[3392,5801,5803],{"className":3394,"code":5802,"language":3396,"meta":225,"style":225},"doubleit() {\n\nexpr $1 * 2\n\n}\n\ndoubleit 3\n\n",[3398,5804,5805,5813,5817,5832,5836,5841,5845],{"__ignoreMap":225},[2915,5806,5807,5810],{"class":3402,"line":3403},[2915,5808,5809],{"class":3406},"doubleit",[2915,5811,5812],{"class":3529},"() {\n",[2915,5814,5815],{"class":3402,"line":1117},[2915,5816,3506],{"emptyLinePlaceholder":3505},[2915,5818,5819,5822,5826,5829],{"class":3402,"line":1125},[2915,5820,5821],{"class":3406},"expr",[2915,5823,5825],{"class":5824},"s4XuR"," $1",[2915,5827,5828],{"class":3410}," *",[2915,5830,5831],{"class":3410}," 2\n",[2915,5833,5834],{"class":3402,"line":3515},[2915,5835,3506],{"emptyLinePlaceholder":3505},[2915,5837,5838],{"class":3402,"line":3520},[2915,5839,5840],{"class":3529},"}\n",[2915,5842,5843],{"class":3402,"line":5070},[2915,5844,3506],{"emptyLinePlaceholder":3505},[2915,5846,5847,5849],{"class":3402,"line":5075},[2915,5848,5809],{"class":3406},[2915,5850,5851],{"class":3410}," 3\n",[54,5853,5855],{"id":5854},"_42-if-ausführlich","4.2 If ausführlich",[228,5857,5859],{"id":5858},"_421-die-einfache-if-anweisung","4.2.1 Die einfache if-Anweisung",[16,5861,5862],{},"Grundsätzlich hat die if-Anweisung der Bourne-Shell eine sehr einfache Form. Nach dem if steht ein Befehl, der ausgeführt wird. Gibt dieses Kommando eine 0 als Rückgabewert zurück, so gilt die Bedingung als erfüllt und die Aktionen, die zwischen dem folgenden then und fi stehen werden ausgeführt.",[3392,5864,5866],{"className":3394,"code":5865,"language":3396,"meta":225,"style":225},"if Kommando\nthen\n",[3398,5867,5868,5875],{"__ignoreMap":225},[2915,5869,5870,5872],{"class":3402,"line":3403},[2915,5871,4951],{"class":3533},[2915,5873,5874],{"class":3406}," Kommando\n",[2915,5876,5877],{"class":3402,"line":1117},[2915,5878,4979],{"class":3533},[16,5880,5881,5884,5887,5889,5891],{},[257,5882,5883],{},"Aktion",[5885,5886],"br",{},[257,5888,5883],{},[5885,5890],{},"\n...",[3392,5893,5895],{"className":3394,"code":5894,"language":3396,"meta":225,"style":225},"fi\n\n",[3398,5896,5897],{"__ignoreMap":225},[2915,5898,5899],{"class":3402,"line":3403},[2915,5900,4997],{"class":3533},[16,5902,5903],{},"Natürlich sind die Aktionen auch wieder normale Unix-Befehle. Das „fi“, das den Block beendet, der durch „if … then“ begonnen wurde, ist einfach nur das „if“ rückwärts geschrieben.",[228,5905,5907],{"id":5906},"_422-das-programm-test","4.2.2 Das Programm test",[16,5909,5910,5911,5914],{},"Damit es jetzt sinnvolle Möglichkeiten gibt, Bedingungen zu überprüfen brauchen wir ein Programm, das verschiedene Tests durchführt und jeweils bei gelungenem Test eine 0 als Rückgabewert zurückgibt, bei mislingenem Test eine 1. Dieses Programm heißt ",[257,5912,5913],{},"test"," und ermöglicht alle wesentlichen Bedingungsüberprüfungen, die für das Shell-Programmieren notwendig sind.",[16,5916,5917],{},"Damit wir nicht jedesmal schreiben müssen",[3392,5919,5921],{"className":3394,"code":5920,"language":3396,"meta":225,"style":225},"if test ...\n\n",[3398,5922,5923],{"__ignoreMap":225},[2915,5924,5925,5927,5930],{"class":3402,"line":3403},[2915,5926,4951],{"class":3533},[2915,5928,5929],{"class":3410}," test",[2915,5931,5932],{"class":3414}," ...\n",[16,5934,5935],{},"gibt es einen symbolischen Link auf das Programm test, der einfach [ heißt. Allerdings verlangt das Programm test, wenn es merkt, dass es als [ aufgerufen wurde, auch als letzten Parameter eine eckige Klammer zu. Damit ist es also möglich zu schreiben:",[3392,5937,5939],{"className":3394,"code":5938,"language":3396,"meta":225,"style":225},"if [ ... ]\n\n",[3398,5940,5941],{"__ignoreMap":225},[2915,5942,5943,5945],{"class":3402,"line":3403},[2915,5944,4951],{"class":3533},[2915,5946,5947],{"class":3529}," [ ... ]\n",[16,5949,5950],{},"Wichtig ist hierbei, dass unbedingt ein Leerzeichen zwischen if und der Klammer und zwischen der Klammer und den eigentlichen Tests stehen muß. Es handelt sich bei der Klammer ja tatsächlich um einen Programmaufruf!",[3392,5952,5954],{"className":3394,"code":5953,"language":3396,"meta":225,"style":225},"DATEI=\"test.txt\" # Prüfen, ob die Datei existiert UND sowohl lesbar als auch beschreibbar ist if [ -f \"$DATEI\" ] && [ -r \"$DATEI\" ] && [ -w \"$DATEI\" ]; then\n\n",[3398,5955,5956],{"__ignoreMap":225},[2915,5957,5958,5961,5963,5966],{"class":3402,"line":3403},[2915,5959,5960],{"class":3529},"DATEI",[2915,5962,5137],{"class":3533},[2915,5964,5965],{"class":3414},"\"test.txt\"",[2915,5967,5968],{"class":3511}," # Prüfen, ob die Datei existiert UND sowohl lesbar als auch beschreibbar ist if [ -f \"$DATEI\" ] && [ -r \"$DATEI\" ] && [ -w \"$DATEI\" ]; then\n",[995,5970,5972],{"id":5971},"_4221-die-verschiedenen-bedingungsüberprüfungen-mit-test-bzw-buch-seite-312","4.2.2.1 Die verschiedenen Bedingungsüberprüfungen mit test bzw. [ (Buch Seite 312)",[16,5974,5975,5985,5986,5989],{},[26,5976,5977,5978],{},"-r ",[257,5979,5980,5981,5984],{},"Dateiname: if ",[2915,5982,5983],{},"-r file.txt","; then:"," Die Datei ",[257,5987,5988],{},"Dateiname"," existiert und ist lesbar",[16,5991,5992,5997,5998,6000],{},[26,5993,5994,5995],{},"-w ",[257,5996,5988],{},": Die Datei ",[257,5999,5988],{}," existiert und ist beschreibbar",[16,6002,6003,5997,6008,6010],{},[26,6004,6005,6006],{},"-x ",[257,6007,5988],{},[257,6009,5988],{}," existiert und ist ausführbar",[16,6012,6013,5997,6018,6020],{},[26,6014,6015,6016],{},"-d ",[257,6017,5988],{},[257,6019,5988],{}," existiert und ist ein Verzeichnis",[16,6022,6023,5997,6028,6030],{},[26,6024,6025,6026],{},"-s ",[257,6027,5988],{},[257,6029,5988],{}," existiert und ist nicht leer",[16,6032,6033,5997,6038,6040],{},[26,6034,6035,6036],{},"-b ",[257,6037,5988],{},[257,6039,5988],{}," existiert und ist ein blockorientiertes Gerät",[16,6042,6043,5997,6048,6050],{},[26,6044,6045,6046],{},"-c ",[257,6047,5988],{},[257,6049,5988],{}," existiert und ist ein zeichenorientiertes Gerät",[16,6052,6053,5997,6058,6060],{},[26,6054,6055,6056],{},"-g ",[257,6057,5988],{},[257,6059,5988],{}," existiert und das SGID-Bit ist gesetzt",[16,6062,6063,5997,6068,6070],{},[26,6064,6065,6066],{},"-k ",[257,6067,5988],{},[257,6069,5988],{}," existiert und das Sticky-Bit ist gesetzt",[16,6072,6073,5997,6078,6080],{},[26,6074,6075,6076],{},"-u ",[257,6077,5988],{},[257,6079,5988],{}," existiert und das SUID-Bit ist gesetzt",[16,6082,6083,5997,6088,6090],{},[26,6084,6085,6086],{},"-p ",[257,6087,5988],{},[257,6089,5988],{}," existiert und ist ein Named Pipe",[16,6092,6093,5997,6098,6100],{},[26,6094,6095,6096],{},"-e ",[257,6097,5988],{},[257,6099,5988],{}," existiert",[16,6102,6103,5997,6108,6110],{},[26,6104,6105,6106],{},"-f ",[257,6107,5988],{},[257,6109,5988],{}," existiert und ist eine reguläre Datei",[16,6112,6113,5997,6118,6120],{},[26,6114,6115,6116],{},"-L ",[257,6117,5988],{},[257,6119,5988],{}," existiert und ist ein symbolischer Link",[16,6122,6123,5997,6128,6130],{},[26,6124,6125,6126],{},"-S ",[257,6127,5988],{},[257,6129,5988],{}," existiert und ist ein Socket",[16,6132,6133,5997,6138,6140],{},[26,6134,6135,6136],{},"-O ",[257,6137,5988],{},[257,6139,5988],{}," existiert und ist Eigentum des Anwenders, unter dessen UID das test-Programm gerade läuft",[16,6142,6143,5997,6148,6150],{},[26,6144,6145,6146],{},"-G ",[257,6147,5988],{},[257,6149,5988],{}," existiert und gehört zu der Gruppe, zu der der User gehört, unter dessen UID das test-Programm gerade läuft",[16,6152,6153,6162,6163,6165,6166,6168],{},[26,6154,6155,6158,6159],{},[257,6156,6157],{},"Datei1"," -nt ",[257,6160,6161],{},"Datei2",": ",[257,6164,6157],{}," ist neuer als ",[257,6167,6161],{}," (newer than)",[16,6170,6171,6162,6178,6180,6181,6183],{},[26,6172,6173,6175,6176],{},[257,6174,6157],{}," -ot ",[257,6177,6161],{},[257,6179,6157],{}," ist älter als ",[257,6182,6161],{}," (older than)",[16,6185,6186,6162,6193,6195,6196,6198],{},[26,6187,6188,6190,6191],{},[257,6189,6157],{}," -ef ",[257,6192,6161],{},[257,6194,6157],{}," und ",[257,6197,6161],{}," benutzen die gleiche I-Node (equal file)",[16,6200,6201,6207,6208,6210],{},[26,6202,6203,6204],{},"-z ",[257,6205,6206],{},"Zeichenkette",": Wahr wenn ",[257,6209,6206],{}," eine Länge von Null hat.",[16,6212,6213,6207,6218,6220],{},[26,6214,6215,6216],{},"-n ",[257,6217,6206],{},[257,6219,6206],{}," eine Länge von größer als Null hat.",[16,6222,6223,6207,6232,6234,6235],{},[26,6224,6225,6228,6229],{},[257,6226,6227],{},"Zeichenkette1"," = ",[257,6230,6231],{},"Zeichenkette2",[257,6233,6227],{}," gleich ",[257,6236,6231],{},[16,6238,6239,6207,6246,6248,6249],{},[26,6240,6241,6243,6244],{},[257,6242,6227],{}," != ",[257,6245,6231],{},[257,6247,6227],{}," ungleich ",[257,6250,6231],{},[16,6252,6253,6262,6263,6234,6265,6267],{},[26,6254,6255,6258,6259],{},[257,6256,6257],{},"Wert1"," -eq ",[257,6260,6261],{},"Wert2",": Wahr, wenn ",[257,6264,6257],{},[257,6266,6261],{}," (equal)",[16,6269,6270,6262,6277,6248,6279,6281],{},[26,6271,6272,6274,6275],{},[257,6273,6257],{}," -ne ",[257,6276,6261],{},[257,6278,6257],{},[257,6280,6261],{}," (not equal)",[16,6283,6284,6262,6291,6293,6294,6296],{},[26,6285,6286,6288,6289],{},[257,6287,6257],{}," -gt ",[257,6290,6261],{},[257,6292,6257],{}," größer ",[257,6295,6261],{}," (greater than)",[16,6298,6299,6262,6306,6308,6309,6311],{},[26,6300,6301,6303,6304],{},[257,6302,6257],{}," -ge ",[257,6305,6261],{},[257,6307,6257],{}," größer oder gleich ",[257,6310,6261],{}," (greater or equal)",[16,6313,6314,6262,6321,6323,6324,6326],{},[26,6315,6316,6318,6319],{},[257,6317,6257],{}," -lt ",[257,6320,6261],{},[257,6322,6257],{}," kleiner ",[257,6325,6261],{}," (less than)",[16,6328,6329,6262,6336,6338,6339,6341],{},[26,6330,6331,6333,6334],{},[257,6332,6257],{}," -le ",[257,6335,6261],{},[257,6337,6257],{}," kleiner oder gleich ",[257,6340,6261],{}," (less or equal)",[16,6343,6344,6349,6350],{},[26,6345,5592,6346],{},[257,6347,6348],{},"Ausdruck",": Logische Verneinung von ",[257,6351,6348],{},[16,6353,6354,6361],{},[26,6355,6356,6358,6359],{},[257,6357,6348],{}," -a ",[257,6360,6348],{},": Logisches UND. Wahr, wenn beide Ausdrücke wahr sind",[16,6363,6364,6371],{},[26,6365,6366,6368,6369],{},[257,6367,6348],{}," -o ",[257,6370,6348],{},": Logisches ODER. Wahr wenn mindestens einer der beiden Ausdrücke wahr ist",[16,6373,6374],{},"Mit diesen Tests sind so ziemlich alle denkbaren Bedingungsüberprüfungen möglich, die in einem Shellscript notwendig sind.",[995,6376,6378],{"id":6377},"_4222-die-erweiterte-if-else-anweisung","4.2.2.2 Die erweiterte if-else Anweisung",[16,6380,6381],{},"Natürlich bietet die if-Anweisung auch eine Erweiterung zur normalen Form, die sogenannte if-else Anweisung. Es ist also möglich zu schreiben:",[3392,6383,6385],{"className":3394,"code":6384,"language":3396,"meta":225,"style":225},"if [ Ausdruck ];\nthen\nKommandos\nelse\nKommandos\nfi\n\n",[3398,6386,6387,6394,6398,6403,6408,6412],{"__ignoreMap":225},[2915,6388,6389,6391],{"class":3402,"line":3403},[2915,6390,4951],{"class":3533},[2915,6392,6393],{"class":3529}," [ Ausdruck ];\n",[2915,6395,6396],{"class":3402,"line":1117},[2915,6397,4979],{"class":3533},[2915,6399,6400],{"class":3402,"line":1125},[2915,6401,6402],{"class":3406},"Kommandos\n",[2915,6404,6405],{"class":3402,"line":3515},[2915,6406,6407],{"class":3533},"else\n",[2915,6409,6410],{"class":3402,"line":3520},[2915,6411,6402],{"class":3406},[2915,6413,6414],{"class":3402,"line":5070},[2915,6415,4997],{"class":3533},[995,6417,6419],{"id":6418},"_4223-die-if-elif-else-anweisung","4.2.2.3 Die if-elif-else Anweisung",[16,6421,6422],{},"Um noch einen Schritt weiterzugehen bietet die if-Anweisung sogar ein weiteres if im else, das sogenannte elif, das wieder eine Bedingung überprüft:",[3392,6424,6426],{"className":3394,"code":6425,"language":3396,"meta":225,"style":225},"if [ Ausdruck ];\nthen\nKommandos\nelif [ Ausdruck ];\nthen\nKommandos\nelse\nKommandos\nfi\n\n",[3398,6427,6428,6434,6438,6442,6449,6453,6457,6461,6465],{"__ignoreMap":225},[2915,6429,6430,6432],{"class":3402,"line":3403},[2915,6431,4951],{"class":3533},[2915,6433,6393],{"class":3529},[2915,6435,6436],{"class":3402,"line":1117},[2915,6437,4979],{"class":3533},[2915,6439,6440],{"class":3402,"line":1125},[2915,6441,6402],{"class":3406},[2915,6443,6444,6447],{"class":3402,"line":3515},[2915,6445,6446],{"class":3533},"elif",[2915,6448,6393],{"class":3529},[2915,6450,6451],{"class":3402,"line":3520},[2915,6452,4979],{"class":3533},[2915,6454,6455],{"class":3402,"line":5070},[2915,6456,6402],{"class":3406},[2915,6458,6459],{"class":3402,"line":5075},[2915,6460,6407],{"class":3533},[2915,6462,6463],{"class":3402,"line":5093},[2915,6464,6402],{"class":3406},[2915,6466,6467],{"class":3402,"line":5098},[2915,6468,4997],{"class":3533},[995,6470,6472],{"id":6471},"_423-mehrfachauswahl-mit-case","4.2.3. Mehrfachauswahl mit case",[16,6474,6475],{},"Oft kommt es vor, dass eine Variable ausgewertet werden muß und es dabei viele verschiedenen Möglichkeiten gibt, welche Werte diese Variable annehmen kann. Natürlich wäre es mit einer langen if-elif-elif-elif… Anweisung möglich, so etwas zu realisieren, das wäre aber sowohl umständlich, als auch schwer zu lesen. Damit solche Fälle einfacher realisiert werden können, gibt es die Mehrfachauswahl mit case. Der prinzipielle Aufbau einer case-Entscheidung sieht folgendermaßen aus:",[3392,6477,6479],{"className":3394,"code":6478,"language":3396,"meta":225,"style":225},"case Variable in\nMuster1) Kommando1 ;;\nMuster2) Kommando2 ;;\nMuster3) Kommando3 ;;\n",[3398,6480,6481,6490,6502,6514],{"__ignoreMap":225},[2915,6482,6483,6485,6488],{"class":3402,"line":3403},[2915,6484,5014],{"class":3533},[2915,6486,6487],{"class":3529}," Variable ",[2915,6489,5020],{"class":3533},[2915,6491,6492,6495,6497,6500],{"class":3402,"line":1117},[2915,6493,6494],{"class":5029},"Muster1",[2915,6496,5032],{"class":3533},[2915,6498,6499],{"class":3406}," Kommando1",[2915,6501,5768],{"class":3529},[2915,6503,6504,6507,6509,6512],{"class":3402,"line":1125},[2915,6505,6506],{"class":5029},"Muster2",[2915,6508,5032],{"class":3533},[2915,6510,6511],{"class":3406}," Kommando2",[2915,6513,5768],{"class":3529},[2915,6515,6516,6519,6521,6524],{"class":3402,"line":3515},[2915,6517,6518],{"class":5029},"Muster3",[2915,6520,5032],{"class":3533},[2915,6522,6523],{"class":3406}," Kommando3",[2915,6525,5768],{"class":3529},[16,6527,6528],{},"...",[3392,6530,6532],{"className":3394,"code":6531,"language":3396,"meta":225,"style":225},"esac\n\n",[3398,6533,6534],{"__ignoreMap":225},[2915,6535,6536],{"class":3402,"line":3403},[2915,6537,5101],{"class":3529},[54,6539,6541],{"id":6540},"_5-essenzielle-werkzeuge","5. Essenzielle Werkzeuge",[20,6543,6544,6550,6556,6562],{},[23,6545,6546,6549],{},[26,6547,6548],{},"Suchen:"," grep foo myfile findet Zeilen mit dem Text \"foo\" in einer Datei.",[23,6551,6552,6555],{},[26,6553,6554],{},"Dateien finden:"," find . -name \"*.txt\" -print sucht nach Textdateien im aktuellen Verzeichnis.",[23,6557,6558,6561],{},[26,6559,6560],{},"Text filtern:"," awk '{print $5}' file gibt nur das 5. Wort jeder Zeile aus.",[23,6563,6564,6567],{},[26,6565,6566],{},"Text ersetzen:"," sed s\u002Ffoo\u002Fbar\u002Fg file ersetzt \"foo\" durch \"bar\".",[11,6569,6571],{"id":6570},"_6-funktionen","6. Funktionen",[16,6573,6574],{},[223,6575],{"alt":225,"src":6576},"\u002Fdownloads\u002FBSA\u002Fimages\u002F7-8-cs-sa2_img_1.png",[16,6578,6579],{},[223,6580],{"alt":225,"src":6581},"\u002Fdownloads\u002FBSA\u002Fimages\u002F7-8-cs-sa2_img_2.png",[16,6583,6584,6585],{},".",[223,6586],{"alt":225,"src":6587},"\u002Fdownloads\u002FBSA\u002Fimages\u002F7-8-cs-sa2_img_3.png",[11,6589,6591],{"id":6590},"_7-docker","7. Docker",[54,6593,6595],{"id":6594},"_1-der-workflow-vom-code-zum-container",[26,6596,6597],{},"1. Der Workflow: Vom Code zum Container",[16,6599,6600,6601],{},"Dieser Prozess lässt sich in drei Schritten zusammenfassen: ",[26,6602,6603],{},"Build, Pull, Run.",[228,6605,6607],{"id":6606},"images-verwalten-die-vorbereitungen",[26,6608,6609],{},"Images verwalten (Die Vorbereitungen)",[16,6611,6612],{},"Bevor etwas läuft, muss das Image existieren – entweder selbst gebaut oder heruntergeladen.",[20,6614,6615],{},[23,6616,6617],{},[26,6618,6619],{},"docker build -t name:tag .",[16,6621,6622],{},"Baut ein Image aus dem Dockerfile im aktuellen Verzeichnis (.). Das -t (Tag) gibt dem Kind einen Namen.",[20,6624,6625],{},[23,6626,6627],{},[26,6628,6629],{},"docker pull image_name",[16,6631,6632],{},"Lädt ein fertiges Image vom Docker Hub herunter (z. B. docker pull nginx).",[20,6634,6635],{},[23,6636,6637],{},[26,6638,6639],{},"docker images",[16,6641,6642],{},"Listet alle Images auf, die aktuell auf deinem Rechner gespeichert sind.",[20,6644,6645],{},[23,6646,6647],{},[26,6648,6649],{},"docker rmi image_id",[16,6651,6652],{},"Löscht ein Image (Remove Image).",[54,6654,6656],{"id":6655},"_2-docker-volumes-das-langzeitgedächtnis",[26,6657,6658],{},"2. Docker Volumes: Das Langzeitgedächtnis",[16,6660,6661,6662,6665,6666,6669],{},"Container sind ",[26,6663,6664],{},"ephemer",". Das ist ein schickes Wort für: Wenn du den Container löschst, sind alle Daten darin (Datenbanken, Uploads, Logs) ",[26,6667,6668],{},"weg",". Volumes sind die Lösung, um Daten \"auszulagern\".",[228,6671,6673],{"id":6672},"die-drei-arten-der-speicherung",[26,6674,6675],{},"Die drei Arten der Speicherung",[995,6677,6679],{"id":6678},"a-named-volumes-der-docker-standard",[26,6680,6681],{},"A. Named Volumes (Der Docker-Standard)",[16,6683,6684],{},"Docker verwaltet den Speicherort selbst (meist irgendwo tief in \u002Fvar\u002Flib\u002Fdocker\u002F).",[20,6686,6687,6693,6699],{},[23,6688,6689,6692],{},[26,6690,6691],{},"Syntax:"," -v mein_goldfisch_glas:\u002Fapp\u002Fdata",[23,6694,6695,6698],{},[26,6696,6697],{},"Vorteil:"," Performant, sicher und Docker kümmert sich um Backups und Verwaltung.",[23,6700,6701,6704],{},[26,6702,6703],{},"Einsatz:"," Datenbanken (PostgreSQL, MySQL).",[995,6706,6708],{"id":6707},"b-bind-mounts-der-entwickler-liebling",[26,6709,6710],{},"B. Bind Mounts (Der Entwickler-Liebling)",[16,6712,6713],{},"Du verbindest einen ganz konkreten Ordner von deiner Festplatte mit dem Container.",[20,6715,6716,6721,6730],{},[23,6717,6718,6720],{},[26,6719,6691],{}," -v \u002FUsers\u002Fname\u002Fprojekte\u002Fapp:\u002Fapp",[23,6722,6723,6725,6726,6729],{},[26,6724,6697],{}," Änderungen an deinem Code auf dem Host sind ",[26,6727,6728],{},"sofort"," im Container aktiv (Live-Reload).",[23,6731,6732,6734],{},[26,6733,6703],{}," Quellcode während der Entwicklung.",[995,6736,6738],{"id":6737},"c-anonymous-volumes",[26,6739,6740],{},"C. Anonymous Volumes",[16,6742,6743],{},"Werden erstellt, wenn du nur den Zielpfad angibst (-v \u002Fapp\u002Ftemp).",[20,6745,6746],{},[23,6747,6748,6751],{},[26,6749,6750],{},"Nachteil:"," Schwer wiederzufinden, wenn der Container weg ist.",[54,6753,6755],{"id":6754},"_3-die-ultimative-kombination-beispiel",[26,6756,6757],{},"3. Die ultimative Kombination (Beispiel)",[16,6759,6760],{},"Nehmen wir an, du willst eine Website entwickeln. Du brauchst:",[966,6762,6763,6769,6775],{},[23,6764,6765,6768],{},[26,6766,6767],{},"Port Mapping",", um die Seite im Browser zu sehen.",[23,6770,6771,6774],{},[26,6772,6773],{},"Bind Mount",", damit dein Code-Update sofort sichtbar ist.",[23,6776,6777,6780],{},[26,6778,6779],{},"Named Volume",", damit die User-Daten erhalten bleiben.",[16,6782,4941],{},[3392,6784,6786],{"className":3394,"code":6785,"language":3396,"meta":225,"style":225},"docker run -d \\\n",[3398,6787,6788],{"__ignoreMap":225},[2915,6789,6790,6793,6796,6799],{"class":3402,"line":3403},[2915,6791,6792],{"class":3406},"docker",[2915,6794,6795],{"class":3414}," run",[2915,6797,6798],{"class":3410}," -d",[2915,6800,6801],{"class":3410}," \\\n",[16,6803,6804,6805,6807,6808,6810,6811,6813,6814,6816],{},"--name meine_super_app \\",[5885,6806],{},"\n-p 3000:3000 \\",[5885,6809],{},"\n-v $(pwd):\u002Fapp \\",[5885,6812],{},"\n-v app_db_data:\u002Fvar\u002Flib\u002Fmysql \\",[5885,6815],{},"\nmeine_app_image",[228,6818,6820],{"id":6819},"kurze-checkliste-für-den-befehl-oben",[26,6821,6822],{},"Kurze Checkliste für den Befehl oben:",[20,6824,6825,6831,6837],{},[23,6826,6827,6830],{},[26,6828,6829],{},"-p 3000:3000",": \"Browser-Port 3000 funkt an App-Port 3000.\"",[23,6832,6833,6836],{},[26,6834,6835],{},"-v $(pwd):\u002Fapp",": \"Spiegle mein aktuelles Verzeichnis in den Container-Ordner \u002Fapp.\"",[23,6838,6839,6842],{},[26,6840,6841],{},"-v app_db_data:...",": \"Speichere die Datenbank-Daten sicher in einem Volume namens app_db_data.\"",[54,6844,6846],{"id":6845},"nützliche-volume-commands",[26,6847,6848],{},"Nützliche Volume-Commands",[20,6850,6851,6854,6857],{},[23,6852,6853],{},"docker volume ls: Zeigt alle \"Festplatten\" an, die Docker gerade verwaltet.",[23,6855,6856],{},"docker volume inspect \u003Cname>: Verrät dir, wo genau auf deiner echten Festplatte die Daten liegen.",[23,6858,6859],{},"docker volume prune: Löscht alle Volumes, die gerade von keinem Container benutzt",[54,6861,6863],{"id":6862},"_2-container-steuern-die-action",[26,6864,6865],{},"2. Container steuern (Die Action)",[16,6867,6868],{},"Hier erwachen deine Anwendungen zum Leben. Der Befehl docker run ist dabei das Schweizer Taschenmesser.",[228,6870,6872],{"id":6871},"der-docker-run-befehl",[26,6873,6874],{},"Der docker run Befehl",[3392,6876,6878],{"className":3394,"code":6877,"language":3396,"meta":225,"style":225},"docker run [FLAGS] IMAGE [COMMAND]\n\n",[3398,6879,6880],{"__ignoreMap":225},[2915,6881,6882,6884,6886],{"class":3402,"line":3403},[2915,6883,6792],{"class":3406},[2915,6885,6795],{"class":3414},[2915,6887,6888],{"class":3529}," [FLAGS] IMAGE [COMMAND]\n",[16,6890,6891],{},"Die wichtigsten Flags für run:",[20,6893,6894,6900,6914,6924,6930],{},[23,6895,6896,6899],{},[26,6897,6898],{},"-d (detached):"," Der Container läuft im Hintergrund. Dein Terminal bleibt frei.",[23,6901,6902,6913],{},[26,6903,6904,6905,6908,6909,6912],{},"-p 8080:80 (-p ",[2915,6906,6907],{},"HOST_PORT",":",[2915,6910,6911],{},"CONTAINER_PORT","):"," Mapping. Leitet Port 8080 deines Rechners auf Port 80 des Containers um.",[23,6915,6916,6919,6920,6923],{},[26,6917,6918],{},"--name mein_server:"," Gibt dem Container einen festen Namen statt eines zufälligen (wie ",[257,6921,6922],{},"focused_curie",").",[23,6925,6926,6929],{},[26,6927,6928],{},"-v \u002Fhost:\u002Fcontainer (volume):"," Verbindet einen Ordner auf deinem Rechner mit einem Ordner im Container (wichtig für Datenbank-Daten).",[23,6931,6932,6935],{},[26,6933,6934],{},"-it (interactive + tty):"," Brauchst du, wenn du interaktiv mit dem Container arbeiten willst (z.B. eine Shell öffnen).",[16,6937,6938],{},[26,6939,6940],{},"Beispiel:",[3392,6942,6944],{"className":3394,"code":6943,"language":3396,"meta":225,"style":225},"docker run -d -p 8080:80 --name web-server nginx\n\n",[3398,6945,6946],{"__ignoreMap":225},[2915,6947,6948,6950,6952,6954,6957,6960,6963,6966],{"class":3402,"line":3403},[2915,6949,6792],{"class":3406},[2915,6951,6795],{"class":3414},[2915,6953,6798],{"class":3410},[2915,6955,6956],{"class":3410}," -p",[2915,6958,6959],{"class":3414}," 8080:80",[2915,6961,6962],{"class":3410}," --name",[2915,6964,6965],{"class":3414}," web-server",[2915,6967,6968],{"class":3414}," nginx\n",[16,6970,6971],{},[257,6972,6973],{},"(Startet einen Nginx-Webserver im Hintergrund, erreichbar unter localhost:8080)",[54,6975,6977],{"id":6976},"_3-laufende-container-verwalten-das-management",[26,6978,6979],{},"3. Laufende Container verwalten (Das Management)",[16,6981,6982],{},"Wenn die Container erst einmal laufen, musst du sie überwachen und kontrollieren.",[645,6984,6985,6999],{},[648,6986,6987],{},[651,6988,6989,6994],{},[654,6990,6991],{},[26,6992,6993],{},"Befehl",[654,6995,6996],{},[26,6997,6998],{},"Zweck",[670,7000,7001,7015,7029,7039,7049,7059],{},[651,7002,7003,7008],{},[675,7004,7005],{},[26,7006,7007],{},"docker ps",[675,7009,7010,7011,7014],{},"Zeigt alle ",[26,7012,7013],{},"laufenden"," Container an.",[651,7016,7017,7022],{},[675,7018,7019],{},[26,7020,7021],{},"docker ps -a",[675,7023,7024,7025,7028],{},"Zeigt ",[26,7026,7027],{},"alle"," Container an (auch die gestoppten).",[651,7030,7031,7036],{},[675,7032,7033],{},[26,7034,7035],{},"docker stop \u003CID\u002FName>",[675,7037,7038],{},"Hält einen laufenden Container sanft an.",[651,7040,7041,7046],{},[675,7042,7043],{},[26,7044,7045],{},"docker start \u003CID\u002FName>",[675,7047,7048],{},"Startet einen gestoppten Container wieder.",[651,7050,7051,7056],{},[675,7052,7053],{},[26,7054,7055],{},"docker rm \u003CID\u002FName>",[675,7057,7058],{},"Löscht einen (gestoppten) Container endgültig.",[651,7060,7061,7066],{},[675,7062,7063],{},[26,7064,7065],{},"docker logs -f \u003CID\u002FName>",[675,7067,7068],{},"Zeigt die Konsolen-Ausgabe des Containers live an (super zum Debuggen!).",[54,7070,7072],{"id":7071},"_4-insider-befehle-für-profis",[26,7073,7074],{},"4. Insider-Befehle (Für Profis)",[16,7076,7077],{},"Manchmal musst du „in“ den Container hineinschauen oder aufräumen:",[20,7079,7080],{},[23,7081,7082,7085],{},[26,7083,7084],{},"docker exec -it \u003Ccontainername> bash"," (oder sh)",[16,7087,7088,7089,7092],{},"Damit öffnest du ein Terminal ",[26,7090,7091],{},"innerhalb"," eines bereits laufenden Containers. Es ist, als würdest du dich per SSH einloggen.",[20,7094,7095],{},[23,7096,7097],{},[26,7098,7099],{},"docker inspect \u003Ccontainername>",[16,7101,7102],{},"Gibt dir alle technischen Details (IP-Adresse, Mounts, Konfiguration) im JSON-Format aus.",[20,7104,7105],{},[23,7106,7107],{},[26,7108,7109],{},"docker system prune",[16,7111,7112],{},"Der „Frühlingsputz“. Löscht alle gestoppten Container, ungenutzten Netzwerke und verwaisten Images auf einmal.",[228,7114,7116],{"id":7115},"ein-typischer-workflow-in-der-praxis",[26,7117,7118],{},"Ein typischer Workflow in der Praxis:",[966,7120,7121,7127,7133,7139,7145],{},[23,7122,7123,7126],{},[26,7124,7125],{},"Code schreiben"," und Dockerfile erstellen.",[23,7128,7129,7132],{},[26,7130,7131],{},"docker build -t meine-app ."," (Image bauen)",[23,7134,7135,7138],{},[26,7136,7137],{},"docker run -d -p 3000:3000 meine-app"," (Container starten)",[23,7140,7141,7144],{},[26,7142,7143],{},"docker logs -f meine-app"," (Prüfen, ob alles okay ist)",[23,7146,7147,7148,7151],{},"Fehler gefunden? ",[26,7149,7150],{},"docker stop meine-app"," -> Code ändern -> Zurück zu Schritt 2.",[11,7153,7155],{"id":7154},"_8-docker-file","8. Docker File",[966,7157,7158],{},[23,7159,7160],{},"Build-Argumente (Optional beim Bauen übergeben)",[3392,7162,7166],{"className":7163,"code":7164,"language":7165,"meta":225,"style":225},"language-dockerfile shiki shiki-themes github-light github-dark","ARG PYTHON_VERSION=3.9-slim\n\n","dockerfile",[3398,7167,7168],{"__ignoreMap":225},[2915,7169,7170,7173],{"class":3402,"line":3403},[2915,7171,7172],{"class":3533},"ARG",[2915,7174,7175],{"class":3529}," PYTHON_VERSION=3.9-slim\n",[966,7177,7178],{"start":1117},[23,7179,7180],{},"Basis-Image mit Variable",[3392,7182,7184],{"className":7163,"code":7183,"language":7165,"meta":225,"style":225},"FROM python:${PYTHON_VERSION}\n\n",[3398,7185,7186],{"__ignoreMap":225},[2915,7187,7188,7191],{"class":3402,"line":3403},[2915,7189,7190],{"class":3533},"FROM",[2915,7192,7193],{"class":3529}," python:${PYTHON_VERSION}\n",[966,7195,7196],{"start":1125},[23,7197,7198],{},"Metadaten (Gut für die Organisation)",[3392,7200,7202],{"className":7163,"code":7201,"language":7165,"meta":225,"style":225},"LABEL maintainer=\"dein-name@example.com\" LABEL description=\"Produktions-Image für meine Python Web-App\"\n\n",[3398,7203,7204],{"__ignoreMap":225},[2915,7205,7206,7209,7212,7215,7218],{"class":3402,"line":3403},[2915,7207,7208],{"class":3533},"LABEL",[2915,7210,7211],{"class":3529}," maintainer=",[2915,7213,7214],{"class":3414},"\"dein-name@example.com\"",[2915,7216,7217],{"class":3529}," LABEL description=",[2915,7219,7220],{"class":3414},"\"Produktions-Image für meine Python Web-App\"\n",[966,7222,7223],{"start":3515},[23,7224,7225],{},"Umgebungsvariablen setzen",[16,7227,7228],{},"Verhindert, dass Python .pyc Dateien schreibt und puffert die Ausgabe (loggt sofort)",[3392,7230,7232],{"className":7163,"code":7231,"language":7165,"meta":225,"style":225},"ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1 ENV APP_HOME=\u002Fapp\n\nWORKDIR $APP_HOME\n\n",[3398,7233,7234,7242,7246],{"__ignoreMap":225},[2915,7235,7236,7239],{"class":3402,"line":3403},[2915,7237,7238],{"class":3533},"ENV",[2915,7240,7241],{"class":3529}," PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1 ENV APP_HOME=\u002Fapp\n",[2915,7243,7244],{"class":3402,"line":1117},[2915,7245,3506],{"emptyLinePlaceholder":3505},[2915,7247,7248,7251],{"class":3402,"line":1125},[2915,7249,7250],{"class":3533},"WORKDIR",[2915,7252,7253],{"class":3529}," $APP_HOME\n",[966,7255,7256],{"start":3520},[23,7257,7258],{},"Abhängigkeiten (Caching-Optimierung)",[16,7260,7261],{},"Wir kopieren NUR die requirements zuerst, damit der 'pip install' Layer",[16,7263,7264],{},"nur neu gebaut wird, wenn sich die Abhängigkeiten ändern.",[3392,7266,7268],{"className":7163,"code":7267,"language":7165,"meta":225,"style":225},"COPY requirements.txt . RUN pip install --no-cache-dir --upgrade pip\n",[3398,7269,7270],{"__ignoreMap":225},[2915,7271,7272,7275],{"class":3402,"line":3403},[2915,7273,7274],{"class":3533},"COPY",[2915,7276,7277],{"class":3529}," requirements.txt . RUN pip install --no-cache-dir --upgrade pip\n",[16,7279,7280],{},"&& pip install --no-cache-dir -r requirements.txt",[966,7282,7283],{"start":5070},[23,7284,7285],{},"Sicherheits-Check: Einen Non-Root User anlegen",[16,7287,7288],{},"Standardmäßig läuft Docker als 'root'. Das ist ein Sicherheitsrisiko.",[3392,7290,7292],{"className":7163,"code":7291,"language":7165,"meta":225,"style":225},"RUN useradd -m myuser USER myuser\n\n",[3398,7293,7294],{"__ignoreMap":225},[2915,7295,7296,7299],{"class":3402,"line":3403},[2915,7297,7298],{"class":3533},"RUN",[2915,7300,7301],{"class":3529}," useradd -m myuser USER myuser\n",[966,7303,7304],{"start":5075},[23,7305,7306],{},"App-Code kopieren (als der neue User)",[3392,7308,7310],{"className":7163,"code":7309,"language":7165,"meta":225,"style":225},"COPY --chown=myuser:myuser . .\n\n",[3398,7311,7312],{"__ignoreMap":225},[2915,7313,7314,7316],{"class":3402,"line":3403},[2915,7315,7274],{"class":3533},[2915,7317,7318],{"class":3529}," --chown=myuser:myuser . .\n",[966,7320,7321],{"start":5093},[23,7322,7323],{},"Healthcheck (Sagt Docker, ob die App wirklich \"lebt\")",[3392,7325,7327],{"className":7163,"code":7326,"language":7165,"meta":225,"style":225},"HEALTHCHECK --interval=30s --timeout=3s\nCMD curl -f http:\u002F\u002Flocalhost:8080\u002Fhealth || exit 1\n\nEXPOSE 8080 #Port\n\n",[3398,7328,7329,7337,7345,7349],{"__ignoreMap":225},[2915,7330,7331,7334],{"class":3402,"line":3403},[2915,7332,7333],{"class":3533},"HEALTHCHECK",[2915,7335,7336],{"class":3529}," --interval=30s --timeout=3s\n",[2915,7338,7339,7342],{"class":3402,"line":1117},[2915,7340,7341],{"class":3533},"CMD",[2915,7343,7344],{"class":3529}," curl -f http:\u002F\u002Flocalhost:8080\u002Fhealth || exit 1\n",[2915,7346,7347],{"class":3402,"line":1125},[2915,7348,3506],{"emptyLinePlaceholder":3505},[2915,7350,7351,7354],{"class":3402,"line":3515},[2915,7352,7353],{"class":3533},"EXPOSE",[2915,7355,7356],{"class":3529}," 8080 #Port\n",[966,7358,7359],{"start":5098},[23,7360,7361],{},"Startbefehl",[3392,7363,7365],{"className":7163,"code":7364,"language":7165,"meta":225,"style":225},"CMD [\"python\", \"app.py\"]\n\n",[3398,7366,7367],{"__ignoreMap":225},[2915,7368,7369,7371,7374,7377,7380,7383],{"class":3402,"line":3403},[2915,7370,7341],{"class":3533},[2915,7372,7373],{"class":3529}," [",[2915,7375,7376],{"class":3414},"\"python\"",[2915,7378,7379],{"class":3529},", ",[2915,7381,7382],{"class":3414},"\"app.py\"",[2915,7384,7385],{"class":3529},"]\n",[54,7387,730],{"id":7388},"beispiel",[16,7390,7391],{},"Docker-File Beispiel zum Bauen einer Node.js Applikation innerhalb eines Docker-Containers",[16,7393,7394],{},[257,7395,7396],{},"# Stage 1: Build the application",[3392,7398,7400],{"className":7163,"code":7399,"language":7165,"meta":225,"style":225},"FROM node:18-alpine as build-stage\n\n",[3398,7401,7402],{"__ignoreMap":225},[2915,7403,7404,7406,7409,7412],{"class":3402,"line":3403},[2915,7405,7190],{"class":3533},[2915,7407,7408],{"class":3529}," node:18-alpine ",[2915,7410,7411],{"class":3533},"as",[2915,7413,7414],{"class":3529}," build-stage\n",[16,7416,7417],{},[257,7418,7419],{},"# Install pnpm",[3392,7421,7423],{"className":7163,"code":7422,"language":7165,"meta":225,"style":225},"RUN npm install -g pnpm\n\n",[3398,7424,7425],{"__ignoreMap":225},[2915,7426,7427,7429],{"class":3402,"line":3403},[2915,7428,7298],{"class":3533},[2915,7430,7431],{"class":3529}," npm install -g pnpm\n",[16,7433,7434],{},[257,7435,7436],{},"# Set the working directory",[3392,7438,7440],{"className":7163,"code":7439,"language":7165,"meta":225,"style":225},"WORKDIR \u002Fapp\n\n",[3398,7441,7442],{"__ignoreMap":225},[2915,7443,7444,7446],{"class":3402,"line":3403},[2915,7445,7250],{"class":3533},[2915,7447,7448],{"class":3529}," \u002Fapp\n",[16,7450,7451],{},[257,7452,7453],{},"# Copy the package.json and pnpm-lock.yaml files",[3392,7455,7457],{"className":7163,"code":7456,"language":7165,"meta":225,"style":225},"COPY source\u002Fpackage.json source\u002Fpnpm-lock.yaml .\u002F\n\n",[3398,7458,7459],{"__ignoreMap":225},[2915,7460,7461,7463],{"class":3402,"line":3403},[2915,7462,7274],{"class":3533},[2915,7464,7465],{"class":3529}," source\u002Fpackage.json source\u002Fpnpm-lock.yaml .\u002F\n",[16,7467,7468],{},[257,7469,7470],{},"# Install dependencies",[3392,7472,7474],{"className":7163,"code":7473,"language":7165,"meta":225,"style":225},"RUN pnpm install\n\n",[3398,7475,7476],{"__ignoreMap":225},[2915,7477,7478,7480],{"class":3402,"line":3403},[2915,7479,7298],{"class":3533},[2915,7481,7482],{"class":3529}," pnpm install\n",[16,7484,7485],{},[257,7486,7487],{},"# Copy the rest of the application code",[3392,7489,7491],{"className":7163,"code":7490,"language":7165,"meta":225,"style":225},"COPY source\u002F .\u002F\n\n",[3398,7492,7493],{"__ignoreMap":225},[2915,7494,7495,7497],{"class":3402,"line":3403},[2915,7496,7274],{"class":3533},[2915,7498,7499],{"class":3529}," source\u002F .\u002F\n",[16,7501,7502],{},[257,7503,7504],{},"# Build the application",[3392,7506,7508],{"className":7163,"code":7507,"language":7165,"meta":225,"style":225},"RUN pnpm build\n\n",[3398,7509,7510],{"__ignoreMap":225},[2915,7511,7512,7514],{"class":3402,"line":3403},[2915,7513,7298],{"class":3533},[2915,7515,7516],{"class":3529}," pnpm build\n",[16,7518,7519],{},[257,7520,7521],{},"# Stage 2: Serve the application",[3392,7523,7525],{"className":7163,"code":7524,"language":7165,"meta":225,"style":225},"FROM node:18-alpine as production-stage\n\n",[3398,7526,7527],{"__ignoreMap":225},[2915,7528,7529,7531,7533,7535],{"class":3402,"line":3403},[2915,7530,7190],{"class":3533},[2915,7532,7408],{"class":3529},[2915,7534,7411],{"class":3533},[2915,7536,7537],{"class":3529}," production-stage\n",[16,7539,7540],{},[257,7541,7436],{},[3392,7543,7544],{"className":7163,"code":7439,"language":7165,"meta":225,"style":225},[3398,7545,7546],{"__ignoreMap":225},[2915,7547,7548,7550],{"class":3402,"line":3403},[2915,7549,7250],{"class":3533},[2915,7551,7448],{"class":3529},[16,7553,7554],{},[257,7555,7556],{},"# Copy the built application from the build stage",[3392,7558,7560],{"className":7163,"code":7559,"language":7165,"meta":225,"style":225},"COPY --from=build-stage \u002Fapp\u002F.output .\u002F\n\n",[3398,7561,7562],{"__ignoreMap":225},[2915,7563,7564,7566],{"class":3402,"line":3403},[2915,7565,7274],{"class":3533},[2915,7567,7568],{"class":3529}," --from=build-stage \u002Fapp\u002F.output .\u002F\n",[16,7570,7571],{},[257,7572,7573],{},"# Start the application",[3392,7575,7577],{"className":7163,"code":7576,"language":7165,"meta":225,"style":225},"CMD [\"node\", \"server\u002Findex.mjs\"]\n\n# 9. Wichtige andere Befehle\n\n",[3398,7578,7579,7595,7599],{"__ignoreMap":225},[2915,7580,7581,7583,7585,7588,7590,7593],{"class":3402,"line":3403},[2915,7582,7341],{"class":3533},[2915,7584,7373],{"class":3529},[2915,7586,7587],{"class":3414},"\"node\"",[2915,7589,7379],{"class":3529},[2915,7591,7592],{"class":3414},"\"server\u002Findex.mjs\"",[2915,7594,7385],{"class":3529},[2915,7596,7597],{"class":3402,"line":1117},[2915,7598,3506],{"emptyLinePlaceholder":3505},[2915,7600,7601],{"class":3402,"line":1125},[2915,7602,7603],{"class":3511},"# 9. Wichtige andere Befehle\n",[54,7605,7607],{"id":7606},"_91-grep","9.1. grep",[16,7609,7610,7613,7615],{},[26,7611,7612],{},"Zweck:",[5885,7614],{},"\nSucht nach Textmustern (Patterns) in Dateien oder Ausgaben von Programmen.",[16,7617,7618],{},[26,7619,7620],{},"Typische Verwendung:",[20,7622,7623,7626,7629],{},[23,7624,7625],{},"Text in Dateien suchen",[23,7627,7628],{},"Logs durchsuchen",[23,7630,7631],{},"Ausgabe von Befehlen filtern",[16,7633,7634],{},[26,7635,6691],{},[3392,7637,7639],{"className":3394,"code":7638,"language":3396,"meta":225,"style":225},"grep [OPTIONEN] PATTERN DATEI\n\n",[3398,7640,7641],{"__ignoreMap":225},[2915,7642,7643,7646],{"class":3402,"line":3403},[2915,7644,7645],{"class":3406},"grep",[2915,7647,7648],{"class":3529}," [OPTIONEN] PATTERN DATEI\n",[16,7650,7651],{},[26,7652,7653],{},"Beispiele:",[3392,7655,7657],{"className":3394,"code":7656,"language":3396,"meta":225,"style":225},"grep \"error\" logfile.txt\nps aux | grep firefox\ngrep -i \"test\" datei.txt\n\n",[3398,7658,7659,7669,7686],{"__ignoreMap":225},[2915,7660,7661,7663,7666],{"class":3402,"line":3403},[2915,7662,7645],{"class":3406},[2915,7664,7665],{"class":3414}," \"error\"",[2915,7667,7668],{"class":3414}," logfile.txt\n",[2915,7670,7671,7674,7677,7680,7683],{"class":3402,"line":1117},[2915,7672,7673],{"class":3406},"ps",[2915,7675,7676],{"class":3414}," aux",[2915,7678,7679],{"class":3533}," |",[2915,7681,7682],{"class":3406}," grep",[2915,7684,7685],{"class":3414}," firefox\n",[2915,7687,7688,7690,7693,7696],{"class":3402,"line":1125},[2915,7689,7645],{"class":3406},[2915,7691,7692],{"class":3410}," -i",[2915,7694,7695],{"class":3414}," \"test\"",[2915,7697,7698],{"class":3414}," datei.txt\n",[54,7700,7702],{"id":7701},"wichtige-optionen",[26,7703,7704],{},"Wichtige Optionen",[645,7706,7707,7720],{},[648,7708,7709],{},[651,7710,7711,7716],{},[654,7712,7713],{},[26,7714,7715],{},"Option",[654,7717,7718],{},[26,7719,5483],{},[670,7721,7722,7730,7738,7746,7753,7761,7769,7777,7785,7793,7801],{},[651,7723,7724,7727],{},[675,7725,7726],{},"-i",[675,7728,7729],{},"ignoriert Groß-\u002FKleinschreibung",[651,7731,7732,7735],{},[675,7733,7734],{},"-v",[675,7736,7737],{},"zeigt Zeilen ohne Treffer",[651,7739,7740,7743],{},[675,7741,7742],{},"-n",[675,7744,7745],{},"zeigt Zeilennummer",[651,7747,7748,7750],{},[675,7749,4853],{},[675,7751,7752],{},"rekursive Suche in Verzeichnissen",[651,7754,7755,7758],{},[675,7756,7757],{},"-l",[675,7759,7760],{},"zeigt nur Dateinamen mit Treffer",[651,7762,7763,7766],{},[675,7764,7765],{},"-c",[675,7767,7768],{},"zählt Treffer",[651,7770,7771,7774],{},[675,7772,7773],{},"-w",[675,7775,7776],{},"sucht nur ganze Wörter",[651,7778,7779,7782],{},[675,7780,7781],{},"-E",[675,7783,7784],{},"erweitert Regex (egrep)",[651,7786,7787,7790],{},[675,7788,7789],{},"-F",[675,7791,7792],{},"feste Strings (kein Regex)",[651,7794,7795,7798],{},[675,7796,7797],{},"-o",[675,7799,7800],{},"zeigt nur den Treffer",[651,7802,7803,7806],{},[675,7804,7805],{},"--color=auto",[675,7807,7808],{},"markiert Treffer",[16,7810,7811],{},[26,7812,7653],{},[16,7814,7815],{},"Suche ohne Groß-\u002FKleinschreibung",[3392,7817,7819],{"className":3394,"code":7818,"language":3396,"meta":225,"style":225},"grep -i \"linux\" datei.txt\n\n",[3398,7820,7821],{"__ignoreMap":225},[2915,7822,7823,7825,7827,7830],{"class":3402,"line":3403},[2915,7824,7645],{"class":3406},[2915,7826,7692],{"class":3410},[2915,7828,7829],{"class":3414}," \"linux\"",[2915,7831,7698],{"class":3414},[16,7833,7834],{},"Rekursive Suche",[3392,7836,7838],{"className":3394,"code":7837,"language":3396,"meta":225,"style":225},"grep -r \"main\" .\n\n",[3398,7839,7840],{"__ignoreMap":225},[2915,7841,7842,7844,7847,7850],{"class":3402,"line":3403},[2915,7843,7645],{"class":3406},[2915,7845,7846],{"class":3410}," -r",[2915,7848,7849],{"class":3414}," \"main\"",[2915,7851,7852],{"class":3414}," .\n",[16,7854,7855],{},"Nur Dateinamen anzeigen",[3392,7857,7859],{"className":3394,"code":7858,"language":3396,"meta":225,"style":225},"grep -rl \"TODO\" .\n\n",[3398,7860,7861],{"__ignoreMap":225},[2915,7862,7863,7865,7868,7871],{"class":3402,"line":3403},[2915,7864,7645],{"class":3406},[2915,7866,7867],{"class":3410}," -rl",[2915,7869,7870],{"class":3414}," \"TODO\"",[2915,7872,7852],{"class":3414},[54,7874,7876],{"id":7875},"_92-sed","9.2. sed",[16,7878,7879,7881,7883,7884,7887],{},[26,7880,7612],{},[5885,7882],{},"\nStream Editor zum ",[26,7885,7886],{},"Bearbeiten von Textströmen"," (Ersetzen, Löschen, Einfügen).",[16,7889,7890],{},[26,7891,7620],{},[20,7893,7894,7897,7900],{},[23,7895,7896],{},"Text ersetzen",[23,7898,7899],{},"bestimmte Zeilen löschen",[23,7901,7902],{},"Dateien automatisch bearbeiten",[16,7904,7905],{},[26,7906,6691],{},[3392,7908,7910],{"className":3394,"code":7909,"language":3396,"meta":225,"style":225},"sed [OPTIONEN] 'BEFEHL' DATEI\n\n",[3398,7911,7912],{"__ignoreMap":225},[2915,7913,7914,7917,7920,7923],{"class":3402,"line":3403},[2915,7915,7916],{"class":3406},"sed",[2915,7918,7919],{"class":3529}," [OPTIONEN] ",[2915,7921,7922],{"class":3414},"'BEFEHL'",[2915,7924,7925],{"class":3529}," DATEI\n",[16,7927,7928],{},[26,7929,7653],{},[3392,7931,7933],{"className":3394,"code":7932,"language":3396,"meta":225,"style":225},"sed 's\u002Falt\u002Fneu\u002F' datei.txt\n\n",[3398,7934,7935],{"__ignoreMap":225},[2915,7936,7937,7939,7942],{"class":3402,"line":3403},[2915,7938,7916],{"class":3406},[2915,7940,7941],{"class":3414}," 's\u002Falt\u002Fneu\u002F'",[2915,7943,7698],{"class":3414},[228,7945,7704],{"id":7946},"wichtige-optionen-1",[645,7948,7949,7961],{},[648,7950,7951],{},[651,7952,7953,7957],{},[654,7954,7955],{},[26,7956,7715],{},[654,7958,7959],{},[26,7960,5483],{},[670,7962,7963,7971,7978,7985],{},[651,7964,7965,7968],{},[675,7966,7967],{},"-e",[675,7969,7970],{},"mehrere Befehle",[651,7972,7973,7975],{},[675,7974,7742],{},[675,7976,7977],{},"keine automatische Ausgabe",[651,7979,7980,7982],{},[675,7981,7726],{},[675,7983,7984],{},"Datei direkt ändern (in-place)",[651,7986,7987,7989],{},[675,7988,4853],{},[675,7990,7991],{},"erweitertes Regex",[228,7993,7995],{"id":7994},"häufige-befehle","Häufige Befehle",[995,7997,7999],{"id":7998},"ersetzen","Ersetzen",[3392,8001,8002],{"className":3394,"code":7932,"language":3396,"meta":225,"style":225},[3398,8003,8004],{"__ignoreMap":225},[2915,8005,8006,8008,8010],{"class":3402,"line":3403},[2915,8007,7916],{"class":3406},[2915,8009,7941],{"class":3414},[2915,8011,7698],{"class":3414},[16,8013,8014],{},"Nur erstes Vorkommen pro Zeile.",[995,8016,8018],{"id":8017},"alle-vorkommen-ersetzen","Alle Vorkommen ersetzen",[3392,8020,8022],{"className":3394,"code":8021,"language":3396,"meta":225,"style":225},"sed 's\u002Falt\u002Fneu\u002Fg' datei.txt\n\n",[3398,8023,8024],{"__ignoreMap":225},[2915,8025,8026,8028,8031],{"class":3402,"line":3403},[2915,8027,7916],{"class":3406},[2915,8029,8030],{"class":3414}," 's\u002Falt\u002Fneu\u002Fg'",[2915,8032,7698],{"class":3414},[995,8034,8036],{"id":8035},"direkt-datei-ändern","Direkt Datei ändern",[3392,8038,8040],{"className":3394,"code":8039,"language":3396,"meta":225,"style":225},"sed -i 's\u002Falt\u002Fneu\u002Fg' datei.txt\n\n",[3398,8041,8042],{"__ignoreMap":225},[2915,8043,8044,8046,8048,8050],{"class":3402,"line":3403},[2915,8045,7916],{"class":3406},[2915,8047,7692],{"class":3410},[2915,8049,8030],{"class":3414},[2915,8051,7698],{"class":3414},[995,8053,8055],{"id":8054},"zeilen-löschen","Zeilen löschen",[16,8057,8058],{},"Zeile löschen",[3392,8060,8062],{"className":3394,"code":8061,"language":3396,"meta":225,"style":225},"sed '3d' datei.txt\n\n",[3398,8063,8064],{"__ignoreMap":225},[2915,8065,8066,8068,8071],{"class":3402,"line":3403},[2915,8067,7916],{"class":3406},[2915,8069,8070],{"class":3414}," '3d'",[2915,8072,7698],{"class":3414},[995,8074,8076],{"id":8075},"zeilenbereich-löschen","Zeilenbereich löschen",[3392,8078,8080],{"className":3394,"code":8079,"language":3396,"meta":225,"style":225},"sed '3,5d' datei.txt\n\n",[3398,8081,8082],{"__ignoreMap":225},[2915,8083,8084,8086,8089],{"class":3402,"line":3403},[2915,8085,7916],{"class":3406},[2915,8087,8088],{"class":3414}," '3,5d'",[2915,8090,7698],{"class":3414},[995,8092,8094],{"id":8093},"zeilen-mit-pattern-löschen","Zeilen mit Pattern löschen",[3392,8096,8098],{"className":3394,"code":8097,"language":3396,"meta":225,"style":225},"sed '\u002Ferror\u002Fd' datei.txt\n\n",[3398,8099,8100],{"__ignoreMap":225},[2915,8101,8102,8104,8107],{"class":3402,"line":3403},[2915,8103,7916],{"class":3406},[2915,8105,8106],{"class":3414}," '\u002Ferror\u002Fd'",[2915,8108,7698],{"class":3414},[995,8110,8112],{"id":8111},"zeilen-anzeigen","Zeilen anzeigen",[16,8114,8115],{},"Nur bestimmte Zeile",[3392,8117,8119],{"className":3394,"code":8118,"language":3396,"meta":225,"style":225},"sed -n '5p' datei.txt\n\n",[3398,8120,8121],{"__ignoreMap":225},[2915,8122,8123,8125,8128,8131],{"class":3402,"line":3403},[2915,8124,7916],{"class":3406},[2915,8126,8127],{"class":3410}," -n",[2915,8129,8130],{"class":3414}," '5p'",[2915,8132,7698],{"class":3414},[995,8134,8136],{"id":8135},"text-einfügen","Text einfügen",[16,8138,8139],{},"Vor Zeile einfügen",[3392,8141,8143],{"className":3394,"code":8142,"language":3396,"meta":225,"style":225},"sed '3i TEXT' datei.txt\n\n",[3398,8144,8145],{"__ignoreMap":225},[2915,8146,8147,8149,8152],{"class":3402,"line":3403},[2915,8148,7916],{"class":3406},[2915,8150,8151],{"class":3414}," '3i TEXT'",[2915,8153,7698],{"class":3414},[16,8155,8156],{},"Nach Zeile einfügen",[3392,8158,8160],{"className":3394,"code":8159,"language":3396,"meta":225,"style":225},"sed '3a TEXT' datei.txt\n\n",[3398,8161,8162],{"__ignoreMap":225},[2915,8163,8164,8166,8169],{"class":3402,"line":3403},[2915,8165,7916],{"class":3406},[2915,8167,8168],{"class":3414}," '3a TEXT'",[2915,8170,7698],{"class":3414},[54,8172,8174],{"id":8173},"_93-find","9.3. find",[16,8176,8177,8179,8181],{},[26,8178,7612],{},[5885,8180],{},"\nDateien und Verzeichnisse im Dateisystem suchen.",[16,8183,8184],{},[26,8185,7620],{},[20,8187,8188,8191,8194],{},[23,8189,8190],{},"Dateien nach Namen finden",[23,8192,8193],{},"Dateien nach Größe oder Datum suchen",[23,8195,8196],{},"Aktionen auf Dateien ausführen",[16,8198,8199],{},[26,8200,6691],{},[3392,8202,8204],{"className":3394,"code":8203,"language":3396,"meta":225,"style":225},"find PFAD [OPTIONEN] [AKTION]\n\n",[3398,8205,8206],{"__ignoreMap":225},[2915,8207,8208,8211,8214],{"class":3402,"line":3403},[2915,8209,8210],{"class":3406},"find",[2915,8212,8213],{"class":3414}," PFAD",[2915,8215,8216],{"class":3529}," [OPTIONEN] [AKTION]\n",[16,8218,8219],{},[26,8220,7653],{},[3392,8222,8224],{"className":3394,"code":8223,"language":3396,"meta":225,"style":225},"find . -name \"test.txt\"\nfind \u002Fhome -type f\n\n",[3398,8225,8226,8239],{"__ignoreMap":225},[2915,8227,8228,8230,8233,8236],{"class":3402,"line":3403},[2915,8229,8210],{"class":3406},[2915,8231,8232],{"class":3414}," .",[2915,8234,8235],{"class":3410}," -name",[2915,8237,8238],{"class":3414}," \"test.txt\"\n",[2915,8240,8241,8243,8246,8249],{"class":3402,"line":1117},[2915,8242,8210],{"class":3406},[2915,8244,8245],{"class":3414}," \u002Fhome",[2915,8247,8248],{"class":3410}," -type",[2915,8250,5622],{"class":3414},[228,8252,7704],{"id":8253},"wichtige-optionen-2",[645,8255,8256,8268],{},[648,8257,8258],{},[651,8259,8260,8264],{},[654,8261,8262],{},[26,8263,7715],{},[654,8265,8266],{},[26,8267,5483],{},[670,8269,8270,8278,8286,8294,8302,8310,8318,8326,8334],{},[651,8271,8272,8275],{},[675,8273,8274],{},"-name",[675,8276,8277],{},"Name der Datei",[651,8279,8280,8283],{},[675,8281,8282],{},"-iname",[675,8284,8285],{},"Name ohne Groß-\u002FKleinschreibung",[651,8287,8288,8291],{},[675,8289,8290],{},"-type",[675,8292,8293],{},"Dateityp",[651,8295,8296,8299],{},[675,8297,8298],{},"-size",[675,8300,8301],{},"Dateigröße",[651,8303,8304,8307],{},[675,8305,8306],{},"-mtime",[675,8308,8309],{},"Änderungszeit",[651,8311,8312,8315],{},[675,8313,8314],{},"-user",[675,8316,8317],{},"Besitzer",[651,8319,8320,8323],{},[675,8321,8322],{},"-perm",[675,8324,8325],{},"Rechte",[651,8327,8328,8331],{},[675,8329,8330],{},"-maxdepth",[675,8332,8333],{},"maximale Tiefe",[651,8335,8336,8339],{},[675,8337,8338],{},"-mindepth",[675,8340,8341],{},"minimale Tiefe",[228,8343,8345],{"id":8344},"dateitypen","Dateitypen",[645,8347,8348,8360],{},[648,8349,8350],{},[651,8351,8352,8356],{},[654,8353,8354],{},[26,8355,5473],{},[654,8357,8358],{},[26,8359,5483],{},[670,8361,8362,8370,8378],{},[651,8363,8364,8367],{},[675,8365,8366],{},"-type f",[675,8368,8369],{},"normale Datei",[651,8371,8372,8375],{},[675,8373,8374],{},"-type d",[675,8376,8377],{},"Verzeichnis",[651,8379,8380,8383],{},[675,8381,8382],{},"-type l",[675,8384,8385],{},"symbolischer Link",[228,8387,8389],{"id":8388},"größe","Größe",[645,8391,8392,8404],{},[648,8393,8394],{},[651,8395,8396,8400],{},[654,8397,8398],{},[26,8399,730],{},[654,8401,8402],{},[26,8403,5483],{},[670,8405,8406,8414,8422],{},[651,8407,8408,8411],{},[675,8409,8410],{},"-size +10M",[675,8412,8413],{},"größer als 10 MB",[651,8415,8416,8419],{},[675,8417,8418],{},"-size -1M",[675,8420,8421],{},"kleiner als 1 MB",[651,8423,8424,8427],{},[675,8425,8426],{},"-size 100k",[675,8428,8429],{},"genau 100 KB",[228,8431,8433],{"id":8432},"zeit","Zeit",[645,8435,8436,8448],{},[648,8437,8438],{},[651,8439,8440,8444],{},[654,8441,8442],{},[26,8443,7715],{},[654,8445,8446],{},[26,8447,5483],{},[670,8449,8450,8457,8465],{},[651,8451,8452,8454],{},[675,8453,8306],{},[675,8455,8456],{},"Tage seit Änderung",[651,8458,8459,8462],{},[675,8460,8461],{},"-atime",[675,8463,8464],{},"letzter Zugriff",[651,8466,8467,8470],{},[675,8468,8469],{},"-ctime",[675,8471,8472],{},"Statusänderung",[16,8474,6940],{},[3392,8476,8478],{"className":3394,"code":8477,"language":3396,"meta":225,"style":225},"find . -mtime -7\n\n",[3398,8479,8480],{"__ignoreMap":225},[2915,8481,8482,8484,8486,8489],{"class":3402,"line":3403},[2915,8483,8210],{"class":3406},[2915,8485,8232],{"class":3414},[2915,8487,8488],{"class":3410}," -mtime",[2915,8490,8491],{"class":3410}," -7\n",[16,8493,8494],{},"Dateien der letzten 7 Tage.",[228,8496,8498],{"id":8497},"aktionen","Aktionen",[16,8500,8501],{},"Dateien löschen",[3392,8503,8505],{"className":3394,"code":8504,"language":3396,"meta":225,"style":225},"find . -name \"*.tmp\" -delete\n\n",[3398,8506,8507],{"__ignoreMap":225},[2915,8508,8509,8511,8513,8515,8518],{"class":3402,"line":3403},[2915,8510,8210],{"class":3406},[2915,8512,8232],{"class":3414},[2915,8514,8235],{"class":3410},[2915,8516,8517],{"class":3414}," \"*.tmp\"",[2915,8519,8520],{"class":3410}," -delete\n",[16,8522,8523],{},"Befehl ausführen",[3392,8525,8527],{"className":3394,"code":8526,"language":3396,"meta":225,"style":225},"find . -name \"*.log\" -exec rm {} \\;\n\n",[3398,8528,8529],{"__ignoreMap":225},[2915,8530,8531,8533,8535,8537,8540,8543,8546,8549],{"class":3402,"line":3403},[2915,8532,8210],{"class":3406},[2915,8534,8232],{"class":3414},[2915,8536,8235],{"class":3410},[2915,8538,8539],{"class":3414}," \"*.log\"",[2915,8541,8542],{"class":3410}," -exec",[2915,8544,8545],{"class":3414}," rm",[2915,8547,8548],{"class":3414}," {}",[2915,8550,8551],{"class":3410}," \\;\n",[54,8553,8555],{"id":8554},"_94-awk","9.4. awk",[16,8557,8558,8560,8562,8563,8566],{},[26,8559,7612],{},[5885,8561],{},"\nWerkzeug zur ",[26,8564,8565],{},"Textanalyse und Datenverarbeitung"," (besonders Tabellen).",[16,8568,8569],{},[26,8570,7620],{},[20,8572,8573,8576,8579],{},[23,8574,8575],{},"Spalten ausgeben",[23,8577,8578],{},"Daten filtern",[23,8580,8581],{},"Berechnungen durchführen",[16,8583,8584],{},[26,8585,6691],{},[3392,8587,8589],{"className":3394,"code":8588,"language":3396,"meta":225,"style":225},"awk 'BEDINGUNG {AKTION}' DATEI\n\n",[3398,8590,8591],{"__ignoreMap":225},[2915,8592,8593,8596,8599],{"class":3402,"line":3403},[2915,8594,8595],{"class":3406},"awk",[2915,8597,8598],{"class":3414}," 'BEDINGUNG {AKTION}'",[2915,8600,7925],{"class":3414},[228,8602,8604],{"id":8603},"grundprinzip","Grundprinzip",[16,8606,8607],{},"Jede Zeile wird automatisch verarbeitet.",[16,8609,8610,8611],{},"Standard-Trennzeichen: ",[26,8612,8613],{},"Whitespace",[16,8615,8616],{},"Spalten:",[645,8618,8619,8632],{},[648,8620,8621],{},[651,8622,8623,8628],{},[654,8624,8625],{},[26,8626,8627],{},"Variable",[654,8629,8630],{},[26,8631,5483],{},[670,8633,8634,8642,8650,8657,8665],{},[651,8635,8636,8639],{},[675,8637,8638],{},"$1",[675,8640,8641],{},"erste Spalte",[651,8643,8644,8647],{},[675,8645,8646],{},"$2",[675,8648,8649],{},"zweite Spalte",[651,8651,8652,8654],{},[675,8653,4879],{},[675,8655,8656],{},"ganze Zeile",[651,8658,8659,8662],{},[675,8660,8661],{},"NF",[675,8663,8664],{},"Anzahl Felder",[651,8666,8667,8670],{},[675,8668,8669],{},"NR",[675,8671,8672],{},"Zeilennummer",[228,8674,8676],{"id":8675},"beispiele","Beispiele",[995,8678,8680],{"id":8679},"erste-spalte-anzeigen","Erste Spalte anzeigen",[3392,8682,8684],{"className":3394,"code":8683,"language":3396,"meta":225,"style":225},"awk '{print $1}' datei.txt\n\n",[3398,8685,8686],{"__ignoreMap":225},[2915,8687,8688,8690,8693],{"class":3402,"line":3403},[2915,8689,8595],{"class":3406},[2915,8691,8692],{"class":3414}," '{print $1}'",[2915,8694,7698],{"class":3414},[995,8696,8698],{"id":8697},"mehrere-spalten","Mehrere Spalten",[3392,8700,8702],{"className":3394,"code":8701,"language":3396,"meta":225,"style":225},"awk '{print $1, $3}' datei.txt\n\n",[3398,8703,8704],{"__ignoreMap":225},[2915,8705,8706,8708,8711],{"class":3402,"line":3403},[2915,8707,8595],{"class":3406},[2915,8709,8710],{"class":3414}," '{print $1, $3}'",[2915,8712,7698],{"class":3414},[228,8714,8716],{"id":8715},"bedingungen","Bedingungen",[16,8718,8719],{},"Nur Zeilen mit Bedingung",[3392,8721,8723],{"className":3394,"code":8722,"language":3396,"meta":225,"style":225},"awk '$3 > 100 {print $1}' daten.txt\n\n",[3398,8724,8725],{"__ignoreMap":225},[2915,8726,8727,8729,8732],{"class":3402,"line":3403},[2915,8728,8595],{"class":3406},[2915,8730,8731],{"class":3414}," '$3 > 100 {print $1}'",[2915,8733,8734],{"class":3414}," daten.txt\n",[228,8736,8738],{"id":8737},"trennzeichen-ändern","Trennzeichen ändern",[3392,8740,8742],{"className":3394,"code":8741,"language":3396,"meta":225,"style":225},"awk -F \":\" '{print $1}' \u002Fetc\u002Fpasswd\n\n",[3398,8743,8744],{"__ignoreMap":225},[2915,8745,8746,8748,8751,8754,8756],{"class":3402,"line":3403},[2915,8747,8595],{"class":3406},[2915,8749,8750],{"class":3410}," -F",[2915,8752,8753],{"class":3414}," \":\"",[2915,8755,8692],{"class":3414},[2915,8757,8758],{"class":3414}," \u002Fetc\u002Fpasswd\n",[228,8760,8762],{"id":8761},"berechnungen","Berechnungen",[16,8764,8765],{},"Summe berechnen",[3392,8767,8769],{"className":3394,"code":8768,"language":3396,"meta":225,"style":225},"awk '{sum += $1} END {print sum}' zahlen.txt\n\n",[3398,8770,8771],{"__ignoreMap":225},[2915,8772,8773,8775,8778],{"class":3402,"line":3403},[2915,8774,8595],{"class":3406},[2915,8776,8777],{"class":3414}," '{sum += $1} END {print sum}'",[2915,8779,8780],{"class":3414}," zahlen.txt\n",[16,8782,8783],{},"Durchschnitt",[3392,8785,8787],{"className":3394,"code":8786,"language":3396,"meta":225,"style":225},"awk '{sum += $1} END {print sum\u002FNR}' zahlen.txt\n\n",[3398,8788,8789],{"__ignoreMap":225},[2915,8790,8791,8793,8796],{"class":3402,"line":3403},[2915,8792,8595],{"class":3406},[2915,8794,8795],{"class":3414}," '{sum += $1} END {print sum\u002FNR}'",[2915,8797,8780],{"class":3414},[54,8799,8801],{"id":8800},"wann-benutzt-man-welches-tool","Wann benutzt man welches Tool?",[645,8803,8804,8818],{},[648,8805,8806],{},[651,8807,8808,8813],{},[654,8809,8810],{},[26,8811,8812],{},"Tool",[654,8814,8815],{},[26,8816,8817],{},"Verwendung",[670,8819,8820,8827,8834,8841],{},[651,8821,8822,8824],{},[675,8823,7645],{},[675,8825,8826],{},"Text suchen",[651,8828,8829,8831],{},[675,8830,7916],{},[675,8832,8833],{},"Text automatisch bearbeiten",[651,8835,8836,8838],{},[675,8837,8210],{},[675,8839,8840],{},"Dateien im Dateisystem suchen",[651,8842,8843,8845],{},[675,8844,8595],{},[675,8846,8847],{},"Daten analysieren und Spalten verarbeiten",[54,8849,8851],{"id":8850},"typische-kombinationen","Typische Kombinationen",[16,8853,8854],{},"Mit Pipe:",[3392,8856,8858],{"className":3394,"code":8857,"language":3396,"meta":225,"style":225},"cat logfile | grep error\n\nps aux | grep firefox\n\nfind . -name \"*.log\" | grep error\n\n",[3398,8859,8860,8875,8879,8891,8895],{"__ignoreMap":225},[2915,8861,8862,8865,8868,8870,8872],{"class":3402,"line":3403},[2915,8863,8864],{"class":3406},"cat",[2915,8866,8867],{"class":3414}," logfile",[2915,8869,7679],{"class":3533},[2915,8871,7682],{"class":3406},[2915,8873,8874],{"class":3414}," error\n",[2915,8876,8877],{"class":3402,"line":1117},[2915,8878,3506],{"emptyLinePlaceholder":3505},[2915,8880,8881,8883,8885,8887,8889],{"class":3402,"line":1125},[2915,8882,7673],{"class":3406},[2915,8884,7676],{"class":3414},[2915,8886,7679],{"class":3533},[2915,8888,7682],{"class":3406},[2915,8890,7685],{"class":3414},[2915,8892,8893],{"class":3402,"line":3515},[2915,8894,3506],{"emptyLinePlaceholder":3505},[2915,8896,8897,8899,8901,8903,8905,8907,8909],{"class":3402,"line":3520},[2915,8898,8210],{"class":3406},[2915,8900,8232],{"class":3414},[2915,8902,8235],{"class":3410},[2915,8904,8539],{"class":3414},[2915,8906,7679],{"class":3533},[2915,8908,7682],{"class":3406},[2915,8910,8874],{"class":3414},[54,8912,8914],{"id":8913},"kurzvergleich","Kurzvergleich",[645,8916,8917,8930],{},[648,8918,8919],{},[651,8920,8921,8925],{},[654,8922,8923],{},[26,8924,8812],{},[654,8926,8927],{},[26,8928,8929],{},"Stärke",[670,8931,8932,8939,8946,8953],{},[651,8933,8934,8936],{},[675,8935,7645],{},[675,8937,8938],{},"schnelles Suchen",[651,8940,8941,8943],{},[675,8942,7916],{},[675,8944,8945],{},"automatisches Bearbeiten",[651,8947,8948,8950],{},[675,8949,8210],{},[675,8951,8952],{},"Dateisystem durchsuchen",[651,8954,8955,8957],{},[675,8956,8595],{},[675,8958,8959],{},"strukturierte Daten analysieren",[11,8961,8963,8964,8967],{"id":8962},"anhang-juli-nützlich","Anhang “",[26,8965,8966],{},"Juli"," Nützlich”",[54,8969,8971],{"id":8970},"analysesh","Analyse.sh",[3392,8973,8975],{"className":3394,"code":8974,"language":3396,"meta":225,"style":225},"#!\u002Fbin\u002Fbash\n\n",[3398,8976,8977],{"__ignoreMap":225},[2915,8978,8979],{"class":3402,"line":3403},[2915,8980,5125],{"class":3511},[16,8982,8983,8986],{},[26,8984,8985],{},"anzahl","() {",[3392,8988,8990],{"className":3394,"code":8989,"language":3396,"meta":225,"style":225},"dateien=$(find \"$pfad\" -maxdepth 1 -type f | wc -l)\n\nverzeichnisse=$(find \"$pfad\" -maxdepth 1 -type d | wc -l)\n\necho \"Anzahl Verzeichnisse: $verzeichnisse\"\n\necho \"Anzahl Dateien: $dateien\"\n\n}\n\n",[3398,8991,8992,9032,9036,9070,9074,9086,9090,9102,9106],{"__ignoreMap":225},[2915,8993,8994,8997,8999,9002,9004,9006,9009,9011,9014,9017,9019,9022,9024,9027,9030],{"class":3402,"line":3403},[2915,8995,8996],{"class":3529},"dateien",[2915,8998,5137],{"class":3533},[2915,9000,9001],{"class":3529},"$(",[2915,9003,8210],{"class":3406},[2915,9005,4968],{"class":3414},[2915,9007,9008],{"class":3529},"$pfad",[2915,9010,4957],{"class":3414},[2915,9012,9013],{"class":3410}," -maxdepth",[2915,9015,9016],{"class":3410}," 1",[2915,9018,8248],{"class":3410},[2915,9020,9021],{"class":3414}," f",[2915,9023,7679],{"class":3533},[2915,9025,9026],{"class":3406}," wc",[2915,9028,9029],{"class":3410}," -l",[2915,9031,5152],{"class":3529},[2915,9033,9034],{"class":3402,"line":1117},[2915,9035,3506],{"emptyLinePlaceholder":3505},[2915,9037,9038,9041,9043,9045,9047,9049,9051,9053,9055,9057,9059,9062,9064,9066,9068],{"class":3402,"line":1125},[2915,9039,9040],{"class":3529},"verzeichnisse",[2915,9042,5137],{"class":3533},[2915,9044,9001],{"class":3529},[2915,9046,8210],{"class":3406},[2915,9048,4968],{"class":3414},[2915,9050,9008],{"class":3529},[2915,9052,4957],{"class":3414},[2915,9054,9013],{"class":3410},[2915,9056,9016],{"class":3410},[2915,9058,8248],{"class":3410},[2915,9060,9061],{"class":3414}," d",[2915,9063,7679],{"class":3533},[2915,9065,9026],{"class":3406},[2915,9067,9029],{"class":3410},[2915,9069,5152],{"class":3529},[2915,9071,9072],{"class":3402,"line":3515},[2915,9073,3506],{"emptyLinePlaceholder":3505},[2915,9075,9076,9078,9081,9084],{"class":3402,"line":3520},[2915,9077,5059],{"class":3410},[2915,9079,9080],{"class":3414}," \"Anzahl Verzeichnisse: ",[2915,9082,9083],{"class":3529},"$verzeichnisse",[2915,9085,5204],{"class":3414},[2915,9087,9088],{"class":3402,"line":5070},[2915,9089,3506],{"emptyLinePlaceholder":3505},[2915,9091,9092,9094,9097,9100],{"class":3402,"line":5075},[2915,9093,5059],{"class":3410},[2915,9095,9096],{"class":3414}," \"Anzahl Dateien: ",[2915,9098,9099],{"class":3529},"$dateien",[2915,9101,5204],{"class":3414},[2915,9103,9104],{"class":3402,"line":5093},[2915,9105,3506],{"emptyLinePlaceholder":3505},[2915,9107,9108],{"class":3402,"line":5098},[2915,9109,5840],{"class":3529},[16,9111,9112,8986],{},[26,9113,9114],{},"groesse",[11,9116,9118],{"id":9117},"stat-c-zeigt-dateiinformationen-an","stat -c zeigt Dateiinformationen an,",[11,9120,9122],{"id":9121},"s-gibt-die-dateigröße-in-bytes-zurück-n-den-dateinamen","%s gibt die Dateigröße in Bytes zurück, %n den Dateinamen",[3392,9124,9126],{"className":3394,"code":9125,"language":3396,"meta":225,"style":225},"biggest=$(stat -c \"%s %n\" * | sort -n | tail -n 1)\n\nsmallest=$(stat -c \"%s %n\" * | sort -n | head -n 1)\n\necho \"Kleinste Datei: $smallest\"\n\necho \"Größte Datei: $biggest\"\n\n}\n\n",[3398,9127,9128,9166,9170,9204,9208,9220,9224,9236,9240],{"__ignoreMap":225},[2915,9129,9130,9133,9135,9137,9140,9143,9146,9148,9150,9153,9155,9157,9160,9162,9164],{"class":3402,"line":3403},[2915,9131,9132],{"class":3529},"biggest",[2915,9134,5137],{"class":3533},[2915,9136,9001],{"class":3529},[2915,9138,9139],{"class":3410},"stat",[2915,9141,9142],{"class":3410}," -c",[2915,9144,9145],{"class":3414}," \"%s %n\"",[2915,9147,5828],{"class":3410},[2915,9149,7679],{"class":3533},[2915,9151,9152],{"class":3406}," sort",[2915,9154,8127],{"class":3410},[2915,9156,7679],{"class":3533},[2915,9158,9159],{"class":3406}," tail",[2915,9161,8127],{"class":3410},[2915,9163,9016],{"class":3410},[2915,9165,5152],{"class":3529},[2915,9167,9168],{"class":3402,"line":1117},[2915,9169,3506],{"emptyLinePlaceholder":3505},[2915,9171,9172,9175,9177,9179,9181,9183,9185,9187,9189,9191,9193,9195,9198,9200,9202],{"class":3402,"line":1125},[2915,9173,9174],{"class":3529},"smallest",[2915,9176,5137],{"class":3533},[2915,9178,9001],{"class":3529},[2915,9180,9139],{"class":3410},[2915,9182,9142],{"class":3410},[2915,9184,9145],{"class":3414},[2915,9186,5828],{"class":3410},[2915,9188,7679],{"class":3533},[2915,9190,9152],{"class":3406},[2915,9192,8127],{"class":3410},[2915,9194,7679],{"class":3533},[2915,9196,9197],{"class":3406}," head",[2915,9199,8127],{"class":3410},[2915,9201,9016],{"class":3410},[2915,9203,5152],{"class":3529},[2915,9205,9206],{"class":3402,"line":3515},[2915,9207,3506],{"emptyLinePlaceholder":3505},[2915,9209,9210,9212,9215,9218],{"class":3402,"line":3520},[2915,9211,5059],{"class":3410},[2915,9213,9214],{"class":3414}," \"Kleinste Datei: ",[2915,9216,9217],{"class":3529},"$smallest",[2915,9219,5204],{"class":3414},[2915,9221,9222],{"class":3402,"line":5070},[2915,9223,3506],{"emptyLinePlaceholder":3505},[2915,9225,9226,9228,9231,9234],{"class":3402,"line":5075},[2915,9227,5059],{"class":3410},[2915,9229,9230],{"class":3414}," \"Größte Datei: ",[2915,9232,9233],{"class":3529},"$biggest",[2915,9235,5204],{"class":3414},[2915,9237,9238],{"class":3402,"line":5093},[2915,9239,3506],{"emptyLinePlaceholder":3505},[2915,9241,9242],{"class":3402,"line":5098},[2915,9243,5840],{"class":3529},[16,9245,9246,8986],{},[26,9247,9248],{},"kategorie",[3392,9250,9252],{"className":3394,"code":9251,"language":3396,"meta":225,"style":225},"klein=0\n\nmittel=0\n\ngross=0\n\nfor datei in \"$pfad\"\u002F*\n\ndo\n\nif [ -f \"$datei\" ]\n\nthen\n\nsize=$(stat -c %s \"$datei\")\n\nif [ \"$size\" -lt 102400 ]\n\nthen\n\n((klein++))\n\nelif [ \"$size\" -le 1048576 ]\n\nthen\n\n((mittel++))\n\nelse\n\n((gross++))\n\nfi\n\nfi\n\ndone\n\necho \"kleine Dateien \u003C 100KB: $klein\"\n\necho \"mittlere Dateien \u003C 1MB: $mittel\"\n\necho \"grosse Dateien > 1MB: $gross\"\n\n}\n\nif [ $# != 1 ]\n\nthen\n\necho \"Keine Paramenter übergeben\"\n\nexit 1\n\nfi\n\npfad=\"$1\"\n\nwhile [ \"$auswahl\" != 4 ]\n\ndo\n\necho \" bitte wählen:\"\n\necho \"1) Anzahl der Dateien und Unterverzeichnisse\"\n\necho \"2) Größte und kleinste Datei finden\"\n\necho \"3) Dateien nach größe klassifizieren\"\n\necho \"4) Beenden\"\n\nread auswahl\n\ncase \"$auswahl\" in\n\n",[3398,9253,9254,9264,9268,9277,9281,9290,9294,9309,9313,9317,9321,9339,9343,9347,9351,9375,9379,9399,9404,9409,9414,9426,9431,9452,9457,9462,9467,9477,9482,9487,9492,9502,9507,9512,9517,9522,9527,9532,9537,9550,9555,9568,9573,9586,9591,9596,9601,9617,9622,9627,9632,9640,9645,9654,9659,9664,9669,9683,9688,9709,9714,9719,9724,9732,9737,9745,9750,9758,9763,9771,9776,9784,9789,9798,9803],{"__ignoreMap":225},[2915,9255,9256,9259,9261],{"class":3402,"line":3403},[2915,9257,9258],{"class":3529},"klein",[2915,9260,5137],{"class":3533},[2915,9262,9263],{"class":3414},"0\n",[2915,9265,9266],{"class":3402,"line":1117},[2915,9267,3506],{"emptyLinePlaceholder":3505},[2915,9269,9270,9273,9275],{"class":3402,"line":1125},[2915,9271,9272],{"class":3529},"mittel",[2915,9274,5137],{"class":3533},[2915,9276,9263],{"class":3414},[2915,9278,9279],{"class":3402,"line":3515},[2915,9280,3506],{"emptyLinePlaceholder":3505},[2915,9282,9283,9286,9288],{"class":3402,"line":3520},[2915,9284,9285],{"class":3529},"gross",[2915,9287,5137],{"class":3533},[2915,9289,9263],{"class":3414},[2915,9291,9292],{"class":3402,"line":5070},[2915,9293,3506],{"emptyLinePlaceholder":3505},[2915,9295,9296,9298,9300,9302,9304,9306],{"class":3402,"line":5075},[2915,9297,5175],{"class":3533},[2915,9299,5369],{"class":3529},[2915,9301,5181],{"class":3533},[2915,9303,4968],{"class":3414},[2915,9305,9008],{"class":3529},[2915,9307,9308],{"class":3414},"\"\u002F*\n",[2915,9310,9311],{"class":3402,"line":5093},[2915,9312,3506],{"emptyLinePlaceholder":3505},[2915,9314,9315],{"class":3402,"line":5098},[2915,9316,5187],{"class":3533},[2915,9318,9319],{"class":3402,"line":5207},[2915,9320,3506],{"emptyLinePlaceholder":3505},[2915,9322,9323,9325,9327,9330,9332,9334,9336],{"class":3402,"line":5212},[2915,9324,4951],{"class":3533},[2915,9326,4954],{"class":3529},[2915,9328,9329],{"class":3533},"-f",[2915,9331,4968],{"class":3414},[2915,9333,5388],{"class":3529},[2915,9335,4957],{"class":3414},[2915,9337,9338],{"class":3529}," ]\n",[2915,9340,9341],{"class":3402,"line":5218},[2915,9342,3506],{"emptyLinePlaceholder":3505},[2915,9344,9345],{"class":3402,"line":5223},[2915,9346,4979],{"class":3533},[2915,9348,9349],{"class":3402,"line":5229},[2915,9350,3506],{"emptyLinePlaceholder":3505},[2915,9352,9353,9356,9358,9360,9362,9364,9367,9369,9371,9373],{"class":3402,"line":5253},[2915,9354,9355],{"class":3529},"size",[2915,9357,5137],{"class":3533},[2915,9359,9001],{"class":3529},[2915,9361,9139],{"class":3410},[2915,9363,9142],{"class":3410},[2915,9365,9366],{"class":3414}," %s",[2915,9368,4968],{"class":3414},[2915,9370,5388],{"class":3529},[2915,9372,4957],{"class":3414},[2915,9374,5152],{"class":3529},[2915,9376,9377],{"class":3402,"line":5266},[2915,9378,3506],{"emptyLinePlaceholder":3505},[2915,9380,9381,9383,9385,9387,9390,9392,9394,9397],{"class":3402,"line":5721},[2915,9382,4951],{"class":3533},[2915,9384,4954],{"class":3529},[2915,9386,4957],{"class":3414},[2915,9388,9389],{"class":3529},"$size",[2915,9391,4957],{"class":3414},[2915,9393,4965],{"class":3533},[2915,9395,9396],{"class":3410}," 102400",[2915,9398,9338],{"class":3529},[2915,9400,9402],{"class":3402,"line":9401},18,[2915,9403,3506],{"emptyLinePlaceholder":3505},[2915,9405,9407],{"class":3402,"line":9406},19,[2915,9408,4979],{"class":3533},[2915,9410,9412],{"class":3402,"line":9411},20,[2915,9413,3506],{"emptyLinePlaceholder":3505},[2915,9415,9417,9420,9423],{"class":3402,"line":9416},21,[2915,9418,9419],{"class":3529},"((klein",[2915,9421,9422],{"class":3533},"++",[2915,9424,9425],{"class":3529},"))\n",[2915,9427,9429],{"class":3402,"line":9428},22,[2915,9430,3506],{"emptyLinePlaceholder":3505},[2915,9432,9434,9436,9438,9440,9442,9444,9447,9450],{"class":3402,"line":9433},23,[2915,9435,6446],{"class":3533},[2915,9437,4954],{"class":3529},[2915,9439,4957],{"class":3414},[2915,9441,9389],{"class":3529},[2915,9443,4957],{"class":3414},[2915,9445,9446],{"class":3533}," -le",[2915,9448,9449],{"class":3410}," 1048576",[2915,9451,9338],{"class":3529},[2915,9453,9455],{"class":3402,"line":9454},24,[2915,9456,3506],{"emptyLinePlaceholder":3505},[2915,9458,9460],{"class":3402,"line":9459},25,[2915,9461,4979],{"class":3533},[2915,9463,9465],{"class":3402,"line":9464},26,[2915,9466,3506],{"emptyLinePlaceholder":3505},[2915,9468,9470,9473,9475],{"class":3402,"line":9469},27,[2915,9471,9472],{"class":3529},"((mittel",[2915,9474,9422],{"class":3533},[2915,9476,9425],{"class":3529},[2915,9478,9480],{"class":3402,"line":9479},28,[2915,9481,3506],{"emptyLinePlaceholder":3505},[2915,9483,9485],{"class":3402,"line":9484},29,[2915,9486,6407],{"class":3533},[2915,9488,9490],{"class":3402,"line":9489},30,[2915,9491,3506],{"emptyLinePlaceholder":3505},[2915,9493,9495,9498,9500],{"class":3402,"line":9494},31,[2915,9496,9497],{"class":3529},"((gross",[2915,9499,9422],{"class":3533},[2915,9501,9425],{"class":3529},[2915,9503,9505],{"class":3402,"line":9504},32,[2915,9506,3506],{"emptyLinePlaceholder":3505},[2915,9508,9510],{"class":3402,"line":9509},33,[2915,9511,4997],{"class":3533},[2915,9513,9515],{"class":3402,"line":9514},34,[2915,9516,3506],{"emptyLinePlaceholder":3505},[2915,9518,9520],{"class":3402,"line":9519},35,[2915,9521,4997],{"class":3533},[2915,9523,9525],{"class":3402,"line":9524},36,[2915,9526,3506],{"emptyLinePlaceholder":3505},[2915,9528,9530],{"class":3402,"line":9529},37,[2915,9531,5269],{"class":3533},[2915,9533,9535],{"class":3402,"line":9534},38,[2915,9536,3506],{"emptyLinePlaceholder":3505},[2915,9538,9540,9542,9545,9548],{"class":3402,"line":9539},39,[2915,9541,5059],{"class":3410},[2915,9543,9544],{"class":3414}," \"kleine Dateien \u003C 100KB: ",[2915,9546,9547],{"class":3529},"$klein",[2915,9549,5204],{"class":3414},[2915,9551,9553],{"class":3402,"line":9552},40,[2915,9554,3506],{"emptyLinePlaceholder":3505},[2915,9556,9558,9560,9563,9566],{"class":3402,"line":9557},41,[2915,9559,5059],{"class":3410},[2915,9561,9562],{"class":3414}," \"mittlere Dateien \u003C 1MB: ",[2915,9564,9565],{"class":3529},"$mittel",[2915,9567,5204],{"class":3414},[2915,9569,9571],{"class":3402,"line":9570},42,[2915,9572,3506],{"emptyLinePlaceholder":3505},[2915,9574,9576,9578,9581,9584],{"class":3402,"line":9575},43,[2915,9577,5059],{"class":3410},[2915,9579,9580],{"class":3414}," \"grosse Dateien > 1MB: ",[2915,9582,9583],{"class":3529},"$gross",[2915,9585,5204],{"class":3414},[2915,9587,9589],{"class":3402,"line":9588},44,[2915,9590,3506],{"emptyLinePlaceholder":3505},[2915,9592,9594],{"class":3402,"line":9593},45,[2915,9595,5840],{"class":3529},[2915,9597,9599],{"class":3402,"line":9598},46,[2915,9600,3506],{"emptyLinePlaceholder":3505},[2915,9602,9604,9606,9608,9610,9613,9615],{"class":3402,"line":9603},47,[2915,9605,4951],{"class":3533},[2915,9607,4954],{"class":3529},[2915,9609,4891],{"class":3410},[2915,9611,9612],{"class":3533}," !=",[2915,9614,9016],{"class":3410},[2915,9616,9338],{"class":3529},[2915,9618,9620],{"class":3402,"line":9619},48,[2915,9621,3506],{"emptyLinePlaceholder":3505},[2915,9623,9625],{"class":3402,"line":9624},49,[2915,9626,4979],{"class":3533},[2915,9628,9630],{"class":3402,"line":9629},50,[2915,9631,3506],{"emptyLinePlaceholder":3505},[2915,9633,9635,9637],{"class":3402,"line":9634},51,[2915,9636,5059],{"class":3410},[2915,9638,9639],{"class":3414}," \"Keine Paramenter übergeben\"\n",[2915,9641,9643],{"class":3402,"line":9642},52,[2915,9644,3506],{"emptyLinePlaceholder":3505},[2915,9646,9648,9651],{"class":3402,"line":9647},53,[2915,9649,9650],{"class":3410},"exit",[2915,9652,9653],{"class":3410}," 1\n",[2915,9655,9657],{"class":3402,"line":9656},54,[2915,9658,3506],{"emptyLinePlaceholder":3505},[2915,9660,9662],{"class":3402,"line":9661},55,[2915,9663,4997],{"class":3533},[2915,9665,9667],{"class":3402,"line":9666},56,[2915,9668,3506],{"emptyLinePlaceholder":3505},[2915,9670,9672,9675,9677,9679,9681],{"class":3402,"line":9671},57,[2915,9673,9674],{"class":3529},"pfad",[2915,9676,5137],{"class":3533},[2915,9678,4957],{"class":3414},[2915,9680,8638],{"class":3410},[2915,9682,5204],{"class":3414},[2915,9684,9686],{"class":3402,"line":9685},58,[2915,9687,3506],{"emptyLinePlaceholder":3505},[2915,9689,9691,9693,9695,9697,9700,9702,9704,9707],{"class":3402,"line":9690},59,[2915,9692,5444],{"class":3533},[2915,9694,4954],{"class":3529},[2915,9696,4957],{"class":3414},[2915,9698,9699],{"class":3529},"$auswahl",[2915,9701,4957],{"class":3414},[2915,9703,9612],{"class":3533},[2915,9705,9706],{"class":3410}," 4",[2915,9708,9338],{"class":3529},[2915,9710,9712],{"class":3402,"line":9711},60,[2915,9713,3506],{"emptyLinePlaceholder":3505},[2915,9715,9717],{"class":3402,"line":9716},61,[2915,9718,5187],{"class":3533},[2915,9720,9722],{"class":3402,"line":9721},62,[2915,9723,3506],{"emptyLinePlaceholder":3505},[2915,9725,9727,9729],{"class":3402,"line":9726},63,[2915,9728,5059],{"class":3410},[2915,9730,9731],{"class":3414}," \" bitte wählen:\"\n",[2915,9733,9735],{"class":3402,"line":9734},64,[2915,9736,3506],{"emptyLinePlaceholder":3505},[2915,9738,9740,9742],{"class":3402,"line":9739},65,[2915,9741,5059],{"class":3410},[2915,9743,9744],{"class":3414}," \"1) Anzahl der Dateien und Unterverzeichnisse\"\n",[2915,9746,9748],{"class":3402,"line":9747},66,[2915,9749,3506],{"emptyLinePlaceholder":3505},[2915,9751,9753,9755],{"class":3402,"line":9752},67,[2915,9754,5059],{"class":3410},[2915,9756,9757],{"class":3414}," \"2) Größte und kleinste Datei finden\"\n",[2915,9759,9761],{"class":3402,"line":9760},68,[2915,9762,3506],{"emptyLinePlaceholder":3505},[2915,9764,9766,9768],{"class":3402,"line":9765},69,[2915,9767,5059],{"class":3410},[2915,9769,9770],{"class":3414}," \"3) Dateien nach größe klassifizieren\"\n",[2915,9772,9774],{"class":3402,"line":9773},70,[2915,9775,3506],{"emptyLinePlaceholder":3505},[2915,9777,9779,9781],{"class":3402,"line":9778},71,[2915,9780,5059],{"class":3410},[2915,9782,9783],{"class":3414}," \"4) Beenden\"\n",[2915,9785,9787],{"class":3402,"line":9786},72,[2915,9788,3506],{"emptyLinePlaceholder":3505},[2915,9790,9792,9795],{"class":3402,"line":9791},73,[2915,9793,9794],{"class":3410},"read",[2915,9796,9797],{"class":3414}," auswahl\n",[2915,9799,9801],{"class":3402,"line":9800},74,[2915,9802,3506],{"emptyLinePlaceholder":3505},[2915,9804,9806,9808,9810,9812,9814],{"class":3402,"line":9805},75,[2915,9807,5014],{"class":3533},[2915,9809,4968],{"class":3414},[2915,9811,9699],{"class":3529},[2915,9813,4957],{"class":3414},[2915,9815,9816],{"class":3533}," in\n",[966,9818,9819],{},[23,9820],{},[16,9822,8985],{},[16,9824,9825],{},";;",[966,9827,9828],{"start":1117},[23,9829],{},[16,9831,9114],{},[16,9833,9825],{},[966,9835,9836],{"start":1125},[23,9837],{},[16,9839,9248],{},[16,9841,9825],{},[966,9843,9844],{"start":3515},[23,9845],{},[3392,9847,9849],{"className":3394,"code":9848,"language":3396,"meta":225,"style":225},"echo \"Programm wird beendet\"\n\nbreak\n\n",[3398,9850,9851,9858,9862],{"__ignoreMap":225},[2915,9852,9853,9855],{"class":3402,"line":3403},[2915,9854,5059],{"class":3410},[2915,9856,9857],{"class":3414}," \"Programm wird beendet\"\n",[2915,9859,9860],{"class":3402,"line":1117},[2915,9861,3506],{"emptyLinePlaceholder":3505},[2915,9863,9864],{"class":3402,"line":1125},[2915,9865,9866],{"class":3533},"break\n",[16,9868,9825],{},[16,9870,5777],{},[3392,9872,9874],{"className":3394,"code":9873,"language":3396,"meta":225,"style":225},"echo \"ungueltige Auswahl!\"\n\n",[3398,9875,9876],{"__ignoreMap":225},[2915,9877,9878,9880],{"class":3402,"line":3403},[2915,9879,5059],{"class":3410},[2915,9881,9882],{"class":3414}," \"ungueltige Auswahl!\"\n",[16,9884,9825],{},[16,9886,9887],{},[26,9888,9889],{},"esac",[16,9891,9892],{},[26,9893,5433],{},[54,9895,9897],{"id":9896},"backupsh","Backup.sh",[3392,9899,9901],{"className":3394,"code":9900,"language":3396,"meta":225,"style":225},"#!\u002Fusr\u002Fbin\u002Fenv bash\n\nset -euo pipefail\n\nBACKUP_SRC=(\"$1\")\n\nBACKUP_DEST=\"\u002Fhome\u002Fjuli\u002FSchreibtisch\u002Fbackup\"\n\nRETENTION_DAYS=7\n\nLOGFILE=\"\u002Fhome\u002Fjuli\u002FSchreibtisch\u002Fbackup.log\"\n\nLOCKFILE=\"\u002Ftmp\u002Fbackup.lock\"\n\nDRY_RUN=false\n\n",[3398,9902,9903,9908,9912,9923,9927,9944,9948,9958,9962,9972,9976,9986,9990,10000,10004],{"__ignoreMap":225},[2915,9904,9905],{"class":3402,"line":3403},[2915,9906,9907],{"class":3511},"#!\u002Fusr\u002Fbin\u002Fenv bash\n",[2915,9909,9910],{"class":3402,"line":1117},[2915,9911,3506],{"emptyLinePlaceholder":3505},[2915,9913,9914,9917,9920],{"class":3402,"line":1125},[2915,9915,9916],{"class":3410},"set",[2915,9918,9919],{"class":3410}," -euo",[2915,9921,9922],{"class":3414}," pipefail\n",[2915,9924,9925],{"class":3402,"line":3515},[2915,9926,3506],{"emptyLinePlaceholder":3505},[2915,9928,9929,9932,9934,9936,9938,9940,9942],{"class":3402,"line":3520},[2915,9930,9931],{"class":3529},"BACKUP_SRC",[2915,9933,5137],{"class":3533},[2915,9935,5140],{"class":3529},[2915,9937,4957],{"class":3414},[2915,9939,8638],{"class":3410},[2915,9941,4957],{"class":3414},[2915,9943,5152],{"class":3529},[2915,9945,9946],{"class":3402,"line":5070},[2915,9947,3506],{"emptyLinePlaceholder":3505},[2915,9949,9950,9953,9955],{"class":3402,"line":5075},[2915,9951,9952],{"class":3529},"BACKUP_DEST",[2915,9954,5137],{"class":3533},[2915,9956,9957],{"class":3414},"\"\u002Fhome\u002Fjuli\u002FSchreibtisch\u002Fbackup\"\n",[2915,9959,9960],{"class":3402,"line":5093},[2915,9961,3506],{"emptyLinePlaceholder":3505},[2915,9963,9964,9967,9969],{"class":3402,"line":5098},[2915,9965,9966],{"class":3529},"RETENTION_DAYS",[2915,9968,5137],{"class":3533},[2915,9970,9971],{"class":3414},"7\n",[2915,9973,9974],{"class":3402,"line":5207},[2915,9975,3506],{"emptyLinePlaceholder":3505},[2915,9977,9978,9981,9983],{"class":3402,"line":5212},[2915,9979,9980],{"class":3529},"LOGFILE",[2915,9982,5137],{"class":3533},[2915,9984,9985],{"class":3414},"\"\u002Fhome\u002Fjuli\u002FSchreibtisch\u002Fbackup.log\"\n",[2915,9987,9988],{"class":3402,"line":5218},[2915,9989,3506],{"emptyLinePlaceholder":3505},[2915,9991,9992,9995,9997],{"class":3402,"line":5223},[2915,9993,9994],{"class":3529},"LOCKFILE",[2915,9996,5137],{"class":3533},[2915,9998,9999],{"class":3414},"\"\u002Ftmp\u002Fbackup.lock\"\n",[2915,10001,10002],{"class":3402,"line":5229},[2915,10003,3506],{"emptyLinePlaceholder":3505},[2915,10005,10006,10009,10011],{"class":3402,"line":5253},[2915,10007,10008],{"class":3529},"DRY_RUN",[2915,10010,5137],{"class":3533},[2915,10012,10013],{"class":3414},"false\n",[16,10015,10016,8986],{},[26,10017,10018],{},"log",[11,10020,10022],{"id":10021},"tee-macht-es-möglich-die-ausgabe-sowohl-auf-der-konsole","Tee macht es möglich, die Ausgabe sowohl auf der Konsole",[11,10024,10026],{"id":10025},"als-auch-in-einer-logdatei-zu-speichern","als auch in einer Logdatei zu speichern",[3392,10028,10030],{"className":3394,"code":10029,"language":3396,"meta":225,"style":225},"echo \"$(date '+%F %T') $1\" | tee -a \"$LOGFILE\"\n\n}\n\n",[3398,10031,10032,10064,10068],{"__ignoreMap":225},[2915,10033,10034,10036,10039,10042,10045,10047,10049,10051,10054,10057,10059,10062],{"class":3402,"line":3403},[2915,10035,5059],{"class":3410},[2915,10037,10038],{"class":3414}," \"$(",[2915,10040,10041],{"class":3406},"date",[2915,10043,10044],{"class":3414}," '+%F %T') ",[2915,10046,8638],{"class":3410},[2915,10048,4957],{"class":3414},[2915,10050,7679],{"class":3533},[2915,10052,10053],{"class":3406}," tee",[2915,10055,10056],{"class":3410}," -a",[2915,10058,4968],{"class":3414},[2915,10060,10061],{"class":3529},"$LOGFILE",[2915,10063,5204],{"class":3414},[2915,10065,10066],{"class":3402,"line":1117},[2915,10067,3506],{"emptyLinePlaceholder":3505},[2915,10069,10070],{"class":3402,"line":1125},[2915,10071,5840],{"class":3529},[16,10073,10074,8986],{},[26,10075,10076],{},"cleanup",[3392,10078,10080],{"className":3394,"code":10079,"language":3396,"meta":225,"style":225},"rm -f \"$LOCKFILE\"\n\n}\n\n# trap fängt Signale ab, in diesem Fall EXIT, und führt die Funktion cleanup aus,\n\n# um sicherzustellen, dass die Lockdatei entfernt wird, wenn das Skript beendet wird,\n\n# egal ob es erfolgreich war oder durch einen Fehler unterbrochen wurde.\n\ntrap cleanup EXIT\n\n[[ -f \"$LOCKFILE\" ]] && { echo \"Already running\"; exit 1; }\n\ntouch \"$LOCKFILE\"\n\n# $@ enthält alle Argumente, die an das Skript übergeben wurden.\n\nfor arg in \"$@\"; do\n\n[[ \"$arg\" == \"--dry-run\" ]] && DRY_RUN=true\n\ndone\n\nTIMESTAMP=$(date +%F_%H-%M-%S)\n\nTARGET=\"$BACKUP_DEST\u002Fbackup_$TIMESTAMP.tar.gz\"\n\nlog \"Starting backup...\"\n\nif ! $DRY_RUN; then\n\ntar -czf \"$TARGET\" \"${BACKUP_SRC[@]}\"\n\nelse\n\nlog \"Dry run: tar -czf $TARGET ${BACKUP_SRC[*]}\"\n\nfi\n\nlog \"Cleaning old backups...\"\n\n# find sucht nach Dateien im Backup-Verzeichnis,\n\n# die älter als die angegebene Anzahl von Tagen sind und löscht sie,\n\n# um Speicherplatz freizugeben und die Anzahl der Backups zu begrenzen.\n\nfind \"$BACKUP_DEST\" -type f -mtime +$RETENTION_DAYS -name \"*.tar.gz\" -delete\n\nlog \"Backup finished.\"\n\n",[3398,10081,10082,10097,10101,10105,10109,10114,10118,10123,10127,10132,10136,10147,10151,10181,10185,10196,10200,10205,10209,10229,10233,10258,10262,10266,10270,10286,10290,10311,10315,10322,10326,10338,10342,10371,10375,10379,10383,10403,10407,10411,10415,10422,10426,10431,10435,10440,10444,10449,10453,10482,10486],{"__ignoreMap":225},[2915,10083,10084,10087,10090,10092,10095],{"class":3402,"line":3403},[2915,10085,10086],{"class":3406},"rm",[2915,10088,10089],{"class":3410}," -f",[2915,10091,4968],{"class":3414},[2915,10093,10094],{"class":3529},"$LOCKFILE",[2915,10096,5204],{"class":3414},[2915,10098,10099],{"class":3402,"line":1117},[2915,10100,3506],{"emptyLinePlaceholder":3505},[2915,10102,10103],{"class":3402,"line":1125},[2915,10104,5840],{"class":3529},[2915,10106,10107],{"class":3402,"line":3515},[2915,10108,3506],{"emptyLinePlaceholder":3505},[2915,10110,10111],{"class":3402,"line":3520},[2915,10112,10113],{"class":3511},"# trap fängt Signale ab, in diesem Fall EXIT, und führt die Funktion cleanup aus,\n",[2915,10115,10116],{"class":3402,"line":5070},[2915,10117,3506],{"emptyLinePlaceholder":3505},[2915,10119,10120],{"class":3402,"line":5075},[2915,10121,10122],{"class":3511},"# um sicherzustellen, dass die Lockdatei entfernt wird, wenn das Skript beendet wird,\n",[2915,10124,10125],{"class":3402,"line":5093},[2915,10126,3506],{"emptyLinePlaceholder":3505},[2915,10128,10129],{"class":3402,"line":5098},[2915,10130,10131],{"class":3511},"# egal ob es erfolgreich war oder durch einen Fehler unterbrochen wurde.\n",[2915,10133,10134],{"class":3402,"line":5207},[2915,10135,3506],{"emptyLinePlaceholder":3505},[2915,10137,10138,10141,10144],{"class":3402,"line":5212},[2915,10139,10140],{"class":3410},"trap",[2915,10142,10143],{"class":3414}," cleanup",[2915,10145,10146],{"class":3414}," EXIT\n",[2915,10148,10149],{"class":3402,"line":5218},[2915,10150,3506],{"emptyLinePlaceholder":3505},[2915,10152,10153,10156,10158,10160,10162,10164,10167,10169,10172,10174,10176,10178],{"class":3402,"line":5223},[2915,10154,10155],{"class":3529},"[[ ",[2915,10157,9329],{"class":3533},[2915,10159,4968],{"class":3414},[2915,10161,10094],{"class":3529},[2915,10163,4957],{"class":3414},[2915,10165,10166],{"class":3529}," ]] && { ",[2915,10168,5059],{"class":3410},[2915,10170,10171],{"class":3414}," \"Already running\"",[2915,10173,5248],{"class":3529},[2915,10175,9650],{"class":3410},[2915,10177,9016],{"class":3410},[2915,10179,10180],{"class":3529},"; }\n",[2915,10182,10183],{"class":3402,"line":5229},[2915,10184,3506],{"emptyLinePlaceholder":3505},[2915,10186,10187,10190,10192,10194],{"class":3402,"line":5253},[2915,10188,10189],{"class":3406},"touch",[2915,10191,4968],{"class":3414},[2915,10193,10094],{"class":3529},[2915,10195,5204],{"class":3414},[2915,10197,10198],{"class":3402,"line":5266},[2915,10199,3506],{"emptyLinePlaceholder":3505},[2915,10201,10202],{"class":3402,"line":5721},[2915,10203,10204],{"class":3511},"# $@ enthält alle Argumente, die an das Skript übergeben wurden.\n",[2915,10206,10207],{"class":3402,"line":9401},[2915,10208,3506],{"emptyLinePlaceholder":3505},[2915,10210,10211,10213,10216,10218,10220,10223,10225,10227],{"class":3402,"line":9406},[2915,10212,5175],{"class":3533},[2915,10214,10215],{"class":3529}," arg ",[2915,10217,5181],{"class":3533},[2915,10219,4968],{"class":3414},[2915,10221,10222],{"class":3410},"$@",[2915,10224,4957],{"class":3414},[2915,10226,5248],{"class":3529},[2915,10228,5187],{"class":3533},[2915,10230,10231],{"class":3402,"line":9411},[2915,10232,3506],{"emptyLinePlaceholder":3505},[2915,10234,10235,10237,10239,10242,10244,10247,10250,10253,10255],{"class":3402,"line":9416},[2915,10236,10155],{"class":3529},[2915,10238,4957],{"class":3414},[2915,10240,10241],{"class":3529},"$arg",[2915,10243,4957],{"class":3414},[2915,10245,10246],{"class":3533}," ==",[2915,10248,10249],{"class":3414}," \"--dry-run\"",[2915,10251,10252],{"class":3529}," ]] && DRY_RUN",[2915,10254,5137],{"class":3533},[2915,10256,10257],{"class":3414},"true\n",[2915,10259,10260],{"class":3402,"line":9428},[2915,10261,3506],{"emptyLinePlaceholder":3505},[2915,10263,10264],{"class":3402,"line":9433},[2915,10265,5269],{"class":3533},[2915,10267,10268],{"class":3402,"line":9454},[2915,10269,3506],{"emptyLinePlaceholder":3505},[2915,10271,10272,10275,10277,10279,10281,10284],{"class":3402,"line":9459},[2915,10273,10274],{"class":3529},"TIMESTAMP",[2915,10276,5137],{"class":3533},[2915,10278,9001],{"class":3529},[2915,10280,10041],{"class":3406},[2915,10282,10283],{"class":3414}," +%F_%H-%M-%S",[2915,10285,5152],{"class":3529},[2915,10287,10288],{"class":3402,"line":9464},[2915,10289,3506],{"emptyLinePlaceholder":3505},[2915,10291,10292,10295,10297,10299,10302,10305,10308],{"class":3402,"line":9469},[2915,10293,10294],{"class":3529},"TARGET",[2915,10296,5137],{"class":3533},[2915,10298,4957],{"class":3414},[2915,10300,10301],{"class":3529},"$BACKUP_DEST",[2915,10303,10304],{"class":3414},"\u002Fbackup_",[2915,10306,10307],{"class":3529},"$TIMESTAMP",[2915,10309,10310],{"class":3414},".tar.gz\"\n",[2915,10312,10313],{"class":3402,"line":9479},[2915,10314,3506],{"emptyLinePlaceholder":3505},[2915,10316,10317,10319],{"class":3402,"line":9484},[2915,10318,10018],{"class":3406},[2915,10320,10321],{"class":3414}," \"Starting backup...\"\n",[2915,10323,10324],{"class":3402,"line":9489},[2915,10325,3506],{"emptyLinePlaceholder":3505},[2915,10327,10328,10330,10333,10336],{"class":3402,"line":9494},[2915,10329,4951],{"class":3533},[2915,10331,10332],{"class":3533}," !",[2915,10334,10335],{"class":3529}," $DRY_RUN; ",[2915,10337,4979],{"class":3533},[2915,10339,10340],{"class":3402,"line":9504},[2915,10341,3506],{"emptyLinePlaceholder":3505},[2915,10343,10344,10347,10350,10352,10355,10357,10360,10362,10365,10368],{"class":3402,"line":9509},[2915,10345,10346],{"class":3406},"tar",[2915,10348,10349],{"class":3410}," -czf",[2915,10351,4968],{"class":3414},[2915,10353,10354],{"class":3529},"$TARGET",[2915,10356,4957],{"class":3414},[2915,10358,10359],{"class":3414}," \"${",[2915,10361,9931],{"class":3529},[2915,10363,10364],{"class":3414},"[",[2915,10366,10367],{"class":3533},"@",[2915,10369,10370],{"class":3414},"]}\"\n",[2915,10372,10373],{"class":3402,"line":9514},[2915,10374,3506],{"emptyLinePlaceholder":3505},[2915,10376,10377],{"class":3402,"line":9519},[2915,10378,6407],{"class":3533},[2915,10380,10381],{"class":3402,"line":9524},[2915,10382,3506],{"emptyLinePlaceholder":3505},[2915,10384,10385,10387,10390,10392,10395,10397,10399,10401],{"class":3402,"line":9529},[2915,10386,10018],{"class":3406},[2915,10388,10389],{"class":3414}," \"Dry run: tar -czf ",[2915,10391,10354],{"class":3529},[2915,10393,10394],{"class":3414}," ${",[2915,10396,9931],{"class":3529},[2915,10398,10364],{"class":3414},[2915,10400,5078],{"class":3533},[2915,10402,10370],{"class":3414},[2915,10404,10405],{"class":3402,"line":9534},[2915,10406,3506],{"emptyLinePlaceholder":3505},[2915,10408,10409],{"class":3402,"line":9539},[2915,10410,4997],{"class":3533},[2915,10412,10413],{"class":3402,"line":9552},[2915,10414,3506],{"emptyLinePlaceholder":3505},[2915,10416,10417,10419],{"class":3402,"line":9557},[2915,10418,10018],{"class":3406},[2915,10420,10421],{"class":3414}," \"Cleaning old backups...\"\n",[2915,10423,10424],{"class":3402,"line":9570},[2915,10425,3506],{"emptyLinePlaceholder":3505},[2915,10427,10428],{"class":3402,"line":9575},[2915,10429,10430],{"class":3511},"# find sucht nach Dateien im Backup-Verzeichnis,\n",[2915,10432,10433],{"class":3402,"line":9588},[2915,10434,3506],{"emptyLinePlaceholder":3505},[2915,10436,10437],{"class":3402,"line":9593},[2915,10438,10439],{"class":3511},"# die älter als die angegebene Anzahl von Tagen sind und löscht sie,\n",[2915,10441,10442],{"class":3402,"line":9598},[2915,10443,3506],{"emptyLinePlaceholder":3505},[2915,10445,10446],{"class":3402,"line":9603},[2915,10447,10448],{"class":3511},"# um Speicherplatz freizugeben und die Anzahl der Backups zu begrenzen.\n",[2915,10450,10451],{"class":3402,"line":9619},[2915,10452,3506],{"emptyLinePlaceholder":3505},[2915,10454,10455,10457,10459,10461,10463,10465,10467,10469,10472,10475,10477,10480],{"class":3402,"line":9624},[2915,10456,8210],{"class":3406},[2915,10458,4968],{"class":3414},[2915,10460,10301],{"class":3529},[2915,10462,4957],{"class":3414},[2915,10464,8248],{"class":3410},[2915,10466,9021],{"class":3414},[2915,10468,8488],{"class":3410},[2915,10470,10471],{"class":3414}," +",[2915,10473,10474],{"class":3529},"$RETENTION_DAYS ",[2915,10476,8274],{"class":3410},[2915,10478,10479],{"class":3414}," \"*.tar.gz\"",[2915,10481,8520],{"class":3410},[2915,10483,10484],{"class":3402,"line":9629},[2915,10485,3506],{"emptyLinePlaceholder":3505},[2915,10487,10488,10490],{"class":3402,"line":9634},[2915,10489,10018],{"class":3406},[2915,10491,10492],{"class":3414}," \"Backup finished.\"\n",[54,10494,10496],{"id":10495},"countsh","Count.sh",[3392,10498,10500],{"className":3394,"code":10499,"language":3396,"meta":225,"style":225},"#!\u002Fbin\u002Fbash\n\nif [ $# != 1 ]\n\nthen\n\necho \"Kein Argument übergeben\"\n\nexit 1\n\nfi\n\nDATEI=\"$1\"\n\n# überprüfen, ob die angegebene Datei existiert\n\nif [ -e \"$DATEI\" ];\n\nthen\n\necho \"Die Datei $DATEI wurde gefunden\"\n\nelse\n\necho \"Die Datei $DATEI wurde nicht gefunden\"\n\nfi\n\n",[3398,10501,10502,10506,10510,10524,10528,10532,10536,10543,10547,10553,10557,10561,10565,10577,10581,10586,10590,10608,10612,10616,10620,10632,10636,10640,10644,10655,10659],{"__ignoreMap":225},[2915,10503,10504],{"class":3402,"line":3403},[2915,10505,5125],{"class":3511},[2915,10507,10508],{"class":3402,"line":1117},[2915,10509,3506],{"emptyLinePlaceholder":3505},[2915,10511,10512,10514,10516,10518,10520,10522],{"class":3402,"line":1125},[2915,10513,4951],{"class":3533},[2915,10515,4954],{"class":3529},[2915,10517,4891],{"class":3410},[2915,10519,9612],{"class":3533},[2915,10521,9016],{"class":3410},[2915,10523,9338],{"class":3529},[2915,10525,10526],{"class":3402,"line":3515},[2915,10527,3506],{"emptyLinePlaceholder":3505},[2915,10529,10530],{"class":3402,"line":3520},[2915,10531,4979],{"class":3533},[2915,10533,10534],{"class":3402,"line":5070},[2915,10535,3506],{"emptyLinePlaceholder":3505},[2915,10537,10538,10540],{"class":3402,"line":5075},[2915,10539,5059],{"class":3410},[2915,10541,10542],{"class":3414}," \"Kein Argument übergeben\"\n",[2915,10544,10545],{"class":3402,"line":5093},[2915,10546,3506],{"emptyLinePlaceholder":3505},[2915,10548,10549,10551],{"class":3402,"line":5098},[2915,10550,9650],{"class":3410},[2915,10552,9653],{"class":3410},[2915,10554,10555],{"class":3402,"line":5207},[2915,10556,3506],{"emptyLinePlaceholder":3505},[2915,10558,10559],{"class":3402,"line":5212},[2915,10560,4997],{"class":3533},[2915,10562,10563],{"class":3402,"line":5218},[2915,10564,3506],{"emptyLinePlaceholder":3505},[2915,10566,10567,10569,10571,10573,10575],{"class":3402,"line":5223},[2915,10568,5960],{"class":3529},[2915,10570,5137],{"class":3533},[2915,10572,4957],{"class":3414},[2915,10574,8638],{"class":3410},[2915,10576,5204],{"class":3414},[2915,10578,10579],{"class":3402,"line":5229},[2915,10580,3506],{"emptyLinePlaceholder":3505},[2915,10582,10583],{"class":3402,"line":5253},[2915,10584,10585],{"class":3511},"# überprüfen, ob die angegebene Datei existiert\n",[2915,10587,10588],{"class":3402,"line":5266},[2915,10589,3506],{"emptyLinePlaceholder":3505},[2915,10591,10592,10594,10596,10598,10600,10603,10605],{"class":3402,"line":5721},[2915,10593,4951],{"class":3533},[2915,10595,4954],{"class":3529},[2915,10597,7967],{"class":3533},[2915,10599,4968],{"class":3414},[2915,10601,10602],{"class":3529},"$DATEI",[2915,10604,4957],{"class":3414},[2915,10606,10607],{"class":3529}," ];\n",[2915,10609,10610],{"class":3402,"line":9401},[2915,10611,3506],{"emptyLinePlaceholder":3505},[2915,10613,10614],{"class":3402,"line":9406},[2915,10615,4979],{"class":3533},[2915,10617,10618],{"class":3402,"line":9411},[2915,10619,3506],{"emptyLinePlaceholder":3505},[2915,10621,10622,10624,10627,10629],{"class":3402,"line":9416},[2915,10623,5059],{"class":3410},[2915,10625,10626],{"class":3414}," \"Die Datei ",[2915,10628,10602],{"class":3529},[2915,10630,10631],{"class":3414}," wurde gefunden\"\n",[2915,10633,10634],{"class":3402,"line":9428},[2915,10635,3506],{"emptyLinePlaceholder":3505},[2915,10637,10638],{"class":3402,"line":9433},[2915,10639,6407],{"class":3533},[2915,10641,10642],{"class":3402,"line":9454},[2915,10643,3506],{"emptyLinePlaceholder":3505},[2915,10645,10646,10648,10650,10652],{"class":3402,"line":9459},[2915,10647,5059],{"class":3410},[2915,10649,10626],{"class":3414},[2915,10651,10602],{"class":3529},[2915,10653,10654],{"class":3414}," wurde nicht gefunden\"\n",[2915,10656,10657],{"class":3402,"line":9464},[2915,10658,3506],{"emptyLinePlaceholder":3505},[2915,10660,10661],{"class":3402,"line":9469},[2915,10662,4997],{"class":3533},[54,10664,10666],{"id":10665},"envinfosh","Envinfo.sh",[3392,10668,10670],{"className":3394,"code":10669,"language":3396,"meta":225,"style":225},"#!\u002Fbin\u002Fbash\n\n# Umgebungsvariablen\n\necho \"User: $USER\"\n\necho \"Homeverzeichnis: $HOME\"\n\necho \"Skript: $0\"\n\necho \"Datum: $(date)\"\n\necho \"PC Name: $(hostname)\"\n\necho \"Aktuelles Verzeichnis: $(pwd)\"\n\n",[3398,10671,10672,10676,10680,10685,10689,10701,10705,10717,10721,10732,10736,10748,10752,10764,10768],{"__ignoreMap":225},[2915,10673,10674],{"class":3402,"line":3403},[2915,10675,5125],{"class":3511},[2915,10677,10678],{"class":3402,"line":1117},[2915,10679,3506],{"emptyLinePlaceholder":3505},[2915,10681,10682],{"class":3402,"line":1125},[2915,10683,10684],{"class":3511},"# Umgebungsvariablen\n",[2915,10686,10687],{"class":3402,"line":3515},[2915,10688,3506],{"emptyLinePlaceholder":3505},[2915,10690,10691,10693,10696,10699],{"class":3402,"line":3520},[2915,10692,5059],{"class":3410},[2915,10694,10695],{"class":3414}," \"User: ",[2915,10697,10698],{"class":3529},"$USER",[2915,10700,5204],{"class":3414},[2915,10702,10703],{"class":3402,"line":5070},[2915,10704,3506],{"emptyLinePlaceholder":3505},[2915,10706,10707,10709,10712,10715],{"class":3402,"line":5075},[2915,10708,5059],{"class":3410},[2915,10710,10711],{"class":3414}," \"Homeverzeichnis: ",[2915,10713,10714],{"class":3529},"$HOME",[2915,10716,5204],{"class":3414},[2915,10718,10719],{"class":3402,"line":5093},[2915,10720,3506],{"emptyLinePlaceholder":3505},[2915,10722,10723,10725,10728,10730],{"class":3402,"line":5098},[2915,10724,5059],{"class":3410},[2915,10726,10727],{"class":3414}," \"Skript: ",[2915,10729,4879],{"class":3410},[2915,10731,5204],{"class":3414},[2915,10733,10734],{"class":3402,"line":5207},[2915,10735,3506],{"emptyLinePlaceholder":3505},[2915,10737,10738,10740,10743,10745],{"class":3402,"line":5212},[2915,10739,5059],{"class":3410},[2915,10741,10742],{"class":3414}," \"Datum: $(",[2915,10744,10041],{"class":3406},[2915,10746,10747],{"class":3414},")\"\n",[2915,10749,10750],{"class":3402,"line":5218},[2915,10751,3506],{"emptyLinePlaceholder":3505},[2915,10753,10754,10756,10759,10762],{"class":3402,"line":5223},[2915,10755,5059],{"class":3410},[2915,10757,10758],{"class":3414}," \"PC Name: $(",[2915,10760,10761],{"class":3406},"hostname",[2915,10763,10747],{"class":3414},[2915,10765,10766],{"class":3402,"line":5229},[2915,10767,3506],{"emptyLinePlaceholder":3505},[2915,10769,10770,10772,10775,10778],{"class":3402,"line":5253},[2915,10771,5059],{"class":3410},[2915,10773,10774],{"class":3414}," \"Aktuelles Verzeichnis: $(",[2915,10776,10777],{"class":3410},"pwd",[2915,10779,10747],{"class":3414},[54,10781,10783],{"id":10782},"list_infosh","List_info.sh",[3392,10785,10787],{"className":3394,"code":10786,"language":3396,"meta":225,"style":225},"#!\u002Fbin\u002Fbash\n\n# Dateien eines bestimmten Typs auflisten, hier: alle .sh\n\nfor file in \"$1\"\u002F*.sh\n\ndo\n\n[ -e \"$file\" ] || continue\n\nif [ -s \"$file\" ]\n\nthen\n\necho \"$file\"\n\nfi\n\ndone\n",[3398,10788,10789,10793,10797,10802,10806,10822,10826,10830,10834,10857,10861,10877,10881,10885,10889,10899,10903,10907,10911],{"__ignoreMap":225},[2915,10790,10791],{"class":3402,"line":3403},[2915,10792,5125],{"class":3511},[2915,10794,10795],{"class":3402,"line":1117},[2915,10796,3506],{"emptyLinePlaceholder":3505},[2915,10798,10799],{"class":3402,"line":1125},[2915,10800,10801],{"class":3511},"# Dateien eines bestimmten Typs auflisten, hier: alle .sh\n",[2915,10803,10804],{"class":3402,"line":3515},[2915,10805,3506],{"emptyLinePlaceholder":3505},[2915,10807,10808,10810,10813,10815,10817,10819],{"class":3402,"line":3520},[2915,10809,5175],{"class":3533},[2915,10811,10812],{"class":3529}," file ",[2915,10814,5181],{"class":3533},[2915,10816,4968],{"class":3414},[2915,10818,8638],{"class":3410},[2915,10820,10821],{"class":3414},"\"\u002F*.sh\n",[2915,10823,10824],{"class":3402,"line":5070},[2915,10825,3506],{"emptyLinePlaceholder":3505},[2915,10827,10828],{"class":3402,"line":5075},[2915,10829,5187],{"class":3533},[2915,10831,10832],{"class":3402,"line":5093},[2915,10833,3506],{"emptyLinePlaceholder":3505},[2915,10835,10836,10839,10841,10843,10846,10848,10851,10854],{"class":3402,"line":5098},[2915,10837,10838],{"class":3529},"[ ",[2915,10840,7967],{"class":3533},[2915,10842,4968],{"class":3414},[2915,10844,10845],{"class":3529},"$file",[2915,10847,4957],{"class":3414},[2915,10849,10850],{"class":3529}," ] ",[2915,10852,10853],{"class":3533},"||",[2915,10855,10856],{"class":3533}," continue\n",[2915,10858,10859],{"class":3402,"line":5207},[2915,10860,3506],{"emptyLinePlaceholder":3505},[2915,10862,10863,10865,10867,10869,10871,10873,10875],{"class":3402,"line":5212},[2915,10864,4951],{"class":3533},[2915,10866,4954],{"class":3529},[2915,10868,4849],{"class":3533},[2915,10870,4968],{"class":3414},[2915,10872,10845],{"class":3529},[2915,10874,4957],{"class":3414},[2915,10876,9338],{"class":3529},[2915,10878,10879],{"class":3402,"line":5218},[2915,10880,3506],{"emptyLinePlaceholder":3505},[2915,10882,10883],{"class":3402,"line":5223},[2915,10884,4979],{"class":3533},[2915,10886,10887],{"class":3402,"line":5229},[2915,10888,3506],{"emptyLinePlaceholder":3505},[2915,10890,10891,10893,10895,10897],{"class":3402,"line":5253},[2915,10892,5059],{"class":3410},[2915,10894,4968],{"class":3414},[2915,10896,10845],{"class":3529},[2915,10898,5204],{"class":3414},[2915,10900,10901],{"class":3402,"line":5266},[2915,10902,3506],{"emptyLinePlaceholder":3505},[2915,10904,10905],{"class":3402,"line":5721},[2915,10906,4997],{"class":3533},[2915,10908,10909],{"class":3402,"line":9401},[2915,10910,3506],{"emptyLinePlaceholder":3505},[2915,10912,10913],{"class":3402,"line":9406},[2915,10914,5269],{"class":3533},[4468,10916,10917],{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sA_wV, html code.shiki .sA_wV{--shiki-default:#032F62;--shiki-dark:#DBEDFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":225,"searchDepth":1117,"depth":1117,"links":10919},[10920,10921,10922,10923,10924,10928,10929,10932,10935,10938,10939,10942,10943,10946,10947,10948,10949,10953,10960,10967,10968,10969,10970,10971,10972,10973,10974],{"id":4937,"depth":1125,"text":4938},{"id":5107,"depth":1125,"text":5110},{"id":5272,"depth":1125,"text":5275},{"id":5336,"depth":1125,"text":5339},{"id":5854,"depth":1117,"text":5855,"children":10925},[10926,10927],{"id":5858,"depth":1125,"text":5859},{"id":5906,"depth":1125,"text":5907},{"id":6540,"depth":1117,"text":6541},{"id":6594,"depth":1117,"text":6597,"children":10930},[10931],{"id":6606,"depth":1125,"text":6609},{"id":6655,"depth":1117,"text":6658,"children":10933},[10934],{"id":6672,"depth":1125,"text":6675},{"id":6754,"depth":1117,"text":6757,"children":10936},[10937],{"id":6819,"depth":1125,"text":6822},{"id":6845,"depth":1117,"text":6848},{"id":6862,"depth":1117,"text":6865,"children":10940},[10941],{"id":6871,"depth":1125,"text":6874},{"id":6976,"depth":1117,"text":6979},{"id":7071,"depth":1117,"text":7074,"children":10944},[10945],{"id":7115,"depth":1125,"text":7118},{"id":7388,"depth":1117,"text":730},{"id":7606,"depth":1117,"text":7607},{"id":7701,"depth":1117,"text":7704},{"id":7875,"depth":1117,"text":7876,"children":10950},[10951,10952],{"id":7946,"depth":1125,"text":7704},{"id":7994,"depth":1125,"text":7995},{"id":8173,"depth":1117,"text":8174,"children":10954},[10955,10956,10957,10958,10959],{"id":8253,"depth":1125,"text":7704},{"id":8344,"depth":1125,"text":8345},{"id":8388,"depth":1125,"text":8389},{"id":8432,"depth":1125,"text":8433},{"id":8497,"depth":1125,"text":8498},{"id":8554,"depth":1117,"text":8555,"children":10961},[10962,10963,10964,10965,10966],{"id":8603,"depth":1125,"text":8604},{"id":8675,"depth":1125,"text":8676},{"id":8715,"depth":1125,"text":8716},{"id":8737,"depth":1125,"text":8738},{"id":8761,"depth":1125,"text":8762},{"id":8800,"depth":1117,"text":8801},{"id":8850,"depth":1117,"text":8851},{"id":8913,"depth":1117,"text":8914},{"id":8970,"depth":1117,"text":8971},{"id":9896,"depth":1117,"text":9897},{"id":10495,"depth":1117,"text":10496},{"id":10665,"depth":1117,"text":10666},{"id":10782,"depth":1117,"text":10783},"7-8",{},{"title":10978},"Cheat-Sheet – Schulaufgabe 2 (2025\u002F2026)","\u002Ffaecher\u002Fbsa\u002F7-8-cs-sa2","\u002Fdownloads\u002FBSA\u002FBSA_7-8_CS_SA2.pdf",{"title":4524,"description":225},"faecher\u002Fbsa\u002F7-8-cs-sa2","CS","Cheat-Sheet","2025\u002F2026","hH_MKbPbyjUiRdVPc7ChbawdUF9ObLtKROjOcLshg5o",{"id":10988,"title":6,"body":10989,"class":10975,"description":225,"extension":1155,"meta":11441,"navigation":11442,"path":11444,"pdfDownload":11445,"scope":1161,"scopeName":1162,"seo":11446,"stem":11447,"subject":1165,"subjectName":1166,"type":1167,"typeName":1168,"year":10985,"__hash__":11448},"faecher\u002Ffaecher\u002Fbsa\u002F7-8-zsmf-sa1.md",{"type":8,"value":10990,"toc":11433},[10991,10995,10997,11020,11024,11146,11150,11158,11162,11186,11188,11278,11282,11308,11312,11317,11321,11329,11331],[11,10992,10994],{"id":10993},"systemstart-und-initialisierung","Systemstart und Initialisierung",[54,10996,403],{"id":402},[966,10998,10999,11002,11005,11008,11011,11014,11017],{},[23,11000,11001],{},"Bootloader: Kernel und initramfs in RAM laden",[23,11003,11004],{},"Kernel laden: Hardware wird initialisiert",[23,11006,11007],{},"InitRamFS: Temporäres Root-Dateisystem zum laden von Modulen und Zugriff aufs echte FS",[23,11009,11010],{},"Mount Root FS: Kernel mountet Dateisystem nach \u002Fetc\u002Ffstab",[23,11012,11013],{},"Init starten: Erstes Prozessprogramm wird ausgeführt (init\u002Fsystemd)",[23,11015,11016],{},"Dienste starten",[23,11018,11019],{},"Boot abgeschlossen: Bereit zur Anmeldung",[54,11021,11023],{"id":11022},"sysinit-vs-systemd","SysInit vs. SystemD",[645,11025,11026,11041],{},[648,11027,11028],{},[651,11029,11030,11032,11037],{},[654,11031],{},[654,11033,11034],{},[26,11035,11036],{},"SysInit",[654,11038,11039],{},[26,11040,4560],{},[670,11042,11043,11056,11069,11081,11094,11107,11120,11133],{},[651,11044,11045,11050,11053],{},[675,11046,11047],{},[26,11048,11049],{},"Grundidee",[675,11051,11052],{},"- Traditionelles Init-System",[675,11054,11055],{},"- Modernes Init-System",[651,11057,11058,11063,11066],{},[675,11059,11060],{},[26,11061,11062],{},"Startverhalten",[675,11064,11065],{},"- Serielles Starten über Skripte",[675,11067,11068],{},"- Startet Parallel - Schnellere Startzeiten",[651,11070,11071,11075,11078],{},[675,11072,11073],{},[26,11074,3025],{},[675,11076,11077],{},"- Skripte in \u002Fetc\u002Finit.d",[675,11079,11080],{},"- Units-Dateien in \u002Fetc\u002Fsystemd\u002Fsystem",[651,11082,11083,11088,11091],{},[675,11084,11085],{},[26,11086,11087],{},"Abhängigkeiten",[675,11089,11090],{},"- Kaum Abhängigkeitslogik",[675,11092,11093],{},"- Umfangreiche Abhängigkeitsverwaltung - Abbrüche bei Fehlern",[651,11095,11096,11101,11104],{},[675,11097,11098],{},[26,11099,11100],{},"Logging",[675,11102,11103],{},"- Über Syslog",[675,11105,11106],{},"- Zentralisiertes Logging über journalctl",[651,11108,11109,11114,11117],{},[675,11110,11111],{},[26,11112,11113],{},"Resources & Sicherheitsfeatures",[675,11115,11116],{},"- Kaum integrierte Features",[675,11118,11119],{},"- Sandbox-Funktionen - Restriktionsmöglichkeiten",[651,11121,11122,11127,11130],{},[675,11123,11124],{},[26,11125,11126],{},"Ökosystem",[675,11128,11129],{},"- In vielen alten Distros - Leicht, aber weniger Funktionen",[675,11131,11132],{},"- Weit verbreitet - Oft Standard",[651,11134,11135,11140,11143],{},[675,11136,11137],{},[26,11138,11139],{},"Vor- & Nachteile",[675,11141,11142],{},"Vorteile   - Einfach, Transparent - Geringer Overhead   Nachteile   - Langsamer Start - Wenig Abhängigkeitslogik",[675,11144,11145],{},"Vorteile   - Schneller Start - Robuste Abhängigkeitsverwaltung - Viele Funktionen   Nachteile   - Komplex - Kritik an Zentralisierung",[11,11147,11149],{"id":11148},"verzeichnisbaum-alles-ist-eine-datei","Verzeichnisbaum – „Alles ist eine Datei“",[20,11151,11152,11155],{},[23,11153,11154],{},"Keine Laufwerksbuchstaben sondern Mountpoints",[23,11156,11157],{},"Jeder Benutzer hat ein Home-Verzeichnis (~)",[54,11159,11161],{"id":11160},"virtuelle-dateisysteme","Virtuelle Dateisysteme",[20,11163,11164,11167,11175],{},[23,11165,11166],{},"Belegen keinen Speicherplatz",[23,11168,11169,11170],{},"Zum Austausch zwischen Kernel und Anwendungen\n",[20,11171,11172],{},[23,11173,11174],{},"Nicht zum speichern",[23,11176,11177,11178],{},"Beispiele\n",[20,11179,11180,11183],{},[23,11181,11182],{},"\u002Fdev -> Zugang zu Hardware (Festplatte)",[23,11184,11185],{},"\u002Fproc -> Alle laufenden Prozesse",[54,11187,8345],{"id":8344},[645,11189,11190,11202],{},[648,11191,11192],{},[651,11193,11194,11196,11199],{},[654,11195,8293],{},[654,11197,11198],{},"Kürzel",[654,11200,11201],{},"Informationen",[670,11203,11204,11214,11225,11235,11246,11256,11267],{},[651,11205,11206,11209,11211],{},[675,11207,11208],{},"Reguläre Datei",[675,11210,3523],{},[675,11212,11213],{},"Texte, Grafiken, Audiodateien, Programme",[651,11215,11216,11219,11222],{},[675,11217,11218],{},"Verzeichnisdateien",[675,11220,11221],{},"d",[675,11223,11224],{},"Ordner; Tabelldatei mit Dateiname -> Inode-Nummer",[651,11226,11227,11230,11232],{},[675,11228,11229],{},"Blockdateien",[675,11231,5053],{},[675,11233,11234],{},"Schnittstelle zu Geräten (z.B. Laufwerk); Zugriffe werden an das Gerät weitergeleitet",[651,11236,11237,11240,11243],{},[675,11238,11239],{},"Zeichengerätedateien",[675,11241,11242],{},"c",[675,11244,11245],{},"Serieller Strom von Ein- & Ausgaben (z.B. Terminal)",[651,11247,11248,11251,11253],{},[675,11249,11250],{},"Pipe-Datei",[675,11252,16],{},[675,11254,11255],{},"Ähnlich wie Pipes\u002FShell; Direkte Kommunikation zwischen Programmen ohne Zwischenspeicher",[651,11257,11258,11261,11264],{},[675,11259,11260],{},"Symbolic link file",[675,11262,11263],{},"l",[675,11265,11266],{},"Enthält Pfadangabe (Verknüpfung)",[651,11268,11269,11272,11275],{},[675,11270,11271],{},"Socket-Files",[675,11273,11274],{},"s",[675,11276,11277],{},"Bidirektionale Interprozesskommunikation innerhalb eines Rechners",[54,11279,11281],{"id":11280},"inode-index-node","Inode (Index node)",[20,11283,11284,11287,11305],{},[23,11285,11286],{},"Datenstruktureintrag im Dateisystem",[23,11288,11289,11290],{},"Enthält Metadaten über eine Datei\n",[20,11291,11292,11294,11296,11299,11302],{},[23,11293,8301],{},[23,11295,8293],{},[23,11297,11298],{},"Benutzerrechte",[23,11300,11301],{},"Zeitstempel",[23,11303,11304],{},"…",[23,11306,11307],{},"Jede Datei hat eine eindeutige Inode-Nummer",[11,11309,11311],{"id":11310},"terminalbefehle","Terminalbefehle",[20,11313,11314],{},[23,11315,11316],{},"Siehe Buch für die meisten Befehle",[54,11318,11320],{"id":11319},"apropos","Apropos",[20,11322,11323,11326],{},[23,11324,11325],{},"Befehl um nach anderen Befehlen zu suchen anhand von Begriffen in deren Dokumentation",[23,11327,11328],{},"Apropos kernel: Liefert alle Befehle, die „kernel“ in der Dokumentation enthalten",[11,11330,4530],{"id":4529},[645,11332,11333,11341],{},[648,11334,11335],{},[651,11336,11337,11339],{},[654,11338,1198],{},[654,11340,4545],{},[670,11342,11343,11349,11355,11361,11367,11373,11379,11385,11391,11397,11403,11409,11415,11421,11427],{},[651,11344,11345,11347],{},[675,11346,4557],{},[675,11348,4560],{},[651,11350,11351,11353],{},[675,11352,4568],{},[675,11354,4571],{},[651,11356,11357,11359],{},[675,11358,4579],{},[675,11360,4582],{},[651,11362,11363,11365],{},[675,11364,4590],{},[675,11366,4593],{},[651,11368,11369,11371],{},[675,11370,4601],{},[675,11372,4604],{},[651,11374,11375,11377],{},[675,11376,4612],{},[675,11378,4615],{},[651,11380,11381,11383],{},[675,11382,4623],{},[675,11384,4626],{},[651,11386,11387,11389],{},[675,11388,4634],{},[675,11390,4637],{},[651,11392,11393,11395],{},[675,11394,4645],{},[675,11396,4648],{},[651,11398,11399,11401],{},[675,11400,4656],{},[675,11402,4659],{},[651,11404,11405,11407],{},[675,11406,4667],{},[675,11408,4670],{},[651,11410,11411,11413],{},[675,11412,4678],{},[675,11414,4681],{},[651,11416,11417,11419],{},[675,11418,4689],{},[675,11420,4692],{},[651,11422,11423,11425],{},[675,11424,4700],{},[675,11426,4703],{},[651,11428,11429,11431],{},[675,11430,4711],{},[675,11432,4714],{},{"title":225,"searchDepth":1117,"depth":1117,"links":11434},[11435,11436,11437,11438,11439,11440],{"id":402,"depth":1117,"text":403},{"id":11022,"depth":1117,"text":11023},{"id":11160,"depth":1117,"text":11161},{"id":8344,"depth":1117,"text":8345},{"id":11280,"depth":1117,"text":11281},{"id":11319,"depth":1117,"text":11320},{},{"title":11443},"Zusammenfassung – Schulaufgabe 1 (2025\u002F2026)","\u002Ffaecher\u002Fbsa\u002F7-8-zsmf-sa1","\u002Fdownloads\u002FBSA\u002FBSA_7-8_ZSMF_SA1.pdf",{"title":6,"description":225},"faecher\u002Fbsa\u002F7-8-zsmf-sa1","Xu56gLXsc-ZXVZUiJxjx4MBmJhtexDyJP0Q-x7sfURs",{"id":11450,"title":11451,"body":11452,"class":34374,"description":34375,"extension":1155,"meta":34376,"navigation":34377,"path":34378,"pdfDownload":34379,"scope":34374,"scopeName":34380,"seo":34381,"stem":34382,"subject":1165,"subjectName":1166,"type":10983,"typeName":10984,"year":34380,"__hash__":34383},"faecher\u002Ffaecher\u002Fbsa\u002Fap-cs.md","Cheat-Sheet – Abschlussprüfung",{"type":8,"value":11453,"toc":34225},[11454,11457,11463,11476,11480,11529,11533,11619,11621,11625,11627,11631,11703,11707,11710,11714,11717,11721,11746,11750,11753,11835,11837,11841,11843,11847,11850,11853,11903,11906,11935,11938,11949,11961,11965,11972,11981,11984,11987,11997,12000,12032,12036,12118,12121,12125,12265,12269,12272,12275,12278,12280,12284,12376,12379,12382,12385,12419,12422,12439,12455,12459,12520,12523,12608,12611,12615,12821,12824,12828,12831,12835,12838,12841,12844,12869,12872,12886,12896,12900,12983,12987,13120,13124,13234,13237,13289,13293,13390,13393,13397,13645,13648,13652,13655,13659,13662,13666,13669,13673,13676,13680,13699,13703,13708,13731,13736,13762,13766,13908,13911,13931,13935,13939,13948,13953,13965,13969,13989,13993,14099,14101,14153,14156,14159,14163,14168,14186,14190,14211,14215,14339,14341,14369,14373,14463,14467,14471,14555,14580,14583,14588,14600,14603,14674,14679,14689,14692,14695,14699,14702,14706,14950,14953,14956,14959,14962,14966,14970,14974,14978,14981,14985,14988,14991,14994,14998,15001,15005,15008,15012,15084,15087,15090,15099,15110,15113,15176,15179,15183,15186,15190,15413,15416,15420,15423,15426,15429,15433,15436,15439,15442,15445,15448,15451,15454,15457,15461,15464,15467,15470,15473,15487,15498,15501,15591,15594,15598,15601,15605,15861,15864,15868,15871,15874,15877,15881,15888,15895,15902,15905,15909,15912,15915,15918,15945,15947,15955,15967,15970,16226,16230,16344,16347,16351,16749,16752,16756,16758,16762,16765,16768,16772,16775,16779,16786,16792,16798,16804,16810,16825,16828,16831,16834,16836,16841,16854,16856,16860,16944,16948,17055,17059,17147,17151,17199,17201,17273,17276,17324,17327,17331,17922,17925,17929,17932,17935,17938,17942,17945,17948,17952,17954,17957,17960,17963,17965,17977,17989,17994,18006,18012,18040,18044,18137,18140,18180,18185,18250,18254,18369,18384,18388,18471,18475,18479,18489,18493,18496,18501,18508,18513,18516,18520,18525,18529,18542,18546,18552,18555,18564,18568,18571,18574,18578,18582,18585,18589,18999,19002,19006,19008,19011,19014,19016,19020,19023,19026,19030,19033,19036,19039,19043,19046,19048,19053,19063,19067,19186,19190,19397,19401,19459,19463,19549,19553,19673,19676,19680,19684,21035,21038,21042,21045,21047,21051,21053,21055,21057,21070,21073,21077,21080,21083,21086,21090,21094,21099,21101,21106,21118,21121,21320,21324,21351,21376,21381,21437,21441,21520,21523,21527,21850,21853,21857,21860,21863,21866,21869,21872,21875,21878,21881,21884,21888,21891,21894,21897,21901,21903,21915,21924,21927,21957,21962,21973,21986,21989,21993,22014,22017,22021,22023,22027,22211,22214,22217,22220,22224,22228,22231,22235,22238,22241,22246,22257,22260,22458,22463,22478,22495,22498,22502,22505,22509,22833,22837,22840,22843,22847,22850,22853,22856,22858,22861,22863,22865,22867,22870,22874,22876,22878,22880,22882,22886,22888,22890,22892,22896,22898,22900,22902,22905,22909,22912,22915,22918,22921,22924,22926,22935,22946,22949,23058,23063,23110,23113,23117,23313,23315,23317,23320,23324,23380,23383,23387,23462,23465,23469,23471,23473,23475,23478,23482,23484,23486,23489,23493,23549,23551,23553,23557,23560,23569,23580,23583,23621,23624,23628,23631,23635,23789,23792,23796,23798,23800,23802,23805,23808,23810,23812,23814,23816,23820,23826,23830,23833,23848,23859,23862,23986,23991,23997,24000,24059,24064,24070,24129,24132,24136,24138,24142,24145,24149,24347,24350,24353,24356,24359,24362,24366,24369,24373,24377,24381,24385,24389,24393,24397,24400,24404,24407,24409,24417,24441,24450,24454,24462,24508,24533,24537,24722,24726,24747,24754,24792,24796,24799,24908,24913,24917,24929,24933,24935,24939,24981,24984,24988,25381,25384,25388,25392,25403,25408,25411,25415,25418,25421,25424,25427,25430,25433,25436,25439,25442,25445,25448,25451,25454,25457,25460,25463,25466,25469,25472,25475,25478,25481,25484,25487,25490,25493,25496,25499,25503,25722,25731,25739,25743,25763,25766,25770,26225,26229,26278,26282,26288,26291,26295,26299,26813,26816,26820,26843,26849,26854,26857,26866,26870,26875,26894,26898,26958,26961,26965,26969,27745,27748,27752,27755,27759,27762,27766,27769,27772,27775,27779,27781,27784,27788,27791,27793,27802,27810,27814,27886,27890,27894,28006,28009,28151,28155,28251,28255,28444,28448,28570,28605,28678,28690,28693,28696,29004,29007,29011,29323,29332,29349,29353,29562,29566,29685,29689,29743,29747,29811,29815,29874,29878,29948,29952,31517,31521,31570,31574,31614,31618,31622,31626,31678,31681,31761,31765,31769,31773,32565,32568,32572,32584,32590,32593,32609,32614,32620,32625,32628,32632,32743,32747,32872,32876,32894,32898,32902,32905,32908,32911,32914,32917,32920,32923,32926,32929,32933,32936,32939,32943,32946,32949,32953,32956,32959,32963,32967,32980,32984,32987,32990,32993,32997,33000,33004,33106,33122,33130,33135,33138,33141,33201,33205,33252,33256,33259,33262,33265,33268,33271,33274,33277,33280,33283,33287,33290,33293,33296,33300,33303,33307,33311,33314,33318,33330,33334,33337,33341,33344,33379,33383,33386,33389,33393,33396,33400,33404,33407,33411,33414,33418,33421,33425,33428,33432,33435,33439,33442,33445,33448,33450,33454,33458,33462,33465,33468,33472,33476,33480,33495,33502,33506,33509,33512,33569,33573,33584,33588,33591,33595,33598,33601,33605,33608,33611,33614,33617,33621,33625,33629,33632,33636,33639,33642,33656,33660,33663,33666,33668,33672,33675,33679,33682,33686,33689,33693,33696,33700,33703,33707,33709,33712,33715,33717,33720,33724,33728,33732,33735,33739,33743,33912,33916,33919,33927,33931,33994,33998,34057,34061,34199,34203,34210,34213,34219,34222],[11,11455,11456],{"id":11456},"id",[16,11458,11459,11462],{},[26,11460,11461],{},"Beschreibung:"," Gibt die UID (User ID), die primäre GID (Group ID) sowie alle Gruppen des aktuellen oder eines angegebenen Benutzers aus. Besonders nützlich zur schnellen Überprüfung von Rechten im System.",[16,11464,11465,4850,11467],{},[26,11466,6691],{},[26,11468,11469,11470,4850,11473],{},"id ",[2915,11471,11472],{},"OPTIONEN",[2915,11474,11475],{},"BENUTZER",[54,11477,11479],{"id":11478},"uid-bereiche-linux-konvention","UID-Bereiche (Linux-Konvention)",[645,11481,11482,11495],{},[648,11483,11484],{},[651,11485,11486,11491],{},[654,11487,11488],{},[26,11489,11490],{},"Bereich",[654,11492,11493],{},[26,11494,5483],{},[670,11496,11497,11505,11513,11521],{},[651,11498,11499,11502],{},[675,11500,11501],{},"0",[675,11503,11504],{},"root – Superuser mit vollen Systemrechten",[651,11506,11507,11510],{},[675,11508,11509],{},"1 – 999",[675,11511,11512],{},"System-\u002FDienst-Konten (daemon, www-data, ...)",[651,11514,11515,11518],{},[675,11516,11517],{},"1000 – 65533",[675,11519,11520],{},"Normale Benutzer",[651,11522,11523,11526],{},[675,11524,11525],{},"65534",[675,11527,11528],{},"nobody – minimale Rechte, für NFS o. ä.",[54,11530,11532],{"id":11531},"flags","Flags",[645,11534,11535,11553],{},[648,11536,11537],{},[651,11538,11539,11544,11549],{},[654,11540,11541],{},[26,11542,11543],{},"Flag",[654,11545,11546],{},[26,11547,11548],{},"Langform",[654,11550,11551],{},[26,11552,5483],{},[670,11554,11555,11566,11577,11588,11598,11608],{},[651,11556,11557,11560,11563],{},[675,11558,11559],{},"-u",[675,11561,11562],{},"--user",[675,11564,11565],{},"Nur die UID (User ID) numerisch ausgeben",[651,11567,11568,11571,11574],{},[675,11569,11570],{},"-g",[675,11572,11573],{},"--group",[675,11575,11576],{},"Nur die primäre GID numerisch ausgeben",[651,11578,11579,11582,11585],{},[675,11580,11581],{},"-G",[675,11583,11584],{},"--groups",[675,11586,11587],{},"Alle GIDs (primär + alle sekundären) aufzählen",[651,11589,11590,11592,11595],{},[675,11591,7742],{},[675,11593,11594],{},"--name",[675,11596,11597],{},"Namen statt numerischer ID ausgeben – immer mit -u, -g oder -G kombinieren",[651,11599,11600,11602,11605],{},[675,11601,4853],{},[675,11603,11604],{},"--real",[675,11606,11607],{},"Echte (reale) ID statt der effektiven ID ausgeben",[651,11609,11610,11613,11616],{},[675,11611,11612],{},"-Z",[675,11614,11615],{},"--context",[675,11617,11618],{},"SELinux-Sicherheitskontext ausgeben (nur auf SELinux-Systemen verfügbar)",[54,11620,8676],{"id":8675},[11,11622,11624],{"id":11623},"alle-ids-des-aktuell-eingeloggten-benutzers-ausgeben","Alle IDs des aktuell eingeloggten Benutzers ausgeben",[16,11626,11456],{},[11,11628,11630],{"id":11629},"nur-die-eigene-uid-numerisch","Nur die eigene UID numerisch",[3392,11632,11634],{"className":3394,"code":11633,"language":3396,"meta":225,"style":225},"id -u\n\n# Nur die eigene UID als Namen (Benutzername)\n\nid -un\n\n# Alle Gruppen-IDs des aktuellen Nutzers\n\nid -G\n\n# Alle Gruppennamen (keine Nummern)\n\nid -Gn\n\n",[3398,11635,11636,11643,11647,11652,11656,11663,11667,11672,11676,11683,11687,11692,11696],{"__ignoreMap":225},[2915,11637,11638,11640],{"class":3402,"line":3403},[2915,11639,11456],{"class":3406},[2915,11641,11642],{"class":3410}," -u\n",[2915,11644,11645],{"class":3402,"line":1117},[2915,11646,3506],{"emptyLinePlaceholder":3505},[2915,11648,11649],{"class":3402,"line":1125},[2915,11650,11651],{"class":3511},"# Nur die eigene UID als Namen (Benutzername)\n",[2915,11653,11654],{"class":3402,"line":3515},[2915,11655,3506],{"emptyLinePlaceholder":3505},[2915,11657,11658,11660],{"class":3402,"line":3520},[2915,11659,11456],{"class":3406},[2915,11661,11662],{"class":3410}," -un\n",[2915,11664,11665],{"class":3402,"line":5070},[2915,11666,3506],{"emptyLinePlaceholder":3505},[2915,11668,11669],{"class":3402,"line":5075},[2915,11670,11671],{"class":3511},"# Alle Gruppen-IDs des aktuellen Nutzers\n",[2915,11673,11674],{"class":3402,"line":5093},[2915,11675,3506],{"emptyLinePlaceholder":3505},[2915,11677,11678,11680],{"class":3402,"line":5098},[2915,11679,11456],{"class":3406},[2915,11681,11682],{"class":3410}," -G\n",[2915,11684,11685],{"class":3402,"line":5207},[2915,11686,3506],{"emptyLinePlaceholder":3505},[2915,11688,11689],{"class":3402,"line":5212},[2915,11690,11691],{"class":3511},"# Alle Gruppennamen (keine Nummern)\n",[2915,11693,11694],{"class":3402,"line":5218},[2915,11695,3506],{"emptyLinePlaceholder":3505},[2915,11697,11698,11700],{"class":3402,"line":5223},[2915,11699,11456],{"class":3406},[2915,11701,11702],{"class":3410}," -Gn\n",[11,11704,11706],{"id":11705},"ids-eines-anderen-benutzers-abfragen-als-root-oder-für-eigenen-account","IDs eines anderen Benutzers abfragen (als root oder für eigenen Account)",[16,11708,11709],{},"id www-data",[11,11711,11713],{"id":11712},"ids-des-benutzers-alice-prüfen-nützlich-zur-berechtigungsprüfung","IDs des Benutzers \"alice\" prüfen – nützlich zur Berechtigungsprüfung",[16,11715,11716],{},"id alice",[11,11718,11720],{"id":11719},"prüfen-ob-ein-benutzer-in-einer-bestimmten-gruppe-ist-zb-sudo","Prüfen ob ein Benutzer in einer bestimmten Gruppe ist (z.B. sudo)",[3392,11722,11724],{"className":3394,"code":11723,"language":3396,"meta":225,"style":225},"id -Gn alice | grep -w sudo\n\n",[3398,11725,11726],{"__ignoreMap":225},[2915,11727,11728,11730,11733,11736,11738,11740,11743],{"class":3402,"line":3403},[2915,11729,11456],{"class":3406},[2915,11731,11732],{"class":3410}," -Gn",[2915,11734,11735],{"class":3414}," alice",[2915,11737,7679],{"class":3533},[2915,11739,7682],{"class":3406},[2915,11741,11742],{"class":3410}," -w",[2915,11744,11745],{"class":3414}," sudo\n",[54,11747,11749],{"id":11748},"ausgabe","Ausgabe",[11,11751,11456],{"id":11752},"id-1",[3392,11754,11756],{"className":3394,"code":11755,"language":3396,"meta":225,"style":225},"uid=1000(matta) gid=1000(matta) Gruppen=1000(matta),4(adm),27(sudo),999(docker)\n\n# id -u\n\n",[3398,11757,11758,11826,11830],{"__ignoreMap":225},[2915,11759,11760,11763,11765,11768,11770,11773,11776,11778,11780,11782,11784,11787,11789,11791,11793,11795,11797,11800,11802,11805,11807,11810,11812,11815,11817,11820,11822,11824],{"class":3402,"line":3403},[2915,11761,11762],{"class":3529},"uid",[2915,11764,5137],{"class":3533},[2915,11766,11767],{"class":3414},"1000",[2915,11769,5140],{"class":3529},[2915,11771,11772],{"class":3406},"matta",[2915,11774,11775],{"class":3529},") gid",[2915,11777,5137],{"class":3533},[2915,11779,11767],{"class":3414},[2915,11781,5140],{"class":3529},[2915,11783,11772],{"class":3406},[2915,11785,11786],{"class":3529},") Gruppen",[2915,11788,5137],{"class":3533},[2915,11790,11767],{"class":3414},[2915,11792,5140],{"class":3529},[2915,11794,11772],{"class":3406},[2915,11796,5032],{"class":3529},[2915,11798,11799],{"class":3414},",4",[2915,11801,5140],{"class":3529},[2915,11803,11804],{"class":3406},"adm",[2915,11806,5032],{"class":3529},[2915,11808,11809],{"class":3414},",27",[2915,11811,5140],{"class":3529},[2915,11813,11814],{"class":3406},"sudo",[2915,11816,5032],{"class":3529},[2915,11818,11819],{"class":3414},",999",[2915,11821,5140],{"class":3529},[2915,11823,6792],{"class":3406},[2915,11825,5152],{"class":3529},[2915,11827,11828],{"class":3402,"line":1117},[2915,11829,3506],{"emptyLinePlaceholder":3505},[2915,11831,11832],{"class":3402,"line":1125},[2915,11833,11834],{"class":3511},"# id -u\n",[16,11836,11767],{},[11,11838,11840],{"id":11839},"id-un","id -un",[16,11842,11772],{},[11,11844,11846],{"id":11845},"id-gn","id -Gn",[16,11848,11849],{},"matta adm sudo docker",[11,11851,11709],{"id":11852},"id-www-data",[3392,11854,11856],{"className":3394,"code":11855,"language":3396,"meta":225,"style":225},"uid=33(www-data) gid=33(www-data) Gruppen=33(www-data)\n\n# id -Gn alice | grep -w sudo\n\n",[3398,11857,11858,11894,11898],{"__ignoreMap":225},[2915,11859,11860,11862,11864,11867,11869,11872,11874,11876,11878,11880,11882,11884,11886,11888,11890,11892],{"class":3402,"line":3403},[2915,11861,11762],{"class":3529},[2915,11863,5137],{"class":3533},[2915,11865,11866],{"class":3414},"33",[2915,11868,5140],{"class":3529},[2915,11870,11871],{"class":3406},"www-data",[2915,11873,11775],{"class":3529},[2915,11875,5137],{"class":3533},[2915,11877,11866],{"class":3414},[2915,11879,5140],{"class":3529},[2915,11881,11871],{"class":3406},[2915,11883,11786],{"class":3529},[2915,11885,5137],{"class":3533},[2915,11887,11866],{"class":3414},[2915,11889,5140],{"class":3529},[2915,11891,11871],{"class":3406},[2915,11893,5152],{"class":3529},[2915,11895,11896],{"class":3402,"line":1117},[2915,11897,3506],{"emptyLinePlaceholder":3505},[2915,11899,11900],{"class":3402,"line":1125},[2915,11901,11902],{"class":3511},"# id -Gn alice | grep -w sudo\n",[16,11904,11905],{},"sudo \u003C- alice ist in der sudo-Gruppe",[16,11907,11908,4850,11913,4850,11916,11920,11921,4850,11925,4850,11928,4850,11932],{},[257,11909,11910],{},[26,11911,11912],{},"Hinweis:",[257,11914,11915],{},"Mit",[257,11917,11918],{},[26,11919,11456],{}," *lässt sich schnell überprüfen ob ein Benutzer Sudo-Rechte hat (*",[257,11922,11923],{},[26,11924,11814],{},[257,11926,11927],{},"in Gruppen) oder zu Dienst-Gruppen wie",[257,11929,11930],{},[26,11931,6792],{},[257,11933,11934],{},"gehört.",[11,11936,11937],{"id":11937},"umask",[16,11939,11940,4850,11942,11944,11945,11948],{},[26,11941,11461],{},[26,11943,11937],{}," (User file-creation Mode Mask) bestimmt, welche Berechtigungsbits beim Erstellen neuer Dateien und Verzeichnisse ",[26,11946,11947],{},"automatisch entfernt"," werden. Sie gilt für die aktuelle Shell-Sitzung und alle daraus gestarteten Prozesse.",[16,11950,11951,4850,11953],{},[26,11952,6691],{},[26,11954,11955,11956,4850,11958],{},"umask ",[2915,11957,11472],{},[2915,11959,11960],{},"MASKE",[54,11962,11964],{"id":11963},"funktionsprinzip","Funktionsprinzip",[16,11966,11967,11968,11971],{},"Die umask wirkt als ",[26,11969,11970],{},"Subtraktion"," von den maximalen Standardrechten:",[16,11973,11974,11975,11977,11978,11980],{},"Datei Verzeichnis",[5885,11976],{},"\nMaximale Rechte: 666 777",[5885,11979],{},"\nminus umask: -022 -022",[11982,11983],"hr",{},[16,11985,11986],{},"Ergebnis: 644 755",[16,11988,11989,4850,11994],{},[257,11990,11991],{},[26,11992,11993],{},"Wichtig:",[257,11995,11996],{},"Bei Dateien ist das Ausführ-Bit (1) grundsätzlich nicht im Maximum enthalten. Dateien werden nie direkt als ausführbar erstellt.",[54,11998,11532],{"id":11999},"flags-1",[645,12001,12002,12014],{},[648,12003,12004],{},[651,12005,12006,12010],{},[654,12007,12008],{},[26,12009,11543],{},[654,12011,12012],{},[26,12013,5483],{},[670,12015,12016,12024],{},[651,12017,12018,12021],{},[675,12019,12020],{},"-S",[675,12022,12023],{},"Symbolische Darstellung ausgeben (z. B. u=rwx,g=rx,o=rx)",[651,12025,12026,12029],{},[675,12027,12028],{},"-p",[675,12030,12031],{},"Aktuelle umask als umask-Befehl ausgeben (für Shell-Skripte \u002F Sicherung geeignet)",[54,12033,12035],{"id":12034},"häufige-umask-werte","Häufige umask-Werte",[645,12037,12038,12060],{},[648,12039,12040],{},[651,12041,12042,12046,12050,12055],{},[654,12043,12044],{},[26,12045,11937],{},[654,12047,12048],{},[26,12049,5547],{},[654,12051,12052],{},[26,12053,12054],{},"Verzeichnisse",[654,12056,12057],{},[26,12058,12059],{},"Typischer Einsatz",[670,12061,12062,12076,12090,12104],{},[651,12063,12064,12067,12070,12073],{},[675,12065,12066],{},"0022",[675,12068,12069],{},"rw-r--r-- (644)",[675,12071,12072],{},"rwxr-xr-x (755)",[675,12074,12075],{},"Standard auf den meisten Systemen",[651,12077,12078,12081,12084,12087],{},[675,12079,12080],{},"0027",[675,12082,12083],{},"rw-r----- (640)",[675,12085,12086],{},"rwxr-x--- (750)",[675,12088,12089],{},"Sicherere Server-Umgebungen",[651,12091,12092,12095,12098,12101],{},[675,12093,12094],{},"0077",[675,12096,12097],{},"rw------- (600)",[675,12099,12100],{},"rwx------ (700)",[675,12102,12103],{},"Sehr restriktiv (nur Eigentümer)",[651,12105,12106,12109,12112,12115],{},[675,12107,12108],{},"0002",[675,12110,12111],{},"rw-rw-r-- (664)",[675,12113,12114],{},"rwxrwxr-x (775)",[675,12116,12117],{},"Kollaborative Umgebungen",[54,12119,8676],{"id":12120},"beispiele-1",[11,12122,12124],{"id":12123},"aktuelle-umask-numerisch-anzeigen","Aktuelle umask numerisch anzeigen",[3392,12126,12128],{"className":3394,"code":12127,"language":3396,"meta":225,"style":225},"umask\n\n# Aktuelle umask symbolisch anzeigen\n\numask -S\n\n# umask auf 027 setzen – gilt ab diesem Moment für alle neuen Dateien\n\numask 027\n\n# So prüfen welche Dateirechte mit der aktuellen umask entstehen\n\numask 022\n\ntouch testdatei.txt\n\nls -l testdatei.txt\n\n# umask dauerhaft setzen: in ~\u002F.bashrc oder \u002Fetc\u002Fprofile eintragen\n\necho \"umask 027\" >> ~\u002F.bashrc\n\n# umask als Befehl ausgeben (Skript-Sicherung)\n\numask -p\n\n",[3398,12129,12130,12135,12139,12144,12148,12155,12159,12164,12168,12175,12179,12184,12188,12195,12199,12206,12210,12219,12223,12228,12232,12245,12249,12254,12258],{"__ignoreMap":225},[2915,12131,12132],{"class":3402,"line":3403},[2915,12133,12134],{"class":3410},"umask\n",[2915,12136,12137],{"class":3402,"line":1117},[2915,12138,3506],{"emptyLinePlaceholder":3505},[2915,12140,12141],{"class":3402,"line":1125},[2915,12142,12143],{"class":3511},"# Aktuelle umask symbolisch anzeigen\n",[2915,12145,12146],{"class":3402,"line":3515},[2915,12147,3506],{"emptyLinePlaceholder":3505},[2915,12149,12150,12152],{"class":3402,"line":3520},[2915,12151,11937],{"class":3410},[2915,12153,12154],{"class":3410}," -S\n",[2915,12156,12157],{"class":3402,"line":5070},[2915,12158,3506],{"emptyLinePlaceholder":3505},[2915,12160,12161],{"class":3402,"line":5075},[2915,12162,12163],{"class":3511},"# umask auf 027 setzen – gilt ab diesem Moment für alle neuen Dateien\n",[2915,12165,12166],{"class":3402,"line":5093},[2915,12167,3506],{"emptyLinePlaceholder":3505},[2915,12169,12170,12172],{"class":3402,"line":5098},[2915,12171,11937],{"class":3410},[2915,12173,12174],{"class":3410}," 027\n",[2915,12176,12177],{"class":3402,"line":5207},[2915,12178,3506],{"emptyLinePlaceholder":3505},[2915,12180,12181],{"class":3402,"line":5212},[2915,12182,12183],{"class":3511},"# So prüfen welche Dateirechte mit der aktuellen umask entstehen\n",[2915,12185,12186],{"class":3402,"line":5218},[2915,12187,3506],{"emptyLinePlaceholder":3505},[2915,12189,12190,12192],{"class":3402,"line":5223},[2915,12191,11937],{"class":3410},[2915,12193,12194],{"class":3410}," 022\n",[2915,12196,12197],{"class":3402,"line":5229},[2915,12198,3506],{"emptyLinePlaceholder":3505},[2915,12200,12201,12203],{"class":3402,"line":5253},[2915,12202,10189],{"class":3406},[2915,12204,12205],{"class":3414}," testdatei.txt\n",[2915,12207,12208],{"class":3402,"line":5266},[2915,12209,3506],{"emptyLinePlaceholder":3505},[2915,12211,12212,12215,12217],{"class":3402,"line":5721},[2915,12213,12214],{"class":3406},"ls",[2915,12216,9029],{"class":3410},[2915,12218,12205],{"class":3414},[2915,12220,12221],{"class":3402,"line":9401},[2915,12222,3506],{"emptyLinePlaceholder":3505},[2915,12224,12225],{"class":3402,"line":9406},[2915,12226,12227],{"class":3511},"# umask dauerhaft setzen: in ~\u002F.bashrc oder \u002Fetc\u002Fprofile eintragen\n",[2915,12229,12230],{"class":3402,"line":9411},[2915,12231,3506],{"emptyLinePlaceholder":3505},[2915,12233,12234,12236,12239,12242],{"class":3402,"line":9416},[2915,12235,5059],{"class":3410},[2915,12237,12238],{"class":3414}," \"umask 027\"",[2915,12240,12241],{"class":3533}," >>",[2915,12243,12244],{"class":3414}," ~\u002F.bashrc\n",[2915,12246,12247],{"class":3402,"line":9428},[2915,12248,3506],{"emptyLinePlaceholder":3505},[2915,12250,12251],{"class":3402,"line":9433},[2915,12252,12253],{"class":3511},"# umask als Befehl ausgeben (Skript-Sicherung)\n",[2915,12255,12256],{"class":3402,"line":9454},[2915,12257,3506],{"emptyLinePlaceholder":3505},[2915,12259,12260,12262],{"class":3402,"line":9459},[2915,12261,11937],{"class":3410},[2915,12263,12264],{"class":3410}," -p\n",[11,12266,12268],{"id":12267},"temporäre-umask-in-einem-subshell-block-nur-in-dieser-subshell-aktiv","Temporäre umask in einem Subshell-Block (nur in dieser Subshell aktiv)",[16,12270,12271],{},"(umask 077; touch geheim.txt; ls -l geheim.txt)",[54,12273,11749],{"id":12274},"ausgabe-1",[11,12276,11937],{"id":12277},"umask-1",[16,12279,12066],{},[11,12281,12283],{"id":12282},"umask-s","umask -S",[3392,12285,12287],{"className":3394,"code":12286,"language":3396,"meta":225,"style":225},"u=rwx,g=rx,o=rx\n\n# umask 027 ; umask -S\n\nu=rwx,g=rx,o=\n\n# umask -p\n\numask 0022\n\n# touch testdatei.txt ; ls -l testdatei.txt (bei umask 022)\n\n",[3398,12288,12289,12315,12319,12324,12328,12347,12351,12356,12360,12367,12371],{"__ignoreMap":225},[2915,12290,12291,12294,12296,12299,12302,12304,12307,12310,12312],{"class":3402,"line":3403},[2915,12292,12293],{"class":3529},"u",[2915,12295,5137],{"class":3533},[2915,12297,12298],{"class":3414},"rwx,",[2915,12300,12301],{"class":3529},"g",[2915,12303,5137],{"class":3533},[2915,12305,12306],{"class":3414},"rx,",[2915,12308,12309],{"class":3529},"o",[2915,12311,5137],{"class":3533},[2915,12313,12314],{"class":3414},"rx\n",[2915,12316,12317],{"class":3402,"line":1117},[2915,12318,3506],{"emptyLinePlaceholder":3505},[2915,12320,12321],{"class":3402,"line":1125},[2915,12322,12323],{"class":3511},"# umask 027 ; umask -S\n",[2915,12325,12326],{"class":3402,"line":3515},[2915,12327,3506],{"emptyLinePlaceholder":3505},[2915,12329,12330,12332,12334,12336,12338,12340,12342,12344],{"class":3402,"line":3520},[2915,12331,12293],{"class":3529},[2915,12333,5137],{"class":3533},[2915,12335,12298],{"class":3414},[2915,12337,12301],{"class":3529},[2915,12339,5137],{"class":3533},[2915,12341,12306],{"class":3414},[2915,12343,12309],{"class":3529},[2915,12345,12346],{"class":3533},"=\n",[2915,12348,12349],{"class":3402,"line":5070},[2915,12350,3506],{"emptyLinePlaceholder":3505},[2915,12352,12353],{"class":3402,"line":5075},[2915,12354,12355],{"class":3511},"# umask -p\n",[2915,12357,12358],{"class":3402,"line":5093},[2915,12359,3506],{"emptyLinePlaceholder":3505},[2915,12361,12362,12364],{"class":3402,"line":5098},[2915,12363,11937],{"class":3410},[2915,12365,12366],{"class":3410}," 0022\n",[2915,12368,12369],{"class":3402,"line":5207},[2915,12370,3506],{"emptyLinePlaceholder":3505},[2915,12372,12373],{"class":3402,"line":5212},[2915,12374,12375],{"class":3511},"# touch testdatei.txt ; ls -l testdatei.txt (bei umask 022)\n",[16,12377,12378],{},"-rw-r--r-- 1 matta matta 0 Apr 29 10:00 testdatei.txt",[11,12380,12271],{"id":12381},"umask-077-touch-geheimtxt-ls-l-geheimtxt",[16,12383,12384],{},"-rw------- 1 matta matta 0 Apr 29 10:00 geheim.txt",[16,12386,12387,4850,12392,4850,12395,4850,12400,4850,12403,4850,12408,4850,12411,4850,12416],{},[257,12388,12389],{},[26,12390,12391],{},"Tipp:",[257,12393,12394],{},"Die umask gilt nur für die aktuelle Shell-Sitzung. Soll sie dauerhaft aktiv sein, muss sie in",[257,12396,12397],{},[26,12398,12399],{},"\u002Fetc\u002Fprofile",[257,12401,12402],{},"(systemweit) oder",[257,12404,12405],{},[26,12406,12407],{},"~\u002F.bashrc",[257,12409,12410],{},"\u002F",[257,12412,12413],{},[26,12414,12415],{},"~\u002F.profile",[257,12417,12418],{},"(benutzerspezifisch) eingetragen werden.",[11,12420,12421],{"id":12421},"chown",[16,12423,12424,12426,12427,12430,12431,12434,12435,12438],{},[26,12425,11461],{}," Ändert den Eigentümer (",[26,12428,12429],{},"user",") und\u002Foder die Gruppe (",[26,12432,12433],{},"group",") einer Datei oder eines Verzeichnisses. Nur ",[26,12436,12437],{},"root"," darf beliebige Eigentümer setzen; normale Benutzer können nur Dateien ihrer eigenen Gruppe zuweisen.",[16,12440,12441,4850,12443],{},[26,12442,6691],{},[26,12444,12445,12446,12448,12449,12454],{},"chown ",[2915,12447,11472],{}," [EIGENTÜMER]",[2915,12450,12451],{},[12452,12453],"gruppe",{}," DATEI...",[54,12456,12458],{"id":12457},"syntax-varianten","Syntax-Varianten",[645,12460,12461,12475],{},[648,12462,12463],{},[651,12464,12465,12470],{},[654,12466,12467],{},[26,12468,12469],{},"Syntax",[654,12471,12472],{},[26,12473,12474],{},"Wirkung",[670,12476,12477,12485,12493,12501,12512],{},[651,12478,12479,12482],{},[675,12480,12481],{},"chown alice datei",[675,12483,12484],{},"Nur Eigentümer auf alice setzen",[651,12486,12487,12490],{},[675,12488,12489],{},"chown alice:dev datei",[675,12491,12492],{},"Eigentümer auf alice, Gruppe auf dev setzen",[651,12494,12495,12498],{},[675,12496,12497],{},"chown alice: datei",[675,12499,12500],{},"Eigentümer auf alice, Gruppe auf alice's Primärgruppe",[651,12502,12503,12509],{},[675,12504,12445,12505,12508],{},[12506,12507],"dev",{}," datei",[675,12510,12511],{},"Nur Gruppe ändern (Eigentümer unverändert)",[651,12513,12514,12517],{},[675,12515,12516],{},"chown 1001:1002 datei",[675,12518,12519],{},"Per numerischer UID:GID setzen",[54,12521,11532],{"id":12522},"flags-2",[645,12524,12525,12537],{},[648,12526,12527],{},[651,12528,12529,12533],{},[654,12530,12531],{},[26,12532,11543],{},[654,12534,12535],{},[26,12536,5483],{},[670,12538,12539,12547,12554,12561,12568,12576,12584,12592,12600],{},[651,12540,12541,12544],{},[675,12542,12543],{},"-R",[675,12545,12546],{},"Rekursiv: Verzeichnis und alle enthaltenen Dateien\u002FUnterverzeichnisse",[651,12548,12549,12551],{},[675,12550,7734],{},[675,12552,12553],{},"Verbose – zeigt jede durchgeführte Änderung an",[651,12555,12556,12558],{},[675,12557,7765],{},[675,12559,12560],{},"Wie -v, aber zeigt nur Zeilen mit tatsächlichen Änderungen",[651,12562,12563,12565],{},[675,12564,9329],{},[675,12566,12567],{},"Fehlermeldungen unterdrücken (force silent)",[651,12569,12570,12573],{},[675,12571,12572],{},"-h",[675,12574,12575],{},"Bei symbolischen Links: den Link selbst ändern, nicht das Ziel",[651,12577,12578,12581],{},[675,12579,12580],{},"--reference=REF",[675,12582,12583],{},"Eigentümer und Gruppe von der Datei REF übernehmen",[651,12585,12586,12589],{},[675,12587,12588],{},"--from=EIGEN:GRP",[675,12590,12591],{},"Nur Dateien ändern die momentan exakt diesen Eigentümer\u002FGruppe haben",[651,12593,12594,12597],{},[675,12595,12596],{},"-L",[675,12598,12599],{},"Bei -R: symbolische Links in Verzeichnisse verfolgen",[651,12601,12602,12605],{},[675,12603,12604],{},"-P",[675,12606,12607],{},"Bei -R: keine symbolischen Links verfolgen (Standard)",[54,12609,8676],{"id":12610},"beispiele-2",[11,12612,12614],{"id":12613},"eigentümer-einer-einzelnen-datei-ändern","Eigentümer einer einzelnen Datei ändern",[3392,12616,12618],{"className":3394,"code":12617,"language":3396,"meta":225,"style":225},"chown alice datei.txt\n\n# Eigentümer und Gruppe gleichzeitig setzen\n\nchown alice:entwickler datei.txt\n\n# Nur die Gruppe einer Datei ändern\n\nchown :webteam \u002Fvar\u002Fwww\u002Fhtml\u002Findex.html\n\n# Rekursiv für ein Webserver-Verzeichnis\n\nchown -R www-data:www-data \u002Fvar\u002Fwww\u002Fhtml\u002F\n\n# Verbose: Jede Änderung protokollieren\n\nchown -Rv matta:matta \u002Fhome\u002Fmatta\u002F\n\n# Eigentümer nur ändern wenn aktuell root gehört\n\nchown --from=root:root alice:alice \u002Fhome\u002Falice\u002Fwichtig.txt\n\n# Eigentümer\u002FGruppe von einer anderen Datei übernehmen\n\nchown --reference=\u002Fetc\u002Fpasswd \u002Ftmp\u002Fneue_passwd_kopie\n\n# Symbolischen Link selbst (nicht Ziel) ändern\n\nchown -h alice symlink_auf_datei\n\n# Numerische UID und GID verwenden\n\nchown 1000:1000 datei.txt\n\n",[3398,12619,12620,12628,12632,12637,12641,12650,12654,12659,12663,12673,12677,12682,12686,12699,12703,12708,12712,12725,12729,12734,12738,12751,12755,12760,12764,12774,12778,12783,12787,12799,12803,12808,12812],{"__ignoreMap":225},[2915,12621,12622,12624,12626],{"class":3402,"line":3403},[2915,12623,12421],{"class":3406},[2915,12625,11735],{"class":3414},[2915,12627,7698],{"class":3414},[2915,12629,12630],{"class":3402,"line":1117},[2915,12631,3506],{"emptyLinePlaceholder":3505},[2915,12633,12634],{"class":3402,"line":1125},[2915,12635,12636],{"class":3511},"# Eigentümer und Gruppe gleichzeitig setzen\n",[2915,12638,12639],{"class":3402,"line":3515},[2915,12640,3506],{"emptyLinePlaceholder":3505},[2915,12642,12643,12645,12648],{"class":3402,"line":3520},[2915,12644,12421],{"class":3406},[2915,12646,12647],{"class":3414}," alice:entwickler",[2915,12649,7698],{"class":3414},[2915,12651,12652],{"class":3402,"line":5070},[2915,12653,3506],{"emptyLinePlaceholder":3505},[2915,12655,12656],{"class":3402,"line":5075},[2915,12657,12658],{"class":3511},"# Nur die Gruppe einer Datei ändern\n",[2915,12660,12661],{"class":3402,"line":5093},[2915,12662,3506],{"emptyLinePlaceholder":3505},[2915,12664,12665,12667,12670],{"class":3402,"line":5098},[2915,12666,12421],{"class":3406},[2915,12668,12669],{"class":3414}," :webteam",[2915,12671,12672],{"class":3414}," \u002Fvar\u002Fwww\u002Fhtml\u002Findex.html\n",[2915,12674,12675],{"class":3402,"line":5207},[2915,12676,3506],{"emptyLinePlaceholder":3505},[2915,12678,12679],{"class":3402,"line":5212},[2915,12680,12681],{"class":3511},"# Rekursiv für ein Webserver-Verzeichnis\n",[2915,12683,12684],{"class":3402,"line":5218},[2915,12685,3506],{"emptyLinePlaceholder":3505},[2915,12687,12688,12690,12693,12696],{"class":3402,"line":5223},[2915,12689,12421],{"class":3406},[2915,12691,12692],{"class":3410}," -R",[2915,12694,12695],{"class":3414}," www-data:www-data",[2915,12697,12698],{"class":3414}," \u002Fvar\u002Fwww\u002Fhtml\u002F\n",[2915,12700,12701],{"class":3402,"line":5229},[2915,12702,3506],{"emptyLinePlaceholder":3505},[2915,12704,12705],{"class":3402,"line":5253},[2915,12706,12707],{"class":3511},"# Verbose: Jede Änderung protokollieren\n",[2915,12709,12710],{"class":3402,"line":5266},[2915,12711,3506],{"emptyLinePlaceholder":3505},[2915,12713,12714,12716,12719,12722],{"class":3402,"line":5721},[2915,12715,12421],{"class":3406},[2915,12717,12718],{"class":3410}," -Rv",[2915,12720,12721],{"class":3414}," matta:matta",[2915,12723,12724],{"class":3414}," \u002Fhome\u002Fmatta\u002F\n",[2915,12726,12727],{"class":3402,"line":9401},[2915,12728,3506],{"emptyLinePlaceholder":3505},[2915,12730,12731],{"class":3402,"line":9406},[2915,12732,12733],{"class":3511},"# Eigentümer nur ändern wenn aktuell root gehört\n",[2915,12735,12736],{"class":3402,"line":9411},[2915,12737,3506],{"emptyLinePlaceholder":3505},[2915,12739,12740,12742,12745,12748],{"class":3402,"line":9416},[2915,12741,12421],{"class":3406},[2915,12743,12744],{"class":3410}," --from=root:root",[2915,12746,12747],{"class":3414}," alice:alice",[2915,12749,12750],{"class":3414}," \u002Fhome\u002Falice\u002Fwichtig.txt\n",[2915,12752,12753],{"class":3402,"line":9428},[2915,12754,3506],{"emptyLinePlaceholder":3505},[2915,12756,12757],{"class":3402,"line":9433},[2915,12758,12759],{"class":3511},"# Eigentümer\u002FGruppe von einer anderen Datei übernehmen\n",[2915,12761,12762],{"class":3402,"line":9454},[2915,12763,3506],{"emptyLinePlaceholder":3505},[2915,12765,12766,12768,12771],{"class":3402,"line":9459},[2915,12767,12421],{"class":3406},[2915,12769,12770],{"class":3410}," --reference=\u002Fetc\u002Fpasswd",[2915,12772,12773],{"class":3414}," \u002Ftmp\u002Fneue_passwd_kopie\n",[2915,12775,12776],{"class":3402,"line":9464},[2915,12777,3506],{"emptyLinePlaceholder":3505},[2915,12779,12780],{"class":3402,"line":9469},[2915,12781,12782],{"class":3511},"# Symbolischen Link selbst (nicht Ziel) ändern\n",[2915,12784,12785],{"class":3402,"line":9479},[2915,12786,3506],{"emptyLinePlaceholder":3505},[2915,12788,12789,12791,12794,12796],{"class":3402,"line":9484},[2915,12790,12421],{"class":3406},[2915,12792,12793],{"class":3410}," -h",[2915,12795,11735],{"class":3414},[2915,12797,12798],{"class":3414}," symlink_auf_datei\n",[2915,12800,12801],{"class":3402,"line":9489},[2915,12802,3506],{"emptyLinePlaceholder":3505},[2915,12804,12805],{"class":3402,"line":9494},[2915,12806,12807],{"class":3511},"# Numerische UID und GID verwenden\n",[2915,12809,12810],{"class":3402,"line":9504},[2915,12811,3506],{"emptyLinePlaceholder":3505},[2915,12813,12814,12816,12819],{"class":3402,"line":9509},[2915,12815,12421],{"class":3406},[2915,12817,12818],{"class":3414}," 1000:1000",[2915,12820,7698],{"class":3414},[54,12822,11749],{"id":12823},"ausgabe-2",[11,12825,12827],{"id":12826},"chown-v-alicealice-homealicetesttxt","chown -v alice:alice \u002Fhome\u002Falice\u002Ftest.txt",[16,12829,12830],{},"Eigentümer von '\u002Fhome\u002Falice\u002Ftest.txt' von root:root zu alice:alice geändert",[11,12832,12834],{"id":12833},"chown-vc-www-datawww-data-varwwwhtml","chown -Vc www-data:www-data \u002Fvar\u002Fwww\u002Fhtml\u002F",[16,12836,12837],{},"Eigentümer von '\u002Fvar\u002Fwww\u002Fhtml\u002F' von matta:matta zu www-data:www-data geändert",[16,12839,12840],{},"Eigentümer von '\u002Fvar\u002Fwww\u002Fhtml\u002Findex.html' von matta:matta zu www-data:www-data geändert",[16,12842,12843],{},"Eigentümer von '\u002Fvar\u002Fwww\u002Fhtml\u002Fstyle.css' von matta:matta zu www-data:www-data geändert",[16,12845,12846,4850,12851,4850,12854,4850,12859,4850,12862,4850,12866],{},[257,12847,12848],{},[26,12849,12850],{},"Sicherheitshinweis:",[257,12852,12853],{},"Sei bei rekursivem",[257,12855,12856],{},[26,12857,12858],{},"chown -R",[257,12860,12861],{},"auf",[257,12863,12864],{},[26,12865,12410],{},[257,12867,12868],{},"oder wichtigen Systemverzeichnissen äußerst vorsichtig – ein falsches Ziel kann das System unbrauchbar machen.",[11,12870,12871],{"id":12871},"chmod",[16,12873,12874,12876,12877,7379,12880,6195,12883,6584],{},[26,12875,11461],{}," Ändert die Zugriffsrechte (Berechtigungen) von Dateien und Verzeichnissen. Die Rechte werden für drei Klassen vergeben: ",[26,12878,12879],{},"Eigentümer (u)",[26,12881,12882],{},"Gruppe (g)",[26,12884,12885],{},"Andere (o)",[16,12887,12888,4850,12890],{},[26,12889,6691],{},[26,12891,12892,12893,12895],{},"chmod ",[2915,12894,11472],{}," MODUS DATEI...",[54,12897,12899],{"id":12898},"bedeutung-der-rechte","Bedeutung der Rechte",[645,12901,12902,12931],{},[648,12903,12904],{},[651,12905,12906,12911,12916,12921,12926],{},[654,12907,12908],{},[26,12909,12910],{},"Recht",[654,12912,12913],{},[26,12914,12915],{},"Zeichen",[654,12917,12918],{},[26,12919,12920],{},"Oktal",[654,12922,12923],{},[26,12924,12925],{},"Auf Dateien",[654,12927,12928],{},[26,12929,12930],{},"Auf Verzeichnisse",[670,12932,12933,12949,12966],{},[651,12934,12935,12938,12941,12943,12946],{},[675,12936,12937],{},"Lesen",[675,12939,12940],{},"r",[675,12942,1633],{},[675,12944,12945],{},"Dateiinhalt lesen",[675,12947,12948],{},"Verzeichnisinhalt auflisten (ls)",[651,12950,12951,12954,12957,12960,12963],{},[675,12952,12953],{},"Schreiben",[675,12955,12956],{},"w",[675,12958,12959],{},"2",[675,12961,12962],{},"Datei bearbeiten\u002Flöschen",[675,12964,12965],{},"Dateien erstellen\u002Flöschen im Verz.",[651,12967,12968,12971,12974,12977,12980],{},[675,12969,12970],{},"Ausführen",[675,12972,12973],{},"x",[675,12975,12976],{},"1",[675,12978,12979],{},"Datei ausführen",[675,12981,12982],{},"In Verzeichnis wechseln (cd)",[54,12984,12986],{"id":12985},"oktalnotation-vollständige-tabelle","Oktalnotation – vollständige Tabelle",[645,12988,12989,13011],{},[648,12990,12991],{},[651,12992,12993,12997,13002,13007],{},[654,12994,12995],{},[26,12996,12920],{},[654,12998,12999],{},[26,13000,13001],{},"Binär",[654,13003,13004],{},[26,13005,13006],{},"Symbolisch",[654,13008,13009],{},[26,13010,5483],{},[670,13012,13013,13027,13041,13055,13067,13081,13094,13107],{},[651,13014,13015,13018,13021,13024],{},[675,13016,13017],{},"7",[675,13019,13020],{},"111",[675,13022,13023],{},"rwx",[675,13025,13026],{},"Lesen, Schreiben, Ausführen",[651,13028,13029,13032,13035,13038],{},[675,13030,13031],{},"6",[675,13033,13034],{},"110",[675,13036,13037],{},"rw-",[675,13039,13040],{},"Lesen, Schreiben",[651,13042,13043,13046,13049,13052],{},[675,13044,13045],{},"5",[675,13047,13048],{},"101",[675,13050,13051],{},"r-x",[675,13053,13054],{},"Lesen, Ausführen",[651,13056,13057,13059,13061,13064],{},[675,13058,1633],{},[675,13060,4711],{},[675,13062,13063],{},"r--",[675,13065,13066],{},"Nur Lesen",[651,13068,13069,13072,13075,13078],{},[675,13070,13071],{},"3",[675,13073,13074],{},"011",[675,13076,13077],{},"-wx",[675,13079,13080],{},"Schreiben, Ausführen",[651,13082,13083,13085,13088,13091],{},[675,13084,12959],{},[675,13086,13087],{},"010",[675,13089,13090],{},"-w-",[675,13092,13093],{},"Nur Schreiben",[651,13095,13096,13098,13101,13104],{},[675,13097,12976],{},[675,13099,13100],{},"001",[675,13102,13103],{},"--x",[675,13105,13106],{},"Nur Ausführen",[651,13108,13109,13111,13114,13117],{},[675,13110,11501],{},[675,13112,13113],{},"000",[675,13115,13116],{},"---",[675,13118,13119],{},"Keine Rechte",[54,13121,13123],{"id":13122},"symbolische-notation","Symbolische Notation",[645,13125,13126,13138],{},[648,13127,13128],{},[651,13129,13130,13134],{},[654,13131,13132],{},[26,13133,12915],{},[654,13135,13136],{},[26,13137,5483],{},[670,13139,13140,13147,13154,13161,13168,13176,13183,13190,13197,13204,13211,13219,13226],{},[651,13141,13142,13144],{},[675,13143,12293],{},[675,13145,13146],{},"Eigentümer (user\u002Fowner)",[651,13148,13149,13151],{},[675,13150,12301],{},[675,13152,13153],{},"Gruppe (group)",[651,13155,13156,13158],{},[675,13157,12309],{},[675,13159,13160],{},"Andere (others)",[651,13162,13163,13165],{},[675,13164,3432],{},[675,13166,13167],{},"Alle (all = u+g+o)",[651,13169,13170,13173],{},[675,13171,13172],{},"+",[675,13174,13175],{},"Recht hinzufügen",[651,13177,13178,13180],{},[675,13179,3523],{},[675,13181,13182],{},"Recht entfernen",[651,13184,13185,13187],{},[675,13186,5137],{},[675,13188,13189],{},"Recht exakt setzen (andere Bits werden gelöscht)",[651,13191,13192,13194],{},[675,13193,12940],{},[675,13195,13196],{},"Lesen (read = 4)",[651,13198,13199,13201],{},[675,13200,12956],{},[675,13202,13203],{},"Schreiben (write = 2)",[651,13205,13206,13208],{},[675,13207,12973],{},[675,13209,13210],{},"Ausführen (execute = 1)",[651,13212,13213,13216],{},[675,13214,13215],{},"X",[675,13217,13218],{},"Ausführen nur setzen wenn bereits woanders x gesetzt ist",[651,13220,13221,13223],{},[675,13222,11274],{},[675,13224,13225],{},"SUID \u002F SGID setzen",[651,13227,13228,13231],{},[675,13229,13230],{},"t",[675,13232,13233],{},"Sticky Bit setzen",[54,13235,11532],{"id":13236},"flags-3",[645,13238,13239,13251],{},[648,13240,13241],{},[651,13242,13243,13247],{},[654,13244,13245],{},[26,13246,11543],{},[654,13248,13249],{},[26,13250,5483],{},[670,13252,13253,13260,13267,13274,13281],{},[651,13254,13255,13257],{},[675,13256,12543],{},[675,13258,13259],{},"Rekursiv – alle Dateien und Unterverzeichnisse",[651,13261,13262,13264],{},[675,13263,7734],{},[675,13265,13266],{},"Verbose – jede Änderung ausgeben",[651,13268,13269,13271],{},[675,13270,7765],{},[675,13272,13273],{},"Nur tatsächliche Änderungen ausgeben",[651,13275,13276,13278],{},[675,13277,9329],{},[675,13279,13280],{},"Fehlermeldungen unterdrücken",[651,13282,13283,13286],{},[675,13284,13285],{},"--reference=DATEI",[675,13287,13288],{},"Rechte von Referenzdatei übernehmen",[54,13290,13292],{"id":13291},"typische-oktalwerte","Typische Oktalwerte",[645,13294,13295,13311],{},[648,13296,13297],{},[651,13298,13299,13303,13307],{},[654,13300,13301],{},[26,13302,12920],{},[654,13304,13305],{},[26,13306,13006],{},[654,13308,13309],{},[26,13310,8817],{},[670,13312,13313,13324,13335,13346,13357,13368,13379],{},[651,13314,13315,13318,13321],{},[675,13316,13317],{},"644",[675,13319,13320],{},"rw-r--r--",[675,13322,13323],{},"Standard für normale Dateien",[651,13325,13326,13329,13332],{},[675,13327,13328],{},"755",[675,13330,13331],{},"rwxr-xr-x",[675,13333,13334],{},"Standard für Verzeichnisse\u002FSkripte",[651,13336,13337,13340,13343],{},[675,13338,13339],{},"600",[675,13341,13342],{},"rw-------",[675,13344,13345],{},"Private Schlüssel (.ssh\u002Fid_rsa)",[651,13347,13348,13351,13354],{},[675,13349,13350],{},"700",[675,13352,13353],{},"rwx------",[675,13355,13356],{},"Private Verzeichnisse",[651,13358,13359,13362,13365],{},[675,13360,13361],{},"664",[675,13363,13364],{},"rw-rw-r--",[675,13366,13367],{},"Gemeinsame Projektdateien",[651,13369,13370,13373,13376],{},[675,13371,13372],{},"777",[675,13374,13375],{},"rwxrwxrwx",[675,13377,13378],{},"Alle Rechte für alle (gefährlich!)",[651,13380,13381,13384,13387],{},[675,13382,13383],{},"640",[675,13385,13386],{},"rw-r-----",[675,13388,13389],{},"Sensible Konfigdateien",[54,13391,8676],{"id":13392},"beispiele-3",[11,13394,13396],{"id":13395},"oktal-typisch-für-shell-skripte","Oktal: typisch für Shell-Skripte",[3392,13398,13400],{"className":3394,"code":13399,"language":3396,"meta":225,"style":225},"chmod 755 skript.sh\n\n# Oktal: typisch für normale Dateien\n\nchmod 644 README.txt\n\n# Oktal: nur Owner darf lesen und schreiben (z.B. SSH-Key)\n\nchmod 600 ~\u002F.ssh\u002Fid_rsa\n\n# Symbolisch: Ausführrecht für alle hinzufügen\n\nchmod a+x skript.sh\n\n# Symbolisch: Schreibrecht für Andere entfernen\n\nchmod o-w datei.txt\n\n# Symbolisch: Alle Rechte exakt setzen (löscht alles was nicht angegeben)\n\nchmod u=rwx,g=rx,o= private.sh\n\n# Symbolisch: Gruppe Schreibrecht hinzufügen\n\nchmod g+w projekt\u002F\n\n# Rekursiv für Webverzeichnis\n\nchmod -R 755 \u002Fvar\u002Fwww\u002Fhtml\u002F\n\n# Nur Ausführrecht setzen wenn es bereits für jemanden gesetzt war\n\nchmod -R a+X verzeichnis\u002F\n\n# Rechte von anderer Datei übernehmen\n\nchmod --reference=\u002Fetc\u002Fpasswd \u002Ftmp\u002Fmeine_passwdkopie\n\n# Verbose anzeigen was geändert wird\n\nchmod -vc 644 *.txt\n\n",[3398,13401,13402,13412,13416,13421,13425,13435,13439,13444,13448,13458,13462,13467,13471,13480,13484,13489,13493,13502,13506,13511,13515,13525,13529,13534,13538,13548,13552,13557,13561,13571,13575,13580,13584,13596,13600,13605,13609,13618,13622,13627,13631],{"__ignoreMap":225},[2915,13403,13404,13406,13409],{"class":3402,"line":3403},[2915,13405,12871],{"class":3406},[2915,13407,13408],{"class":3410}," 755",[2915,13410,13411],{"class":3414}," skript.sh\n",[2915,13413,13414],{"class":3402,"line":1117},[2915,13415,3506],{"emptyLinePlaceholder":3505},[2915,13417,13418],{"class":3402,"line":1125},[2915,13419,13420],{"class":3511},"# Oktal: typisch für normale Dateien\n",[2915,13422,13423],{"class":3402,"line":3515},[2915,13424,3506],{"emptyLinePlaceholder":3505},[2915,13426,13427,13429,13432],{"class":3402,"line":3520},[2915,13428,12871],{"class":3406},[2915,13430,13431],{"class":3410}," 644",[2915,13433,13434],{"class":3414}," README.txt\n",[2915,13436,13437],{"class":3402,"line":5070},[2915,13438,3506],{"emptyLinePlaceholder":3505},[2915,13440,13441],{"class":3402,"line":5075},[2915,13442,13443],{"class":3511},"# Oktal: nur Owner darf lesen und schreiben (z.B. SSH-Key)\n",[2915,13445,13446],{"class":3402,"line":5093},[2915,13447,3506],{"emptyLinePlaceholder":3505},[2915,13449,13450,13452,13455],{"class":3402,"line":5098},[2915,13451,12871],{"class":3406},[2915,13453,13454],{"class":3410}," 600",[2915,13456,13457],{"class":3414}," ~\u002F.ssh\u002Fid_rsa\n",[2915,13459,13460],{"class":3402,"line":5207},[2915,13461,3506],{"emptyLinePlaceholder":3505},[2915,13463,13464],{"class":3402,"line":5212},[2915,13465,13466],{"class":3511},"# Symbolisch: Ausführrecht für alle hinzufügen\n",[2915,13468,13469],{"class":3402,"line":5218},[2915,13470,3506],{"emptyLinePlaceholder":3505},[2915,13472,13473,13475,13478],{"class":3402,"line":5223},[2915,13474,12871],{"class":3406},[2915,13476,13477],{"class":3414}," a+x",[2915,13479,13411],{"class":3414},[2915,13481,13482],{"class":3402,"line":5229},[2915,13483,3506],{"emptyLinePlaceholder":3505},[2915,13485,13486],{"class":3402,"line":5253},[2915,13487,13488],{"class":3511},"# Symbolisch: Schreibrecht für Andere entfernen\n",[2915,13490,13491],{"class":3402,"line":5266},[2915,13492,3506],{"emptyLinePlaceholder":3505},[2915,13494,13495,13497,13500],{"class":3402,"line":5721},[2915,13496,12871],{"class":3406},[2915,13498,13499],{"class":3414}," o-w",[2915,13501,7698],{"class":3414},[2915,13503,13504],{"class":3402,"line":9401},[2915,13505,3506],{"emptyLinePlaceholder":3505},[2915,13507,13508],{"class":3402,"line":9406},[2915,13509,13510],{"class":3511},"# Symbolisch: Alle Rechte exakt setzen (löscht alles was nicht angegeben)\n",[2915,13512,13513],{"class":3402,"line":9411},[2915,13514,3506],{"emptyLinePlaceholder":3505},[2915,13516,13517,13519,13522],{"class":3402,"line":9416},[2915,13518,12871],{"class":3406},[2915,13520,13521],{"class":3414}," u=rwx,g=rx,o=",[2915,13523,13524],{"class":3414}," private.sh\n",[2915,13526,13527],{"class":3402,"line":9428},[2915,13528,3506],{"emptyLinePlaceholder":3505},[2915,13530,13531],{"class":3402,"line":9433},[2915,13532,13533],{"class":3511},"# Symbolisch: Gruppe Schreibrecht hinzufügen\n",[2915,13535,13536],{"class":3402,"line":9454},[2915,13537,3506],{"emptyLinePlaceholder":3505},[2915,13539,13540,13542,13545],{"class":3402,"line":9459},[2915,13541,12871],{"class":3406},[2915,13543,13544],{"class":3414}," g+w",[2915,13546,13547],{"class":3414}," projekt\u002F\n",[2915,13549,13550],{"class":3402,"line":9464},[2915,13551,3506],{"emptyLinePlaceholder":3505},[2915,13553,13554],{"class":3402,"line":9469},[2915,13555,13556],{"class":3511},"# Rekursiv für Webverzeichnis\n",[2915,13558,13559],{"class":3402,"line":9479},[2915,13560,3506],{"emptyLinePlaceholder":3505},[2915,13562,13563,13565,13567,13569],{"class":3402,"line":9484},[2915,13564,12871],{"class":3406},[2915,13566,12692],{"class":3410},[2915,13568,13408],{"class":3410},[2915,13570,12698],{"class":3414},[2915,13572,13573],{"class":3402,"line":9489},[2915,13574,3506],{"emptyLinePlaceholder":3505},[2915,13576,13577],{"class":3402,"line":9494},[2915,13578,13579],{"class":3511},"# Nur Ausführrecht setzen wenn es bereits für jemanden gesetzt war\n",[2915,13581,13582],{"class":3402,"line":9504},[2915,13583,3506],{"emptyLinePlaceholder":3505},[2915,13585,13586,13588,13590,13593],{"class":3402,"line":9509},[2915,13587,12871],{"class":3406},[2915,13589,12692],{"class":3410},[2915,13591,13592],{"class":3414}," a+X",[2915,13594,13595],{"class":3414}," verzeichnis\u002F\n",[2915,13597,13598],{"class":3402,"line":9514},[2915,13599,3506],{"emptyLinePlaceholder":3505},[2915,13601,13602],{"class":3402,"line":9519},[2915,13603,13604],{"class":3511},"# Rechte von anderer Datei übernehmen\n",[2915,13606,13607],{"class":3402,"line":9524},[2915,13608,3506],{"emptyLinePlaceholder":3505},[2915,13610,13611,13613,13615],{"class":3402,"line":9529},[2915,13612,12871],{"class":3406},[2915,13614,12770],{"class":3410},[2915,13616,13617],{"class":3414}," \u002Ftmp\u002Fmeine_passwdkopie\n",[2915,13619,13620],{"class":3402,"line":9534},[2915,13621,3506],{"emptyLinePlaceholder":3505},[2915,13623,13624],{"class":3402,"line":9539},[2915,13625,13626],{"class":3511},"# Verbose anzeigen was geändert wird\n",[2915,13628,13629],{"class":3402,"line":9552},[2915,13630,3506],{"emptyLinePlaceholder":3505},[2915,13632,13633,13635,13638,13640,13642],{"class":3402,"line":9557},[2915,13634,12871],{"class":3406},[2915,13636,13637],{"class":3410}," -vc",[2915,13639,13431],{"class":3410},[2915,13641,5828],{"class":3410},[2915,13643,13644],{"class":3414},".txt\n",[54,13646,11749],{"id":13647},"ausgabe-3",[11,13649,13651],{"id":13650},"vorher-nach-touch-skriptsh","Vorher (nach touch skript.sh)",[16,13653,13654],{},"-rw-r--r-- 1 matta matta 0 Apr 29 10:00 skript.sh",[11,13656,13658],{"id":13657},"chmod-755-skriptsh","chmod 755 skript.sh",[16,13660,13661],{},"-rwxr-xr-x 1 matta matta 0 Apr 29 10:00 skript.sh",[11,13663,13665],{"id":13664},"chmod-600-sshid_rsa","chmod 600 ~\u002F.ssh\u002Fid_rsa",[16,13667,13668],{},"-rw------- 1 matta matta 2610 Apr 29 10:00 \u002Fhome\u002Fmatta\u002F.ssh\u002Fid_rsa",[11,13670,13672],{"id":13671},"chmod-vc-644-txt","chmod -vc 644 *.txt",[16,13674,13675],{},"Modus von 'notizen.txt' geändert: 0664 (rw-rw-r--) -> 0644 (rw-r--r--)",[54,13677,13679],{"id":13678},"spezialbits","Spezialbits",[16,13681,13682,13684,13685,13687,13688,7379,13691,13694,13695,13698],{},[26,13683,11461],{}," Neben den normalen ",[26,13686,13023],{},"-Bits existieren drei zusätzliche Sonderbits: ",[26,13689,13690],{},"SUID",[26,13692,13693],{},"SGID"," und das ",[26,13696,13697],{},"Sticky Bit",". Sie werden im führenden vierten Oktalblock angegeben.",[228,13700,13702],{"id":13701},"suid-set-user-id-oktal-4xxx","SUID (Set User ID) – Oktal: 4xxx",[16,13704,13705],{},[26,13706,13707],{},"Auf ausführbare Dateien:",[20,13709,13710,13717],{},[23,13711,13712,13713,13716],{},"Das Programm läuft mit den Berechtigungen des ",[26,13714,13715],{},"Eigentümers"," der Datei – nicht mit denen des ausführenden Benutzers.",[23,13718,13719,13720,13723,13724,13726,13727,13730],{},"Typisches Beispiel: ",[26,13721,13722],{},"\u002Fusr\u002Fbin\u002Fpasswd"," gehört ",[26,13725,12437],{},". Jeder Benutzer darf es ausführen und dadurch sein Passwort in ",[26,13728,13729],{},"\u002Fetc\u002Fshadow"," ändern.",[16,13732,13733],{},[26,13734,13735],{},"Anzeige in ls -l:",[20,13737,13738,13749],{},[23,13739,13740,13742,13743,13745,13746],{},[26,13741,11274],{}," statt ",[26,13744,12973],{}," beim Eigentümer-Ausführbit, wenn SUID+x gesetzt: ",[26,13747,13748],{},"-rwsr-xr-x",[23,13750,13751,13754,13755,13758,13759],{},[26,13752,13753],{},"S"," (Großbuchstabe) wenn SUID gesetzt aber ",[26,13756,13757],{},"kein"," Ausführrecht: ",[26,13760,13761],{},"-rwSr--r--",[11,13763,13765],{"id":13764},"suid-symbolisch-setzen","SUID symbolisch setzen",[3392,13767,13769],{"className":3394,"code":13768,"language":3396,"meta":225,"style":225},"chmod u+s \u002Fusr\u002Fbin\u002Fmyprog\n\n# SUID oktal setzen (4 + normale Rechte)\n\nchmod 4755 \u002Fusr\u002Fbin\u002Fmyprog\n\n# SUID entfernen\n\nchmod u-s \u002Fusr\u002Fbin\u002Fmyprog\n\n# Alle SUID-Dateien im System finden (Sicherheitscheck!)\n\nfind \u002F -type f -perm -4000 -ls 2>\u002Fdev\u002Fnull\n\n# Beispiel: passwd hat SUID\n\nls -l \u002Fusr\u002Fbin\u002Fpasswd-rwsr-xr-x 1 root root 63960 Apr 13 2023 \u002Fusr\u002Fbin\u002Fpasswd\n\n",[3398,13770,13771,13781,13785,13790,13794,13803,13807,13812,13816,13825,13829,13834,13838,13864,13868,13873,13877],{"__ignoreMap":225},[2915,13772,13773,13775,13778],{"class":3402,"line":3403},[2915,13774,12871],{"class":3406},[2915,13776,13777],{"class":3414}," u+s",[2915,13779,13780],{"class":3414}," \u002Fusr\u002Fbin\u002Fmyprog\n",[2915,13782,13783],{"class":3402,"line":1117},[2915,13784,3506],{"emptyLinePlaceholder":3505},[2915,13786,13787],{"class":3402,"line":1125},[2915,13788,13789],{"class":3511},"# SUID oktal setzen (4 + normale Rechte)\n",[2915,13791,13792],{"class":3402,"line":3515},[2915,13793,3506],{"emptyLinePlaceholder":3505},[2915,13795,13796,13798,13801],{"class":3402,"line":3520},[2915,13797,12871],{"class":3406},[2915,13799,13800],{"class":3410}," 4755",[2915,13802,13780],{"class":3414},[2915,13804,13805],{"class":3402,"line":5070},[2915,13806,3506],{"emptyLinePlaceholder":3505},[2915,13808,13809],{"class":3402,"line":5075},[2915,13810,13811],{"class":3511},"# SUID entfernen\n",[2915,13813,13814],{"class":3402,"line":5093},[2915,13815,3506],{"emptyLinePlaceholder":3505},[2915,13817,13818,13820,13823],{"class":3402,"line":5098},[2915,13819,12871],{"class":3406},[2915,13821,13822],{"class":3414}," u-s",[2915,13824,13780],{"class":3414},[2915,13826,13827],{"class":3402,"line":5207},[2915,13828,3506],{"emptyLinePlaceholder":3505},[2915,13830,13831],{"class":3402,"line":5212},[2915,13832,13833],{"class":3511},"# Alle SUID-Dateien im System finden (Sicherheitscheck!)\n",[2915,13835,13836],{"class":3402,"line":5218},[2915,13837,3506],{"emptyLinePlaceholder":3505},[2915,13839,13840,13842,13845,13847,13849,13852,13855,13858,13861],{"class":3402,"line":5223},[2915,13841,8210],{"class":3406},[2915,13843,13844],{"class":3414}," \u002F",[2915,13846,8248],{"class":3410},[2915,13848,9021],{"class":3414},[2915,13850,13851],{"class":3410}," -perm",[2915,13853,13854],{"class":3410}," -4000",[2915,13856,13857],{"class":3410}," -ls",[2915,13859,13860],{"class":3533}," 2>",[2915,13862,13863],{"class":3414},"\u002Fdev\u002Fnull\n",[2915,13865,13866],{"class":3402,"line":5229},[2915,13867,3506],{"emptyLinePlaceholder":3505},[2915,13869,13870],{"class":3402,"line":5253},[2915,13871,13872],{"class":3511},"# Beispiel: passwd hat SUID\n",[2915,13874,13875],{"class":3402,"line":5266},[2915,13876,3506],{"emptyLinePlaceholder":3505},[2915,13878,13879,13881,13883,13886,13888,13891,13893,13896,13899,13902,13905],{"class":3402,"line":5721},[2915,13880,12214],{"class":3406},[2915,13882,9029],{"class":3410},[2915,13884,13885],{"class":3414}," \u002Fusr\u002Fbin\u002Fpasswd-rwsr-xr-x",[2915,13887,9016],{"class":3410},[2915,13889,13890],{"class":3414}," root",[2915,13892,13890],{"class":3414},[2915,13894,13895],{"class":3410}," 63960",[2915,13897,13898],{"class":3414}," Apr",[2915,13900,13901],{"class":3410}," 13",[2915,13903,13904],{"class":3410}," 2023",[2915,13906,13907],{"class":3414}," \u002Fusr\u002Fbin\u002Fpasswd\n",[16,13909,13910],{},"^",[3392,13912,13914],{"className":3394,"code":13913,"language":3396,"meta":225,"style":225},"s = SUID + Ausführrecht\n\n",[3398,13915,13916],{"__ignoreMap":225},[2915,13917,13918,13920,13923,13926,13928],{"class":3402,"line":3403},[2915,13919,11274],{"class":3406},[2915,13921,13922],{"class":3414}," =",[2915,13924,13925],{"class":3414}," SUID",[2915,13927,10471],{"class":3414},[2915,13929,13930],{"class":3414}," Ausführrecht\n",[228,13932,13934],{"id":13933},"sgid-set-group-id-oktal-2xxx","SGID (Set Group ID) – Oktal: 2xxx",[16,13936,13937],{},[26,13938,13707],{},[20,13940,13941],{},[23,13942,13943,13944,13947],{},"Das Programm läuft mit den Rechten der ",[26,13945,13946],{},"Gruppe des Eigentümers"," (nicht der Gruppe des Aufrufers).",[16,13949,13950],{},[26,13951,13952],{},"Auf Verzeichnisse (häufigster Einsatz):",[20,13954,13955,13962],{},[23,13956,13957,13958,13961],{},"Alle ",[26,13959,13960],{},"neu erstellten Dateien und Unterverzeichnisse erben die Gruppe"," des übergeordneten Verzeichnisses.",[23,13963,13964],{},"Ideal für Teamverzeichnisse.",[16,13966,13967],{},[26,13968,13735],{},[20,13970,13971,13981],{},[23,13972,13973,13742,13975,13977,13978],{},[26,13974,11274],{},[26,13976,12973],{}," beim Gruppen-Ausführbit: ",[26,13979,13980],{},"drwxrwsr-x",[23,13982,13983,13985,13986],{},[26,13984,13753],{}," wenn SGID gesetzt aber kein Gruppen-Ausführrecht: ",[26,13987,13988],{},"drwxrwSr-x",[11,13990,13992],{"id":13991},"sgid-auf-einem-gemeinsamen-projektverzeichnis-setzen","SGID auf einem gemeinsamen Projektverzeichnis setzen",[3392,13994,13996],{"className":3394,"code":13995,"language":3396,"meta":225,"style":225},"chmod g+s \u002Fshared\u002Fprojekt\n\nchmod 2775 \u002Fshared\u002Fprojekt\n\n# Prüfen ob SGID gesetzt ist\n\nls -ld \u002Fshared\u002Fprojekt\n\n# Alle SGID-Verzeichnisse finden\n\nfind \u002F -type d -perm -2000 -ls 2>\u002Fdev\u002Fnulldrwxrwsr-x 2 alice entwickler 4096 Apr 29 10:00 \u002Fshared\u002Fprojekt\n\n",[3398,13997,13998,14008,14012,14021,14025,14030,14034,14043,14047,14052,14056],{"__ignoreMap":225},[2915,13999,14000,14002,14005],{"class":3402,"line":3403},[2915,14001,12871],{"class":3406},[2915,14003,14004],{"class":3414}," g+s",[2915,14006,14007],{"class":3414}," \u002Fshared\u002Fprojekt\n",[2915,14009,14010],{"class":3402,"line":1117},[2915,14011,3506],{"emptyLinePlaceholder":3505},[2915,14013,14014,14016,14019],{"class":3402,"line":1125},[2915,14015,12871],{"class":3406},[2915,14017,14018],{"class":3410}," 2775",[2915,14020,14007],{"class":3414},[2915,14022,14023],{"class":3402,"line":3515},[2915,14024,3506],{"emptyLinePlaceholder":3505},[2915,14026,14027],{"class":3402,"line":3520},[2915,14028,14029],{"class":3511},"# Prüfen ob SGID gesetzt ist\n",[2915,14031,14032],{"class":3402,"line":5070},[2915,14033,3506],{"emptyLinePlaceholder":3505},[2915,14035,14036,14038,14041],{"class":3402,"line":5075},[2915,14037,12214],{"class":3406},[2915,14039,14040],{"class":3410}," -ld",[2915,14042,14007],{"class":3414},[2915,14044,14045],{"class":3402,"line":5093},[2915,14046,3506],{"emptyLinePlaceholder":3505},[2915,14048,14049],{"class":3402,"line":5098},[2915,14050,14051],{"class":3511},"# Alle SGID-Verzeichnisse finden\n",[2915,14053,14054],{"class":3402,"line":5207},[2915,14055,3506],{"emptyLinePlaceholder":3505},[2915,14057,14058,14060,14062,14064,14066,14068,14071,14073,14075,14078,14081,14083,14086,14089,14091,14094,14097],{"class":3402,"line":5212},[2915,14059,8210],{"class":3406},[2915,14061,13844],{"class":3414},[2915,14063,8248],{"class":3410},[2915,14065,9061],{"class":3414},[2915,14067,13851],{"class":3410},[2915,14069,14070],{"class":3410}," -2000",[2915,14072,13857],{"class":3410},[2915,14074,13860],{"class":3533},[2915,14076,14077],{"class":3414},"\u002Fdev\u002Fnulldrwxrwsr-x",[2915,14079,14080],{"class":3410}," 2",[2915,14082,11735],{"class":3414},[2915,14084,14085],{"class":3414}," entwickler",[2915,14087,14088],{"class":3410}," 4096",[2915,14090,13898],{"class":3414},[2915,14092,14093],{"class":3410}," 29",[2915,14095,14096],{"class":3414}," 10:00",[2915,14098,14007],{"class":3414},[16,14100,13910],{},[3392,14102,14104],{"className":3394,"code":14103,"language":3396,"meta":225,"style":225},"s = SGID auf Verzeichnis\n\n# Neue Datei im Verzeichnis erstellt von Benutzer \"bob\":\n\ntouch \u002Fshared\u002Fprojekt\u002Fbob_datei.txt\n\nls -l \u002Fshared\u002Fprojekt\u002Fbob_datei.txt\n\n",[3398,14105,14106,14121,14125,14130,14134,14141,14145],{"__ignoreMap":225},[2915,14107,14108,14110,14112,14115,14118],{"class":3402,"line":3403},[2915,14109,11274],{"class":3406},[2915,14111,13922],{"class":3414},[2915,14113,14114],{"class":3414}," SGID",[2915,14116,14117],{"class":3414}," auf",[2915,14119,14120],{"class":3414}," Verzeichnis\n",[2915,14122,14123],{"class":3402,"line":1117},[2915,14124,3506],{"emptyLinePlaceholder":3505},[2915,14126,14127],{"class":3402,"line":1125},[2915,14128,14129],{"class":3511},"# Neue Datei im Verzeichnis erstellt von Benutzer \"bob\":\n",[2915,14131,14132],{"class":3402,"line":3515},[2915,14133,3506],{"emptyLinePlaceholder":3505},[2915,14135,14136,14138],{"class":3402,"line":3520},[2915,14137,10189],{"class":3406},[2915,14139,14140],{"class":3414}," \u002Fshared\u002Fprojekt\u002Fbob_datei.txt\n",[2915,14142,14143],{"class":3402,"line":5070},[2915,14144,3506],{"emptyLinePlaceholder":3505},[2915,14146,14147,14149,14151],{"class":3402,"line":5075},[2915,14148,12214],{"class":3406},[2915,14150,9029],{"class":3410},[2915,14152,14140],{"class":3414},[16,14154,14155],{},"-rw-r--r-- 1 bob entwickler 0 Apr 29 10:01 bob_datei.txt",[16,14157,14158],{},"^^^^^^^^^^ Gruppe wird vererbt!",[228,14160,14162],{"id":14161},"sticky-bit-oktal-1xxx","Sticky Bit – Oktal: 1xxx",[16,14164,14165],{},[26,14166,14167],{},"Auf Verzeichnisse:",[20,14169,14170,14180],{},[23,14171,14172,14173,14176,14177,14179],{},"Dateien dürfen nur von ihrem ",[26,14174,14175],{},"eigenen Eigentümer"," oder ",[26,14178,12437],{}," gelöscht\u002Fumbenannt werden – selbst wenn andere Benutzer Schreibrecht auf das Verzeichnis haben.",[23,14181,14182,14183],{},"Klassisches Beispiel: ",[26,14184,14185],{},"\u002Ftmp",[16,14187,14188],{},[26,14189,13735],{},[20,14191,14192,14202],{},[23,14193,14194,13742,14196,14198,14199],{},[26,14195,13230],{},[26,14197,12973],{}," beim Anderen-Ausführbit: ",[26,14200,14201],{},"drwxrwxrwt",[23,14203,14204,14207,14208],{},[26,14205,14206],{},"T"," wenn Sticky gesetzt aber kein Ausführrecht für Andere: ",[26,14209,14210],{},"drwxrwxrwT",[11,14212,14214],{"id":14213},"sticky-bit-auf-verzeichnis-setzen","Sticky Bit auf Verzeichnis setzen",[3392,14216,14218],{"className":3394,"code":14217,"language":3396,"meta":225,"style":225},"chmod +t \u002Ftmp\u002Fgeteilt\n\nchmod 1777 \u002Ftmp\u002Fgeteilt\n\n# Sticky Bit entfernen\n\nchmod -t \u002Ftmp\u002Fgeteilt\n\n# Prüfen\n\nls -ld \u002Ftmp\n\n# Alle Verzeichnisse mit Sticky Bit finden\n\nfind \u002F -type d -perm -1000 -ls 2>\u002Fdev\u002Fnulldrwxrwxrwt 10 root root 4096 Apr 29 10:00 \u002Ftmp\n\n",[3398,14219,14220,14230,14234,14243,14247,14252,14256,14265,14269,14274,14278,14287,14291,14296,14300],{"__ignoreMap":225},[2915,14221,14222,14224,14227],{"class":3402,"line":3403},[2915,14223,12871],{"class":3406},[2915,14225,14226],{"class":3414}," +t",[2915,14228,14229],{"class":3414}," \u002Ftmp\u002Fgeteilt\n",[2915,14231,14232],{"class":3402,"line":1117},[2915,14233,3506],{"emptyLinePlaceholder":3505},[2915,14235,14236,14238,14241],{"class":3402,"line":1125},[2915,14237,12871],{"class":3406},[2915,14239,14240],{"class":3410}," 1777",[2915,14242,14229],{"class":3414},[2915,14244,14245],{"class":3402,"line":3515},[2915,14246,3506],{"emptyLinePlaceholder":3505},[2915,14248,14249],{"class":3402,"line":3520},[2915,14250,14251],{"class":3511},"# Sticky Bit entfernen\n",[2915,14253,14254],{"class":3402,"line":5070},[2915,14255,3506],{"emptyLinePlaceholder":3505},[2915,14257,14258,14260,14263],{"class":3402,"line":5075},[2915,14259,12871],{"class":3406},[2915,14261,14262],{"class":3410}," -t",[2915,14264,14229],{"class":3414},[2915,14266,14267],{"class":3402,"line":5093},[2915,14268,3506],{"emptyLinePlaceholder":3505},[2915,14270,14271],{"class":3402,"line":5098},[2915,14272,14273],{"class":3511},"# Prüfen\n",[2915,14275,14276],{"class":3402,"line":5207},[2915,14277,3506],{"emptyLinePlaceholder":3505},[2915,14279,14280,14282,14284],{"class":3402,"line":5212},[2915,14281,12214],{"class":3406},[2915,14283,14040],{"class":3410},[2915,14285,14286],{"class":3414}," \u002Ftmp\n",[2915,14288,14289],{"class":3402,"line":5218},[2915,14290,3506],{"emptyLinePlaceholder":3505},[2915,14292,14293],{"class":3402,"line":5223},[2915,14294,14295],{"class":3511},"# Alle Verzeichnisse mit Sticky Bit finden\n",[2915,14297,14298],{"class":3402,"line":5229},[2915,14299,3506],{"emptyLinePlaceholder":3505},[2915,14301,14302,14304,14306,14308,14310,14312,14315,14317,14319,14322,14325,14327,14329,14331,14333,14335,14337],{"class":3402,"line":5253},[2915,14303,8210],{"class":3406},[2915,14305,13844],{"class":3414},[2915,14307,8248],{"class":3410},[2915,14309,9061],{"class":3414},[2915,14311,13851],{"class":3410},[2915,14313,14314],{"class":3410}," -1000",[2915,14316,13857],{"class":3410},[2915,14318,13860],{"class":3533},[2915,14320,14321],{"class":3414},"\u002Fdev\u002Fnulldrwxrwxrwt",[2915,14323,14324],{"class":3410}," 10",[2915,14326,13890],{"class":3414},[2915,14328,13890],{"class":3414},[2915,14330,14088],{"class":3410},[2915,14332,13898],{"class":3414},[2915,14334,14093],{"class":3410},[2915,14336,14096],{"class":3414},[2915,14338,14286],{"class":3414},[16,14340,13910],{},[3392,14342,14344],{"className":3394,"code":14343,"language":3396,"meta":225,"style":225},"t = Sticky Bit + Ausführrecht für Andere\n\n",[3398,14345,14346],{"__ignoreMap":225},[2915,14347,14348,14350,14352,14355,14358,14360,14363,14366],{"class":3402,"line":3403},[2915,14349,13230],{"class":3406},[2915,14351,13922],{"class":3414},[2915,14353,14354],{"class":3414}," Sticky",[2915,14356,14357],{"class":3414}," Bit",[2915,14359,10471],{"class":3414},[2915,14361,14362],{"class":3414}," Ausführrecht",[2915,14364,14365],{"class":3414}," für",[2915,14367,14368],{"class":3414}," Andere\n",[228,14370,14372],{"id":14371},"übersicht-spezialbits","Übersicht: Spezialbits",[645,14374,14375,14405],{},[648,14376,14377],{},[651,14378,14379,14384,14389,14393,14397,14401],{},[654,14380,14381],{},[26,14382,14383],{},"Bit",[654,14385,14386],{},[26,14387,14388],{},"Name",[654,14390,14391],{},[26,14392,12920],{},[654,14394,14395],{},[26,14396,13006],{},[654,14398,14399],{},[26,14400,12925],{},[654,14402,14403],{},[26,14404,12930],{},[670,14406,14407,14426,14445],{},[651,14408,14409,14411,14414,14417,14420,14423],{},[675,14410,13690],{},[675,14412,14413],{},"Set-UID",[675,14415,14416],{},"4000",[675,14418,14419],{},"u+s",[675,14421,14422],{},"Läuft als Eigentümer der Datei",[675,14424,14425],{},"Keine standardisierte Wirkung",[651,14427,14428,14430,14433,14436,14439,14442],{},[675,14429,13693],{},[675,14431,14432],{},"Set-GID",[675,14434,14435],{},"2000",[675,14437,14438],{},"g+s",[675,14440,14441],{},"Läuft als Gruppe der Datei",[675,14443,14444],{},"Neue Dateien erben Gruppe des Verzeichnisses",[651,14446,14447,14450,14452,14454,14457,14460],{},[675,14448,14449],{},"Sticky",[675,14451,13697],{},[675,14453,11767],{},[675,14455,14456],{},"+t",[675,14458,14459],{},"Veraltet, keine Wirkung",[675,14461,14462],{},"Nur Eigentümer\u002Froot kann löschen",[228,14464,14466],{"id":14465},"kombination-mit-normalen-rechten","Kombination mit normalen Rechten",[11,14468,14470],{"id":14469},"suid-755-4755","SUID + 755 = 4755",[3392,14472,14474],{"className":3394,"code":14473,"language":3396,"meta":225,"style":225},"chmod 4755 \u002Fusr\u002Flocal\u002Fbin\u002Fmyprog\n\n# -rwsr-xr-x\n\n# SGID + 2775 = setgid-Verzeichnis für Team\n\nchmod 2775 \u002Fsrv\u002Fteam\u002F\n\n# drwxrwsr-x\n\n# Sticky + 1777 = \u002Ftmp-ähnliches Verzeichnis\n\nchmod 1777 \u002Ftmp\n\n# drwxrwxrwt\n\n",[3398,14475,14476,14485,14489,14494,14498,14503,14507,14516,14520,14525,14529,14534,14538,14546,14550],{"__ignoreMap":225},[2915,14477,14478,14480,14482],{"class":3402,"line":3403},[2915,14479,12871],{"class":3406},[2915,14481,13800],{"class":3410},[2915,14483,14484],{"class":3414}," \u002Fusr\u002Flocal\u002Fbin\u002Fmyprog\n",[2915,14486,14487],{"class":3402,"line":1117},[2915,14488,3506],{"emptyLinePlaceholder":3505},[2915,14490,14491],{"class":3402,"line":1125},[2915,14492,14493],{"class":3511},"# -rwsr-xr-x\n",[2915,14495,14496],{"class":3402,"line":3515},[2915,14497,3506],{"emptyLinePlaceholder":3505},[2915,14499,14500],{"class":3402,"line":3520},[2915,14501,14502],{"class":3511},"# SGID + 2775 = setgid-Verzeichnis für Team\n",[2915,14504,14505],{"class":3402,"line":5070},[2915,14506,3506],{"emptyLinePlaceholder":3505},[2915,14508,14509,14511,14513],{"class":3402,"line":5075},[2915,14510,12871],{"class":3406},[2915,14512,14018],{"class":3410},[2915,14514,14515],{"class":3414}," \u002Fsrv\u002Fteam\u002F\n",[2915,14517,14518],{"class":3402,"line":5093},[2915,14519,3506],{"emptyLinePlaceholder":3505},[2915,14521,14522],{"class":3402,"line":5098},[2915,14523,14524],{"class":3511},"# drwxrwsr-x\n",[2915,14526,14527],{"class":3402,"line":5207},[2915,14528,3506],{"emptyLinePlaceholder":3505},[2915,14530,14531],{"class":3402,"line":5212},[2915,14532,14533],{"class":3511},"# Sticky + 1777 = \u002Ftmp-ähnliches Verzeichnis\n",[2915,14535,14536],{"class":3402,"line":5218},[2915,14537,3506],{"emptyLinePlaceholder":3505},[2915,14539,14540,14542,14544],{"class":3402,"line":5223},[2915,14541,12871],{"class":3406},[2915,14543,14240],{"class":3410},[2915,14545,14286],{"class":3414},[2915,14547,14548],{"class":3402,"line":5229},[2915,14549,3506],{"emptyLinePlaceholder":3505},[2915,14551,14552],{"class":3402,"line":5253},[2915,14553,14554],{"class":3511},"# drwxrwxrwt\n",[16,14556,14557,4850,14561,4850,14564,4850,14569,4850,14572,4850,14577],{},[257,14558,14559],{},[26,14560,12850],{},[257,14562,14563],{},"SUID\u002FSGID auf Dateien sind häufige Angriffsvektoren (Privilege Escalation). Regelmäßige Überprüfung mit",[257,14565,14566],{},[26,14567,14568],{},"find \u002F -perm -4000",[257,14570,14571],{},"bzw.",[257,14573,14574],{},[26,14575,14576],{},"-perm -2000",[257,14578,14579],{},"ist empfehlenswert.",[11,14581,14582],{"id":14582},"wc",[16,14584,14585,14587],{},[26,14586,11461],{}," Zählt Zeilen, Wörter, Zeichen und Bytes in Dateien oder der Standardeingabe. Wird sehr oft mit Pipes kombiniert um schnelle Statistiken zu erhalten.",[16,14589,14590,4850,14592],{},[26,14591,6691],{},[26,14593,14594,14595,4850,14597],{},"wc ",[2915,14596,11472],{},[2915,14598,14599],{},"DATEI...",[54,14601,11532],{"id":14602},"flags-4",[645,14604,14605,14621],{},[648,14606,14607],{},[651,14608,14609,14613,14617],{},[654,14610,14611],{},[26,14612,11543],{},[654,14614,14615],{},[26,14616,11548],{},[654,14618,14619],{},[26,14620,5483],{},[670,14622,14623,14633,14643,14653,14664],{},[651,14624,14625,14627,14630],{},[675,14626,7757],{},[675,14628,14629],{},"--lines",[675,14631,14632],{},"Nur Zeilenanzahl ausgeben",[651,14634,14635,14637,14640],{},[675,14636,7773],{},[675,14638,14639],{},"--words",[675,14641,14642],{},"Nur Wortanzahl ausgeben",[651,14644,14645,14647,14650],{},[675,14646,7765],{},[675,14648,14649],{},"--bytes",[675,14651,14652],{},"Byte-Anzahl ausgeben",[651,14654,14655,14658,14661],{},[675,14656,14657],{},"-m",[675,14659,14660],{},"--chars",[675,14662,14663],{},"Zeichenanzahl ausgeben (Multibyte\u002FUnicode-sicher, unterscheidet sich von -c bei UTF-8)",[651,14665,14666,14668,14671],{},[675,14667,12596],{},[675,14669,14670],{},"--max-line-length",[675,14672,14673],{},"Länge der längsten Zeile ausgeben",[16,14675,14676],{},[26,14677,14678],{},"Reihenfolge der Standardausgabe",[16,14680,14681,14682,14684,14685,14688],{},"Ohne Flags gibt ",[26,14683,14582],{}," immer ",[26,14686,14687],{},"drei Werte"," aus in dieser Reihenfolge:",[16,14690,14691],{},"ZEILEN WÖRTER BYTES DATEINAME",[54,14693,8676],{"id":14694},"beispiele-4",[11,14696,14698],{"id":14697},"standard-zeilen-wörter-bytes","Standard: Zeilen, Wörter, Bytes",[16,14700,14701],{},"wc datei.txt",[11,14703,14705],{"id":14704},"nur-zeilen-zählen","Nur Zeilen zählen",[3392,14707,14709],{"className":3394,"code":14708,"language":3396,"meta":225,"style":225},"wc -l datei.txt\n\n# Nur Wörter zählen\n\nwc -w datei.txt\n\n# Nur Bytes zählen\n\nwc -c datei.txt\n\n# Zeichenanzahl (wichtig bei Umlauten\u002FUnicode)\n\nwc -m datei.txt\n\n# Längste Zeile finden\n\nwc -L datei.txt\n\n# Mehrere Dateien + Gesamtsumme\n\nwc -l *.txt\n\n# Anzahl der Prozesse zählen\n\nps aux | wc -l\n\n# Anzahl der Benutzer im System\n\nwc -l \u003C \u002Fetc\u002Fpasswd\n\n# Anzahl der Dateien in einem Verzeichnis\n\nls | wc -l\n\n# Anzahl der Treffer einer Suche\n\ngrep -r \"TODO\" . | wc -l\n\n# Datei auf maximale Zeilenlänge prüfen\n\nwc -L skript.sh\n\n",[3398,14710,14711,14719,14723,14728,14732,14740,14744,14749,14753,14761,14765,14770,14774,14783,14787,14792,14796,14805,14809,14814,14818,14828,14832,14837,14841,14854,14858,14863,14867,14877,14881,14886,14890,14900,14904,14909,14913,14929,14933,14938,14942],{"__ignoreMap":225},[2915,14712,14713,14715,14717],{"class":3402,"line":3403},[2915,14714,14582],{"class":3406},[2915,14716,9029],{"class":3410},[2915,14718,7698],{"class":3414},[2915,14720,14721],{"class":3402,"line":1117},[2915,14722,3506],{"emptyLinePlaceholder":3505},[2915,14724,14725],{"class":3402,"line":1125},[2915,14726,14727],{"class":3511},"# Nur Wörter zählen\n",[2915,14729,14730],{"class":3402,"line":3515},[2915,14731,3506],{"emptyLinePlaceholder":3505},[2915,14733,14734,14736,14738],{"class":3402,"line":3520},[2915,14735,14582],{"class":3406},[2915,14737,11742],{"class":3410},[2915,14739,7698],{"class":3414},[2915,14741,14742],{"class":3402,"line":5070},[2915,14743,3506],{"emptyLinePlaceholder":3505},[2915,14745,14746],{"class":3402,"line":5075},[2915,14747,14748],{"class":3511},"# Nur Bytes zählen\n",[2915,14750,14751],{"class":3402,"line":5093},[2915,14752,3506],{"emptyLinePlaceholder":3505},[2915,14754,14755,14757,14759],{"class":3402,"line":5098},[2915,14756,14582],{"class":3406},[2915,14758,9142],{"class":3410},[2915,14760,7698],{"class":3414},[2915,14762,14763],{"class":3402,"line":5207},[2915,14764,3506],{"emptyLinePlaceholder":3505},[2915,14766,14767],{"class":3402,"line":5212},[2915,14768,14769],{"class":3511},"# Zeichenanzahl (wichtig bei Umlauten\u002FUnicode)\n",[2915,14771,14772],{"class":3402,"line":5218},[2915,14773,3506],{"emptyLinePlaceholder":3505},[2915,14775,14776,14778,14781],{"class":3402,"line":5223},[2915,14777,14582],{"class":3406},[2915,14779,14780],{"class":3410}," -m",[2915,14782,7698],{"class":3414},[2915,14784,14785],{"class":3402,"line":5229},[2915,14786,3506],{"emptyLinePlaceholder":3505},[2915,14788,14789],{"class":3402,"line":5253},[2915,14790,14791],{"class":3511},"# Längste Zeile finden\n",[2915,14793,14794],{"class":3402,"line":5266},[2915,14795,3506],{"emptyLinePlaceholder":3505},[2915,14797,14798,14800,14803],{"class":3402,"line":5721},[2915,14799,14582],{"class":3406},[2915,14801,14802],{"class":3410}," -L",[2915,14804,7698],{"class":3414},[2915,14806,14807],{"class":3402,"line":9401},[2915,14808,3506],{"emptyLinePlaceholder":3505},[2915,14810,14811],{"class":3402,"line":9406},[2915,14812,14813],{"class":3511},"# Mehrere Dateien + Gesamtsumme\n",[2915,14815,14816],{"class":3402,"line":9411},[2915,14817,3506],{"emptyLinePlaceholder":3505},[2915,14819,14820,14822,14824,14826],{"class":3402,"line":9416},[2915,14821,14582],{"class":3406},[2915,14823,9029],{"class":3410},[2915,14825,5828],{"class":3410},[2915,14827,13644],{"class":3414},[2915,14829,14830],{"class":3402,"line":9428},[2915,14831,3506],{"emptyLinePlaceholder":3505},[2915,14833,14834],{"class":3402,"line":9433},[2915,14835,14836],{"class":3511},"# Anzahl der Prozesse zählen\n",[2915,14838,14839],{"class":3402,"line":9454},[2915,14840,3506],{"emptyLinePlaceholder":3505},[2915,14842,14843,14845,14847,14849,14851],{"class":3402,"line":9459},[2915,14844,7673],{"class":3406},[2915,14846,7676],{"class":3414},[2915,14848,7679],{"class":3533},[2915,14850,9026],{"class":3406},[2915,14852,14853],{"class":3410}," -l\n",[2915,14855,14856],{"class":3402,"line":9464},[2915,14857,3506],{"emptyLinePlaceholder":3505},[2915,14859,14860],{"class":3402,"line":9469},[2915,14861,14862],{"class":3511},"# Anzahl der Benutzer im System\n",[2915,14864,14865],{"class":3402,"line":9479},[2915,14866,3506],{"emptyLinePlaceholder":3505},[2915,14868,14869,14871,14873,14875],{"class":3402,"line":9484},[2915,14870,14582],{"class":3406},[2915,14872,9029],{"class":3410},[2915,14874,5657],{"class":3533},[2915,14876,8758],{"class":3414},[2915,14878,14879],{"class":3402,"line":9489},[2915,14880,3506],{"emptyLinePlaceholder":3505},[2915,14882,14883],{"class":3402,"line":9494},[2915,14884,14885],{"class":3511},"# Anzahl der Dateien in einem Verzeichnis\n",[2915,14887,14888],{"class":3402,"line":9504},[2915,14889,3506],{"emptyLinePlaceholder":3505},[2915,14891,14892,14894,14896,14898],{"class":3402,"line":9509},[2915,14893,12214],{"class":3406},[2915,14895,7679],{"class":3533},[2915,14897,9026],{"class":3406},[2915,14899,14853],{"class":3410},[2915,14901,14902],{"class":3402,"line":9514},[2915,14903,3506],{"emptyLinePlaceholder":3505},[2915,14905,14906],{"class":3402,"line":9519},[2915,14907,14908],{"class":3511},"# Anzahl der Treffer einer Suche\n",[2915,14910,14911],{"class":3402,"line":9524},[2915,14912,3506],{"emptyLinePlaceholder":3505},[2915,14914,14915,14917,14919,14921,14923,14925,14927],{"class":3402,"line":9529},[2915,14916,7645],{"class":3406},[2915,14918,7846],{"class":3410},[2915,14920,7870],{"class":3414},[2915,14922,8232],{"class":3414},[2915,14924,7679],{"class":3533},[2915,14926,9026],{"class":3406},[2915,14928,14853],{"class":3410},[2915,14930,14931],{"class":3402,"line":9534},[2915,14932,3506],{"emptyLinePlaceholder":3505},[2915,14934,14935],{"class":3402,"line":9539},[2915,14936,14937],{"class":3511},"# Datei auf maximale Zeilenlänge prüfen\n",[2915,14939,14940],{"class":3402,"line":9552},[2915,14941,3506],{"emptyLinePlaceholder":3505},[2915,14943,14944,14946,14948],{"class":3402,"line":9557},[2915,14945,14582],{"class":3406},[2915,14947,14802],{"class":3410},[2915,14949,13411],{"class":3414},[54,14951,11749],{"id":14952},"ausgabe-4",[11,14954,14701],{"id":14955},"wc-dateitxt",[16,14957,14958],{},"42 187 1204 datei.txt",[11,14960,14961],{"id":225},"| | |",[11,14963,14965],{"id":14964},"bytes","| | +-- Bytes",[11,14967,14969],{"id":14968},"wörter","| +-------- Wörter",[11,14971,14973],{"id":14972},"zeilen","+------------- Zeilen",[11,14975,14977],{"id":14976},"wc-l-dateitxt","wc -l datei.txt",[16,14979,14980],{},"42 datei.txt",[11,14982,14984],{"id":14983},"wc-l-txt","wc -l *.txt",[16,14986,14987],{},"10 datei1.txt",[16,14989,14990],{},"32 datei2.txt",[16,14992,14993],{},"42 gesamt",[11,14995,14997],{"id":14996},"ps-aux-wc-l","ps aux | wc -l",[16,14999,15000],{},"127",[11,15002,15004],{"id":15003},"ls-wc-l","ls | wc -l",[16,15006,15007],{},"23",[11,15009,15011],{"id":15010},"wc-c-vs-wc-m-utf-8-umlaute","wc -c vs wc -m (UTF-8: Umlaute)",[3392,15013,15015],{"className":3394,"code":15014,"language":3396,"meta":225,"style":225},"echo \"Straße\" | wc -c\n\n8 \u003C- 8 Bytes (ß = 2 Bytes in UTF-8)\n\necho \"Straße\" | wc -m\n\n",[3398,15016,15017,15031,15035,15067,15071],{"__ignoreMap":225},[2915,15018,15019,15021,15024,15026,15028],{"class":3402,"line":3403},[2915,15020,5059],{"class":3410},[2915,15022,15023],{"class":3414}," \"Straße\"",[2915,15025,7679],{"class":3533},[2915,15027,9026],{"class":3406},[2915,15029,15030],{"class":3410}," -c\n",[2915,15032,15033],{"class":3402,"line":1117},[2915,15034,3506],{"emptyLinePlaceholder":3505},[2915,15036,15037,15040,15042,15044,15047,15050,15053,15055,15057,15059,15062,15065],{"class":3402,"line":1125},[2915,15038,15039],{"class":3406},"8",[2915,15041,5657],{"class":3533},[2915,15043,3523],{"class":3414},[2915,15045,15046],{"class":3410}," 8",[2915,15048,15049],{"class":3414}," Bytes",[2915,15051,15052],{"class":3529}," (ß ",[2915,15054,5137],{"class":3414},[2915,15056,14080],{"class":3410},[2915,15058,15049],{"class":3414},[2915,15060,15061],{"class":3414}," in",[2915,15063,15064],{"class":3414}," UTF-8",[2915,15066,5152],{"class":3529},[2915,15068,15069],{"class":3402,"line":3515},[2915,15070,3506],{"emptyLinePlaceholder":3505},[2915,15072,15073,15075,15077,15079,15081],{"class":3402,"line":3520},[2915,15074,5059],{"class":3410},[2915,15076,15023],{"class":3414},[2915,15078,7679],{"class":3533},[2915,15080,9026],{"class":3406},[2915,15082,15083],{"class":3410}," -m\n",[16,15085,15086],{},"7 \u003C- 7 Zeichen",[11,15088,15089],{"id":15089},"head",[16,15091,15092,15094,15095,15098],{},[26,15093,11461],{}," Gibt die ",[26,15096,15097],{},"ersten Zeilen"," einer Datei aus. Standardmäßig werden die ersten 10 Zeilen angezeigt. Nützlich zum schnellen Einblick ohne alles laden zu müssen.",[16,15100,15101,4850,15103],{},[26,15102,6691],{},[26,15104,15105,15106,4850,15108],{},"head ",[2915,15107,11472],{},[2915,15109,14599],{},[54,15111,11532],{"id":15112},"flags-5",[645,15114,15115,15127],{},[648,15116,15117],{},[651,15118,15119,15123],{},[654,15120,15121],{},[26,15122,11543],{},[654,15124,15125],{},[26,15126,5483],{},[670,15128,15129,15137,15145,15153,15161,15169],{},[651,15130,15131,15134],{},[675,15132,15133],{},"-n N oder -N",[675,15135,15136],{},"Erste N Zeilen ausgeben",[651,15138,15139,15142],{},[675,15140,15141],{},"-n -N",[675,15143,15144],{},"Alle Zeilen außer die letzten N ausgeben",[651,15146,15147,15150],{},[675,15148,15149],{},"-c N",[675,15151,15152],{},"Erste N Bytes ausgeben",[651,15154,15155,15158],{},[675,15156,15157],{},"-c -N",[675,15159,15160],{},"Alle Bytes außer die letzten N",[651,15162,15163,15166],{},[675,15164,15165],{},"-q",[675,15167,15168],{},"Dateinamen-Header unterdrücken (quiet, bei mehreren Dateien)",[651,15170,15171,15173],{},[675,15172,7734],{},[675,15174,15175],{},"Dateinamen-Header immer anzeigen (verbose, auch bei einzelner Datei)",[54,15177,8676],{"id":15178},"beispiele-5",[11,15180,15182],{"id":15181},"erste-10-zeilen-standard","Erste 10 Zeilen (Standard)",[16,15184,15185],{},"head datei.txt",[11,15187,15189],{"id":15188},"erste-5-zeilen","Erste 5 Zeilen",[3392,15191,15193],{"className":3394,"code":15192,"language":3396,"meta":225,"style":225},"head -n 5 datei.txt\n\n# Kurzform: gleichbedeutend\n\nhead -5 datei.txt\n\n# Alle Zeilen AUSSER die letzten 3\n\nhead -n -3 datei.txt\n\n# Erste 100 Bytes der Datei\n\nhead -c 100 binärdatei\n\n# Erstes Kilobyte einer Datei\n\nhead -c 1K datei.bin\n\n# Erste Zeile einer Datei (z.B. CSV-Header lesen)\n\nhead -1 tabelle.csv\n\n# Mehrere Dateien – mit Trennlinien dazwischen\n\nhead -n 3 datei1.txt datei2.txt\n\n# Mehrere Dateien ohne Dateinamen-Header\n\nhead -q -n 3 *.conf\n\n# In welchen Shell-Skripten steht bash als Shebang?\n\nhead -1 *.sh | grep \"#!\u002Fbin\u002Fbash\"\n\n",[3398,15194,15195,15206,15210,15215,15219,15228,15232,15237,15241,15252,15256,15261,15265,15277,15281,15286,15290,15302,15306,15311,15315,15325,15329,15334,15338,15353,15357,15362,15366,15382,15386,15391,15395],{"__ignoreMap":225},[2915,15196,15197,15199,15201,15204],{"class":3402,"line":3403},[2915,15198,15089],{"class":3406},[2915,15200,8127],{"class":3410},[2915,15202,15203],{"class":3410}," 5",[2915,15205,7698],{"class":3414},[2915,15207,15208],{"class":3402,"line":1117},[2915,15209,3506],{"emptyLinePlaceholder":3505},[2915,15211,15212],{"class":3402,"line":1125},[2915,15213,15214],{"class":3511},"# Kurzform: gleichbedeutend\n",[2915,15216,15217],{"class":3402,"line":3515},[2915,15218,3506],{"emptyLinePlaceholder":3505},[2915,15220,15221,15223,15226],{"class":3402,"line":3520},[2915,15222,15089],{"class":3406},[2915,15224,15225],{"class":3410}," -5",[2915,15227,7698],{"class":3414},[2915,15229,15230],{"class":3402,"line":5070},[2915,15231,3506],{"emptyLinePlaceholder":3505},[2915,15233,15234],{"class":3402,"line":5075},[2915,15235,15236],{"class":3511},"# Alle Zeilen AUSSER die letzten 3\n",[2915,15238,15239],{"class":3402,"line":5093},[2915,15240,3506],{"emptyLinePlaceholder":3505},[2915,15242,15243,15245,15247,15250],{"class":3402,"line":5098},[2915,15244,15089],{"class":3406},[2915,15246,8127],{"class":3410},[2915,15248,15249],{"class":3410}," -3",[2915,15251,7698],{"class":3414},[2915,15253,15254],{"class":3402,"line":5207},[2915,15255,3506],{"emptyLinePlaceholder":3505},[2915,15257,15258],{"class":3402,"line":5212},[2915,15259,15260],{"class":3511},"# Erste 100 Bytes der Datei\n",[2915,15262,15263],{"class":3402,"line":5218},[2915,15264,3506],{"emptyLinePlaceholder":3505},[2915,15266,15267,15269,15271,15274],{"class":3402,"line":5223},[2915,15268,15089],{"class":3406},[2915,15270,9142],{"class":3410},[2915,15272,15273],{"class":3410}," 100",[2915,15275,15276],{"class":3414}," binärdatei\n",[2915,15278,15279],{"class":3402,"line":5229},[2915,15280,3506],{"emptyLinePlaceholder":3505},[2915,15282,15283],{"class":3402,"line":5253},[2915,15284,15285],{"class":3511},"# Erstes Kilobyte einer Datei\n",[2915,15287,15288],{"class":3402,"line":5266},[2915,15289,3506],{"emptyLinePlaceholder":3505},[2915,15291,15292,15294,15296,15299],{"class":3402,"line":5721},[2915,15293,15089],{"class":3406},[2915,15295,9142],{"class":3410},[2915,15297,15298],{"class":3414}," 1K",[2915,15300,15301],{"class":3414}," datei.bin\n",[2915,15303,15304],{"class":3402,"line":9401},[2915,15305,3506],{"emptyLinePlaceholder":3505},[2915,15307,15308],{"class":3402,"line":9406},[2915,15309,15310],{"class":3511},"# Erste Zeile einer Datei (z.B. CSV-Header lesen)\n",[2915,15312,15313],{"class":3402,"line":9411},[2915,15314,3506],{"emptyLinePlaceholder":3505},[2915,15316,15317,15319,15322],{"class":3402,"line":9416},[2915,15318,15089],{"class":3406},[2915,15320,15321],{"class":3410}," -1",[2915,15323,15324],{"class":3414}," tabelle.csv\n",[2915,15326,15327],{"class":3402,"line":9428},[2915,15328,3506],{"emptyLinePlaceholder":3505},[2915,15330,15331],{"class":3402,"line":9433},[2915,15332,15333],{"class":3511},"# Mehrere Dateien – mit Trennlinien dazwischen\n",[2915,15335,15336],{"class":3402,"line":9454},[2915,15337,3506],{"emptyLinePlaceholder":3505},[2915,15339,15340,15342,15344,15347,15350],{"class":3402,"line":9459},[2915,15341,15089],{"class":3406},[2915,15343,8127],{"class":3410},[2915,15345,15346],{"class":3410}," 3",[2915,15348,15349],{"class":3414}," datei1.txt",[2915,15351,15352],{"class":3414}," datei2.txt\n",[2915,15354,15355],{"class":3402,"line":9464},[2915,15356,3506],{"emptyLinePlaceholder":3505},[2915,15358,15359],{"class":3402,"line":9469},[2915,15360,15361],{"class":3511},"# Mehrere Dateien ohne Dateinamen-Header\n",[2915,15363,15364],{"class":3402,"line":9479},[2915,15365,3506],{"emptyLinePlaceholder":3505},[2915,15367,15368,15370,15373,15375,15377,15379],{"class":3402,"line":9484},[2915,15369,15089],{"class":3406},[2915,15371,15372],{"class":3410}," -q",[2915,15374,8127],{"class":3410},[2915,15376,15346],{"class":3410},[2915,15378,5828],{"class":3410},[2915,15380,15381],{"class":3414},".conf\n",[2915,15383,15384],{"class":3402,"line":9489},[2915,15385,3506],{"emptyLinePlaceholder":3505},[2915,15387,15388],{"class":3402,"line":9494},[2915,15389,15390],{"class":3511},"# In welchen Shell-Skripten steht bash als Shebang?\n",[2915,15392,15393],{"class":3402,"line":9504},[2915,15394,3506],{"emptyLinePlaceholder":3505},[2915,15396,15397,15399,15401,15403,15406,15408,15410],{"class":3402,"line":9509},[2915,15398,15089],{"class":3406},[2915,15400,15321],{"class":3410},[2915,15402,5828],{"class":3410},[2915,15404,15405],{"class":3414},".sh",[2915,15407,7679],{"class":3533},[2915,15409,7682],{"class":3406},[2915,15411,15412],{"class":3414}," \"#!\u002Fbin\u002Fbash\"\n",[54,15414,11749],{"id":15415},"ausgabe-5",[11,15417,15419],{"id":15418},"head-n-3-etcpasswd","head -n 3 \u002Fetc\u002Fpasswd",[16,15421,15422],{},"root❌0:0:root:\u002Froot:\u002Fbin\u002Fbash",[16,15424,15425],{},"daemon❌1:1:daemon:\u002Fusr\u002Fsbin:\u002Fusr\u002Fsbin\u002Fnologin",[16,15427,15428],{},"bin❌2:2:bin:\u002Fbin:\u002Fusr\u002Fsbin\u002Fnologin",[11,15430,15432],{"id":15431},"head-n-3-datei1txt-datei2txt","head -n 3 datei1.txt datei2.txt",[16,15434,15435],{},"==> datei1.txt \u003C==",[16,15437,15438],{},"Zeile 1 aus Datei 1",[16,15440,15441],{},"Zeile 2 aus Datei 1",[16,15443,15444],{},"Zeile 3 aus Datei 1",[16,15446,15447],{},"==> datei2.txt \u003C==",[16,15449,15450],{},"Zeile 1 aus Datei 2",[16,15452,15453],{},"Zeile 2 aus Datei 2",[16,15455,15456],{},"Zeile 3 aus Datei 2",[11,15458,15460],{"id":15459},"head-n-3-dateitxt-datei-hat-6-zeilen-gibt-zeilen-1-3-aus","head -n -3 datei.txt (datei hat 6 Zeilen -> gibt Zeilen 1-3 aus)",[16,15462,15463],{},"Zeile 1",[16,15465,15466],{},"Zeile 2",[16,15468,15469],{},"Zeile 3",[11,15471,15472],{"id":15472},"tail",[16,15474,15475,15094,15477,15480,15481,15484,15485,6584],{},[26,15476,11461],{},[26,15478,15479],{},"letzten Zeilen"," einer Datei aus (Standard: 10). Besonders wertvoll zur ",[26,15482,15483],{},"Echtzeit-Überwachung"," von Log-Dateien mit ",[26,15486,9329],{},[16,15488,15489,4850,15491],{},[26,15490,6691],{},[26,15492,15493,15494,4850,15496],{},"tail ",[2915,15495,11472],{},[2915,15497,14599],{},[54,15499,11532],{"id":15500},"flags-6",[645,15502,15503,15515],{},[648,15504,15505],{},[651,15506,15507,15511],{},[654,15508,15509],{},[26,15510,11543],{},[654,15512,15513],{},[26,15514,5483],{},[670,15516,15517,15524,15532,15539,15547,15554,15561,15569,15577,15584],{},[651,15518,15519,15521],{},[675,15520,15133],{},[675,15522,15523],{},"Letzte N Zeilen ausgeben",[651,15525,15526,15529],{},[675,15527,15528],{},"-n +N",[675,15530,15531],{},"Ab Zeile N bis zum Ende ausgeben (Zeilen 1 bis N-1 überspringen)",[651,15533,15534,15536],{},[675,15535,15149],{},[675,15537,15538],{},"Letzte N Bytes ausgeben",[651,15540,15541,15544],{},[675,15542,15543],{},"-c +N",[675,15545,15546],{},"Ab Byte-Position N bis zum Ende",[651,15548,15549,15551],{},[675,15550,9329],{},[675,15552,15553],{},"Follow – Datei live verfolgen, neue Zeilen werden sofort angezeigt",[651,15555,15556,15558],{},[675,15557,7789],{},[675,15559,15560],{},"Wie -f, aber Datei wird neu geöffnet wenn sie rotiert\u002Fneu erstellt wird (robuster für Log-Rotation)",[651,15562,15563,15566],{},[675,15564,15565],{},"-s N",[675,15567,15568],{},"Intervall (Sekunden) zwischen Prüfungen bei -f (Standard: 1.0)",[651,15570,15571,15574],{},[675,15572,15573],{},"--pid=PID",[675,15575,15576],{},"Beendet sich automatisch wenn Prozess mit PID endet",[651,15578,15579,15581],{},[675,15580,15165],{},[675,15582,15583],{},"Dateinamen-Header unterdrücken",[651,15585,15586,15588],{},[675,15587,7734],{},[675,15589,15590],{},"Dateinamen-Header immer anzeigen",[54,15592,8676],{"id":15593},"beispiele-6",[11,15595,15597],{"id":15596},"letzte-10-zeilen-standard","Letzte 10 Zeilen (Standard)",[16,15599,15600],{},"tail datei.txt",[11,15602,15604],{"id":15603},"letzte-20-zeilen","Letzte 20 Zeilen",[3392,15606,15608],{"className":3394,"code":15607,"language":3396,"meta":225,"style":225},"tail -n 20 \u002Fvar\u002Flog\u002Fsyslog\n\n# Kurzform\n\ntail -20 \u002Fvar\u002Flog\u002Fsyslog\n\n# Log-Datei live verfolgen (Strg+C zum Beenden)\n\ntail -f \u002Fvar\u002Flog\u002Fnginx\u002Faccess.log\n\n# Robusterer Follow (überlebt Log-Rotation)\n\ntail -F \u002Fvar\u002Flog\u002Fnginx\u002Ferror.log\n\n# Follow + gleichzeitig nach Fehlern filtern\n\ntail -f \u002Fvar\u002Flog\u002Fsyslog | grep -i \"error\\|warn\\|crit\"\n\n# Ab Zeile 50 bis Ende ausgeben\n\ntail -n +50 datei.txt\n\n# Letzten 1KB einer Datei ausgeben\n\ntail -c 1K datei.txt\n\n# Follow und automatisch beenden wenn Prozess endet\n\ntail -f --pid=4321 \u002Fvar\u002Flog\u002Fapp.log\n\n# Mehrere Log-Dateien gleichzeitig verfolgen\n\ntail -f \u002Fvar\u002Flog\u002Fsyslog \u002Fvar\u002Flog\u002Fauth.log\n\n# Letzten Eintrag in CSV-Datei\n\ntail -1 daten.csv\n\n# Alle außer die erste Zeile ausgeben (Header überspringen)\n\ntail -n +2 tabelle.csv\n\n",[3398,15609,15610,15622,15626,15631,15635,15644,15648,15653,15657,15666,15670,15675,15679,15688,15692,15697,15701,15719,15723,15728,15732,15743,15747,15752,15756,15766,15770,15775,15779,15791,15795,15800,15804,15815,15819,15824,15828,15837,15841,15846,15850],{"__ignoreMap":225},[2915,15611,15612,15614,15616,15619],{"class":3402,"line":3403},[2915,15613,15472],{"class":3406},[2915,15615,8127],{"class":3410},[2915,15617,15618],{"class":3410}," 20",[2915,15620,15621],{"class":3414}," \u002Fvar\u002Flog\u002Fsyslog\n",[2915,15623,15624],{"class":3402,"line":1117},[2915,15625,3506],{"emptyLinePlaceholder":3505},[2915,15627,15628],{"class":3402,"line":1125},[2915,15629,15630],{"class":3511},"# Kurzform\n",[2915,15632,15633],{"class":3402,"line":3515},[2915,15634,3506],{"emptyLinePlaceholder":3505},[2915,15636,15637,15639,15642],{"class":3402,"line":3520},[2915,15638,15472],{"class":3406},[2915,15640,15641],{"class":3410}," -20",[2915,15643,15621],{"class":3414},[2915,15645,15646],{"class":3402,"line":5070},[2915,15647,3506],{"emptyLinePlaceholder":3505},[2915,15649,15650],{"class":3402,"line":5075},[2915,15651,15652],{"class":3511},"# Log-Datei live verfolgen (Strg+C zum Beenden)\n",[2915,15654,15655],{"class":3402,"line":5093},[2915,15656,3506],{"emptyLinePlaceholder":3505},[2915,15658,15659,15661,15663],{"class":3402,"line":5098},[2915,15660,15472],{"class":3406},[2915,15662,10089],{"class":3410},[2915,15664,15665],{"class":3414}," \u002Fvar\u002Flog\u002Fnginx\u002Faccess.log\n",[2915,15667,15668],{"class":3402,"line":5207},[2915,15669,3506],{"emptyLinePlaceholder":3505},[2915,15671,15672],{"class":3402,"line":5212},[2915,15673,15674],{"class":3511},"# Robusterer Follow (überlebt Log-Rotation)\n",[2915,15676,15677],{"class":3402,"line":5218},[2915,15678,3506],{"emptyLinePlaceholder":3505},[2915,15680,15681,15683,15685],{"class":3402,"line":5223},[2915,15682,15472],{"class":3406},[2915,15684,8750],{"class":3410},[2915,15686,15687],{"class":3414}," \u002Fvar\u002Flog\u002Fnginx\u002Ferror.log\n",[2915,15689,15690],{"class":3402,"line":5229},[2915,15691,3506],{"emptyLinePlaceholder":3505},[2915,15693,15694],{"class":3402,"line":5253},[2915,15695,15696],{"class":3511},"# Follow + gleichzeitig nach Fehlern filtern\n",[2915,15698,15699],{"class":3402,"line":5266},[2915,15700,3506],{"emptyLinePlaceholder":3505},[2915,15702,15703,15705,15707,15710,15712,15714,15716],{"class":3402,"line":5721},[2915,15704,15472],{"class":3406},[2915,15706,10089],{"class":3410},[2915,15708,15709],{"class":3414}," \u002Fvar\u002Flog\u002Fsyslog",[2915,15711,7679],{"class":3533},[2915,15713,7682],{"class":3406},[2915,15715,7692],{"class":3410},[2915,15717,15718],{"class":3414}," \"error\\|warn\\|crit\"\n",[2915,15720,15721],{"class":3402,"line":9401},[2915,15722,3506],{"emptyLinePlaceholder":3505},[2915,15724,15725],{"class":3402,"line":9406},[2915,15726,15727],{"class":3511},"# Ab Zeile 50 bis Ende ausgeben\n",[2915,15729,15730],{"class":3402,"line":9411},[2915,15731,3506],{"emptyLinePlaceholder":3505},[2915,15733,15734,15736,15738,15741],{"class":3402,"line":9416},[2915,15735,15472],{"class":3406},[2915,15737,8127],{"class":3410},[2915,15739,15740],{"class":3414}," +50",[2915,15742,7698],{"class":3414},[2915,15744,15745],{"class":3402,"line":9428},[2915,15746,3506],{"emptyLinePlaceholder":3505},[2915,15748,15749],{"class":3402,"line":9433},[2915,15750,15751],{"class":3511},"# Letzten 1KB einer Datei ausgeben\n",[2915,15753,15754],{"class":3402,"line":9454},[2915,15755,3506],{"emptyLinePlaceholder":3505},[2915,15757,15758,15760,15762,15764],{"class":3402,"line":9459},[2915,15759,15472],{"class":3406},[2915,15761,9142],{"class":3410},[2915,15763,15298],{"class":3414},[2915,15765,7698],{"class":3414},[2915,15767,15768],{"class":3402,"line":9464},[2915,15769,3506],{"emptyLinePlaceholder":3505},[2915,15771,15772],{"class":3402,"line":9469},[2915,15773,15774],{"class":3511},"# Follow und automatisch beenden wenn Prozess endet\n",[2915,15776,15777],{"class":3402,"line":9479},[2915,15778,3506],{"emptyLinePlaceholder":3505},[2915,15780,15781,15783,15785,15788],{"class":3402,"line":9484},[2915,15782,15472],{"class":3406},[2915,15784,10089],{"class":3410},[2915,15786,15787],{"class":3410}," --pid=4321",[2915,15789,15790],{"class":3414}," \u002Fvar\u002Flog\u002Fapp.log\n",[2915,15792,15793],{"class":3402,"line":9489},[2915,15794,3506],{"emptyLinePlaceholder":3505},[2915,15796,15797],{"class":3402,"line":9494},[2915,15798,15799],{"class":3511},"# Mehrere Log-Dateien gleichzeitig verfolgen\n",[2915,15801,15802],{"class":3402,"line":9504},[2915,15803,3506],{"emptyLinePlaceholder":3505},[2915,15805,15806,15808,15810,15812],{"class":3402,"line":9509},[2915,15807,15472],{"class":3406},[2915,15809,10089],{"class":3410},[2915,15811,15709],{"class":3414},[2915,15813,15814],{"class":3414}," \u002Fvar\u002Flog\u002Fauth.log\n",[2915,15816,15817],{"class":3402,"line":9514},[2915,15818,3506],{"emptyLinePlaceholder":3505},[2915,15820,15821],{"class":3402,"line":9519},[2915,15822,15823],{"class":3511},"# Letzten Eintrag in CSV-Datei\n",[2915,15825,15826],{"class":3402,"line":9524},[2915,15827,3506],{"emptyLinePlaceholder":3505},[2915,15829,15830,15832,15834],{"class":3402,"line":9529},[2915,15831,15472],{"class":3406},[2915,15833,15321],{"class":3410},[2915,15835,15836],{"class":3414}," daten.csv\n",[2915,15838,15839],{"class":3402,"line":9534},[2915,15840,3506],{"emptyLinePlaceholder":3505},[2915,15842,15843],{"class":3402,"line":9539},[2915,15844,15845],{"class":3511},"# Alle außer die erste Zeile ausgeben (Header überspringen)\n",[2915,15847,15848],{"class":3402,"line":9552},[2915,15849,3506],{"emptyLinePlaceholder":3505},[2915,15851,15852,15854,15856,15859],{"class":3402,"line":9557},[2915,15853,15472],{"class":3406},[2915,15855,8127],{"class":3410},[2915,15857,15858],{"class":3414}," +2",[2915,15860,15324],{"class":3414},[54,15862,11749],{"id":15863},"ausgabe-6",[11,15865,15867],{"id":15866},"tail-n-3-etcpasswd","tail -n 3 \u002Fetc\u002Fpasswd",[16,15869,15870],{},"matta❌1000:1000:matta,,,:\u002Fhome\u002Fmatta:\u002Fbin\u002Fbash",[16,15872,15873],{},"www-data❌33:33:www-data:\u002Fvar\u002Fwww:\u002Fusr\u002Fsbin\u002Fnologin",[16,15875,15876],{},"nobody❌65534:65534:nobody:\u002Fnonexistent:\u002Fusr\u002Fsbin\u002Fnologin",[11,15878,15880],{"id":15879},"tail-f-varlogsyslog-live-neue-einträge-erscheinen-automatisch","tail -f \u002Fvar\u002Flog\u002Fsyslog (live, neue Einträge erscheinen automatisch)",[16,15882,15883,15884,15887],{},"Apr 29 10:00:01 server cron",[2915,15885,15886],{},"1234",": (root) CMD (\u002Fusr\u002Fbin\u002Fbackup.sh)",[16,15889,15890,15891,15894],{},"Apr 29 10:01:01 server cron",[2915,15892,15893],{},"1235",": (root) CMD (\u002Fusr\u002Fbin\u002Fcleanup.sh)",[16,15896,15897,15898,15901],{},"Apr 29 10:02:00 server sshd",[2915,15899,15900],{},"9876",": Accepted publickey for alice from 192.168.1.5",[16,15903,15904],{},"... \u003C- Strg+C zum Beenden",[11,15906,15908],{"id":15907},"tail-n-2-tabellecsv-header-wird-übersprungen","tail -n +2 tabelle.csv (Header wird übersprungen)",[16,15910,15911],{},"alice,30,Entwicklerin",[16,15913,15914],{},"bob,25,DevOps",[16,15916,15917],{},"charlie,35,Sysadmin",[16,15919,15920,15921],{},"***Tipp:*",[257,15922,15923,6923],{},[257,15924,15925,4850,15930,4850,15933,4850,15937,4850,15940],{},[257,15926,15927],{},[26,15928,15929],{},"tail -f",[257,15931,15932],{},"ist das wichtigste Werkzeug für Live-Log-Analyse.",[257,15934,15935],{},[26,15936,7789],{},[257,15938,15939],{},"ist stabiler bei Systemen mit Log-Rotation (z. B.",[257,15941,15942],{},[26,15943,15944],{},"logrotate",[11,15946,7645],{"id":7645},[16,15948,15949,15951,15952,6584],{},[26,15950,11461],{}," Sucht in Dateien oder der Standardeingabe nach Zeilen, die einem Muster (regulärer Ausdruck) entsprechen. \"grep\" steht für ",[257,15953,15954],{},"Global Regular Expression Print",[16,15956,15957,4850,15959],{},[26,15958,6691],{},[26,15960,15961,15962,15964,15965],{},"grep ",[2915,15963,11472],{}," MUSTER ",[2915,15966,14599],{},[54,15968,11532],{"id":15969},"flags-7",[645,15971,15972,15988],{},[648,15973,15974],{},[651,15975,15976,15980,15984],{},[654,15977,15978],{},[26,15979,11543],{},[654,15981,15982],{},[26,15983,11548],{},[654,15985,15986],{},[26,15987,5483],{},[670,15989,15990,16000,16010,16020,16030,16040,16050,16060,16070,16080,16090,16100,16110,16121,16132,16143,16153,16164,16175,16186,16196,16205,16215],{},[651,15991,15992,15994,15997],{},[675,15993,7726],{},[675,15995,15996],{},"--ignore-case",[675,15998,15999],{},"Groß-\u002FKleinschreibung ignorieren",[651,16001,16002,16004,16007],{},[675,16003,7734],{},[675,16005,16006],{},"--invert-match",[675,16008,16009],{},"Invertieren – nur nicht-passende Zeilen ausgeben",[651,16011,16012,16014,16017],{},[675,16013,4853],{},[675,16015,16016],{},"--recursive",[675,16018,16019],{},"Rekursiv in Verzeichnisbaum suchen",[651,16021,16022,16024,16027],{},[675,16023,12543],{},[675,16025,16026],{},"--dereference-recursive",[675,16028,16029],{},"Wie -r, folgt aber auch symbolischen Links",[651,16031,16032,16034,16037],{},[675,16033,7742],{},[675,16035,16036],{},"--line-number",[675,16038,16039],{},"Zeilennummer vor jede Ausgabezeile",[651,16041,16042,16044,16047],{},[675,16043,7757],{},[675,16045,16046],{},"--files-with-matches",[675,16048,16049],{},"Nur Dateinamen ausgeben (nicht Inhalt)",[651,16051,16052,16054,16057],{},[675,16053,12596],{},[675,16055,16056],{},"--files-without-match",[675,16058,16059],{},"Dateinamen ausgeben die NICHT passen",[651,16061,16062,16064,16067],{},[675,16063,7765],{},[675,16065,16066],{},"--count",[675,16068,16069],{},"Anzahl der Treffer pro Datei ausgeben",[651,16071,16072,16074,16077],{},[675,16073,7781],{},[675,16075,16076],{},"--extended-regexp",[675,16078,16079],{},"Erweiterte reguläre Ausdrücke (ERE)",[651,16081,16082,16084,16087],{},[675,16083,7789],{},[675,16085,16086],{},"--fixed-strings",[675,16088,16089],{},"Feste Zeichenkette, kein Regex-Parsing",[651,16091,16092,16094,16097],{},[675,16093,12604],{},[675,16095,16096],{},"--perl-regexp",[675,16098,16099],{},"Perl-kompatible Regex (PCRE)",[651,16101,16102,16104,16107],{},[675,16103,7797],{},[675,16105,16106],{},"--only-matching",[675,16108,16109],{},"Nur den genau passenden Teil ausgeben",[651,16111,16112,16115,16118],{},[675,16113,16114],{},"-A N",[675,16116,16117],{},"--after-context=N",[675,16119,16120],{},"N Zeilen nach dem Treffer ausgeben",[651,16122,16123,16126,16129],{},[675,16124,16125],{},"-B N",[675,16127,16128],{},"--before-context=N",[675,16130,16131],{},"N Zeilen vor dem Treffer ausgeben",[651,16133,16134,16137,16140],{},[675,16135,16136],{},"-C N",[675,16138,16139],{},"--context=N",[675,16141,16142],{},"N Zeilen vor und nach dem Treffer",[651,16144,16145,16147,16150],{},[675,16146,7773],{},[675,16148,16149],{},"--word-regexp",[675,16151,16152],{},"Nur ganze Wörter suchen",[651,16154,16155,16158,16161],{},[675,16156,16157],{},"-x",[675,16159,16160],{},"--line-regexp",[675,16162,16163],{},"Nur ganze Zeilen suchen",[651,16165,16166,16169,16172],{},[675,16167,16168],{},"--color",[675,16170,16171],{},"--colour",[675,16173,16174],{},"Treffer farbig hervorheben",[651,16176,16177,16180,16183],{},[675,16178,16179],{},"-m N",[675,16181,16182],{},"--max-count=N",[675,16184,16185],{},"Nach N Treffern abbrechen",[651,16187,16188,16190,16193],{},[675,16189,15165],{},[675,16191,16192],{},"--quiet",[675,16194,16195],{},"Keine Ausgabe, nur Exit-Code (0 = gefunden)",[651,16197,16198,16200,16203],{},[675,16199,4849],{},[675,16201,16202],{},"--no-messages",[675,16204,13280],{},[651,16206,16207,16209,16212],{},[675,16208,12572],{},[675,16210,16211],{},"--no-filename",[675,16213,16214],{},"Dateiname in Ausgabe unterdrücken",[651,16216,16217,16220,16223],{},[675,16218,16219],{},"-H",[675,16221,16222],{},"--with-filename",[675,16224,16225],{},"Dateiname immer ausgeben",[54,16227,16229],{"id":16228},"reguläre-ausdrücke-kurzübersicht","Reguläre Ausdrücke (Kurzübersicht)",[645,16231,16232,16245],{},[648,16233,16234],{},[651,16235,16236,16241],{},[654,16237,16238],{},[26,16239,16240],{},"Muster",[654,16242,16243],{},[26,16244,5483],{},[670,16246,16247,16254,16261,16268,16275,16282,16290,16300,16310,16320,16328,16336],{},[651,16248,16249,16251],{},[675,16250,6584],{},[675,16252,16253],{},"Ein beliebiges Zeichen",[651,16255,16256,16258],{},[675,16257,13910],{},[675,16259,16260],{},"Zeilenanfang",[651,16262,16263,16265],{},[675,16264,4897],{},[675,16266,16267],{},"Zeilenende",[651,16269,16270,16272],{},[675,16271,5078],{},[675,16273,16274],{},"0 oder mehr des vorigen Zeichens",[651,16276,16277,16279],{},[675,16278,13172],{},[675,16280,16281],{},"1 oder mehr (ERE: -E)",[651,16283,16284,16287],{},[675,16285,16286],{},"?",[675,16288,16289],{},"0 oder 1 (ERE: -E)",[651,16291,16292,16297],{},[675,16293,16294],{},[2915,16295,16296],{},"abc",[675,16298,16299],{},"Eines der Zeichen a, b oder c",[651,16301,16302,16307],{},[675,16303,16304],{},[2915,16305,16306],{},"^abc",[675,16308,16309],{},"Keines der Zeichen a, b, c",[651,16311,16312,16317],{},[675,16313,16314],{},[2915,16315,16316],{},"a-z",[675,16318,16319],{},"Zeichenklasse a bis z",[651,16321,16322,16325],{},[675,16323,16324],{},"\\b",[675,16326,16327],{},"Wortgrenze",[651,16329,16330,16333],{},[675,16331,16332],{},"(a",[675,16334,16335],{},"b)",[651,16337,16338,16341],{},[675,16339,16340],{},"{n,m}",[675,16342,16343],{},"n bis m Wiederholungen (ERE: -E)",[54,16345,8676],{"id":16346},"beispiele-7",[11,16348,16350],{"id":16349},"einfache-suche","Einfache Suche",[3392,16352,16354],{"className":3394,"code":16353,"language":3396,"meta":225,"style":225},"grep \"root\" \u002Fetc\u002Fpasswd\n\n# Groß-\u002FKleinschreibung ignorieren\n\ngrep -i \"error\" \u002Fvar\u002Flog\u002Fsyslog\n\n# Rekursiv in einem Verzeichnis suchen\n\ngrep -r \"TODO\" \u002Fhome\u002Fmatta\u002Fprojekt\u002F\n\n# Mit Zeilennummern\n\ngrep -n \"bash\" \u002Fetc\u002Fpasswd\n\n# Invertierte Suche: alle Nicht-Kommentar-Zeilen in Konfigdatei\n\ngrep -v \"^#\" \u002Fetc\u002Fssh\u002Fsshd_config | grep -v \"^$\"\n\n# Nur Dateinamen ausgeben (welche Dateien enthalten den Begriff?)\n\ngrep -rl \"passwort\" \u002Fetc\u002F\n\n# Anzahl der Treffer pro Datei\n\ngrep -rc \"ERROR\" \u002Fvar\u002Flog\u002F\n\n# Erweiterte Regex: root oder daemon am Zeilenanfang\n\ngrep -E \"^(root|daemon)\" \u002Fetc\u002Fpasswd\n\n# Zeilen mit Kontext ausgeben\n\ngrep -C 2 \"CRITICAL\" \u002Fvar\u002Flog\u002Fsyslog\n\n# Nur passende Teile ausgeben – alle IP-Adressen extrahieren\n\ngrep -oE \"[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}\" access.log\n\n# Nur ganze Wörter finden\n\ngrep -w \"pass\" datei.txt\n\n# Stilles grep – nur Exit-Code prüfen (für Skripte)\n\nif grep -q \"error\" \u002Fvar\u002Flog\u002Fapp.log; then\n\necho \"Fehler gefunden!\"\n\nfi\n\n# Nach einem festen String suchen (kein Regex)\n\ngrep -F \"192.168.1.1\" \u002Fvar\u002Flog\u002Fauth.log\n\n# Maximal 5 Treffer ausgeben\n\ngrep -m 5 \"warn\" \u002Fvar\u002Flog\u002Fsyslog\n\n# Mehrere Dateien, mit Dateinamen ausgeben\n\ngrep -H \"PermitRootLogin\" \u002Fetc\u002Fssh\u002Fsshd_config\n\n",[3398,16355,16356,16365,16369,16374,16378,16388,16392,16397,16401,16412,16416,16421,16425,16436,16440,16445,16449,16471,16475,16480,16484,16496,16500,16505,16509,16522,16526,16531,16535,16547,16551,16556,16560,16574,16578,16583,16587,16600,16604,16609,16613,16624,16628,16633,16637,16654,16658,16665,16669,16673,16677,16682,16686,16697,16701,16706,16710,16723,16727,16732,16736],{"__ignoreMap":225},[2915,16357,16358,16360,16363],{"class":3402,"line":3403},[2915,16359,7645],{"class":3406},[2915,16361,16362],{"class":3414}," \"root\"",[2915,16364,8758],{"class":3414},[2915,16366,16367],{"class":3402,"line":1117},[2915,16368,3506],{"emptyLinePlaceholder":3505},[2915,16370,16371],{"class":3402,"line":1125},[2915,16372,16373],{"class":3511},"# Groß-\u002FKleinschreibung ignorieren\n",[2915,16375,16376],{"class":3402,"line":3515},[2915,16377,3506],{"emptyLinePlaceholder":3505},[2915,16379,16380,16382,16384,16386],{"class":3402,"line":3520},[2915,16381,7645],{"class":3406},[2915,16383,7692],{"class":3410},[2915,16385,7665],{"class":3414},[2915,16387,15621],{"class":3414},[2915,16389,16390],{"class":3402,"line":5070},[2915,16391,3506],{"emptyLinePlaceholder":3505},[2915,16393,16394],{"class":3402,"line":5075},[2915,16395,16396],{"class":3511},"# Rekursiv in einem Verzeichnis suchen\n",[2915,16398,16399],{"class":3402,"line":5093},[2915,16400,3506],{"emptyLinePlaceholder":3505},[2915,16402,16403,16405,16407,16409],{"class":3402,"line":5098},[2915,16404,7645],{"class":3406},[2915,16406,7846],{"class":3410},[2915,16408,7870],{"class":3414},[2915,16410,16411],{"class":3414}," \u002Fhome\u002Fmatta\u002Fprojekt\u002F\n",[2915,16413,16414],{"class":3402,"line":5207},[2915,16415,3506],{"emptyLinePlaceholder":3505},[2915,16417,16418],{"class":3402,"line":5212},[2915,16419,16420],{"class":3511},"# Mit Zeilennummern\n",[2915,16422,16423],{"class":3402,"line":5218},[2915,16424,3506],{"emptyLinePlaceholder":3505},[2915,16426,16427,16429,16431,16434],{"class":3402,"line":5223},[2915,16428,7645],{"class":3406},[2915,16430,8127],{"class":3410},[2915,16432,16433],{"class":3414}," \"bash\"",[2915,16435,8758],{"class":3414},[2915,16437,16438],{"class":3402,"line":5229},[2915,16439,3506],{"emptyLinePlaceholder":3505},[2915,16441,16442],{"class":3402,"line":5253},[2915,16443,16444],{"class":3511},"# Invertierte Suche: alle Nicht-Kommentar-Zeilen in Konfigdatei\n",[2915,16446,16447],{"class":3402,"line":5266},[2915,16448,3506],{"emptyLinePlaceholder":3505},[2915,16450,16451,16453,16456,16459,16462,16464,16466,16468],{"class":3402,"line":5721},[2915,16452,7645],{"class":3406},[2915,16454,16455],{"class":3410}," -v",[2915,16457,16458],{"class":3414}," \"^#\"",[2915,16460,16461],{"class":3414}," \u002Fetc\u002Fssh\u002Fsshd_config",[2915,16463,7679],{"class":3533},[2915,16465,7682],{"class":3406},[2915,16467,16455],{"class":3410},[2915,16469,16470],{"class":3414}," \"^$\"\n",[2915,16472,16473],{"class":3402,"line":9401},[2915,16474,3506],{"emptyLinePlaceholder":3505},[2915,16476,16477],{"class":3402,"line":9406},[2915,16478,16479],{"class":3511},"# Nur Dateinamen ausgeben (welche Dateien enthalten den Begriff?)\n",[2915,16481,16482],{"class":3402,"line":9411},[2915,16483,3506],{"emptyLinePlaceholder":3505},[2915,16485,16486,16488,16490,16493],{"class":3402,"line":9416},[2915,16487,7645],{"class":3406},[2915,16489,7867],{"class":3410},[2915,16491,16492],{"class":3414}," \"passwort\"",[2915,16494,16495],{"class":3414}," \u002Fetc\u002F\n",[2915,16497,16498],{"class":3402,"line":9428},[2915,16499,3506],{"emptyLinePlaceholder":3505},[2915,16501,16502],{"class":3402,"line":9433},[2915,16503,16504],{"class":3511},"# Anzahl der Treffer pro Datei\n",[2915,16506,16507],{"class":3402,"line":9454},[2915,16508,3506],{"emptyLinePlaceholder":3505},[2915,16510,16511,16513,16516,16519],{"class":3402,"line":9459},[2915,16512,7645],{"class":3406},[2915,16514,16515],{"class":3410}," -rc",[2915,16517,16518],{"class":3414}," \"ERROR\"",[2915,16520,16521],{"class":3414}," \u002Fvar\u002Flog\u002F\n",[2915,16523,16524],{"class":3402,"line":9464},[2915,16525,3506],{"emptyLinePlaceholder":3505},[2915,16527,16528],{"class":3402,"line":9469},[2915,16529,16530],{"class":3511},"# Erweiterte Regex: root oder daemon am Zeilenanfang\n",[2915,16532,16533],{"class":3402,"line":9479},[2915,16534,3506],{"emptyLinePlaceholder":3505},[2915,16536,16537,16539,16542,16545],{"class":3402,"line":9484},[2915,16538,7645],{"class":3406},[2915,16540,16541],{"class":3410}," -E",[2915,16543,16544],{"class":3414}," \"^(root|daemon)\"",[2915,16546,8758],{"class":3414},[2915,16548,16549],{"class":3402,"line":9489},[2915,16550,3506],{"emptyLinePlaceholder":3505},[2915,16552,16553],{"class":3402,"line":9494},[2915,16554,16555],{"class":3511},"# Zeilen mit Kontext ausgeben\n",[2915,16557,16558],{"class":3402,"line":9504},[2915,16559,3506],{"emptyLinePlaceholder":3505},[2915,16561,16562,16564,16567,16569,16572],{"class":3402,"line":9509},[2915,16563,7645],{"class":3406},[2915,16565,16566],{"class":3410}," -C",[2915,16568,14080],{"class":3410},[2915,16570,16571],{"class":3414}," \"CRITICAL\"",[2915,16573,15621],{"class":3414},[2915,16575,16576],{"class":3402,"line":9514},[2915,16577,3506],{"emptyLinePlaceholder":3505},[2915,16579,16580],{"class":3402,"line":9519},[2915,16581,16582],{"class":3511},"# Nur passende Teile ausgeben – alle IP-Adressen extrahieren\n",[2915,16584,16585],{"class":3402,"line":9524},[2915,16586,3506],{"emptyLinePlaceholder":3505},[2915,16588,16589,16591,16594,16597],{"class":3402,"line":9529},[2915,16590,7645],{"class":3406},[2915,16592,16593],{"class":3410}," -oE",[2915,16595,16596],{"class":3414}," \"[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}\"",[2915,16598,16599],{"class":3414}," access.log\n",[2915,16601,16602],{"class":3402,"line":9534},[2915,16603,3506],{"emptyLinePlaceholder":3505},[2915,16605,16606],{"class":3402,"line":9539},[2915,16607,16608],{"class":3511},"# Nur ganze Wörter finden\n",[2915,16610,16611],{"class":3402,"line":9552},[2915,16612,3506],{"emptyLinePlaceholder":3505},[2915,16614,16615,16617,16619,16622],{"class":3402,"line":9557},[2915,16616,7645],{"class":3406},[2915,16618,11742],{"class":3410},[2915,16620,16621],{"class":3414}," \"pass\"",[2915,16623,7698],{"class":3414},[2915,16625,16626],{"class":3402,"line":9570},[2915,16627,3506],{"emptyLinePlaceholder":3505},[2915,16629,16630],{"class":3402,"line":9575},[2915,16631,16632],{"class":3511},"# Stilles grep – nur Exit-Code prüfen (für Skripte)\n",[2915,16634,16635],{"class":3402,"line":9588},[2915,16636,3506],{"emptyLinePlaceholder":3505},[2915,16638,16639,16641,16643,16645,16647,16650,16652],{"class":3402,"line":9593},[2915,16640,4951],{"class":3533},[2915,16642,7682],{"class":3406},[2915,16644,15372],{"class":3410},[2915,16646,7665],{"class":3414},[2915,16648,16649],{"class":3414}," \u002Fvar\u002Flog\u002Fapp.log",[2915,16651,5248],{"class":3529},[2915,16653,4979],{"class":3533},[2915,16655,16656],{"class":3402,"line":9598},[2915,16657,3506],{"emptyLinePlaceholder":3505},[2915,16659,16660,16662],{"class":3402,"line":9603},[2915,16661,5059],{"class":3410},[2915,16663,16664],{"class":3414}," \"Fehler gefunden!\"\n",[2915,16666,16667],{"class":3402,"line":9619},[2915,16668,3506],{"emptyLinePlaceholder":3505},[2915,16670,16671],{"class":3402,"line":9624},[2915,16672,4997],{"class":3533},[2915,16674,16675],{"class":3402,"line":9629},[2915,16676,3506],{"emptyLinePlaceholder":3505},[2915,16678,16679],{"class":3402,"line":9634},[2915,16680,16681],{"class":3511},"# Nach einem festen String suchen (kein Regex)\n",[2915,16683,16684],{"class":3402,"line":9642},[2915,16685,3506],{"emptyLinePlaceholder":3505},[2915,16687,16688,16690,16692,16695],{"class":3402,"line":9647},[2915,16689,7645],{"class":3406},[2915,16691,8750],{"class":3410},[2915,16693,16694],{"class":3414}," \"192.168.1.1\"",[2915,16696,15814],{"class":3414},[2915,16698,16699],{"class":3402,"line":9656},[2915,16700,3506],{"emptyLinePlaceholder":3505},[2915,16702,16703],{"class":3402,"line":9661},[2915,16704,16705],{"class":3511},"# Maximal 5 Treffer ausgeben\n",[2915,16707,16708],{"class":3402,"line":9666},[2915,16709,3506],{"emptyLinePlaceholder":3505},[2915,16711,16712,16714,16716,16718,16721],{"class":3402,"line":9671},[2915,16713,7645],{"class":3406},[2915,16715,14780],{"class":3410},[2915,16717,15203],{"class":3410},[2915,16719,16720],{"class":3414}," \"warn\"",[2915,16722,15621],{"class":3414},[2915,16724,16725],{"class":3402,"line":9685},[2915,16726,3506],{"emptyLinePlaceholder":3505},[2915,16728,16729],{"class":3402,"line":9690},[2915,16730,16731],{"class":3511},"# Mehrere Dateien, mit Dateinamen ausgeben\n",[2915,16733,16734],{"class":3402,"line":9711},[2915,16735,3506],{"emptyLinePlaceholder":3505},[2915,16737,16738,16740,16743,16746],{"class":3402,"line":9716},[2915,16739,7645],{"class":3406},[2915,16741,16742],{"class":3410}," -H",[2915,16744,16745],{"class":3414}," \"PermitRootLogin\"",[2915,16747,16748],{"class":3414}," \u002Fetc\u002Fssh\u002Fsshd_config\n",[54,16750,11749],{"id":16751},"ausgabe-7",[11,16753,16755],{"id":16754},"grep-root-etcpasswd","grep \"root\" \u002Fetc\u002Fpasswd",[16,16757,15422],{},[11,16759,16761],{"id":16760},"grep-n-bash-etcpasswd","grep -n \"bash\" \u002Fetc\u002Fpasswd",[16,16763,16764],{},"1:root❌0:0:root:\u002Froot:\u002Fbin\u002Fbash",[16,16766,16767],{},"42:matta❌1000:1000::\u002Fhome\u002Fmatta:\u002Fbin\u002Fbash",[11,16769,16771],{"id":16770},"grep-c-error-varlogapplog","grep -c \"ERROR\" \u002Fvar\u002Flog\u002Fapp.log",[16,16773,16774],{},"15",[11,16776,16778],{"id":16777},"grep-c-2-critical-varlogsyslog","grep -C 2 \"CRITICAL\" \u002Fvar\u002Flog\u002Fsyslog",[16,16780,16781,16782,16785],{},"Apr 29 09:58:01 server app",[2915,16783,16784],{},"123",": Connection established",[16,16787,16788,16789,16791],{},"Apr 29 09:59:00 server app",[2915,16790,16784],{},": Retry attempt 3",[16,16793,16794,16795,16797],{},"Apr 29 09:59:30 server app",[2915,16796,16784],{},": CRITICAL: Database unreachable",[16,16799,16800,16801,16803],{},"Apr 29 09:59:31 server app",[2915,16802,16784],{},": Attempting failover...",[16,16805,16806,16807,16809],{},"Apr 29 09:59:45 server app",[2915,16808,16784],{},": Failover successful",[11,16811,16813,16814,16817,16818,16817,16820,16817,16822,16824],{"id":16812},"grep-oe-0-9130-9130-9130-913-accesslog","grep -oE \"",[2915,16815,16816],{},"0-9","{1,3}.",[2915,16819,16816],{},[2915,16821,16816],{},[2915,16823,16816],{},"{1,3}\" access.log",[16,16826,16827],{},"192.168.1.10",[16,16829,16830],{},"10.0.0.1",[16,16832,16833],{},"172.16.5.8",[11,16835,8210],{"id":8210},[16,16837,16838,16840],{},[26,16839,11461],{}," Sucht rekursiv nach Dateien und Verzeichnissen anhand von Name, Typ, Größe, Datum, Berechtigungen, Eigentümer u. v. m. Kann gefundene Dateien direkt weiterverarbeiten.",[16,16842,16843,4850,16845],{},[26,16844,6691],{},[26,16846,16847,16848,4850,16851],{},"find ",[2915,16849,16850],{},"STARTPFAD...",[2915,16852,16853],{},"AUSDRUCK",[54,16855,7704],{"id":7701},[228,16857,16859],{"id":16858},"typ-und-name","Typ und Name",[645,16861,16862,16874],{},[648,16863,16864],{},[651,16865,16866,16870],{},[654,16867,16868],{},[26,16869,7715],{},[654,16871,16872],{},[26,16873,5483],{},[670,16875,16876,16884,16892,16899,16905,16912,16920,16928,16936],{},[651,16877,16878,16881],{},[675,16879,16880],{},"-name MUSTER",[675,16882,16883],{},"Dateiname (case-sensitive, Wildcards z.B. *.txt)",[651,16885,16886,16889],{},[675,16887,16888],{},"-iname MUSTER",[675,16890,16891],{},"Wie -name, aber case-insensitive",[651,16893,16894,16896],{},[675,16895,8366],{},[675,16897,16898],{},"Reguläre Dateien",[651,16900,16901,16903],{},[675,16902,8374],{},[675,16904,12054],{},[651,16906,16907,16909],{},[675,16908,8382],{},[675,16910,16911],{},"Symbolische Links",[651,16913,16914,16917],{},[675,16915,16916],{},"-type p",[675,16918,16919],{},"Named Pipes",[651,16921,16922,16925],{},[675,16923,16924],{},"-type s",[675,16926,16927],{},"Sockets",[651,16929,16930,16933],{},[675,16931,16932],{},"-type b",[675,16934,16935],{},"Block-Gerät",[651,16937,16938,16941],{},[675,16939,16940],{},"-type c",[675,16942,16943],{},"Zeichen-Gerät",[228,16945,16947],{"id":16946},"größe-und-zeit","Größe und Zeit",[645,16949,16950,16962],{},[648,16951,16952],{},[651,16953,16954,16958],{},[654,16955,16956],{},[26,16957,7715],{},[654,16959,16960],{},[26,16961,5483],{},[670,16963,16964,16975,16983,16991,16999,17007,17015,17023,17031,17039,17047],{},[651,16965,16966,16972],{},[675,16967,16968,16969],{},"-size +N",[2915,16970,16971],{},"c\u002Fk\u002FM\u002FG",[675,16973,16974],{},"Größer als N (c=Bytes, k=1024B, M=Mega, G=Giga)",[651,16976,16977,16980],{},[675,16978,16979],{},"-size -N",[675,16981,16982],{},"Kleiner als N",[651,16984,16985,16988],{},[675,16986,16987],{},"-size N",[675,16989,16990],{},"Exakt N",[651,16992,16993,16996],{},[675,16994,16995],{},"-empty",[675,16997,16998],{},"Leere Dateien oder leere Verzeichnisse",[651,17000,17001,17004],{},[675,17002,17003],{},"-mtime N",[675,17005,17006],{},"Inhalt geändert vor genau N*24h",[651,17008,17009,17012],{},[675,17010,17011],{},"-mtime -N",[675,17013,17014],{},"Geändert innerhalb der letzten N Tage",[651,17016,17017,17020],{},[675,17018,17019],{},"-mtime +N",[675,17021,17022],{},"Geändert vor mehr als N Tagen",[651,17024,17025,17028],{},[675,17026,17027],{},"-atime N",[675,17029,17030],{},"Letzter Zugriff vor N Tagen",[651,17032,17033,17036],{},[675,17034,17035],{},"-ctime N",[675,17037,17038],{},"Status (Inode) geändert vor N Tagen",[651,17040,17041,17044],{},[675,17042,17043],{},"-newer DATEI",[675,17045,17046],{},"Neuer als angegebene Datei",[651,17048,17049,17052],{},[675,17050,17051],{},"-newermt DATUM",[675,17053,17054],{},"Neuer als angegebenes Datum",[228,17056,17058],{"id":17057},"eigentümer-und-berechtigungen","Eigentümer und Berechtigungen",[645,17060,17061,17073],{},[648,17062,17063],{},[651,17064,17065,17069],{},[654,17066,17067],{},[26,17068,7715],{},[654,17070,17071],{},[26,17072,5483],{},[670,17074,17075,17083,17091,17099,17107,17115,17123,17131,17139],{},[651,17076,17077,17080],{},[675,17078,17079],{},"-user NAME",[675,17081,17082],{},"Gehört diesem Benutzer",[651,17084,17085,17088],{},[675,17086,17087],{},"-group NAME",[675,17089,17090],{},"Gehört dieser Gruppe",[651,17092,17093,17096],{},[675,17094,17095],{},"-uid N",[675,17097,17098],{},"Numerische UID",[651,17100,17101,17104],{},[675,17102,17103],{},"-gid N",[675,17105,17106],{},"Numerische GID",[651,17108,17109,17112],{},[675,17110,17111],{},"-nouser",[675,17113,17114],{},"Kein gültiger Benutzer (verwaiste Dateien)",[651,17116,17117,17120],{},[675,17118,17119],{},"-nogroup",[675,17121,17122],{},"Keine gültige Gruppe",[651,17124,17125,17128],{},[675,17126,17127],{},"-perm MODUS",[675,17129,17130],{},"Exakt diese Berechtigungen",[651,17132,17133,17136],{},[675,17134,17135],{},"-perm -MODUS",[675,17137,17138],{},"Mindestens diese Bits gesetzt",[651,17140,17141,17144],{},[675,17142,17143],{},"-perm \u002FMODUS",[675,17145,17146],{},"Mindestens eines dieser Bits gesetzt",[228,17148,17150],{"id":17149},"navigation","Navigation",[645,17152,17153,17165],{},[648,17154,17155],{},[651,17156,17157,17161],{},[654,17158,17159],{},[26,17160,7715],{},[654,17162,17163],{},[26,17164,5483],{},[670,17166,17167,17175,17183,17191],{},[651,17168,17169,17172],{},[675,17170,17171],{},"-maxdepth N",[675,17173,17174],{},"Maximal N Verzeichnisebenen tief suchen",[651,17176,17177,17180],{},[675,17178,17179],{},"-mindepth N",[675,17181,17182],{},"Erst ab Tiefe N suchen",[651,17184,17185,17188],{},[675,17186,17187],{},"-depth",[675,17189,17190],{},"Verzeichnisinhalt vor dem Verzeichnis selbst verarbeiten",[651,17192,17193,17196],{},[675,17194,17195],{},"-follow",[675,17197,17198],{},"Symbolischen Links folgen",[228,17200,8498],{"id":8497},[645,17202,17203,17215],{},[648,17204,17205],{},[651,17206,17207,17211],{},[654,17208,17209],{},[26,17210,7715],{},[654,17212,17213],{},[26,17214,5483],{},[670,17216,17217,17225,17233,17241,17249,17257,17265],{},[651,17218,17219,17222],{},[675,17220,17221],{},"-print",[675,17223,17224],{},"Pfad ausgeben (Standard)",[651,17226,17227,17230],{},[675,17228,17229],{},"-print0",[675,17231,17232],{},"Pfad ausgeben, mit Null-Byte getrennt (für xargs -0)",[651,17234,17235,17238],{},[675,17236,17237],{},"-ls",[675,17239,17240],{},"Ausführliches ls -l-Format ausgeben",[651,17242,17243,17246],{},[675,17244,17245],{},"-delete",[675,17247,17248],{},"Gefundene Dateien\u002Fleere Verzeichnisse löschen",[651,17250,17251,17254],{},[675,17252,17253],{},"-exec BEFEHL {} ;",[675,17255,17256],{},"Befehl für jede Datei einzeln ausführen",[651,17258,17259,17262],{},[675,17260,17261],{},"-exec BEFEHL {} +",[675,17263,17264],{},"Befehl einmal mit allen Dateien ausführen (effizienter)",[651,17266,17267,17270],{},[675,17268,17269],{},"-ok BEFEHL {} ;",[675,17271,17272],{},"Wie -exec, aber mit Bestätigungsabfrage",[228,17274,5580],{"id":17275},"logik",[645,17277,17278,17290],{},[648,17279,17280],{},[651,17281,17282,17286],{},[654,17283,17284],{},[26,17285,7715],{},[654,17287,17288],{},[26,17289,5483],{},[670,17291,17292,17300,17308,17316],{},[651,17293,17294,17297],{},[675,17295,17296],{},"-not \u002F !",[675,17298,17299],{},"Negation",[651,17301,17302,17305],{},[675,17303,17304],{},"-and \u002F -a",[675,17306,17307],{},"UND (Standard, implizit)",[651,17309,17310,17313],{},[675,17311,17312],{},"-or \u002F -o",[675,17314,17315],{},"ODER",[651,17317,17318,17321],{},[675,17319,17320],{},"( AUSDRUCK )",[675,17322,17323],{},"Gruppierung",[54,17325,8676],{"id":17326},"beispiele-8",[11,17328,17330],{"id":17329},"alle-txt-dateien-ab-aktuellem-verzeichnis","Alle .txt-Dateien ab aktuellem Verzeichnis",[3392,17332,17334],{"className":3394,"code":17333,"language":3396,"meta":225,"style":225},"find . -name \"*.txt\"\n\n# Alle .conf-Dateien in \u002Fetc (case-insensitive)\n\nfind \u002Fetc -iname \"*.conf\" -type f\n\n# Leere Dateien finden\n\nfind \u002Ftmp -type f -empty\n\n# Dateien größer als 100MB\n\nfind \u002F -type f -size +100M -ls\n\n# Dateien in den letzten 24 Stunden geändert\n\nfind \u002Fhome -type f -mtime -1\n\n# Dateien älter als 30 Tage im \u002Ftmp-Verzeichnis löschen\n\nfind \u002Ftmp -type f -mtime +30 -delete\n\n# SUID-Bit-Dateien finden (Sicherheitscheck)\n\nfind \u002F -type f -perm -4000 -ls 2>\u002Fdev\u002Fnull\n\n# SGID-Bit-Verzeichnisse finden\n\nfind \u002F -type d -perm -2000 2>\u002Fdev\u002Fnull\n\n# Dateien mit genau Rechten 777 finden\n\nfind \u002Ftmp -perm 777 -type f\n\n# Verwaiste Dateien finden (ohne gültigen Eigentümer)\n\nfind \u002F -nouser -o -nogroup 2>\u002Fdev\u002Fnull\n\n# Dateien des Benutzers alice\n\nfind \u002Fhome -user alice -type f\n\n# Auf eine Verzeichnistiefe begrenzen\n\nfind \u002Fetc -maxdepth 1 -name \"*.conf\"\n\n# Ausführen: alle .sh-Dateien ausführbar machen\n\nfind . -name \"*.sh\" -exec chmod +x {} \\;\n\n# Effizienter mit + (ein Aufruf für alle Dateien)\n\nfind . -name \"*.log\" -exec gzip {} +\n\n# Mit xargs kombinieren (null-sicher)\n\nfind . -name \"*.bak\" -print0 | xargs -0 rm -f\n\n# Nicht in .git-Verzeichnissen suchen\n\nfind . -not -path \".\u002F.git\u002F\" -name \".py\"\n\n# Dateien zwischen zwei Größen\n\nfind . -type f -size +1k -size -10k\n\n# Mehrere Namen mit ODER\n\nfind . ( -name \".jpg\" -o -name \".png\" -o -name \"*.gif\" ) -type f\n\n# Dateien neuer als eine Referenzdatei\n\nfind . -newer referenz.txt -type f\n\n",[3398,17335,17336,17347,17351,17356,17360,17377,17381,17386,17390,17404,17408,17413,17417,17436,17440,17445,17449,17464,17468,17473,17477,17494,17498,17503,17507,17527,17531,17536,17540,17558,17562,17567,17571,17586,17590,17595,17599,17618,17622,17627,17631,17646,17650,17655,17659,17674,17678,17683,17687,17710,17714,17719,17723,17743,17747,17752,17756,17783,17787,17792,17796,17816,17820,17825,17829,17849,17853,17858,17862,17893,17897,17902,17906],{"__ignoreMap":225},[2915,17337,17338,17340,17342,17344],{"class":3402,"line":3403},[2915,17339,8210],{"class":3406},[2915,17341,8232],{"class":3414},[2915,17343,8235],{"class":3410},[2915,17345,17346],{"class":3414}," \"*.txt\"\n",[2915,17348,17349],{"class":3402,"line":1117},[2915,17350,3506],{"emptyLinePlaceholder":3505},[2915,17352,17353],{"class":3402,"line":1125},[2915,17354,17355],{"class":3511},"# Alle .conf-Dateien in \u002Fetc (case-insensitive)\n",[2915,17357,17358],{"class":3402,"line":3515},[2915,17359,3506],{"emptyLinePlaceholder":3505},[2915,17361,17362,17364,17367,17370,17373,17375],{"class":3402,"line":3520},[2915,17363,8210],{"class":3406},[2915,17365,17366],{"class":3414}," \u002Fetc",[2915,17368,17369],{"class":3410}," -iname",[2915,17371,17372],{"class":3414}," \"*.conf\"",[2915,17374,8248],{"class":3410},[2915,17376,5622],{"class":3414},[2915,17378,17379],{"class":3402,"line":5070},[2915,17380,3506],{"emptyLinePlaceholder":3505},[2915,17382,17383],{"class":3402,"line":5075},[2915,17384,17385],{"class":3511},"# Leere Dateien finden\n",[2915,17387,17388],{"class":3402,"line":5093},[2915,17389,3506],{"emptyLinePlaceholder":3505},[2915,17391,17392,17394,17397,17399,17401],{"class":3402,"line":5098},[2915,17393,8210],{"class":3406},[2915,17395,17396],{"class":3414}," \u002Ftmp",[2915,17398,8248],{"class":3410},[2915,17400,9021],{"class":3414},[2915,17402,17403],{"class":3410}," -empty\n",[2915,17405,17406],{"class":3402,"line":5207},[2915,17407,3506],{"emptyLinePlaceholder":3505},[2915,17409,17410],{"class":3402,"line":5212},[2915,17411,17412],{"class":3511},"# Dateien größer als 100MB\n",[2915,17414,17415],{"class":3402,"line":5218},[2915,17416,3506],{"emptyLinePlaceholder":3505},[2915,17418,17419,17421,17423,17425,17427,17430,17433],{"class":3402,"line":5223},[2915,17420,8210],{"class":3406},[2915,17422,13844],{"class":3414},[2915,17424,8248],{"class":3410},[2915,17426,9021],{"class":3414},[2915,17428,17429],{"class":3410}," -size",[2915,17431,17432],{"class":3414}," +100M",[2915,17434,17435],{"class":3410}," -ls\n",[2915,17437,17438],{"class":3402,"line":5229},[2915,17439,3506],{"emptyLinePlaceholder":3505},[2915,17441,17442],{"class":3402,"line":5253},[2915,17443,17444],{"class":3511},"# Dateien in den letzten 24 Stunden geändert\n",[2915,17446,17447],{"class":3402,"line":5266},[2915,17448,3506],{"emptyLinePlaceholder":3505},[2915,17450,17451,17453,17455,17457,17459,17461],{"class":3402,"line":5721},[2915,17452,8210],{"class":3406},[2915,17454,8245],{"class":3414},[2915,17456,8248],{"class":3410},[2915,17458,9021],{"class":3414},[2915,17460,8488],{"class":3410},[2915,17462,17463],{"class":3410}," -1\n",[2915,17465,17466],{"class":3402,"line":9401},[2915,17467,3506],{"emptyLinePlaceholder":3505},[2915,17469,17470],{"class":3402,"line":9406},[2915,17471,17472],{"class":3511},"# Dateien älter als 30 Tage im \u002Ftmp-Verzeichnis löschen\n",[2915,17474,17475],{"class":3402,"line":9411},[2915,17476,3506],{"emptyLinePlaceholder":3505},[2915,17478,17479,17481,17483,17485,17487,17489,17492],{"class":3402,"line":9416},[2915,17480,8210],{"class":3406},[2915,17482,17396],{"class":3414},[2915,17484,8248],{"class":3410},[2915,17486,9021],{"class":3414},[2915,17488,8488],{"class":3410},[2915,17490,17491],{"class":3414}," +30",[2915,17493,8520],{"class":3410},[2915,17495,17496],{"class":3402,"line":9428},[2915,17497,3506],{"emptyLinePlaceholder":3505},[2915,17499,17500],{"class":3402,"line":9433},[2915,17501,17502],{"class":3511},"# SUID-Bit-Dateien finden (Sicherheitscheck)\n",[2915,17504,17505],{"class":3402,"line":9454},[2915,17506,3506],{"emptyLinePlaceholder":3505},[2915,17508,17509,17511,17513,17515,17517,17519,17521,17523,17525],{"class":3402,"line":9459},[2915,17510,8210],{"class":3406},[2915,17512,13844],{"class":3414},[2915,17514,8248],{"class":3410},[2915,17516,9021],{"class":3414},[2915,17518,13851],{"class":3410},[2915,17520,13854],{"class":3410},[2915,17522,13857],{"class":3410},[2915,17524,13860],{"class":3533},[2915,17526,13863],{"class":3414},[2915,17528,17529],{"class":3402,"line":9464},[2915,17530,3506],{"emptyLinePlaceholder":3505},[2915,17532,17533],{"class":3402,"line":9469},[2915,17534,17535],{"class":3511},"# SGID-Bit-Verzeichnisse finden\n",[2915,17537,17538],{"class":3402,"line":9479},[2915,17539,3506],{"emptyLinePlaceholder":3505},[2915,17541,17542,17544,17546,17548,17550,17552,17554,17556],{"class":3402,"line":9484},[2915,17543,8210],{"class":3406},[2915,17545,13844],{"class":3414},[2915,17547,8248],{"class":3410},[2915,17549,9061],{"class":3414},[2915,17551,13851],{"class":3410},[2915,17553,14070],{"class":3410},[2915,17555,13860],{"class":3533},[2915,17557,13863],{"class":3414},[2915,17559,17560],{"class":3402,"line":9489},[2915,17561,3506],{"emptyLinePlaceholder":3505},[2915,17563,17564],{"class":3402,"line":9494},[2915,17565,17566],{"class":3511},"# Dateien mit genau Rechten 777 finden\n",[2915,17568,17569],{"class":3402,"line":9504},[2915,17570,3506],{"emptyLinePlaceholder":3505},[2915,17572,17573,17575,17577,17579,17582,17584],{"class":3402,"line":9509},[2915,17574,8210],{"class":3406},[2915,17576,17396],{"class":3414},[2915,17578,13851],{"class":3410},[2915,17580,17581],{"class":3410}," 777",[2915,17583,8248],{"class":3410},[2915,17585,5622],{"class":3414},[2915,17587,17588],{"class":3402,"line":9514},[2915,17589,3506],{"emptyLinePlaceholder":3505},[2915,17591,17592],{"class":3402,"line":9519},[2915,17593,17594],{"class":3511},"# Verwaiste Dateien finden (ohne gültigen Eigentümer)\n",[2915,17596,17597],{"class":3402,"line":9524},[2915,17598,3506],{"emptyLinePlaceholder":3505},[2915,17600,17601,17603,17605,17608,17611,17614,17616],{"class":3402,"line":9529},[2915,17602,8210],{"class":3406},[2915,17604,13844],{"class":3414},[2915,17606,17607],{"class":3410}," -nouser",[2915,17609,17610],{"class":3410}," -o",[2915,17612,17613],{"class":3410}," -nogroup",[2915,17615,13860],{"class":3533},[2915,17617,13863],{"class":3414},[2915,17619,17620],{"class":3402,"line":9534},[2915,17621,3506],{"emptyLinePlaceholder":3505},[2915,17623,17624],{"class":3402,"line":9539},[2915,17625,17626],{"class":3511},"# Dateien des Benutzers alice\n",[2915,17628,17629],{"class":3402,"line":9552},[2915,17630,3506],{"emptyLinePlaceholder":3505},[2915,17632,17633,17635,17637,17640,17642,17644],{"class":3402,"line":9557},[2915,17634,8210],{"class":3406},[2915,17636,8245],{"class":3414},[2915,17638,17639],{"class":3410}," -user",[2915,17641,11735],{"class":3414},[2915,17643,8248],{"class":3410},[2915,17645,5622],{"class":3414},[2915,17647,17648],{"class":3402,"line":9570},[2915,17649,3506],{"emptyLinePlaceholder":3505},[2915,17651,17652],{"class":3402,"line":9575},[2915,17653,17654],{"class":3511},"# Auf eine Verzeichnistiefe begrenzen\n",[2915,17656,17657],{"class":3402,"line":9588},[2915,17658,3506],{"emptyLinePlaceholder":3505},[2915,17660,17661,17663,17665,17667,17669,17671],{"class":3402,"line":9593},[2915,17662,8210],{"class":3406},[2915,17664,17366],{"class":3414},[2915,17666,9013],{"class":3410},[2915,17668,9016],{"class":3410},[2915,17670,8235],{"class":3410},[2915,17672,17673],{"class":3414}," \"*.conf\"\n",[2915,17675,17676],{"class":3402,"line":9598},[2915,17677,3506],{"emptyLinePlaceholder":3505},[2915,17679,17680],{"class":3402,"line":9603},[2915,17681,17682],{"class":3511},"# Ausführen: alle .sh-Dateien ausführbar machen\n",[2915,17684,17685],{"class":3402,"line":9619},[2915,17686,3506],{"emptyLinePlaceholder":3505},[2915,17688,17689,17691,17693,17695,17698,17700,17703,17706,17708],{"class":3402,"line":9624},[2915,17690,8210],{"class":3406},[2915,17692,8232],{"class":3414},[2915,17694,8235],{"class":3410},[2915,17696,17697],{"class":3414}," \"*.sh\"",[2915,17699,8542],{"class":3410},[2915,17701,17702],{"class":3414}," chmod",[2915,17704,17705],{"class":3414}," +x",[2915,17707,8548],{"class":3414},[2915,17709,8551],{"class":3410},[2915,17711,17712],{"class":3402,"line":9629},[2915,17713,3506],{"emptyLinePlaceholder":3505},[2915,17715,17716],{"class":3402,"line":9634},[2915,17717,17718],{"class":3511},"# Effizienter mit + (ein Aufruf für alle Dateien)\n",[2915,17720,17721],{"class":3402,"line":9642},[2915,17722,3506],{"emptyLinePlaceholder":3505},[2915,17724,17725,17727,17729,17731,17733,17735,17738,17740],{"class":3402,"line":9647},[2915,17726,8210],{"class":3406},[2915,17728,8232],{"class":3414},[2915,17730,8235],{"class":3410},[2915,17732,8539],{"class":3414},[2915,17734,8542],{"class":3410},[2915,17736,17737],{"class":3414}," gzip",[2915,17739,8548],{"class":3414},[2915,17741,17742],{"class":3414}," +\n",[2915,17744,17745],{"class":3402,"line":9656},[2915,17746,3506],{"emptyLinePlaceholder":3505},[2915,17748,17749],{"class":3402,"line":9661},[2915,17750,17751],{"class":3511},"# Mit xargs kombinieren (null-sicher)\n",[2915,17753,17754],{"class":3402,"line":9666},[2915,17755,3506],{"emptyLinePlaceholder":3505},[2915,17757,17758,17760,17762,17764,17767,17770,17772,17775,17778,17780],{"class":3402,"line":9671},[2915,17759,8210],{"class":3406},[2915,17761,8232],{"class":3414},[2915,17763,8235],{"class":3410},[2915,17765,17766],{"class":3414}," \"*.bak\"",[2915,17768,17769],{"class":3410}," -print0",[2915,17771,7679],{"class":3533},[2915,17773,17774],{"class":3406}," xargs",[2915,17776,17777],{"class":3410}," -0",[2915,17779,8545],{"class":3414},[2915,17781,17782],{"class":3410}," -f\n",[2915,17784,17785],{"class":3402,"line":9685},[2915,17786,3506],{"emptyLinePlaceholder":3505},[2915,17788,17789],{"class":3402,"line":9690},[2915,17790,17791],{"class":3511},"# Nicht in .git-Verzeichnissen suchen\n",[2915,17793,17794],{"class":3402,"line":9711},[2915,17795,3506],{"emptyLinePlaceholder":3505},[2915,17797,17798,17800,17802,17805,17808,17811,17813],{"class":3402,"line":9716},[2915,17799,8210],{"class":3406},[2915,17801,8232],{"class":3414},[2915,17803,17804],{"class":3410}," -not",[2915,17806,17807],{"class":3410}," -path",[2915,17809,17810],{"class":3414}," \".\u002F.git\u002F\"",[2915,17812,8235],{"class":3410},[2915,17814,17815],{"class":3414}," \".py\"\n",[2915,17817,17818],{"class":3402,"line":9721},[2915,17819,3506],{"emptyLinePlaceholder":3505},[2915,17821,17822],{"class":3402,"line":9726},[2915,17823,17824],{"class":3511},"# Dateien zwischen zwei Größen\n",[2915,17826,17827],{"class":3402,"line":9734},[2915,17828,3506],{"emptyLinePlaceholder":3505},[2915,17830,17831,17833,17835,17837,17839,17841,17844,17846],{"class":3402,"line":9739},[2915,17832,8210],{"class":3406},[2915,17834,8232],{"class":3414},[2915,17836,8248],{"class":3410},[2915,17838,9021],{"class":3414},[2915,17840,17429],{"class":3410},[2915,17842,17843],{"class":3414}," +1k",[2915,17845,17429],{"class":3410},[2915,17847,17848],{"class":3410}," -10k\n",[2915,17850,17851],{"class":3402,"line":9747},[2915,17852,3506],{"emptyLinePlaceholder":3505},[2915,17854,17855],{"class":3402,"line":9752},[2915,17856,17857],{"class":3511},"# Mehrere Namen mit ODER\n",[2915,17859,17860],{"class":3402,"line":9760},[2915,17861,3506],{"emptyLinePlaceholder":3505},[2915,17863,17864,17866,17868,17871,17873,17876,17878,17880,17883,17885,17887,17890],{"class":3402,"line":9765},[2915,17865,8210],{"class":3406},[2915,17867,8232],{"class":3414},[2915,17869,17870],{"class":3529}," ( ",[2915,17872,8274],{"class":3410},[2915,17874,17875],{"class":3414}," \".jpg\"",[2915,17877,17610],{"class":3410},[2915,17879,8235],{"class":3410},[2915,17881,17882],{"class":3414}," \".png\"",[2915,17884,17610],{"class":3410},[2915,17886,8235],{"class":3410},[2915,17888,17889],{"class":3414}," \"*.gif\"",[2915,17891,17892],{"class":3529}," ) -type f\n",[2915,17894,17895],{"class":3402,"line":9773},[2915,17896,3506],{"emptyLinePlaceholder":3505},[2915,17898,17899],{"class":3402,"line":9778},[2915,17900,17901],{"class":3511},"# Dateien neuer als eine Referenzdatei\n",[2915,17903,17904],{"class":3402,"line":9786},[2915,17905,3506],{"emptyLinePlaceholder":3505},[2915,17907,17908,17910,17912,17915,17918,17920],{"class":3402,"line":9791},[2915,17909,8210],{"class":3406},[2915,17911,8232],{"class":3414},[2915,17913,17914],{"class":3410}," -newer",[2915,17916,17917],{"class":3414}," referenz.txt",[2915,17919,8248],{"class":3410},[2915,17921,5622],{"class":3414},[54,17923,11749],{"id":17924},"ausgabe-8",[11,17926,17928],{"id":17927},"find-name-txt-type-f","find . -name \"*.txt\" -type f",[16,17930,17931],{},".\u002Fdokumente\u002Fnotizen.txt",[16,17933,17934],{},".\u002Fbackup\u002Falt.txt",[16,17936,17937],{},".\u002FREADME.txt",[11,17939,17941],{"id":17940},"find-varlog-type-f-mtime-1-ls","find \u002Fvar\u002Flog -type f -mtime -1 -ls",[16,17943,17944],{},"12345678 8 -rw-r--r-- 1 syslog adm 7194 Apr 29 09:58 \u002Fvar\u002Flog\u002Fsyslog",[16,17946,17947],{},"12345679 4 -rw-r--r-- 1 root adm 1302 Apr 29 08:00 \u002Fvar\u002Flog\u002Fauth.log",[11,17949,17951],{"id":17950},"find-type-f-perm-4000-2devnull","find \u002F -type f -perm -4000 2>\u002Fdev\u002Fnull",[16,17953,13722],{},[16,17955,17956],{},"\u002Fusr\u002Fbin\u002Fsu",[16,17958,17959],{},"\u002Fusr\u002Fbin\u002Fsudo",[16,17961,17962],{},"\u002Fusr\u002Fbin\u002Fmount",[11,17964,8595],{"id":8595},[16,17966,17967,17969,17970,17972,17973,17976],{},[26,17968,11461],{}," Mächtiges Werkzeug zur strukturierten Textverarbeitung. ",[26,17971,8595],{}," liest Eingabe zeilenweise, teilt jede Zeile in Felder auf und wendet Muster-Aktions-Regeln an. Ideal für Logs, CSVs und ",[26,17974,17975],{},"\u002Fetc\u002Fpasswd","-ähnliche Dateien.",[16,17978,17979,4850,17981],{},[26,17980,6691],{},[26,17982,17983,17984,17986,17987],{},"awk ",[2915,17985,11472],{}," 'PROGRAMM' ",[2915,17988,14599],{},[16,17990,17991],{},[26,17992,17993],{},"Grundstruktur eines awk-Programms",[3392,17995,17997],{"className":3394,"code":17996,"language":3396,"meta":225,"style":225},"awk 'BEGIN { Initialisierungen }\n",[3398,17998,17999],{"__ignoreMap":225},[2915,18000,18001,18003],{"class":3402,"line":3403},[2915,18002,8595],{"class":3406},[2915,18004,18005],{"class":3414}," 'BEGIN { Initialisierungen }\n",[16,18007,18008,18009,18011],{},"\u002FMUSTER\u002F { Aktionen pro Zeile }",[5885,18010],{},"\nEND { Abschlussaktionen }' datei.txt",[20,18013,18014,18024,18033],{},[23,18015,18016,18019,18020,18023],{},[26,18017,18018],{},"BEGIN"," – wird einmal ",[26,18021,18022],{},"vor"," dem ersten Zeileneinlesen ausgeführt",[23,18025,18026,18019,18029,18032],{},[26,18027,18028],{},"END",[26,18030,18031],{},"nach"," dem letzten Zeileneinlesen ausgeführt",[23,18034,18035,18036,18039],{},"Ohne Muster gilt die Aktion für ",[26,18037,18038],{},"jede"," Zeile",[54,18041,18043],{"id":18042},"eingebaute-variablen","Eingebaute Variablen",[645,18045,18046,18058],{},[648,18047,18048],{},[651,18049,18050,18054],{},[654,18051,18052],{},[26,18053,8627],{},[654,18055,18056],{},[26,18057,5483],{},[670,18059,18060,18067,18075,18082,18089,18097,18105,18113,18121,18129],{},[651,18061,18062,18064],{},[675,18063,4879],{},[675,18065,18066],{},"Komplette aktuelle Zeile",[651,18068,18069,18072],{},[675,18070,18071],{},"$1, $2, ... $NF",[675,18073,18074],{},"Felder der Zeile (1-basiert)",[651,18076,18077,18079],{},[675,18078,8661],{},[675,18080,18081],{},"Anzahl der Felder in der aktuellen Zeile",[651,18083,18084,18086],{},[675,18085,8669],{},[675,18087,18088],{},"Aktuelle Zeilennummer (gesamt)",[651,18090,18091,18094],{},[675,18092,18093],{},"FNR",[675,18095,18096],{},"Zeilennummer innerhalb der aktuellen Datei",[651,18098,18099,18102],{},[675,18100,18101],{},"FS",[675,18103,18104],{},"Eingabe-Feldtrenner (Standard: Leerzeichen\u002FTab)",[651,18106,18107,18110],{},[675,18108,18109],{},"OFS",[675,18111,18112],{},"Ausgabe-Feldtrenner",[651,18114,18115,18118],{},[675,18116,18117],{},"RS",[675,18119,18120],{},"Eingabe-Zeilentrenner (Standard: \\n)",[651,18122,18123,18126],{},[675,18124,18125],{},"ORS",[675,18127,18128],{},"Ausgabe-Zeilentrenner",[651,18130,18131,18134],{},[675,18132,18133],{},"FILENAME",[675,18135,18136],{},"Name der aktuellen Eingabedatei",[54,18138,11532],{"id":18139},"flags-8",[645,18141,18142,18154],{},[648,18143,18144],{},[651,18145,18146,18150],{},[654,18147,18148],{},[26,18149,11543],{},[654,18151,18152],{},[26,18153,5483],{},[670,18155,18156,18164,18172],{},[651,18157,18158,18161],{},[675,18159,18160],{},"-F TRENNER",[675,18162,18163],{},"Feldtrenner festlegen (z.B. -F: oder -F\",\")",[651,18165,18166,18169],{},[675,18167,18168],{},"-v VAR=WERT",[675,18170,18171],{},"Variable vor Programmstart setzen",[651,18173,18174,18177],{},[675,18175,18176],{},"-f DATEI",[675,18178,18179],{},"awk-Programm aus Datei laden",[16,18181,18182],{},[26,18183,18184],{},"Vergleichsoperatoren",[645,18186,18187,18200],{},[648,18188,18189],{},[651,18190,18191,18196],{},[654,18192,18193],{},[26,18194,18195],{},"Operator",[654,18197,18198],{},[26,18199,5483],{},[670,18201,18202,18210,18218,18226,18234,18242],{},[651,18203,18204,18207],{},[675,18205,18206],{},"==",[675,18208,18209],{},"Gleich",[651,18211,18212,18215],{},[675,18213,18214],{},"!=",[675,18216,18217],{},"Ungleich",[651,18219,18220,18223],{},[675,18221,18222],{},"\u003C, >",[675,18224,18225],{},"Kleiner\u002FGrößer",[651,18227,18228,18231],{},[675,18229,18230],{},"\u003C=, >=",[675,18232,18233],{},"Kleiner-gleich\u002FGrößer-gleich",[651,18235,18236,18239],{},[675,18237,18238],{},"~",[675,18240,18241],{},"Regulärer Ausdruck passt",[651,18243,18244,18247],{},[675,18245,18246],{},"!~",[675,18248,18249],{},"Regulärer Ausdruck passt nicht",[54,18251,18253],{"id":18252},"string-funktionen","String-Funktionen",[645,18255,18256,18269],{},[648,18257,18258],{},[651,18259,18260,18265],{},[654,18261,18262],{},[26,18263,18264],{},"Funktion",[654,18266,18267],{},[26,18268,5483],{},[670,18270,18271,18279,18290,18298,18306,18317,18327,18335,18343,18351,18359],{},[651,18272,18273,18276],{},[675,18274,18275],{},"length(s)",[675,18277,18278],{},"Länge des Strings (ohne Arg: Länge von $0)",[651,18280,18281,18287],{},[675,18282,18283,18284,5032],{},"substr(s, start ",[2915,18285,18286],{},", len",[675,18288,18289],{},"Teilstring ab Position start, optional Länge len",[651,18291,18292,18295],{},[675,18293,18294],{},"index(s, such)",[675,18296,18297],{},"Position von such in s (0 = nicht gefunden)",[651,18299,18300,18303],{},[675,18301,18302],{},"split(s, arr, trenn)",[675,18304,18305],{},"s per Trenner in Array zerlegen; gibt Elementanzahl zurück",[651,18307,18308,18314],{},[675,18309,18310,18311,5032],{},"sub(regex, ersatz ",[2915,18312,18313],{},", s",[675,18315,18316],{},"Erste Übereinstimmung ersetzen (Standard: $0)",[651,18318,18319,18324],{},[675,18320,18321,18322,5032],{},"gsub(regex, ersatz ",[2915,18323,18313],{},[675,18325,18326],{},"Alle Übereinstimmungen ersetzen; gibt Anzahl zurück",[651,18328,18329,18332],{},[675,18330,18331],{},"match(s, regex)",[675,18333,18334],{},"Regex in s suchen – setzt RSTART (Position) und RLENGTH (Länge)",[651,18336,18337,18340],{},[675,18338,18339],{},"sprintf(format, ...)",[675,18341,18342],{},"Formatierter String (gibt String zurück, druckt nicht)",[651,18344,18345,18348],{},[675,18346,18347],{},"tolower(s)",[675,18349,18350],{},"Alle Zeichen in Kleinbuchstaben umwandeln",[651,18352,18353,18356],{},[675,18354,18355],{},"toupper(s)",[675,18357,18358],{},"Alle Zeichen in Großbuchstaben umwandeln",[651,18360,18361,18366],{},[675,18362,18363,18364,5032],{},"gensub(regex, ersatz, flag ",[2915,18365,18313],{},[675,18367,18368],{},"Erweitertes Ersetzen mit Rückreferenzen \\1 (gawk)",[16,18370,18371,18373,18374,18376,18377,18379,18380,18383],{},[26,18372,11912],{}," In sub\u002Fgsub steht & im Ersatzstring für den gesamten gefundenen Text.",[5885,18375],{},"\nBeispiel: gsub(\u002F",[2915,18378,16816],{},"+\u002F, \"",[2915,18381,18382],{},"&","\") → umschließt Zahlen mit eckigen Klammern.",[54,18385,18387],{"id":18386},"math-funktionen","Math-Funktionen",[645,18389,18390,18402],{},[648,18391,18392],{},[651,18393,18394,18398],{},[654,18395,18396],{},[26,18397,18264],{},[654,18399,18400],{},[26,18401,5483],{},[670,18403,18404,18412,18420,18428,18436,18444,18452,18460],{},[651,18405,18406,18409],{},[675,18407,18408],{},"int(x)",[675,18410,18411],{},"Integer-Anteil (abschneiden, nicht runden)",[651,18413,18414,18417],{},[675,18415,18416],{},"sqrt(x)",[675,18418,18419],{},"Quadratwurzel",[651,18421,18422,18425],{},[675,18423,18424],{},"sin(x), cos(x)",[675,18426,18427],{},"Sinus \u002F Kosinus (Argument in Radiant)",[651,18429,18430,18433],{},[675,18431,18432],{},"atan2(y, x)",[675,18434,18435],{},"Arcustangens von y\u002Fx",[651,18437,18438,18441],{},[675,18439,18440],{},"exp(x)",[675,18442,18443],{},"e hoch x",[651,18445,18446,18449],{},[675,18447,18448],{},"log(x)",[675,18450,18451],{},"Natürlicher Logarithmus (Basis e)",[651,18453,18454,18457],{},[675,18455,18456],{},"rand()",[675,18458,18459],{},"Zufallszahl im Bereich [0, 1)",[651,18461,18462,18468],{},[675,18463,18464,18465,5032],{},"srand(",[2915,18466,18467],{},"seed",[675,18469,18470],{},"Zufallszahlen-Seed setzen; gibt alten Seed zurück",[54,18472,18474],{"id":18473},"kontrollstrukturen","Kontrollstrukturen",[11,18476,18478],{"id":18477},"if-else","if \u002F else",[16,18480,18481,18482,18484,18485,18488],{},"{ ",[26,18483,4951],{}," ($3 > 100) print \"groß\"; ",[26,18486,18487],{},"else"," print \"klein\" }",[11,18490,18492],{"id":18491},"if-else-if-else","if \u002F else if \u002F else",[16,18494,18495],{},"{",[16,18497,18498,18500],{},[26,18499,4951],{}," ($3 > 100) print \"groß\";",[16,18502,18503,4850,18505,18507],{},[26,18504,18487],{},[26,18506,4951],{}," ($3 > 50) print \"mittel\";",[16,18509,18510,18512],{},[26,18511,18487],{}," print \"klein\"",[16,18514,18515],{},"}",[11,18517,18519],{"id":18518},"for-schleife-klassisch-über-alle-felder-einer-zeile-iterieren","for-Schleife (klassisch, über alle Felder einer Zeile iterieren)",[16,18521,18481,18522,18524],{},[26,18523,5175],{}," (i = 1; i \u003C= NF; i++) print i\": \"$i }",[11,18526,18528],{"id":18527},"for-schleife-über-array-schlüssel-reihenfolge-nicht-garantiert","for-Schleife über Array-Schlüssel (Reihenfolge nicht garantiert)",[16,18530,18531,18532,18534,18535,18537,18538,18541],{},"END { ",[26,18533,5175],{}," (key ",[26,18536,5181],{}," count) print key, count",[2915,18539,18540],{},"key"," }",[11,18543,18545],{"id":18544},"while-schleife","while-Schleife",[16,18547,18548,18549,18551],{},"{ i = 1; ",[26,18550,5444],{}," (i \u003C= NF) { print $i; i++ } }",[11,18553,18554],{"id":18554},"do-while",[16,18556,18557,18558,18560,18561,18563],{},"BEGIN { i = 1; ",[26,18559,5427],{}," { print i; i++ } ",[26,18562,5444],{}," (i \u003C= 5) }",[11,18565,18567],{"id":18566},"next-restliche-regeln-überspringen-sofort-nächste-zeile-holen","next: restliche Regeln überspringen, sofort nächste Zeile holen",[16,18569,18570],{},"\u002F^#\u002F { next } # Kommentarzeilen ignorieren",[16,18572,18573],{},"{ print } # (wird für Kommentarzeilen nie erreicht)",[11,18575,18577],{"id":18576},"exit-awk-sofort-beenden-end-block-wird-trotzdem-noch-ausgeführt","exit: awk sofort beenden (END-Block wird trotzdem noch ausgeführt)",[54,18579,18581],{"id":18580},"nr-100-exit-nur-die-ersten-100-zeilen-verarbeiten","NR > 100 { exit } # Nur die ersten 100 Zeilen verarbeiten",[54,18583,8676],{"id":18584},"beispiele-9",[11,18586,18588],{"id":18587},"erste-spalte-ausgeben","Erste Spalte ausgeben",[3392,18590,18592],{"className":3394,"code":18591,"language":3396,"meta":225,"style":225},"awk '{print $1}' datei.txt\n\n# Letzte Spalte ausgeben (NF = Anzahl Felder)\n\nawk '{print $NF}' datei.txt\n\n# Benutzernamen aus \u002Fetc\u002Fpasswd\n\nawk -F: '{print $1}' \u002Fetc\u002Fpasswd\n\n# Benutzername + Home-Verzeichnis + Shell\n\nawk -F: '{print $1, $6, $7}' \u002Fetc\u002Fpasswd\n\n# Eigener Ausgabe-Trennzeichen\n\nawk -F: 'OFS=\" | \" {print $1, $3, $6}' \u002Fetc\u002Fpasswd\n\n# Zeilennummer + Inhalt\n\nawk '{print NR\": \"$0}' datei.txt\n\n# Nur Zeilen die \"root\" enthalten\n\nawk '\u002Froot\u002F {print}' \u002Fetc\u002Fpasswd\n\n# Zeilen ausgeben bei denen Feld 3 (UID) größer 1000 ist\n\nawk -F: '$3 > 1000 {print $1, $3}' \u002Fetc\u002Fpasswd\n\n# Zeilen ausgeben wo Shell NICHT \u002Fnologin ist\n\nawk -F: '$7 !~ \u002Fnologin\u002F {print $1, $7}' \u002Fetc\u002Fpasswd\n\n# Summe einer Spalte berechnen\n\nawk '{sum += $1} END {print \"Summe:\", sum}' zahlen.txt\n\n# Durchschnitt berechnen\n\nawk '{sum += $1; count++} END {print \"Durchschnitt:\", sum\u002Fcount}' zahlen.txt\n\n# BEGIN und END mit Feldtrenner setzen\n\nawk 'BEGIN{print \"=== Start ===\"; FS=\":\"} {print $1} END{print \"=== Ende ===\"}' \u002Fetc\u002Fpasswd\n\n# Variable übergeben\n\nawk -v grenze=1000 -F: '$3 > grenze {print $1}' \u002Fetc\u002Fpasswd\n\n# printf für formatierte Ausgabe\n\nawk -F: '{printf \"%-15s UID: %4d\\n\", $1, $3}' \u002Fetc\u002Fpasswd\n\n# Feld ersetzen und neu ausgeben\n\nawk -F: 'OFS=\":\" {$7=\"\u002Fbin\u002Fsh\"; print}' \u002Fetc\u002Fpasswd\n\n# Zeilen zählen die ein Muster haben\n\nawk '\u002FERROR\u002F{count++} END{print count \" Fehler gefunden\"}' \u002Fvar\u002Flog\u002Fapp.log\n\n# Einzigartiger Trick: Duplikate entfernen (ohne sort)\n\nawk '!seen[$0]++' datei.txt\n\n# CSV ab Zeile 2 verarbeiten (Header überspringen)\n\nawk 'NR > 1 {print $1, $3}' tabelle.csv\n\n",[3398,18593,18594,18602,18606,18611,18615,18624,18628,18633,18637,18648,18652,18657,18661,18672,18676,18681,18685,18696,18700,18705,18709,18718,18722,18727,18731,18740,18744,18749,18753,18764,18768,18773,18777,18788,18792,18797,18801,18810,18814,18819,18823,18832,18836,18841,18845,18854,18858,18863,18867,18885,18889,18894,18898,18909,18913,18918,18922,18933,18937,18942,18946,18955,18959,18964,18968,18977,18981,18986,18990],{"__ignoreMap":225},[2915,18595,18596,18598,18600],{"class":3402,"line":3403},[2915,18597,8595],{"class":3406},[2915,18599,8692],{"class":3414},[2915,18601,7698],{"class":3414},[2915,18603,18604],{"class":3402,"line":1117},[2915,18605,3506],{"emptyLinePlaceholder":3505},[2915,18607,18608],{"class":3402,"line":1125},[2915,18609,18610],{"class":3511},"# Letzte Spalte ausgeben (NF = Anzahl Felder)\n",[2915,18612,18613],{"class":3402,"line":3515},[2915,18614,3506],{"emptyLinePlaceholder":3505},[2915,18616,18617,18619,18622],{"class":3402,"line":3520},[2915,18618,8595],{"class":3406},[2915,18620,18621],{"class":3414}," '{print $NF}'",[2915,18623,7698],{"class":3414},[2915,18625,18626],{"class":3402,"line":5070},[2915,18627,3506],{"emptyLinePlaceholder":3505},[2915,18629,18630],{"class":3402,"line":5075},[2915,18631,18632],{"class":3511},"# Benutzernamen aus \u002Fetc\u002Fpasswd\n",[2915,18634,18635],{"class":3402,"line":5093},[2915,18636,3506],{"emptyLinePlaceholder":3505},[2915,18638,18639,18641,18644,18646],{"class":3402,"line":5098},[2915,18640,8595],{"class":3406},[2915,18642,18643],{"class":3410}," -F:",[2915,18645,8692],{"class":3414},[2915,18647,8758],{"class":3414},[2915,18649,18650],{"class":3402,"line":5207},[2915,18651,3506],{"emptyLinePlaceholder":3505},[2915,18653,18654],{"class":3402,"line":5212},[2915,18655,18656],{"class":3511},"# Benutzername + Home-Verzeichnis + Shell\n",[2915,18658,18659],{"class":3402,"line":5218},[2915,18660,3506],{"emptyLinePlaceholder":3505},[2915,18662,18663,18665,18667,18670],{"class":3402,"line":5223},[2915,18664,8595],{"class":3406},[2915,18666,18643],{"class":3410},[2915,18668,18669],{"class":3414}," '{print $1, $6, $7}'",[2915,18671,8758],{"class":3414},[2915,18673,18674],{"class":3402,"line":5229},[2915,18675,3506],{"emptyLinePlaceholder":3505},[2915,18677,18678],{"class":3402,"line":5253},[2915,18679,18680],{"class":3511},"# Eigener Ausgabe-Trennzeichen\n",[2915,18682,18683],{"class":3402,"line":5266},[2915,18684,3506],{"emptyLinePlaceholder":3505},[2915,18686,18687,18689,18691,18694],{"class":3402,"line":5721},[2915,18688,8595],{"class":3406},[2915,18690,18643],{"class":3410},[2915,18692,18693],{"class":3414}," 'OFS=\" | \" {print $1, $3, $6}'",[2915,18695,8758],{"class":3414},[2915,18697,18698],{"class":3402,"line":9401},[2915,18699,3506],{"emptyLinePlaceholder":3505},[2915,18701,18702],{"class":3402,"line":9406},[2915,18703,18704],{"class":3511},"# Zeilennummer + Inhalt\n",[2915,18706,18707],{"class":3402,"line":9411},[2915,18708,3506],{"emptyLinePlaceholder":3505},[2915,18710,18711,18713,18716],{"class":3402,"line":9416},[2915,18712,8595],{"class":3406},[2915,18714,18715],{"class":3414}," '{print NR\": \"$0}'",[2915,18717,7698],{"class":3414},[2915,18719,18720],{"class":3402,"line":9428},[2915,18721,3506],{"emptyLinePlaceholder":3505},[2915,18723,18724],{"class":3402,"line":9433},[2915,18725,18726],{"class":3511},"# Nur Zeilen die \"root\" enthalten\n",[2915,18728,18729],{"class":3402,"line":9454},[2915,18730,3506],{"emptyLinePlaceholder":3505},[2915,18732,18733,18735,18738],{"class":3402,"line":9459},[2915,18734,8595],{"class":3406},[2915,18736,18737],{"class":3414}," '\u002Froot\u002F {print}'",[2915,18739,8758],{"class":3414},[2915,18741,18742],{"class":3402,"line":9464},[2915,18743,3506],{"emptyLinePlaceholder":3505},[2915,18745,18746],{"class":3402,"line":9469},[2915,18747,18748],{"class":3511},"# Zeilen ausgeben bei denen Feld 3 (UID) größer 1000 ist\n",[2915,18750,18751],{"class":3402,"line":9479},[2915,18752,3506],{"emptyLinePlaceholder":3505},[2915,18754,18755,18757,18759,18762],{"class":3402,"line":9484},[2915,18756,8595],{"class":3406},[2915,18758,18643],{"class":3410},[2915,18760,18761],{"class":3414}," '$3 > 1000 {print $1, $3}'",[2915,18763,8758],{"class":3414},[2915,18765,18766],{"class":3402,"line":9489},[2915,18767,3506],{"emptyLinePlaceholder":3505},[2915,18769,18770],{"class":3402,"line":9494},[2915,18771,18772],{"class":3511},"# Zeilen ausgeben wo Shell NICHT \u002Fnologin ist\n",[2915,18774,18775],{"class":3402,"line":9504},[2915,18776,3506],{"emptyLinePlaceholder":3505},[2915,18778,18779,18781,18783,18786],{"class":3402,"line":9509},[2915,18780,8595],{"class":3406},[2915,18782,18643],{"class":3410},[2915,18784,18785],{"class":3414}," '$7 !~ \u002Fnologin\u002F {print $1, $7}'",[2915,18787,8758],{"class":3414},[2915,18789,18790],{"class":3402,"line":9514},[2915,18791,3506],{"emptyLinePlaceholder":3505},[2915,18793,18794],{"class":3402,"line":9519},[2915,18795,18796],{"class":3511},"# Summe einer Spalte berechnen\n",[2915,18798,18799],{"class":3402,"line":9524},[2915,18800,3506],{"emptyLinePlaceholder":3505},[2915,18802,18803,18805,18808],{"class":3402,"line":9529},[2915,18804,8595],{"class":3406},[2915,18806,18807],{"class":3414}," '{sum += $1} END {print \"Summe:\", sum}'",[2915,18809,8780],{"class":3414},[2915,18811,18812],{"class":3402,"line":9534},[2915,18813,3506],{"emptyLinePlaceholder":3505},[2915,18815,18816],{"class":3402,"line":9539},[2915,18817,18818],{"class":3511},"# Durchschnitt berechnen\n",[2915,18820,18821],{"class":3402,"line":9552},[2915,18822,3506],{"emptyLinePlaceholder":3505},[2915,18824,18825,18827,18830],{"class":3402,"line":9557},[2915,18826,8595],{"class":3406},[2915,18828,18829],{"class":3414}," '{sum += $1; count++} END {print \"Durchschnitt:\", sum\u002Fcount}'",[2915,18831,8780],{"class":3414},[2915,18833,18834],{"class":3402,"line":9570},[2915,18835,3506],{"emptyLinePlaceholder":3505},[2915,18837,18838],{"class":3402,"line":9575},[2915,18839,18840],{"class":3511},"# BEGIN und END mit Feldtrenner setzen\n",[2915,18842,18843],{"class":3402,"line":9588},[2915,18844,3506],{"emptyLinePlaceholder":3505},[2915,18846,18847,18849,18852],{"class":3402,"line":9593},[2915,18848,8595],{"class":3406},[2915,18850,18851],{"class":3414}," 'BEGIN{print \"=== Start ===\"; FS=\":\"} {print $1} END{print \"=== Ende ===\"}'",[2915,18853,8758],{"class":3414},[2915,18855,18856],{"class":3402,"line":9598},[2915,18857,3506],{"emptyLinePlaceholder":3505},[2915,18859,18860],{"class":3402,"line":9603},[2915,18861,18862],{"class":3511},"# Variable übergeben\n",[2915,18864,18865],{"class":3402,"line":9619},[2915,18866,3506],{"emptyLinePlaceholder":3505},[2915,18868,18869,18871,18873,18876,18878,18880,18883],{"class":3402,"line":9624},[2915,18870,8595],{"class":3406},[2915,18872,16455],{"class":3410},[2915,18874,18875],{"class":3414}," grenze=",[2915,18877,11767],{"class":3410},[2915,18879,18643],{"class":3410},[2915,18881,18882],{"class":3414}," '$3 > grenze {print $1}'",[2915,18884,8758],{"class":3414},[2915,18886,18887],{"class":3402,"line":9629},[2915,18888,3506],{"emptyLinePlaceholder":3505},[2915,18890,18891],{"class":3402,"line":9634},[2915,18892,18893],{"class":3511},"# printf für formatierte Ausgabe\n",[2915,18895,18896],{"class":3402,"line":9642},[2915,18897,3506],{"emptyLinePlaceholder":3505},[2915,18899,18900,18902,18904,18907],{"class":3402,"line":9647},[2915,18901,8595],{"class":3406},[2915,18903,18643],{"class":3410},[2915,18905,18906],{"class":3414}," '{printf \"%-15s UID: %4d\\n\", $1, $3}'",[2915,18908,8758],{"class":3414},[2915,18910,18911],{"class":3402,"line":9656},[2915,18912,3506],{"emptyLinePlaceholder":3505},[2915,18914,18915],{"class":3402,"line":9661},[2915,18916,18917],{"class":3511},"# Feld ersetzen und neu ausgeben\n",[2915,18919,18920],{"class":3402,"line":9666},[2915,18921,3506],{"emptyLinePlaceholder":3505},[2915,18923,18924,18926,18928,18931],{"class":3402,"line":9671},[2915,18925,8595],{"class":3406},[2915,18927,18643],{"class":3410},[2915,18929,18930],{"class":3414}," 'OFS=\":\" {$7=\"\u002Fbin\u002Fsh\"; print}'",[2915,18932,8758],{"class":3414},[2915,18934,18935],{"class":3402,"line":9685},[2915,18936,3506],{"emptyLinePlaceholder":3505},[2915,18938,18939],{"class":3402,"line":9690},[2915,18940,18941],{"class":3511},"# Zeilen zählen die ein Muster haben\n",[2915,18943,18944],{"class":3402,"line":9711},[2915,18945,3506],{"emptyLinePlaceholder":3505},[2915,18947,18948,18950,18953],{"class":3402,"line":9716},[2915,18949,8595],{"class":3406},[2915,18951,18952],{"class":3414}," '\u002FERROR\u002F{count++} END{print count \" Fehler gefunden\"}'",[2915,18954,15790],{"class":3414},[2915,18956,18957],{"class":3402,"line":9721},[2915,18958,3506],{"emptyLinePlaceholder":3505},[2915,18960,18961],{"class":3402,"line":9726},[2915,18962,18963],{"class":3511},"# Einzigartiger Trick: Duplikate entfernen (ohne sort)\n",[2915,18965,18966],{"class":3402,"line":9734},[2915,18967,3506],{"emptyLinePlaceholder":3505},[2915,18969,18970,18972,18975],{"class":3402,"line":9739},[2915,18971,8595],{"class":3406},[2915,18973,18974],{"class":3414}," '!seen[$0]++'",[2915,18976,7698],{"class":3414},[2915,18978,18979],{"class":3402,"line":9747},[2915,18980,3506],{"emptyLinePlaceholder":3505},[2915,18982,18983],{"class":3402,"line":9752},[2915,18984,18985],{"class":3511},"# CSV ab Zeile 2 verarbeiten (Header überspringen)\n",[2915,18987,18988],{"class":3402,"line":9760},[2915,18989,3506],{"emptyLinePlaceholder":3505},[2915,18991,18992,18994,18997],{"class":3402,"line":9765},[2915,18993,8595],{"class":3406},[2915,18995,18996],{"class":3414}," 'NR > 1 {print $1, $3}'",[2915,18998,15324],{"class":3414},[54,19000,11749],{"id":19001},"ausgabe-9",[11,19003,19005],{"id":19004},"awk-f-print-1-etcpasswd","awk -F: '{print $1}' \u002Fetc\u002Fpasswd",[16,19007,12437],{},[16,19009,19010],{},"daemon",[16,19012,19013],{},"bin",[16,19015,11772],{},[11,19017,19019],{"id":19018},"awk-f-3-1000-print-1-3-etcpasswd","awk -F: '$3 > 1000 {print $1, $3}' \u002Fetc\u002Fpasswd",[16,19021,19022],{},"matta 1001",[16,19024,19025],{},"alice 1002",[11,19027,19029],{"id":19028},"awk-f-printf-15s-uid-4dn-1-3-etcpasswd","awk -F: '{printf \"%-15s UID: %4d\\n\", $1, $3}' \u002Fetc\u002Fpasswd",[16,19031,19032],{},"root UID: 0",[16,19034,19035],{},"daemon UID: 1",[16,19037,19038],{},"matta UID: 1000",[11,19040,19042],{"id":19041},"awk-sum-1-count-end-print-summe-sum-schnitt-sumcount-zahlentxt","awk '{sum += $1; count++} END {print \"Summe:\", sum, \"Schnitt:\", sum\u002Fcount}' zahlen.txt",[16,19044,19045],{},"Summe: 165 Schnitt: 16.5",[11,19047,7916],{"id":7916},[16,19049,19050,19052],{},[26,19051,11461],{}," sed (Stream Editor) bearbeitet Text zeilenweise. Es liest Dateien oder stdin, wendet Transformationsregeln an und gibt das Ergebnis nach stdout aus. Ideal für automatisierte Textersetzung in Skripten.",[16,19054,19055,19057,19058,19060,19061],{},[26,19056,6691],{}," sed ",[2915,19059,11472],{}," 'SKRIPT' ",[2915,19062,14599],{},[54,19064,19066],{"id":19065},"alle-kommandozeilen-optionen","Alle Kommandozeilen-Optionen",[645,19068,19069,19085],{},[648,19070,19071],{},[651,19072,19073,19077,19081],{},[654,19074,19075],{},[26,19076,7715],{},[654,19078,19079],{},[26,19080,11548],{},[654,19082,19083],{},[26,19084,5483],{},[670,19086,19087,19097,19108,19118,19134,19145,19155,19166,19176],{},[651,19088,19089,19091,19094],{},[675,19090,7742],{},[675,19092,19093],{},"--quiet \u002F --silent",[675,19095,19096],{},"Automatische Ausgabe unterdrücken; Ausgabe nur mit p",[651,19098,19099,19102,19105],{},[675,19100,19101],{},"-e SKRIPT",[675,19103,19104],{},"--expression=SKRIPT",[675,19106,19107],{},"Skript direkt auf der Kommandozeile angeben",[651,19109,19110,19112,19115],{},[675,19111,18176],{},[675,19113,19114],{},"--file=DATEI",[675,19116,19117],{},"sed-Programm aus einer Datei lesen",[651,19119,19120,19125,19131],{},[675,19121,7726,19122],{},[2915,19123,19124],{},"SUFFIX",[675,19126,19127,19128],{},"--in-place",[2915,19129,19130],{},"=SUFFIX",[675,19132,19133],{},"Datei direkt bearbeiten (Backup mit optionalem Suffix)",[651,19135,19136,19139,19142],{},[675,19137,19138],{},"-E \u002F -r",[675,19140,19141],{},"--regexp-extended",[675,19143,19144],{},"Erweiterte reguläre Ausdrücke (ERE) aktivieren",[651,19146,19147,19149,19152],{},[675,19148,4849],{},[675,19150,19151],{},"--separate",[675,19153,19154],{},"Dateien separat behandeln (NR wird je Datei zurückgesetzt)",[651,19156,19157,19160,19163],{},[675,19158,19159],{},"-z",[675,19161,19162],{},"--null-data",[675,19164,19165],{},"NUL (\\0) als Zeilentrenner statt \\n (für find -print0)",[651,19167,19168,19171,19173],{},[675,19169,19170],{},"--sandbox",[675,19172],{},[675,19174,19175],{},"Sicherer Modus: e, r, w sind verboten",[651,19177,19178,19181,19183],{},[675,19179,19180],{},"--posix",[675,19182],{},[675,19184,19185],{},"Strikt POSIX-konform arbeiten",[54,19187,19189],{"id":19188},"sed-befehle-innerhalb-des-skripts","sed-Befehle (innerhalb des Skripts)",[645,19191,19192,19204],{},[648,19193,19194],{},[651,19195,19196,19200],{},[654,19197,19198],{},[26,19199,6993],{},[654,19201,19202],{},[26,19203,5483],{},[670,19205,19206,19214,19221,19228,19239,19249,19257,19265,19273,19281,19288,19296,19304,19312,19320,19328,19336,19344,19351,19359,19367,19377,19387],{},[651,19207,19208,19211],{},[675,19209,19210],{},"s\u002FREGEX\u002FERSATZ\u002FFLAGS",[675,19212,19213],{},"Substituieren (Ersetzen)",[651,19215,19216,19218],{},[675,19217,11221],{},[675,19219,19220],{},"Zeile löschen (delete)",[651,19222,19223,19225],{},[675,19224,16],{},[675,19226,19227],{},"Zeile ausgeben (print) – extra zur Normalausgabe",[651,19229,19230,19236],{},[675,19231,19232,19233],{},"q ",[2915,19234,19235],{},"CODE",[675,19237,19238],{},"Verarbeitung beenden (quit), optionaler Exit-Code",[651,19240,19241,19246],{},[675,19242,19243,19244],{},"Q ",[2915,19245,19235],{},[675,19247,19248],{},"Sofort beenden ohne letzte Zeile auszugeben",[651,19250,19251,19254],{},[675,19252,19253],{},"i\\TEXT",[675,19255,19256],{},"TEXT vor der Zeile einfügen (insert)",[651,19258,19259,19262],{},[675,19260,19261],{},"a\\TEXT",[675,19263,19264],{},"TEXT nach der Zeile anhängen (append)",[651,19266,19267,19270],{},[675,19268,19269],{},"c\\TEXT",[675,19271,19272],{},"Zeile durch TEXT ersetzen (change)",[651,19274,19275,19278],{},[675,19276,19277],{},"y\u002FZEICHEN\u002FERSATZ\u002F",[675,19279,19280],{},"Zeichen 1:1 austauschen (transliterate)",[651,19282,19283,19285],{},[675,19284,5137],{},[675,19286,19287],{},"Aktuelle Zeilennummer ausgeben",[651,19289,19290,19293],{},[675,19291,19292],{},"n",[675,19294,19295],{},"Nächste Zeile in Pattern Space laden (und ausgeben)",[651,19297,19298,19301],{},[675,19299,19300],{},"N",[675,19302,19303],{},"Nächste Zeile anhängen (Pattern Space wird mehrzeilig)",[651,19305,19306,19309],{},[675,19307,19308],{},"D",[675,19310,19311],{},"Erste Zeile des Pattern Space löschen, von vorne beginnen",[651,19313,19314,19317],{},[675,19315,19316],{},"P",[675,19318,19319],{},"Erste Zeile des Pattern Space ausgeben",[651,19321,19322,19325],{},[675,19323,19324],{},"r DATEI",[675,19326,19327],{},"Inhalt von DATEI nach der aktuellen Zeile einfügen",[651,19329,19330,19333],{},[675,19331,19332],{},"R DATEI",[675,19334,19335],{},"Eine Zeile aus DATEI einfügen (gawk-Erweiterung)",[651,19337,19338,19341],{},[675,19339,19340],{},"w DATEI",[675,19342,19343],{},"Matching-Zeilen in DATEI schreiben",[651,19345,19346,19348],{},[675,19347,11263],{},[675,19349,19350],{},"Zeile lesbar ausgeben (unsichtbare Zeichen als Escape)",[651,19352,19353,19356],{},[675,19354,19355],{},"e",[675,19357,19358],{},"Pattern Space als Shell-Befehl ausführen (GNU sed, unsicher!)",[651,19360,19361,19364],{},[675,19362,19363],{},": LABEL",[675,19365,19366],{},"Sprungmarke definieren",[651,19368,19369,19374],{},[675,19370,19371,19372],{},"b ",[2915,19373,7208],{},[675,19375,19376],{},"Zu LABEL springen (oder an Ende, Schleife möglich)",[651,19378,19379,19384],{},[675,19380,19381,19382],{},"t ",[2915,19383,7208],{},[675,19385,19386],{},"Zu LABEL springen wenn seit letztem t ein s erfolgreich war",[651,19388,19389,19394],{},[675,19390,19391,19392],{},"T ",[2915,19393,7208],{},[675,19395,19396],{},"Zu LABEL springen wenn seit letztem T kein s erfolgreich war",[54,19398,19400],{"id":19399},"s-befehl-flags","s-Befehl Flags",[645,19402,19403,19415],{},[648,19404,19405],{},[651,19406,19407,19411],{},[654,19408,19409],{},[26,19410,11543],{},[654,19412,19413],{},[26,19414,5483],{},[670,19416,19417,19424,19431,19438,19445,19452],{},[651,19418,19419,19421],{},[675,19420,12301],{},[675,19422,19423],{},"Alle Vorkommen ersetzen (global)",[651,19425,19426,19428],{},[675,19427,19300],{},[675,19429,19430],{},"Nur das N-te Vorkommen ersetzen (z.B. s\u002Fa\u002Fb\u002F2)",[651,19432,19433,19435],{},[675,19434,16],{},[675,19436,19437],{},"Ersetzte Zeile ausgeben (sinnvoll mit -n)",[651,19439,19440,19443],{},[675,19441,19442],{},"i \u002F I",[675,19444,15999],{},[651,19446,19447,19449],{},[675,19448,19355],{},[675,19450,19451],{},"Ergebnis als Shell-Befehl ausführen (GNU sed)",[651,19453,19454,19456],{},[675,19455,19340],{},[675,19457,19458],{},"Ersetzte Zeilen in DATEI schreiben",[54,19460,19462],{"id":19461},"adressierung-zeilen-auswählen","Adressierung (Zeilen auswählen)",[645,19464,19465,19478],{},[648,19466,19467],{},[651,19468,19469,19474],{},[654,19470,19471],{},[26,19472,19473],{},"Adresse",[654,19475,19476],{},[26,19477,5483],{},[670,19479,19480,19487,19495,19503,19511,19519,19527,19535,19542],{},[651,19481,19482,19484],{},[675,19483,19300],{},[675,19485,19486],{},"Nur Zeile N",[651,19488,19489,19492],{},[675,19490,19491],{},"N,M",[675,19493,19494],{},"Zeilen N bis M",[651,19496,19497,19500],{},[675,19498,19499],{},"N~SCHRITT",[675,19501,19502],{},"Ab Zeile N jede SCHRITT-te Zeile (z.B. 1~2 = alle ungeraden)",[651,19504,19505,19508],{},[675,19506,19507],{},"0~SCHRITT",[675,19509,19510],{},"Jede SCHRITT-te Zeile (z.B. 0~2 = alle geraden)",[651,19512,19513,19516],{},[675,19514,19515],{},"\u002FREGEX\u002F",[675,19517,19518],{},"Alle Zeilen, die REGEX entsprechen",[651,19520,19521,19524],{},[675,19522,19523],{},"\u002FREGEX\u002F,\u002FREGEX2\u002F",[675,19525,19526],{},"Von erster REGEX-Zeile bis REGEX2-Zeile (Range)",[651,19528,19529,19532],{},[675,19530,19531],{},"N,\u002FREGEX\u002F",[675,19533,19534],{},"Ab Zeile N bis zur ersten REGEX-Zeile",[651,19536,19537,19539],{},[675,19538,4897],{},[675,19540,19541],{},"Letzte Zeile",[651,19543,19544,19546],{},[675,19545,5592],{},[675,19547,19548],{},"Negation (z.B. 3!d = alle AUSSER Zeile 3 löschen)",[54,19550,19552],{"id":19551},"reguläre-ausdrücke-bre-vs-ere","Reguläre Ausdrücke (BRE vs ERE)",[645,19554,19555,19575],{},[648,19556,19557],{},[651,19558,19559,19563,19568],{},[654,19560,19561],{},[26,19562,6348],{},[654,19564,19565],{},[26,19566,19567],{},"BRE (Standard)",[654,19569,19570],{},[26,19571,19572,19573,5032],{},"ERE (",[3398,19574,7781],{},[670,19576,19577,19587,19596,19607,19618,19628,19638,19648,19657,19665],{},[651,19578,19579,19582,19585],{},[675,19580,19581],{},"Gruppe",[675,19583,19584],{},"(…)",[675,19586,19584],{},[651,19588,19589,19592,19594],{},[675,19590,19591],{},"Oder",[675,19593,16332],{},[675,19595,16335],{},[651,19597,19598,19601,19604],{},[675,19599,19600],{},"1 oder mehr",[675,19602,19603],{},"a* (mind. 0)",[675,19605,19606],{},"a+",[651,19608,19609,19612,19615],{},[675,19610,19611],{},"0 oder 1",[675,19613,19614],{},"(kein direktes)",[675,19616,19617],{},"a?",[651,19619,19620,19623,19626],{},[675,19621,19622],{},"N-mal",[675,19624,19625],{},"a{3}",[675,19627,19625],{},[651,19629,19630,19633,19636],{},[675,19631,19632],{},"N bis M mal",[675,19634,19635],{},"a{2,5}",[675,19637,19635],{},[651,19639,19640,19643,19646],{},[675,19641,19642],{},"Rückreferenz",[675,19644,19645],{},"\\1, \\2",[675,19647,19645],{},[651,19649,19650,19653,19655],{},[675,19651,19652],{},"Beliebig",[675,19654,6584],{},[675,19656,6584],{},[651,19658,19659,19661,19663],{},[675,19660,16260],{},[675,19662,13910],{},[675,19664,13910],{},[651,19666,19667,19669,19671],{},[675,19668,16267],{},[675,19670,4897],{},[675,19672,4897],{},[54,19674,8676],{"id":19675},"beispiele-10",[11,19677,19679],{"id":19678},"ersetzen-s-befehl","─── Ersetzen (s-Befehl) ─────────────────────────────────────",[11,19681,19683],{"id":19682},"erstes-vorkommen-pro-zeile-ersetzen","Erstes Vorkommen pro Zeile ersetzen",[3392,19685,19687],{"className":3394,"code":19686,"language":3396,"meta":225,"style":225},"sed 's\u002Falt\u002Fneu\u002F' datei.txt\n\n# Alle Vorkommen ersetzen (g = global)\n\nsed 's\u002Falt\u002Fneu\u002Fg' datei.txt\n\n# Nur das 2. Vorkommen pro Zeile ersetzen\n\nsed 's\u002Falt\u002Fneu\u002F2' datei.txt\n\n# Case-insensitive ersetzen\n\nsed 's\u002Ffehler\u002FFEHLER\u002Fgi' datei.txt\n\n# In-place bearbeiten (Datei direkt ändern)\n\nsed -i 's\u002Falt\u002Fneu\u002Fg' datei.txt\n\n# In-place mit Backup (Datei.bak wird angelegt)\n\nsed -i.bak 's\u002Falt\u002Fneu\u002Fg' datei.txt\n\n# Mehrere Befehle mit -e\n\nsed -e 's\u002Ffoo\u002Fbar\u002Fg' -e 's\u002Fbaz\u002Fqux\u002Fg' datei.txt\n\n# Mehrere Befehle mit Semikolon\n\nsed 's\u002Ffoo\u002Fbar\u002Fg; s\u002Fbaz\u002Fqux\u002Fg' datei.txt\n\n# sed-Programm aus Datei\n\nsed -f korrekturen.sed datei.txt\n\n# ─── Zeilen löschen (d-Befehl) ───────────────────────────────\n\n# Zeilen mit \"TODO\" löschen\n\nsed '\u002FTODO\u002Fd' datei.txt\n\n# Kommentarzeilen (# am Anfang) löschen\n\nsed '\u002F^#\u002Fd' datei.txt\n\nsed '\u002F^[[:space:]]*#\u002Fd' datei.txt # auch eingerückte Kommentare\n\n# Leerzeilen löschen\n\nsed '\u002F^$\u002Fd' datei.txt\n\n# Leerzeilen und Zeilen mit nur Leerzeichen löschen\n\nsed '\u002F^s*$\u002Fd' datei.txt\n\n# Erste Zeile löschen (z.B. Header)\n\nsed '1d' datei.txt\n\n# Letzte Zeile löschen\n\nsed '$d' datei.txt\n\n# Zeilen 3 bis 7 löschen\n\nsed '3,7d' datei.txt\n\n# Alle anderen Zeilen außer Zeile 5 löschen\n\nsed '5!d' datei.txt\n\n# ─── Ausgabe filtern (-n p) ────────────────────────────────\n\n# Nur Matching-Zeilen ausgeben (wie grep)\n\nsed -n '\u002Fmuster\u002Fp' datei.txt\n\n# Zeilen 5 bis 10 ausgeben\n\nsed -n '5,10p' datei.txt\n\n# Erste Zeile ausgeben (wie head -1)\n\nsed -n '1p' datei.txt\n\n# Letzte Zeile ausgeben (wie tail -1)\n\nsed -n '$p' datei.txt\n\n# Zeilen ausgeben, die NICHT dem Muster entsprechen (wie grep -v)\n\nsed -n '\u002Fmuster\u002F!p' datei.txt\n\n# ─── Einfügen und Anhängen (i, a, c) ────────────────────────\n\n# Text vor Zeile 3 einfügen\n\nsed '3iDies kommt vor Zeile 3' datei.txt\n\n# Text nach Zeile 3 anfügen\n\nsed '3aDies kommt nach Zeile 3' datei.txt\n\n# Zeile 3 komplett ersetzen\n\nsed '3cDas ist jetzt Zeile 3' datei.txt\n\n# Text nach jeder Zeile mit \"START\" einfügen\n\nsed '\u002FSTART\u002Fa---------' datei.txt\n\n# Dateiinhalt nach bestimmter Zeile einfügen\n\nsed '\u002FINSERT_HERE\u002Fr template.txt' datei.txt\n\n# ─── Whitespace bereinigen ───────────────────────────────────\n\n# Leerzeichen am Zeilenende entfernen (trailing whitespace)\n\nsed 's\u002F[[:space:]]*$\u002F\u002F' datei.txt\n\n# Führende Leerzeichen entfernen (leading whitespace)\n\nsed 's\u002F^[[:space:]]*\u002F\u002F' datei.txt\n\n# Beides (trim)\n\nsed 's\u002F^[[:space:]]\u002F\u002F; s\u002F[[:space:]]$\u002F\u002F' datei.txt\n\n# Tabulatoren durch Leerzeichen ersetzen\n\nsed 's\u002Ft\u002F \u002Fg' datei.txt\n\n# ─── Zeilenoperationen ───────────────────────────────────────\n\n# Zeilennummer vor jede Zeile (wie cat -n)\n\nsed '=' datei.txt | sed 'N; s\u002Fn\u002Ft\u002F'\n\n# Zeilen ab 5 ausgeben (bis Ende)\n\nsed -n '5,$p' datei.txt\n\n# Script nach N Zeilen beenden (wie head -5)\n\nsed '5q' datei.txt\n\n# Jede 2. Zeile löschen (gerade Zeilennummern)\n\nsed '0~2d' datei.txt\n\n# Jede 2. Zeile löschen (ungerade Zeilennummern)\n\nsed '1~2d' datei.txt\n\n# ─── Rückreferenzen ─────────────────────────────────────────\n\n# Wort in Anführungszeichen einschließen (BRE)\n\nsed 's\u002F(Hallo)\u002F\"1\"\u002F' datei.txt\n\n# Dasselbe mit ERE (-E)\n\nsed -E 's\u002F(Hallo)\u002F\"1\"\u002F' datei.txt\n\n# Datum von YYYY-MM-DD zu DD.MM.YYYY umformatieren\n\nsed -E 's\u002F([0-9]{4})-([0-9]{2})-([0-9]{2})\u002F3.2.1\u002F' datei.txt\n\n# Vornamen und Nachnamen tauschen (\"Muster, Hans\" → \"Hans Muster\")\n\nsed -E 's\u002F([A-Za-z] ), ([A-Za-z] )\u002F2 1\u002F' namen.txt\n\n# ─── Zeichenersatz (y-Befehl) ───────────────────────────────\n\n# Kleinbuchstaben in Großbuchstaben\n\nsed 'y\u002Fabcdefghijklmnopqrstuvwxyz\u002FABCDEFGHIJKLMNOPQRSTUVWXYZ\u002F' datei.txt\n\n# Umlaute vereinfachen\n\nsed 'y\u002FäöüÄÖÜ\u002FaouAOU\u002F' datei.txt\n\n# ─── Mehrzeilige Operationen (N-Befehl) ─────────────────────\n\n# Zeilenumbruch zwischen zusammengehörigen Zeilen entfernen\n\nsed 'N; s\u002Fn\u002F \u002F' datei.txt\n\n# ─── Praktische Anwendungen ──────────────────────────────────\n\n# HTML-Tags entfernen\n\nsed 's\u002F\u003C[^>]*>\u002F\u002Fg' seite.html\n\n# DOS-Zeilenenden (rn) in Unix-Zeilenenden (n) umwandeln\n\nsed 's\u002Fr\u002F\u002F' datei.txt\n\n# Alle IP-Adressen anonymisieren\n\nsed -E 's\u002F[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}\u002FX.X.X.X\u002Fg' access.log\n\n# Passwort in Konfigurationsdatei ersetzen (sicher mit Backup)\n\nsed -i.bak \"s\u002F^password=.*\u002Fpassword=NEU\u002F\" \u002Fetc\u002Fapp\u002Fconfig.ini\n\n# Leerzeilen auf maximal eine reduzieren\n\nsed '\u002F^$\u002F{ N; \u002F^n$\u002Fd }' datei.txt\n\n# oder einfacher (GNU sed):\n\nsed -E '\u002F^$\u002F{ \u002F^n $\u002Fd }' datei.txt\n\n",[3398,19688,19689,19697,19701,19706,19710,19718,19722,19727,19731,19740,19744,19749,19753,19762,19766,19771,19775,19785,19789,19794,19798,19809,19813,19818,19822,19839,19843,19848,19852,19861,19865,19870,19874,19885,19889,19894,19898,19903,19907,19916,19920,19925,19929,19938,19942,19955,19959,19964,19968,19977,19981,19986,19990,19999,20003,20008,20012,20021,20025,20030,20034,20043,20047,20052,20056,20065,20069,20074,20078,20087,20091,20096,20100,20105,20109,20120,20125,20131,20136,20148,20153,20159,20164,20176,20181,20187,20192,20204,20209,20215,20220,20232,20237,20243,20248,20254,20259,20269,20274,20280,20285,20295,20300,20306,20311,20321,20326,20332,20337,20347,20352,20358,20363,20373,20378,20384,20389,20395,20400,20410,20415,20421,20426,20436,20441,20447,20452,20462,20467,20473,20478,20488,20493,20499,20504,20510,20515,20533,20538,20544,20549,20561,20566,20572,20577,20587,20592,20598,20603,20613,20618,20624,20629,20639,20644,20650,20655,20661,20666,20676,20681,20687,20692,20703,20708,20714,20719,20731,20736,20742,20747,20760,20765,20771,20776,20782,20787,20797,20802,20808,20813,20823,20828,20834,20839,20845,20850,20860,20865,20871,20876,20882,20887,20898,20903,20909,20914,20924,20929,20935,20940,20952,20957,20963,20968,20981,20986,20992,20997,21007,21012,21018,21023],{"__ignoreMap":225},[2915,19690,19691,19693,19695],{"class":3402,"line":3403},[2915,19692,7916],{"class":3406},[2915,19694,7941],{"class":3414},[2915,19696,7698],{"class":3414},[2915,19698,19699],{"class":3402,"line":1117},[2915,19700,3506],{"emptyLinePlaceholder":3505},[2915,19702,19703],{"class":3402,"line":1125},[2915,19704,19705],{"class":3511},"# Alle Vorkommen ersetzen (g = global)\n",[2915,19707,19708],{"class":3402,"line":3515},[2915,19709,3506],{"emptyLinePlaceholder":3505},[2915,19711,19712,19714,19716],{"class":3402,"line":3520},[2915,19713,7916],{"class":3406},[2915,19715,8030],{"class":3414},[2915,19717,7698],{"class":3414},[2915,19719,19720],{"class":3402,"line":5070},[2915,19721,3506],{"emptyLinePlaceholder":3505},[2915,19723,19724],{"class":3402,"line":5075},[2915,19725,19726],{"class":3511},"# Nur das 2. Vorkommen pro Zeile ersetzen\n",[2915,19728,19729],{"class":3402,"line":5093},[2915,19730,3506],{"emptyLinePlaceholder":3505},[2915,19732,19733,19735,19738],{"class":3402,"line":5098},[2915,19734,7916],{"class":3406},[2915,19736,19737],{"class":3414}," 's\u002Falt\u002Fneu\u002F2'",[2915,19739,7698],{"class":3414},[2915,19741,19742],{"class":3402,"line":5207},[2915,19743,3506],{"emptyLinePlaceholder":3505},[2915,19745,19746],{"class":3402,"line":5212},[2915,19747,19748],{"class":3511},"# Case-insensitive ersetzen\n",[2915,19750,19751],{"class":3402,"line":5218},[2915,19752,3506],{"emptyLinePlaceholder":3505},[2915,19754,19755,19757,19760],{"class":3402,"line":5223},[2915,19756,7916],{"class":3406},[2915,19758,19759],{"class":3414}," 's\u002Ffehler\u002FFEHLER\u002Fgi'",[2915,19761,7698],{"class":3414},[2915,19763,19764],{"class":3402,"line":5229},[2915,19765,3506],{"emptyLinePlaceholder":3505},[2915,19767,19768],{"class":3402,"line":5253},[2915,19769,19770],{"class":3511},"# In-place bearbeiten (Datei direkt ändern)\n",[2915,19772,19773],{"class":3402,"line":5266},[2915,19774,3506],{"emptyLinePlaceholder":3505},[2915,19776,19777,19779,19781,19783],{"class":3402,"line":5721},[2915,19778,7916],{"class":3406},[2915,19780,7692],{"class":3410},[2915,19782,8030],{"class":3414},[2915,19784,7698],{"class":3414},[2915,19786,19787],{"class":3402,"line":9401},[2915,19788,3506],{"emptyLinePlaceholder":3505},[2915,19790,19791],{"class":3402,"line":9406},[2915,19792,19793],{"class":3511},"# In-place mit Backup (Datei.bak wird angelegt)\n",[2915,19795,19796],{"class":3402,"line":9411},[2915,19797,3506],{"emptyLinePlaceholder":3505},[2915,19799,19800,19802,19805,19807],{"class":3402,"line":9416},[2915,19801,7916],{"class":3406},[2915,19803,19804],{"class":3410}," -i.bak",[2915,19806,8030],{"class":3414},[2915,19808,7698],{"class":3414},[2915,19810,19811],{"class":3402,"line":9428},[2915,19812,3506],{"emptyLinePlaceholder":3505},[2915,19814,19815],{"class":3402,"line":9433},[2915,19816,19817],{"class":3511},"# Mehrere Befehle mit -e\n",[2915,19819,19820],{"class":3402,"line":9454},[2915,19821,3506],{"emptyLinePlaceholder":3505},[2915,19823,19824,19826,19829,19832,19834,19837],{"class":3402,"line":9459},[2915,19825,7916],{"class":3406},[2915,19827,19828],{"class":3410}," -e",[2915,19830,19831],{"class":3414}," 's\u002Ffoo\u002Fbar\u002Fg'",[2915,19833,19828],{"class":3410},[2915,19835,19836],{"class":3414}," 's\u002Fbaz\u002Fqux\u002Fg'",[2915,19838,7698],{"class":3414},[2915,19840,19841],{"class":3402,"line":9464},[2915,19842,3506],{"emptyLinePlaceholder":3505},[2915,19844,19845],{"class":3402,"line":9469},[2915,19846,19847],{"class":3511},"# Mehrere Befehle mit Semikolon\n",[2915,19849,19850],{"class":3402,"line":9479},[2915,19851,3506],{"emptyLinePlaceholder":3505},[2915,19853,19854,19856,19859],{"class":3402,"line":9484},[2915,19855,7916],{"class":3406},[2915,19857,19858],{"class":3414}," 's\u002Ffoo\u002Fbar\u002Fg; s\u002Fbaz\u002Fqux\u002Fg'",[2915,19860,7698],{"class":3414},[2915,19862,19863],{"class":3402,"line":9489},[2915,19864,3506],{"emptyLinePlaceholder":3505},[2915,19866,19867],{"class":3402,"line":9494},[2915,19868,19869],{"class":3511},"# sed-Programm aus Datei\n",[2915,19871,19872],{"class":3402,"line":9504},[2915,19873,3506],{"emptyLinePlaceholder":3505},[2915,19875,19876,19878,19880,19883],{"class":3402,"line":9509},[2915,19877,7916],{"class":3406},[2915,19879,10089],{"class":3410},[2915,19881,19882],{"class":3414}," korrekturen.sed",[2915,19884,7698],{"class":3414},[2915,19886,19887],{"class":3402,"line":9514},[2915,19888,3506],{"emptyLinePlaceholder":3505},[2915,19890,19891],{"class":3402,"line":9519},[2915,19892,19893],{"class":3511},"# ─── Zeilen löschen (d-Befehl) ───────────────────────────────\n",[2915,19895,19896],{"class":3402,"line":9524},[2915,19897,3506],{"emptyLinePlaceholder":3505},[2915,19899,19900],{"class":3402,"line":9529},[2915,19901,19902],{"class":3511},"# Zeilen mit \"TODO\" löschen\n",[2915,19904,19905],{"class":3402,"line":9534},[2915,19906,3506],{"emptyLinePlaceholder":3505},[2915,19908,19909,19911,19914],{"class":3402,"line":9539},[2915,19910,7916],{"class":3406},[2915,19912,19913],{"class":3414}," '\u002FTODO\u002Fd'",[2915,19915,7698],{"class":3414},[2915,19917,19918],{"class":3402,"line":9552},[2915,19919,3506],{"emptyLinePlaceholder":3505},[2915,19921,19922],{"class":3402,"line":9557},[2915,19923,19924],{"class":3511},"# Kommentarzeilen (# am Anfang) löschen\n",[2915,19926,19927],{"class":3402,"line":9570},[2915,19928,3506],{"emptyLinePlaceholder":3505},[2915,19930,19931,19933,19936],{"class":3402,"line":9575},[2915,19932,7916],{"class":3406},[2915,19934,19935],{"class":3414}," '\u002F^#\u002Fd'",[2915,19937,7698],{"class":3414},[2915,19939,19940],{"class":3402,"line":9588},[2915,19941,3506],{"emptyLinePlaceholder":3505},[2915,19943,19944,19946,19949,19952],{"class":3402,"line":9593},[2915,19945,7916],{"class":3406},[2915,19947,19948],{"class":3414}," '\u002F^[[:space:]]*#\u002Fd'",[2915,19950,19951],{"class":3414}," datei.txt",[2915,19953,19954],{"class":3511}," # auch eingerückte Kommentare\n",[2915,19956,19957],{"class":3402,"line":9598},[2915,19958,3506],{"emptyLinePlaceholder":3505},[2915,19960,19961],{"class":3402,"line":9603},[2915,19962,19963],{"class":3511},"# Leerzeilen löschen\n",[2915,19965,19966],{"class":3402,"line":9619},[2915,19967,3506],{"emptyLinePlaceholder":3505},[2915,19969,19970,19972,19975],{"class":3402,"line":9624},[2915,19971,7916],{"class":3406},[2915,19973,19974],{"class":3414}," '\u002F^$\u002Fd'",[2915,19976,7698],{"class":3414},[2915,19978,19979],{"class":3402,"line":9629},[2915,19980,3506],{"emptyLinePlaceholder":3505},[2915,19982,19983],{"class":3402,"line":9634},[2915,19984,19985],{"class":3511},"# Leerzeilen und Zeilen mit nur Leerzeichen löschen\n",[2915,19987,19988],{"class":3402,"line":9642},[2915,19989,3506],{"emptyLinePlaceholder":3505},[2915,19991,19992,19994,19997],{"class":3402,"line":9647},[2915,19993,7916],{"class":3406},[2915,19995,19996],{"class":3414}," '\u002F^s*$\u002Fd'",[2915,19998,7698],{"class":3414},[2915,20000,20001],{"class":3402,"line":9656},[2915,20002,3506],{"emptyLinePlaceholder":3505},[2915,20004,20005],{"class":3402,"line":9661},[2915,20006,20007],{"class":3511},"# Erste Zeile löschen (z.B. Header)\n",[2915,20009,20010],{"class":3402,"line":9666},[2915,20011,3506],{"emptyLinePlaceholder":3505},[2915,20013,20014,20016,20019],{"class":3402,"line":9671},[2915,20015,7916],{"class":3406},[2915,20017,20018],{"class":3414}," '1d'",[2915,20020,7698],{"class":3414},[2915,20022,20023],{"class":3402,"line":9685},[2915,20024,3506],{"emptyLinePlaceholder":3505},[2915,20026,20027],{"class":3402,"line":9690},[2915,20028,20029],{"class":3511},"# Letzte Zeile löschen\n",[2915,20031,20032],{"class":3402,"line":9711},[2915,20033,3506],{"emptyLinePlaceholder":3505},[2915,20035,20036,20038,20041],{"class":3402,"line":9716},[2915,20037,7916],{"class":3406},[2915,20039,20040],{"class":3414}," '$d'",[2915,20042,7698],{"class":3414},[2915,20044,20045],{"class":3402,"line":9721},[2915,20046,3506],{"emptyLinePlaceholder":3505},[2915,20048,20049],{"class":3402,"line":9726},[2915,20050,20051],{"class":3511},"# Zeilen 3 bis 7 löschen\n",[2915,20053,20054],{"class":3402,"line":9734},[2915,20055,3506],{"emptyLinePlaceholder":3505},[2915,20057,20058,20060,20063],{"class":3402,"line":9739},[2915,20059,7916],{"class":3406},[2915,20061,20062],{"class":3414}," '3,7d'",[2915,20064,7698],{"class":3414},[2915,20066,20067],{"class":3402,"line":9747},[2915,20068,3506],{"emptyLinePlaceholder":3505},[2915,20070,20071],{"class":3402,"line":9752},[2915,20072,20073],{"class":3511},"# Alle anderen Zeilen außer Zeile 5 löschen\n",[2915,20075,20076],{"class":3402,"line":9760},[2915,20077,3506],{"emptyLinePlaceholder":3505},[2915,20079,20080,20082,20085],{"class":3402,"line":9765},[2915,20081,7916],{"class":3406},[2915,20083,20084],{"class":3414}," '5!d'",[2915,20086,7698],{"class":3414},[2915,20088,20089],{"class":3402,"line":9773},[2915,20090,3506],{"emptyLinePlaceholder":3505},[2915,20092,20093],{"class":3402,"line":9778},[2915,20094,20095],{"class":3511},"# ─── Ausgabe filtern (-n p) ────────────────────────────────\n",[2915,20097,20098],{"class":3402,"line":9786},[2915,20099,3506],{"emptyLinePlaceholder":3505},[2915,20101,20102],{"class":3402,"line":9791},[2915,20103,20104],{"class":3511},"# Nur Matching-Zeilen ausgeben (wie grep)\n",[2915,20106,20107],{"class":3402,"line":9800},[2915,20108,3506],{"emptyLinePlaceholder":3505},[2915,20110,20111,20113,20115,20118],{"class":3402,"line":9805},[2915,20112,7916],{"class":3406},[2915,20114,8127],{"class":3410},[2915,20116,20117],{"class":3414}," '\u002Fmuster\u002Fp'",[2915,20119,7698],{"class":3414},[2915,20121,20123],{"class":3402,"line":20122},76,[2915,20124,3506],{"emptyLinePlaceholder":3505},[2915,20126,20128],{"class":3402,"line":20127},77,[2915,20129,20130],{"class":3511},"# Zeilen 5 bis 10 ausgeben\n",[2915,20132,20134],{"class":3402,"line":20133},78,[2915,20135,3506],{"emptyLinePlaceholder":3505},[2915,20137,20139,20141,20143,20146],{"class":3402,"line":20138},79,[2915,20140,7916],{"class":3406},[2915,20142,8127],{"class":3410},[2915,20144,20145],{"class":3414}," '5,10p'",[2915,20147,7698],{"class":3414},[2915,20149,20151],{"class":3402,"line":20150},80,[2915,20152,3506],{"emptyLinePlaceholder":3505},[2915,20154,20156],{"class":3402,"line":20155},81,[2915,20157,20158],{"class":3511},"# Erste Zeile ausgeben (wie head -1)\n",[2915,20160,20162],{"class":3402,"line":20161},82,[2915,20163,3506],{"emptyLinePlaceholder":3505},[2915,20165,20167,20169,20171,20174],{"class":3402,"line":20166},83,[2915,20168,7916],{"class":3406},[2915,20170,8127],{"class":3410},[2915,20172,20173],{"class":3414}," '1p'",[2915,20175,7698],{"class":3414},[2915,20177,20179],{"class":3402,"line":20178},84,[2915,20180,3506],{"emptyLinePlaceholder":3505},[2915,20182,20184],{"class":3402,"line":20183},85,[2915,20185,20186],{"class":3511},"# Letzte Zeile ausgeben (wie tail -1)\n",[2915,20188,20190],{"class":3402,"line":20189},86,[2915,20191,3506],{"emptyLinePlaceholder":3505},[2915,20193,20195,20197,20199,20202],{"class":3402,"line":20194},87,[2915,20196,7916],{"class":3406},[2915,20198,8127],{"class":3410},[2915,20200,20201],{"class":3414}," '$p'",[2915,20203,7698],{"class":3414},[2915,20205,20207],{"class":3402,"line":20206},88,[2915,20208,3506],{"emptyLinePlaceholder":3505},[2915,20210,20212],{"class":3402,"line":20211},89,[2915,20213,20214],{"class":3511},"# Zeilen ausgeben, die NICHT dem Muster entsprechen (wie grep -v)\n",[2915,20216,20218],{"class":3402,"line":20217},90,[2915,20219,3506],{"emptyLinePlaceholder":3505},[2915,20221,20223,20225,20227,20230],{"class":3402,"line":20222},91,[2915,20224,7916],{"class":3406},[2915,20226,8127],{"class":3410},[2915,20228,20229],{"class":3414}," '\u002Fmuster\u002F!p'",[2915,20231,7698],{"class":3414},[2915,20233,20235],{"class":3402,"line":20234},92,[2915,20236,3506],{"emptyLinePlaceholder":3505},[2915,20238,20240],{"class":3402,"line":20239},93,[2915,20241,20242],{"class":3511},"# ─── Einfügen und Anhängen (i, a, c) ────────────────────────\n",[2915,20244,20246],{"class":3402,"line":20245},94,[2915,20247,3506],{"emptyLinePlaceholder":3505},[2915,20249,20251],{"class":3402,"line":20250},95,[2915,20252,20253],{"class":3511},"# Text vor Zeile 3 einfügen\n",[2915,20255,20257],{"class":3402,"line":20256},96,[2915,20258,3506],{"emptyLinePlaceholder":3505},[2915,20260,20262,20264,20267],{"class":3402,"line":20261},97,[2915,20263,7916],{"class":3406},[2915,20265,20266],{"class":3414}," '3iDies kommt vor Zeile 3'",[2915,20268,7698],{"class":3414},[2915,20270,20272],{"class":3402,"line":20271},98,[2915,20273,3506],{"emptyLinePlaceholder":3505},[2915,20275,20277],{"class":3402,"line":20276},99,[2915,20278,20279],{"class":3511},"# Text nach Zeile 3 anfügen\n",[2915,20281,20283],{"class":3402,"line":20282},100,[2915,20284,3506],{"emptyLinePlaceholder":3505},[2915,20286,20288,20290,20293],{"class":3402,"line":20287},101,[2915,20289,7916],{"class":3406},[2915,20291,20292],{"class":3414}," '3aDies kommt nach Zeile 3'",[2915,20294,7698],{"class":3414},[2915,20296,20298],{"class":3402,"line":20297},102,[2915,20299,3506],{"emptyLinePlaceholder":3505},[2915,20301,20303],{"class":3402,"line":20302},103,[2915,20304,20305],{"class":3511},"# Zeile 3 komplett ersetzen\n",[2915,20307,20309],{"class":3402,"line":20308},104,[2915,20310,3506],{"emptyLinePlaceholder":3505},[2915,20312,20314,20316,20319],{"class":3402,"line":20313},105,[2915,20315,7916],{"class":3406},[2915,20317,20318],{"class":3414}," '3cDas ist jetzt Zeile 3'",[2915,20320,7698],{"class":3414},[2915,20322,20324],{"class":3402,"line":20323},106,[2915,20325,3506],{"emptyLinePlaceholder":3505},[2915,20327,20329],{"class":3402,"line":20328},107,[2915,20330,20331],{"class":3511},"# Text nach jeder Zeile mit \"START\" einfügen\n",[2915,20333,20335],{"class":3402,"line":20334},108,[2915,20336,3506],{"emptyLinePlaceholder":3505},[2915,20338,20340,20342,20345],{"class":3402,"line":20339},109,[2915,20341,7916],{"class":3406},[2915,20343,20344],{"class":3414}," '\u002FSTART\u002Fa---------'",[2915,20346,7698],{"class":3414},[2915,20348,20350],{"class":3402,"line":20349},110,[2915,20351,3506],{"emptyLinePlaceholder":3505},[2915,20353,20355],{"class":3402,"line":20354},111,[2915,20356,20357],{"class":3511},"# Dateiinhalt nach bestimmter Zeile einfügen\n",[2915,20359,20361],{"class":3402,"line":20360},112,[2915,20362,3506],{"emptyLinePlaceholder":3505},[2915,20364,20366,20368,20371],{"class":3402,"line":20365},113,[2915,20367,7916],{"class":3406},[2915,20369,20370],{"class":3414}," '\u002FINSERT_HERE\u002Fr template.txt'",[2915,20372,7698],{"class":3414},[2915,20374,20376],{"class":3402,"line":20375},114,[2915,20377,3506],{"emptyLinePlaceholder":3505},[2915,20379,20381],{"class":3402,"line":20380},115,[2915,20382,20383],{"class":3511},"# ─── Whitespace bereinigen ───────────────────────────────────\n",[2915,20385,20387],{"class":3402,"line":20386},116,[2915,20388,3506],{"emptyLinePlaceholder":3505},[2915,20390,20392],{"class":3402,"line":20391},117,[2915,20393,20394],{"class":3511},"# Leerzeichen am Zeilenende entfernen (trailing whitespace)\n",[2915,20396,20398],{"class":3402,"line":20397},118,[2915,20399,3506],{"emptyLinePlaceholder":3505},[2915,20401,20403,20405,20408],{"class":3402,"line":20402},119,[2915,20404,7916],{"class":3406},[2915,20406,20407],{"class":3414}," 's\u002F[[:space:]]*$\u002F\u002F'",[2915,20409,7698],{"class":3414},[2915,20411,20413],{"class":3402,"line":20412},120,[2915,20414,3506],{"emptyLinePlaceholder":3505},[2915,20416,20418],{"class":3402,"line":20417},121,[2915,20419,20420],{"class":3511},"# Führende Leerzeichen entfernen (leading whitespace)\n",[2915,20422,20424],{"class":3402,"line":20423},122,[2915,20425,3506],{"emptyLinePlaceholder":3505},[2915,20427,20429,20431,20434],{"class":3402,"line":20428},123,[2915,20430,7916],{"class":3406},[2915,20432,20433],{"class":3414}," 's\u002F^[[:space:]]*\u002F\u002F'",[2915,20435,7698],{"class":3414},[2915,20437,20439],{"class":3402,"line":20438},124,[2915,20440,3506],{"emptyLinePlaceholder":3505},[2915,20442,20444],{"class":3402,"line":20443},125,[2915,20445,20446],{"class":3511},"# Beides (trim)\n",[2915,20448,20450],{"class":3402,"line":20449},126,[2915,20451,3506],{"emptyLinePlaceholder":3505},[2915,20453,20455,20457,20460],{"class":3402,"line":20454},127,[2915,20456,7916],{"class":3406},[2915,20458,20459],{"class":3414}," 's\u002F^[[:space:]]\u002F\u002F; s\u002F[[:space:]]$\u002F\u002F'",[2915,20461,7698],{"class":3414},[2915,20463,20465],{"class":3402,"line":20464},128,[2915,20466,3506],{"emptyLinePlaceholder":3505},[2915,20468,20470],{"class":3402,"line":20469},129,[2915,20471,20472],{"class":3511},"# Tabulatoren durch Leerzeichen ersetzen\n",[2915,20474,20476],{"class":3402,"line":20475},130,[2915,20477,3506],{"emptyLinePlaceholder":3505},[2915,20479,20481,20483,20486],{"class":3402,"line":20480},131,[2915,20482,7916],{"class":3406},[2915,20484,20485],{"class":3414}," 's\u002Ft\u002F \u002Fg'",[2915,20487,7698],{"class":3414},[2915,20489,20491],{"class":3402,"line":20490},132,[2915,20492,3506],{"emptyLinePlaceholder":3505},[2915,20494,20496],{"class":3402,"line":20495},133,[2915,20497,20498],{"class":3511},"# ─── Zeilenoperationen ───────────────────────────────────────\n",[2915,20500,20502],{"class":3402,"line":20501},134,[2915,20503,3506],{"emptyLinePlaceholder":3505},[2915,20505,20507],{"class":3402,"line":20506},135,[2915,20508,20509],{"class":3511},"# Zeilennummer vor jede Zeile (wie cat -n)\n",[2915,20511,20513],{"class":3402,"line":20512},136,[2915,20514,3506],{"emptyLinePlaceholder":3505},[2915,20516,20518,20520,20523,20525,20527,20530],{"class":3402,"line":20517},137,[2915,20519,7916],{"class":3406},[2915,20521,20522],{"class":3414}," '='",[2915,20524,19951],{"class":3414},[2915,20526,7679],{"class":3533},[2915,20528,20529],{"class":3406}," sed",[2915,20531,20532],{"class":3414}," 'N; s\u002Fn\u002Ft\u002F'\n",[2915,20534,20536],{"class":3402,"line":20535},138,[2915,20537,3506],{"emptyLinePlaceholder":3505},[2915,20539,20541],{"class":3402,"line":20540},139,[2915,20542,20543],{"class":3511},"# Zeilen ab 5 ausgeben (bis Ende)\n",[2915,20545,20547],{"class":3402,"line":20546},140,[2915,20548,3506],{"emptyLinePlaceholder":3505},[2915,20550,20552,20554,20556,20559],{"class":3402,"line":20551},141,[2915,20553,7916],{"class":3406},[2915,20555,8127],{"class":3410},[2915,20557,20558],{"class":3414}," '5,$p'",[2915,20560,7698],{"class":3414},[2915,20562,20564],{"class":3402,"line":20563},142,[2915,20565,3506],{"emptyLinePlaceholder":3505},[2915,20567,20569],{"class":3402,"line":20568},143,[2915,20570,20571],{"class":3511},"# Script nach N Zeilen beenden (wie head -5)\n",[2915,20573,20575],{"class":3402,"line":20574},144,[2915,20576,3506],{"emptyLinePlaceholder":3505},[2915,20578,20580,20582,20585],{"class":3402,"line":20579},145,[2915,20581,7916],{"class":3406},[2915,20583,20584],{"class":3414}," '5q'",[2915,20586,7698],{"class":3414},[2915,20588,20590],{"class":3402,"line":20589},146,[2915,20591,3506],{"emptyLinePlaceholder":3505},[2915,20593,20595],{"class":3402,"line":20594},147,[2915,20596,20597],{"class":3511},"# Jede 2. Zeile löschen (gerade Zeilennummern)\n",[2915,20599,20601],{"class":3402,"line":20600},148,[2915,20602,3506],{"emptyLinePlaceholder":3505},[2915,20604,20606,20608,20611],{"class":3402,"line":20605},149,[2915,20607,7916],{"class":3406},[2915,20609,20610],{"class":3414}," '0~2d'",[2915,20612,7698],{"class":3414},[2915,20614,20616],{"class":3402,"line":20615},150,[2915,20617,3506],{"emptyLinePlaceholder":3505},[2915,20619,20621],{"class":3402,"line":20620},151,[2915,20622,20623],{"class":3511},"# Jede 2. Zeile löschen (ungerade Zeilennummern)\n",[2915,20625,20627],{"class":3402,"line":20626},152,[2915,20628,3506],{"emptyLinePlaceholder":3505},[2915,20630,20632,20634,20637],{"class":3402,"line":20631},153,[2915,20633,7916],{"class":3406},[2915,20635,20636],{"class":3414}," '1~2d'",[2915,20638,7698],{"class":3414},[2915,20640,20642],{"class":3402,"line":20641},154,[2915,20643,3506],{"emptyLinePlaceholder":3505},[2915,20645,20647],{"class":3402,"line":20646},155,[2915,20648,20649],{"class":3511},"# ─── Rückreferenzen ─────────────────────────────────────────\n",[2915,20651,20653],{"class":3402,"line":20652},156,[2915,20654,3506],{"emptyLinePlaceholder":3505},[2915,20656,20658],{"class":3402,"line":20657},157,[2915,20659,20660],{"class":3511},"# Wort in Anführungszeichen einschließen (BRE)\n",[2915,20662,20664],{"class":3402,"line":20663},158,[2915,20665,3506],{"emptyLinePlaceholder":3505},[2915,20667,20669,20671,20674],{"class":3402,"line":20668},159,[2915,20670,7916],{"class":3406},[2915,20672,20673],{"class":3414}," 's\u002F(Hallo)\u002F\"1\"\u002F'",[2915,20675,7698],{"class":3414},[2915,20677,20679],{"class":3402,"line":20678},160,[2915,20680,3506],{"emptyLinePlaceholder":3505},[2915,20682,20684],{"class":3402,"line":20683},161,[2915,20685,20686],{"class":3511},"# Dasselbe mit ERE (-E)\n",[2915,20688,20690],{"class":3402,"line":20689},162,[2915,20691,3506],{"emptyLinePlaceholder":3505},[2915,20693,20695,20697,20699,20701],{"class":3402,"line":20694},163,[2915,20696,7916],{"class":3406},[2915,20698,16541],{"class":3410},[2915,20700,20673],{"class":3414},[2915,20702,7698],{"class":3414},[2915,20704,20706],{"class":3402,"line":20705},164,[2915,20707,3506],{"emptyLinePlaceholder":3505},[2915,20709,20711],{"class":3402,"line":20710},165,[2915,20712,20713],{"class":3511},"# Datum von YYYY-MM-DD zu DD.MM.YYYY umformatieren\n",[2915,20715,20717],{"class":3402,"line":20716},166,[2915,20718,3506],{"emptyLinePlaceholder":3505},[2915,20720,20722,20724,20726,20729],{"class":3402,"line":20721},167,[2915,20723,7916],{"class":3406},[2915,20725,16541],{"class":3410},[2915,20727,20728],{"class":3414}," 's\u002F([0-9]{4})-([0-9]{2})-([0-9]{2})\u002F3.2.1\u002F'",[2915,20730,7698],{"class":3414},[2915,20732,20734],{"class":3402,"line":20733},168,[2915,20735,3506],{"emptyLinePlaceholder":3505},[2915,20737,20739],{"class":3402,"line":20738},169,[2915,20740,20741],{"class":3511},"# Vornamen und Nachnamen tauschen (\"Muster, Hans\" → \"Hans Muster\")\n",[2915,20743,20745],{"class":3402,"line":20744},170,[2915,20746,3506],{"emptyLinePlaceholder":3505},[2915,20748,20750,20752,20754,20757],{"class":3402,"line":20749},171,[2915,20751,7916],{"class":3406},[2915,20753,16541],{"class":3410},[2915,20755,20756],{"class":3414}," 's\u002F([A-Za-z] ), ([A-Za-z] )\u002F2 1\u002F'",[2915,20758,20759],{"class":3414}," namen.txt\n",[2915,20761,20763],{"class":3402,"line":20762},172,[2915,20764,3506],{"emptyLinePlaceholder":3505},[2915,20766,20768],{"class":3402,"line":20767},173,[2915,20769,20770],{"class":3511},"# ─── Zeichenersatz (y-Befehl) ───────────────────────────────\n",[2915,20772,20774],{"class":3402,"line":20773},174,[2915,20775,3506],{"emptyLinePlaceholder":3505},[2915,20777,20779],{"class":3402,"line":20778},175,[2915,20780,20781],{"class":3511},"# Kleinbuchstaben in Großbuchstaben\n",[2915,20783,20785],{"class":3402,"line":20784},176,[2915,20786,3506],{"emptyLinePlaceholder":3505},[2915,20788,20790,20792,20795],{"class":3402,"line":20789},177,[2915,20791,7916],{"class":3406},[2915,20793,20794],{"class":3414}," 'y\u002Fabcdefghijklmnopqrstuvwxyz\u002FABCDEFGHIJKLMNOPQRSTUVWXYZ\u002F'",[2915,20796,7698],{"class":3414},[2915,20798,20800],{"class":3402,"line":20799},178,[2915,20801,3506],{"emptyLinePlaceholder":3505},[2915,20803,20805],{"class":3402,"line":20804},179,[2915,20806,20807],{"class":3511},"# Umlaute vereinfachen\n",[2915,20809,20811],{"class":3402,"line":20810},180,[2915,20812,3506],{"emptyLinePlaceholder":3505},[2915,20814,20816,20818,20821],{"class":3402,"line":20815},181,[2915,20817,7916],{"class":3406},[2915,20819,20820],{"class":3414}," 'y\u002FäöüÄÖÜ\u002FaouAOU\u002F'",[2915,20822,7698],{"class":3414},[2915,20824,20826],{"class":3402,"line":20825},182,[2915,20827,3506],{"emptyLinePlaceholder":3505},[2915,20829,20831],{"class":3402,"line":20830},183,[2915,20832,20833],{"class":3511},"# ─── Mehrzeilige Operationen (N-Befehl) ─────────────────────\n",[2915,20835,20837],{"class":3402,"line":20836},184,[2915,20838,3506],{"emptyLinePlaceholder":3505},[2915,20840,20842],{"class":3402,"line":20841},185,[2915,20843,20844],{"class":3511},"# Zeilenumbruch zwischen zusammengehörigen Zeilen entfernen\n",[2915,20846,20848],{"class":3402,"line":20847},186,[2915,20849,3506],{"emptyLinePlaceholder":3505},[2915,20851,20853,20855,20858],{"class":3402,"line":20852},187,[2915,20854,7916],{"class":3406},[2915,20856,20857],{"class":3414}," 'N; s\u002Fn\u002F \u002F'",[2915,20859,7698],{"class":3414},[2915,20861,20863],{"class":3402,"line":20862},188,[2915,20864,3506],{"emptyLinePlaceholder":3505},[2915,20866,20868],{"class":3402,"line":20867},189,[2915,20869,20870],{"class":3511},"# ─── Praktische Anwendungen ──────────────────────────────────\n",[2915,20872,20874],{"class":3402,"line":20873},190,[2915,20875,3506],{"emptyLinePlaceholder":3505},[2915,20877,20879],{"class":3402,"line":20878},191,[2915,20880,20881],{"class":3511},"# HTML-Tags entfernen\n",[2915,20883,20885],{"class":3402,"line":20884},192,[2915,20886,3506],{"emptyLinePlaceholder":3505},[2915,20888,20890,20892,20895],{"class":3402,"line":20889},193,[2915,20891,7916],{"class":3406},[2915,20893,20894],{"class":3414}," 's\u002F\u003C[^>]*>\u002F\u002Fg'",[2915,20896,20897],{"class":3414}," seite.html\n",[2915,20899,20901],{"class":3402,"line":20900},194,[2915,20902,3506],{"emptyLinePlaceholder":3505},[2915,20904,20906],{"class":3402,"line":20905},195,[2915,20907,20908],{"class":3511},"# DOS-Zeilenenden (rn) in Unix-Zeilenenden (n) umwandeln\n",[2915,20910,20912],{"class":3402,"line":20911},196,[2915,20913,3506],{"emptyLinePlaceholder":3505},[2915,20915,20917,20919,20922],{"class":3402,"line":20916},197,[2915,20918,7916],{"class":3406},[2915,20920,20921],{"class":3414}," 's\u002Fr\u002F\u002F'",[2915,20923,7698],{"class":3414},[2915,20925,20927],{"class":3402,"line":20926},198,[2915,20928,3506],{"emptyLinePlaceholder":3505},[2915,20930,20932],{"class":3402,"line":20931},199,[2915,20933,20934],{"class":3511},"# Alle IP-Adressen anonymisieren\n",[2915,20936,20938],{"class":3402,"line":20937},200,[2915,20939,3506],{"emptyLinePlaceholder":3505},[2915,20941,20943,20945,20947,20950],{"class":3402,"line":20942},201,[2915,20944,7916],{"class":3406},[2915,20946,16541],{"class":3410},[2915,20948,20949],{"class":3414}," 's\u002F[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}\u002FX.X.X.X\u002Fg'",[2915,20951,16599],{"class":3414},[2915,20953,20955],{"class":3402,"line":20954},202,[2915,20956,3506],{"emptyLinePlaceholder":3505},[2915,20958,20960],{"class":3402,"line":20959},203,[2915,20961,20962],{"class":3511},"# Passwort in Konfigurationsdatei ersetzen (sicher mit Backup)\n",[2915,20964,20966],{"class":3402,"line":20965},204,[2915,20967,3506],{"emptyLinePlaceholder":3505},[2915,20969,20971,20973,20975,20978],{"class":3402,"line":20970},205,[2915,20972,7916],{"class":3406},[2915,20974,19804],{"class":3410},[2915,20976,20977],{"class":3414}," \"s\u002F^password=.*\u002Fpassword=NEU\u002F\"",[2915,20979,20980],{"class":3414}," \u002Fetc\u002Fapp\u002Fconfig.ini\n",[2915,20982,20984],{"class":3402,"line":20983},206,[2915,20985,3506],{"emptyLinePlaceholder":3505},[2915,20987,20989],{"class":3402,"line":20988},207,[2915,20990,20991],{"class":3511},"# Leerzeilen auf maximal eine reduzieren\n",[2915,20993,20995],{"class":3402,"line":20994},208,[2915,20996,3506],{"emptyLinePlaceholder":3505},[2915,20998,21000,21002,21005],{"class":3402,"line":20999},209,[2915,21001,7916],{"class":3406},[2915,21003,21004],{"class":3414}," '\u002F^$\u002F{ N; \u002F^n$\u002Fd }'",[2915,21006,7698],{"class":3414},[2915,21008,21010],{"class":3402,"line":21009},210,[2915,21011,3506],{"emptyLinePlaceholder":3505},[2915,21013,21015],{"class":3402,"line":21014},211,[2915,21016,21017],{"class":3511},"# oder einfacher (GNU sed):\n",[2915,21019,21021],{"class":3402,"line":21020},212,[2915,21022,3506],{"emptyLinePlaceholder":3505},[2915,21024,21026,21028,21030,21033],{"class":3402,"line":21025},213,[2915,21027,7916],{"class":3406},[2915,21029,16541],{"class":3410},[2915,21031,21032],{"class":3414}," '\u002F^$\u002F{ \u002F^n $\u002Fd }'",[2915,21034,7698],{"class":3414},[54,21036,11749],{"id":21037},"ausgabe-10",[11,21039,21041],{"id":21040},"sed-srootrootg-etcpasswd-head-2","sed 's\u002Froot\u002FROOT\u002Fg' \u002Fetc\u002Fpasswd | head -2",[16,21043,21044],{},"ROOT❌0:0:ROOT:\u002FROOT:\u002Fbin\u002Fbash",[16,21046,15425],{},[11,21048,21050],{"id":21049},"sed-n-13p-etcpasswd","sed -n '1,3p' \u002Fetc\u002Fpasswd",[16,21052,15422],{},[16,21054,15425],{},[16,21056,15428],{},[11,21058,21060,21061,21063,21064,21066,21067,21069],{"id":21059},"echo-2026-05-06-sed-e-s0-94-0-92-0-92321","echo \"2026-05-06\" | sed -E 's\u002F(",[2915,21062,16816],{},"{4})-(",[2915,21065,16816],{},"{2})-(",[2915,21068,16816],{},"{2})\u002F3.2.1\u002F'",[16,21071,21072],{},"06.05.2026",[11,21074,21076],{"id":21075},"sed-dateitxt-sed-n-snt","sed '=' datei.txt | sed 'N; s\u002Fn\u002Ft\u002F'",[16,21078,21079],{},"1 Zeile eins",[16,21081,21082],{},"2 Zeile zwei",[16,21084,21085],{},"3 Zeile drei",[11,21087,21089],{"id":21088},"sed-ibak-sdebuginfog-applog","sed -i.bak 's\u002FDEBUG\u002FINFO\u002Fg' app.log",[11,21091,21093],{"id":21092},"applog-wird-verändert-applogbak-enthält-das-original","(app.log wird verändert, app.log.bak enthält das Original)",[16,21095,21096,21098],{},[26,21097,12391],{}," Vor jedem sed -i (in-place) immer mit sed -n ... p oder ohne -i testen, damit keine Daten versehentlich zerstört werden!",[11,21100,12214],{"id":12214},[16,21102,21103,21105],{},[26,21104,11461],{}," Listet den Inhalt von Verzeichnissen auf. Eines der meistgenutzten Linux-Kommandos.",[16,21107,21108,4850,21110],{},[26,21109,6691],{},[26,21111,21112,21113,4850,21115],{},"ls ",[2915,21114,11472],{},[2915,21116,21117],{},"PFAD...",[54,21119,11532],{"id":21120},"flags-9",[645,21122,21123,21139],{},[648,21124,21125],{},[651,21126,21127,21131,21135],{},[654,21128,21129],{},[26,21130,11543],{},[654,21132,21133],{},[26,21134,11548],{},[654,21136,21137],{},[26,21138,5483],{},[670,21140,21141,21151,21162,21173,21183,21192,21203,21213,21222,21232,21242,21253,21263,21272,21281,21291,21301,21311],{},[651,21142,21143,21145,21148],{},[675,21144,7757],{},[675,21146,21147],{},"--format=long",[675,21149,21150],{},"Lange Listenansicht mit Rechten, Eigentümer, Größe, Datum",[651,21152,21153,21156,21159],{},[675,21154,21155],{},"-a",[675,21157,21158],{},"--all",[675,21160,21161],{},"Alle Dateien anzeigen, auch versteckte (.-Dateien)",[651,21163,21164,21167,21170],{},[675,21165,21166],{},"-A",[675,21168,21169],{},"--almost-all",[675,21171,21172],{},"Wie -a, aber ohne . und ..",[651,21174,21175,21177,21180],{},[675,21176,12572],{},[675,21178,21179],{},"--human-readable",[675,21181,21182],{},"Größen menschenlesbar (KB, MB, GB) – nur mit -l",[651,21184,21185,21187,21189],{},[675,21186,12543],{},[675,21188,16016],{},[675,21190,21191],{},"Rekursiv alle Unterverzeichnisse anzeigen",[651,21193,21194,21197,21200],{},[675,21195,21196],{},"-t",[675,21198,21199],{},"–",[675,21201,21202],{},"Nach Änderungszeit sortieren (neueste zuerst)",[651,21204,21205,21207,21210],{},[675,21206,4853],{},[675,21208,21209],{},"--reverse",[675,21211,21212],{},"Sortierung umkehren",[651,21214,21215,21217,21219],{},[675,21216,12020],{},[675,21218,21199],{},[675,21220,21221],{},"Nach Dateigröße sortieren (größte zuerst)",[651,21223,21224,21227,21229],{},[675,21225,21226],{},"-X",[675,21228,21199],{},[675,21230,21231],{},"Nach Dateiendung sortieren",[651,21233,21234,21236,21239],{},[675,21235,7726],{},[675,21237,21238],{},"--inode",[675,21240,21241],{},"Inode-Nummer ausgeben",[651,21243,21244,21247,21250],{},[675,21245,21246],{},"-d",[675,21248,21249],{},"--directory",[675,21251,21252],{},"Verzeichnis selbst anzeigen, nicht seinen Inhalt",[651,21254,21255,21258,21260],{},[675,21256,21257],{},"-1",[675,21259,21199],{},[675,21261,21262],{},"Eine Datei pro Zeile ausgeben",[651,21264,21265,21267,21269],{},[675,21266,14657],{},[675,21268,21199],{},[675,21270,21271],{},"Kommagetrennte Liste ausgeben",[651,21273,21274,21276,21278],{},[675,21275,16168],{},[675,21277,16171],{},[675,21279,21280],{},"Farbige Ausgabe (Dateitypen farbig)",[651,21282,21283,21285,21288],{},[675,21284,7789],{},[675,21286,21287],{},"--classify",[675,21289,21290],{},"Typkennzeichen anhängen (\u002F Verz., * ausführbar, @ Link, `",[651,21292,21293,21295,21298],{},[675,21294,7742],{},[675,21296,21297],{},"--numeric-uid-gid",[675,21299,21300],{},"Numerische UIDs\u002FGIDs statt Namen",[651,21302,21303,21305,21308],{},[675,21304,11581],{},[675,21306,21307],{},"--no-group",[675,21309,21310],{},"Gruppenname in Langansicht weglassen",[651,21312,21313,21315,21317],{},[675,21314,11612],{},[675,21316,21199],{},[675,21318,21319],{},"SELinux-Kontext anzeigen",[54,21321,21323],{"id":21322},"erklärung-der-langansicht-ls-l","Erklärung der Langansicht (ls -l)",[16,21325,21326,21327,21329,21330,21332,21333,21335,21336,21338,21339,21341,21342,21344,21345,21347,21348,21350],{},"drwxr-xr-x 2 matta matta 4096 Apr 29 10:00 dokumente",[5885,21328],{},"\n| | | | | | |",[5885,21331],{},"\n| | | | | | +-- Dateiname",[5885,21334],{},"\n| | | | | +-- Datum der letzten Änderung",[5885,21337],{},"\n| | | | +-- Dateigröße (Bytes)",[5885,21340],{},"\n| | | +-- Gruppe",[5885,21343],{},"\n| | +-- Eigentümer",[5885,21346],{},"\n| +-- Anzahl der Hard Links",[5885,21349],{},"\n+-- Typ + Berechtigungen:",[3392,21352,21354],{"className":3394,"code":21353,"language":3396,"meta":225,"style":225},"d = Verzeichnis\n- = Reguläre Datei\n",[3398,21355,21356,21364],{"__ignoreMap":225},[2915,21357,21358,21360,21362],{"class":3402,"line":3403},[2915,21359,11221],{"class":3406},[2915,21361,13922],{"class":3414},[2915,21363,14120],{"class":3414},[2915,21365,21366,21368,21370,21373],{"class":3402,"line":1117},[2915,21367,3523],{"class":3406},[2915,21369,13922],{"class":3414},[2915,21371,21372],{"class":3414}," Reguläre",[2915,21374,21375],{"class":3414}," Datei\n",[20,21377,21378],{},[23,21379,21380],{},"= Reguläre Datei",[3392,21382,21384],{"className":3394,"code":21383,"language":3396,"meta":225,"style":225},"l = Symbolischer Link\nc = Zeichengerät\nb = Blockgerät\np = Named Pipe\ns = Socket\n\n",[3398,21385,21386,21398,21407,21416,21428],{"__ignoreMap":225},[2915,21387,21388,21390,21392,21395],{"class":3402,"line":3403},[2915,21389,11263],{"class":3406},[2915,21391,13922],{"class":3414},[2915,21393,21394],{"class":3414}," Symbolischer",[2915,21396,21397],{"class":3414}," Link\n",[2915,21399,21400,21402,21404],{"class":3402,"line":1117},[2915,21401,11242],{"class":3406},[2915,21403,13922],{"class":3414},[2915,21405,21406],{"class":3414}," Zeichengerät\n",[2915,21408,21409,21411,21413],{"class":3402,"line":1125},[2915,21410,5053],{"class":3406},[2915,21412,13922],{"class":3414},[2915,21414,21415],{"class":3414}," Blockgerät\n",[2915,21417,21418,21420,21422,21425],{"class":3402,"line":3515},[2915,21419,16],{"class":3406},[2915,21421,13922],{"class":3414},[2915,21423,21424],{"class":3414}," Named",[2915,21426,21427],{"class":3414}," Pipe\n",[2915,21429,21430,21432,21434],{"class":3402,"line":3520},[2915,21431,11274],{"class":3406},[2915,21433,13922],{"class":3414},[2915,21435,21436],{"class":3414}," Socket\n",[54,21438,21440],{"id":21439},"dateitypen-durch-farben-bei-colorauto","Dateitypen durch Farben (bei --color=auto)",[645,21442,21443,21456],{},[648,21444,21445],{},[651,21446,21447,21452],{},[654,21448,21449],{},[26,21450,21451],{},"Farbe",[654,21453,21454],{},[26,21455,5473],{},[670,21457,21458,21465,21472,21480,21488,21496,21504,21512],{},[651,21459,21460,21463],{},[675,21461,21462],{},"Keine\u002FWeiß",[675,21464,11208],{},[651,21466,21467,21470],{},[675,21468,21469],{},"Blau",[675,21471,8377],{},[651,21473,21474,21477],{},[675,21475,21476],{},"Cyan",[675,21478,21479],{},"Symbolischer Link",[651,21481,21482,21485],{},[675,21483,21484],{},"Grün",[675,21486,21487],{},"Ausführbare Datei",[651,21489,21490,21493],{},[675,21491,21492],{},"Rot",[675,21494,21495],{},"Archivdatei",[651,21497,21498,21501],{},[675,21499,21500],{},"Magenta",[675,21502,21503],{},"Bild\u002FMediendatei",[651,21505,21506,21509],{},[675,21507,21508],{},"Gelb\u002FBlinkend",[675,21510,21511],{},"Gerätedatei",[651,21513,21514,21517],{},[675,21515,21516],{},"Rot auf Schwarz",[675,21518,21519],{},"Defekter Symlink",[54,21521,8676],{"id":21522},"beispiele-11",[11,21524,21526],{"id":21525},"einfache-liste","Einfache Liste",[3392,21528,21530],{"className":3394,"code":21529,"language":3396,"meta":225,"style":225},"ls\n\n# Lange Ansicht\n\nls -l\n\n# Alle Dateien inkl. versteckte + lange Ansicht + lesbare Größen\n\nls -lah\n\n# Alle Dateien, nach Zeit sortiert (neueste zuerst)\n\nls -laht\n\n# Alle Dateien, nach Größe sortiert (größte zuerst)\n\nls -lahS\n\n# Alle Dateien, nach Zeit sortiert (älteste zuerst)\n\nls -latr\n\n# Rekursiv alle Inhalte anzeigen\n\nls -lR \u002Fetc\u002F | head -30\n\n# Inode-Nummern anzeigen (nützlich für Hard Links)\n\nls -li\n\n# Verzeichnis selbst anzeigen (nicht seinen Inhalt)\n\nls -ld \u002Fetc\u002F\n\n# Nur Verzeichnisse im aktuellen Verzeichnis\n\nls -d *\u002F\n\n# Typkennzeichen anzeigen\n\nls -F\n\n# Numerische UIDs\u002FGIDs\n\nls -ln\n\n# Nur Verzeichnisse (grep auf d am Anfang)\n\nls -la | grep \"^d\"\n\n# Nur Symlinks\n\nls -la | grep \"^l\"\n\n# Alle ausführbaren Dateien\n\nls -la | grep \"^-.*x\"\n\n",[3398,21531,21532,21537,21541,21546,21550,21556,21560,21565,21569,21576,21580,21585,21589,21596,21600,21605,21609,21616,21620,21625,21629,21636,21640,21645,21649,21666,21670,21675,21679,21686,21690,21695,21699,21707,21711,21716,21720,21731,21735,21740,21744,21751,21755,21760,21764,21771,21775,21780,21784,21798,21802,21807,21811,21824,21828,21833,21837],{"__ignoreMap":225},[2915,21533,21534],{"class":3402,"line":3403},[2915,21535,21536],{"class":3406},"ls\n",[2915,21538,21539],{"class":3402,"line":1117},[2915,21540,3506],{"emptyLinePlaceholder":3505},[2915,21542,21543],{"class":3402,"line":1125},[2915,21544,21545],{"class":3511},"# Lange Ansicht\n",[2915,21547,21548],{"class":3402,"line":3515},[2915,21549,3506],{"emptyLinePlaceholder":3505},[2915,21551,21552,21554],{"class":3402,"line":3520},[2915,21553,12214],{"class":3406},[2915,21555,14853],{"class":3410},[2915,21557,21558],{"class":3402,"line":5070},[2915,21559,3506],{"emptyLinePlaceholder":3505},[2915,21561,21562],{"class":3402,"line":5075},[2915,21563,21564],{"class":3511},"# Alle Dateien inkl. versteckte + lange Ansicht + lesbare Größen\n",[2915,21566,21567],{"class":3402,"line":5093},[2915,21568,3506],{"emptyLinePlaceholder":3505},[2915,21570,21571,21573],{"class":3402,"line":5098},[2915,21572,12214],{"class":3406},[2915,21574,21575],{"class":3410}," -lah\n",[2915,21577,21578],{"class":3402,"line":5207},[2915,21579,3506],{"emptyLinePlaceholder":3505},[2915,21581,21582],{"class":3402,"line":5212},[2915,21583,21584],{"class":3511},"# Alle Dateien, nach Zeit sortiert (neueste zuerst)\n",[2915,21586,21587],{"class":3402,"line":5218},[2915,21588,3506],{"emptyLinePlaceholder":3505},[2915,21590,21591,21593],{"class":3402,"line":5223},[2915,21592,12214],{"class":3406},[2915,21594,21595],{"class":3410}," -laht\n",[2915,21597,21598],{"class":3402,"line":5229},[2915,21599,3506],{"emptyLinePlaceholder":3505},[2915,21601,21602],{"class":3402,"line":5253},[2915,21603,21604],{"class":3511},"# Alle Dateien, nach Größe sortiert (größte zuerst)\n",[2915,21606,21607],{"class":3402,"line":5266},[2915,21608,3506],{"emptyLinePlaceholder":3505},[2915,21610,21611,21613],{"class":3402,"line":5721},[2915,21612,12214],{"class":3406},[2915,21614,21615],{"class":3410}," -lahS\n",[2915,21617,21618],{"class":3402,"line":9401},[2915,21619,3506],{"emptyLinePlaceholder":3505},[2915,21621,21622],{"class":3402,"line":9406},[2915,21623,21624],{"class":3511},"# Alle Dateien, nach Zeit sortiert (älteste zuerst)\n",[2915,21626,21627],{"class":3402,"line":9411},[2915,21628,3506],{"emptyLinePlaceholder":3505},[2915,21630,21631,21633],{"class":3402,"line":9416},[2915,21632,12214],{"class":3406},[2915,21634,21635],{"class":3410}," -latr\n",[2915,21637,21638],{"class":3402,"line":9428},[2915,21639,3506],{"emptyLinePlaceholder":3505},[2915,21641,21642],{"class":3402,"line":9433},[2915,21643,21644],{"class":3511},"# Rekursiv alle Inhalte anzeigen\n",[2915,21646,21647],{"class":3402,"line":9454},[2915,21648,3506],{"emptyLinePlaceholder":3505},[2915,21650,21651,21653,21656,21659,21661,21663],{"class":3402,"line":9459},[2915,21652,12214],{"class":3406},[2915,21654,21655],{"class":3410}," -lR",[2915,21657,21658],{"class":3414}," \u002Fetc\u002F",[2915,21660,7679],{"class":3533},[2915,21662,9197],{"class":3406},[2915,21664,21665],{"class":3410}," -30\n",[2915,21667,21668],{"class":3402,"line":9464},[2915,21669,3506],{"emptyLinePlaceholder":3505},[2915,21671,21672],{"class":3402,"line":9469},[2915,21673,21674],{"class":3511},"# Inode-Nummern anzeigen (nützlich für Hard Links)\n",[2915,21676,21677],{"class":3402,"line":9479},[2915,21678,3506],{"emptyLinePlaceholder":3505},[2915,21680,21681,21683],{"class":3402,"line":9484},[2915,21682,12214],{"class":3406},[2915,21684,21685],{"class":3410}," -li\n",[2915,21687,21688],{"class":3402,"line":9489},[2915,21689,3506],{"emptyLinePlaceholder":3505},[2915,21691,21692],{"class":3402,"line":9494},[2915,21693,21694],{"class":3511},"# Verzeichnis selbst anzeigen (nicht seinen Inhalt)\n",[2915,21696,21697],{"class":3402,"line":9504},[2915,21698,3506],{"emptyLinePlaceholder":3505},[2915,21700,21701,21703,21705],{"class":3402,"line":9509},[2915,21702,12214],{"class":3406},[2915,21704,14040],{"class":3410},[2915,21706,16495],{"class":3414},[2915,21708,21709],{"class":3402,"line":9514},[2915,21710,3506],{"emptyLinePlaceholder":3505},[2915,21712,21713],{"class":3402,"line":9519},[2915,21714,21715],{"class":3511},"# Nur Verzeichnisse im aktuellen Verzeichnis\n",[2915,21717,21718],{"class":3402,"line":9524},[2915,21719,3506],{"emptyLinePlaceholder":3505},[2915,21721,21722,21724,21726,21728],{"class":3402,"line":9529},[2915,21723,12214],{"class":3406},[2915,21725,6798],{"class":3410},[2915,21727,5828],{"class":3410},[2915,21729,21730],{"class":3414},"\u002F\n",[2915,21732,21733],{"class":3402,"line":9534},[2915,21734,3506],{"emptyLinePlaceholder":3505},[2915,21736,21737],{"class":3402,"line":9539},[2915,21738,21739],{"class":3511},"# Typkennzeichen anzeigen\n",[2915,21741,21742],{"class":3402,"line":9552},[2915,21743,3506],{"emptyLinePlaceholder":3505},[2915,21745,21746,21748],{"class":3402,"line":9557},[2915,21747,12214],{"class":3406},[2915,21749,21750],{"class":3410}," -F\n",[2915,21752,21753],{"class":3402,"line":9570},[2915,21754,3506],{"emptyLinePlaceholder":3505},[2915,21756,21757],{"class":3402,"line":9575},[2915,21758,21759],{"class":3511},"# Numerische UIDs\u002FGIDs\n",[2915,21761,21762],{"class":3402,"line":9588},[2915,21763,3506],{"emptyLinePlaceholder":3505},[2915,21765,21766,21768],{"class":3402,"line":9593},[2915,21767,12214],{"class":3406},[2915,21769,21770],{"class":3410}," -ln\n",[2915,21772,21773],{"class":3402,"line":9598},[2915,21774,3506],{"emptyLinePlaceholder":3505},[2915,21776,21777],{"class":3402,"line":9603},[2915,21778,21779],{"class":3511},"# Nur Verzeichnisse (grep auf d am Anfang)\n",[2915,21781,21782],{"class":3402,"line":9619},[2915,21783,3506],{"emptyLinePlaceholder":3505},[2915,21785,21786,21788,21791,21793,21795],{"class":3402,"line":9624},[2915,21787,12214],{"class":3406},[2915,21789,21790],{"class":3410}," -la",[2915,21792,7679],{"class":3533},[2915,21794,7682],{"class":3406},[2915,21796,21797],{"class":3414}," \"^d\"\n",[2915,21799,21800],{"class":3402,"line":9629},[2915,21801,3506],{"emptyLinePlaceholder":3505},[2915,21803,21804],{"class":3402,"line":9634},[2915,21805,21806],{"class":3511},"# Nur Symlinks\n",[2915,21808,21809],{"class":3402,"line":9642},[2915,21810,3506],{"emptyLinePlaceholder":3505},[2915,21812,21813,21815,21817,21819,21821],{"class":3402,"line":9647},[2915,21814,12214],{"class":3406},[2915,21816,21790],{"class":3410},[2915,21818,7679],{"class":3533},[2915,21820,7682],{"class":3406},[2915,21822,21823],{"class":3414}," \"^l\"\n",[2915,21825,21826],{"class":3402,"line":9656},[2915,21827,3506],{"emptyLinePlaceholder":3505},[2915,21829,21830],{"class":3402,"line":9661},[2915,21831,21832],{"class":3511},"# Alle ausführbaren Dateien\n",[2915,21834,21835],{"class":3402,"line":9666},[2915,21836,3506],{"emptyLinePlaceholder":3505},[2915,21838,21839,21841,21843,21845,21847],{"class":3402,"line":9671},[2915,21840,12214],{"class":3406},[2915,21842,21790],{"class":3410},[2915,21844,7679],{"class":3533},[2915,21846,7682],{"class":3406},[2915,21848,21849],{"class":3414}," \"^-.*x\"\n",[54,21851,11749],{"id":21852},"ausgabe-11",[11,21854,21856],{"id":21855},"ls-lah","ls -lah",[16,21858,21859],{},"gesamt 48K",[16,21861,21862],{},"drwxr-xr-x 5 matta matta 4,0K Apr 29 10:00 .",[16,21864,21865],{},"drwxr-xr-x 18 matta matta 4,0K Apr 28 09:00 ..",[16,21867,21868],{},"-rw-r--r-- 1 matta matta 220 Apr 27 08:00 .bash_logout",[16,21870,21871],{},"-rw-r--r-- 1 matta matta 3,5K Apr 27 08:00 .bashrc",[16,21873,21874],{},"drwxr-xr-x 2 matta matta 4,0K Apr 29 09:30 dokumente",[16,21876,21877],{},"-rw-r--r-- 1 matta matta 2,1K Apr 29 09:45 notizen.txt",[16,21879,21880],{},"-rwxr-xr-x 1 matta matta 1,2K Apr 29 10:00 skript.sh",[16,21882,21883],{},"lrwxrwxrwx 1 matta matta 11 Apr 29 10:00 link -> skript.sh",[11,21885,21887],{"id":21886},"ls-li-gleiche-inode-hard-links","ls -li (gleiche Inode = Hard Links)",[16,21889,21890],{},"524292 drwxr-xr-x 2 matta matta 4096 Apr 29 09:30 dokumente",[16,21892,21893],{},"524293 -rw-r--r-- 2 matta matta 1234 Apr 29 09:45 datei.txt",[16,21895,21896],{},"524293 -rw-r--r-- 2 matta matta 1234 Apr 29 09:45 hardlink.txt",[11,21898,21900],{"id":21899},"gleiche-inode-hard-links","^^^^^^^^^^ Gleiche Inode = Hard Links!",[11,21902,10777],{"id":10777},[16,21904,21905,21907,21908,21911,21912,6584],{},[26,21906,11461],{}," Gibt den ",[26,21909,21910],{},"absoluten Pfad"," des aktuellen Arbeitsverzeichnisses aus. \"pwd\" steht für ",[257,21913,21914],{},"Print Working Directory",[16,21916,21917,4850,21919],{},[26,21918,6691],{},[26,21920,21921,21922],{},"pwd ",[2915,21923,11472],{},[54,21925,11532],{"id":21926},"flags-10",[645,21928,21929,21941],{},[648,21930,21931],{},[651,21932,21933,21937],{},[654,21934,21935],{},[26,21936,11543],{},[654,21938,21939],{},[26,21940,5483],{},[670,21942,21943,21950],{},[651,21944,21945,21947],{},[675,21946,12596],{},[675,21948,21949],{},"Logischer Pfad (Standard): zeigt den Pfad wie er in der Shell geführt wird, Symlinks werden nicht aufgelöst",[651,21951,21952,21954],{},[675,21953,12604],{},[675,21955,21956],{},"Physischer Pfad: löst alle Symlinks auf und zeigt den echten Pfad im Dateisystem",[16,21958,21959],{},[26,21960,21961],{},"Unterschied -L vs. -P",[16,21963,21964,21965,21968,21969,21972],{},"Wenn ",[26,21966,21967],{},"\u002Fhome\u002Fmatta"," ein symbolischer Link auf ",[26,21970,21971],{},"\u002Fdata\u002Fusers\u002Fmatta"," ist:",[3392,21974,21976],{"className":3394,"code":21975,"language":3396,"meta":225,"style":225},"cd \u002Fhome\u002Fmatta\n\n",[3398,21977,21978],{"__ignoreMap":225},[2915,21979,21980,21983],{"class":3402,"line":3403},[2915,21981,21982],{"class":3410},"cd",[2915,21984,21985],{"class":3414}," \u002Fhome\u002Fmatta\n",[16,21987,21988],{},"pwd # oder pwd -L",[11,21990,21992],{"id":21991},"homematta-logischer-pfad-symlink-selbst","\u002Fhome\u002Fmatta \u003C- logischer Pfad (Symlink selbst)",[3392,21994,21996],{"className":3394,"code":21995,"language":3396,"meta":225,"style":225},"pwd -P\n\n# \u002Fdata\u002Fusers\u002Fmatta \u003C- physischer Pfad (echtes Ziel)\n\n",[3398,21997,21998,22005,22009],{"__ignoreMap":225},[2915,21999,22000,22002],{"class":3402,"line":3403},[2915,22001,10777],{"class":3410},[2915,22003,22004],{"class":3410}," -P\n",[2915,22006,22007],{"class":3402,"line":1117},[2915,22008,3506],{"emptyLinePlaceholder":3505},[2915,22010,22011],{"class":3402,"line":1125},[2915,22012,22013],{"class":3511},"# \u002Fdata\u002Fusers\u002Fmatta \u003C- physischer Pfad (echtes Ziel)\n",[54,22015,8676],{"id":22016},"beispiele-12",[11,22018,22020],{"id":22019},"aktuelles-verzeichnis-ausgeben","Aktuelles Verzeichnis ausgeben",[16,22022,10777],{},[11,22024,22026],{"id":22025},"physischen-pfad-symlinks-aufgelöst","Physischen Pfad (Symlinks aufgelöst)",[3392,22028,22030],{"className":3394,"code":22029,"language":3396,"meta":225,"style":225},"pwd -P\n\n# In Skripten: aktuelles Verzeichnis speichern und später zurückkehren\n\norig=$(pwd)\n\ncd \u002Ftmp\n\necho \"Jetzt in: $(pwd)\"\n\ncd \"$orig\"\n\necho \"Zurück in: $(pwd)\"\n\n# Prüfen ob man sich im richtigen Verzeichnis befindet\n\nif [ \"$(pwd)\" != \"\u002Fvar\u002Fwww\u002Fhtml\" ]; then\n\necho \"Falsches Verzeichnis!\"\n\nexit 1\n\nfi\n\n# In Kombination mit find (absoluter Pfad als Startpunkt)\n\nfind \"$(pwd)\" -name \"*.conf\"\n\n",[3398,22031,22032,22038,22042,22047,22051,22064,22068,22074,22078,22089,22093,22104,22108,22119,22123,22128,22132,22155,22159,22166,22170,22176,22180,22184,22188,22193,22197],{"__ignoreMap":225},[2915,22033,22034,22036],{"class":3402,"line":3403},[2915,22035,10777],{"class":3410},[2915,22037,22004],{"class":3410},[2915,22039,22040],{"class":3402,"line":1117},[2915,22041,3506],{"emptyLinePlaceholder":3505},[2915,22043,22044],{"class":3402,"line":1125},[2915,22045,22046],{"class":3511},"# In Skripten: aktuelles Verzeichnis speichern und später zurückkehren\n",[2915,22048,22049],{"class":3402,"line":3515},[2915,22050,3506],{"emptyLinePlaceholder":3505},[2915,22052,22053,22056,22058,22060,22062],{"class":3402,"line":3520},[2915,22054,22055],{"class":3529},"orig",[2915,22057,5137],{"class":3533},[2915,22059,9001],{"class":3529},[2915,22061,10777],{"class":3410},[2915,22063,5152],{"class":3529},[2915,22065,22066],{"class":3402,"line":5070},[2915,22067,3506],{"emptyLinePlaceholder":3505},[2915,22069,22070,22072],{"class":3402,"line":5075},[2915,22071,21982],{"class":3410},[2915,22073,14286],{"class":3414},[2915,22075,22076],{"class":3402,"line":5093},[2915,22077,3506],{"emptyLinePlaceholder":3505},[2915,22079,22080,22082,22085,22087],{"class":3402,"line":5098},[2915,22081,5059],{"class":3410},[2915,22083,22084],{"class":3414}," \"Jetzt in: $(",[2915,22086,10777],{"class":3410},[2915,22088,10747],{"class":3414},[2915,22090,22091],{"class":3402,"line":5207},[2915,22092,3506],{"emptyLinePlaceholder":3505},[2915,22094,22095,22097,22099,22102],{"class":3402,"line":5212},[2915,22096,21982],{"class":3410},[2915,22098,4968],{"class":3414},[2915,22100,22101],{"class":3529},"$orig",[2915,22103,5204],{"class":3414},[2915,22105,22106],{"class":3402,"line":5218},[2915,22107,3506],{"emptyLinePlaceholder":3505},[2915,22109,22110,22112,22115,22117],{"class":3402,"line":5223},[2915,22111,5059],{"class":3410},[2915,22113,22114],{"class":3414}," \"Zurück in: $(",[2915,22116,10777],{"class":3410},[2915,22118,10747],{"class":3414},[2915,22120,22121],{"class":3402,"line":5229},[2915,22122,3506],{"emptyLinePlaceholder":3505},[2915,22124,22125],{"class":3402,"line":5253},[2915,22126,22127],{"class":3511},"# Prüfen ob man sich im richtigen Verzeichnis befindet\n",[2915,22129,22130],{"class":3402,"line":5266},[2915,22131,3506],{"emptyLinePlaceholder":3505},[2915,22133,22134,22136,22138,22141,22143,22146,22148,22151,22153],{"class":3402,"line":5721},[2915,22135,4951],{"class":3533},[2915,22137,4954],{"class":3529},[2915,22139,22140],{"class":3414},"\"$(",[2915,22142,10777],{"class":3410},[2915,22144,22145],{"class":3414},")\"",[2915,22147,9612],{"class":3533},[2915,22149,22150],{"class":3414}," \"\u002Fvar\u002Fwww\u002Fhtml\"",[2915,22152,4976],{"class":3529},[2915,22154,4979],{"class":3533},[2915,22156,22157],{"class":3402,"line":9401},[2915,22158,3506],{"emptyLinePlaceholder":3505},[2915,22160,22161,22163],{"class":3402,"line":9406},[2915,22162,5059],{"class":3410},[2915,22164,22165],{"class":3414}," \"Falsches Verzeichnis!\"\n",[2915,22167,22168],{"class":3402,"line":9411},[2915,22169,3506],{"emptyLinePlaceholder":3505},[2915,22171,22172,22174],{"class":3402,"line":9416},[2915,22173,9650],{"class":3410},[2915,22175,9653],{"class":3410},[2915,22177,22178],{"class":3402,"line":9428},[2915,22179,3506],{"emptyLinePlaceholder":3505},[2915,22181,22182],{"class":3402,"line":9433},[2915,22183,4997],{"class":3533},[2915,22185,22186],{"class":3402,"line":9454},[2915,22187,3506],{"emptyLinePlaceholder":3505},[2915,22189,22190],{"class":3402,"line":9459},[2915,22191,22192],{"class":3511},"# In Kombination mit find (absoluter Pfad als Startpunkt)\n",[2915,22194,22195],{"class":3402,"line":9464},[2915,22196,3506],{"emptyLinePlaceholder":3505},[2915,22198,22199,22201,22203,22205,22207,22209],{"class":3402,"line":9469},[2915,22200,8210],{"class":3406},[2915,22202,10038],{"class":3414},[2915,22204,10777],{"class":3410},[2915,22206,22145],{"class":3414},[2915,22208,8235],{"class":3410},[2915,22210,17673],{"class":3414},[54,22212,11749],{"id":22213},"ausgabe-12",[11,22215,10777],{"id":22216},"pwd-1",[16,22218,22219],{},"\u002Fhome\u002Fmatta\u002Fprojekte\u002Fwebserver",[11,22221,22223],{"id":22222},"wenn-cwd-ein-symlink-ist","Wenn CWD ein Symlink ist:",[11,22225,22227],{"id":22226},"pwd-l","pwd -L",[16,22229,22230],{},"\u002Fhome\u002Fmatta \u003C- zeigt Symlink-Pfad",[11,22232,22234],{"id":22233},"pwd-p","pwd -P",[16,22236,22237],{},"\u002Fdata\u002Fusers\u002Fmatta \u003C- zeigt echten Pfad",[11,22239,22240],{"id":22240},"sort",[16,22242,22243,22245],{},[26,22244,11461],{}," Sortiert Zeilen eines Textes alphabetisch, numerisch oder nach anderen Kriterien.",[16,22247,22248,4850,22250],{},[26,22249,6691],{},[26,22251,22252,22253,4850,22255],{},"sort ",[2915,22254,11472],{},[2915,22256,14599],{},[54,22258,11532],{"id":22259},"flags-11",[645,22261,22262,22278],{},[648,22263,22264],{},[651,22265,22266,22270,22274],{},[654,22267,22268],{},[26,22269,11543],{},[654,22271,22272],{},[26,22273,11548],{},[654,22275,22276],{},[26,22277,5483],{},[670,22279,22280,22289,22299,22309,22317,22327,22338,22354,22365,22376,22386,22396,22406,22416,22427,22437,22448],{},[651,22281,22282,22284,22286],{},[675,22283,4853],{},[675,22285,21209],{},[675,22287,22288],{},"Umgekehrte Reihenfolge",[651,22290,22291,22293,22296],{},[675,22292,7742],{},[675,22294,22295],{},"--numeric-sort",[675,22297,22298],{},"Numerisch sortieren (nicht alphabetisch: 10 > 9)",[651,22300,22301,22303,22306],{},[675,22302,12572],{},[675,22304,22305],{},"--human-numeric-sort",[675,22307,22308],{},"Menschenlesbare Zahlen sortieren (1K \u003C 1M \u003C 1G)",[651,22310,22311,22313,22315],{},[675,22312,9329],{},[675,22314,15996],{},[675,22316,15999],{},[651,22318,22319,22321,22324],{},[675,22320,11559],{},[675,22322,22323],{},"--unique",[675,22325,22326],{},"Duplikate entfernen",[651,22328,22329,22332,22335],{},[675,22330,22331],{},"-b",[675,22333,22334],{},"--ignore-leading-blanks",[675,22336,22337],{},"Führende Leerzeichen ignorieren",[651,22339,22340,22346,22351],{},[675,22341,22342,22343],{},"-k N",[2915,22344,22345],{},",M",[675,22347,22348,22349],{},"--key=N",[2915,22350,22345],{},[675,22352,22353],{},"Sortierschlüssel: Ab Feld N (bis Feld M)",[651,22355,22356,22359,22362],{},[675,22357,22358],{},"-t TRENNER",[675,22360,22361],{},"--field-separator",[675,22363,22364],{},"Spaltentrenner festlegen",[651,22366,22367,22370,22373],{},[675,22368,22369],{},"-o DATEI",[675,22371,22372],{},"--output=DATEI",[675,22374,22375],{},"Ergebnis in Datei schreiben (kann Eingabedatei sein!)",[651,22377,22378,22380,22383],{},[675,22379,7765],{},[675,22381,22382],{},"--check",[675,22384,22385],{},"Prüfen ob Eingabe bereits sortiert ist",[651,22387,22388,22391,22393],{},[675,22389,22390],{},"-C",[675,22392,21199],{},[675,22394,22395],{},"Wie -c, aber ohne Fehlermeldung",[651,22397,22398,22400,22403],{},[675,22399,14657],{},[675,22401,22402],{},"--merge",[675,22404,22405],{},"Bereits sortierte Dateien zusammenführen",[651,22407,22408,22410,22413],{},[675,22409,12543],{},[675,22411,22412],{},"--random-sort",[675,22414,22415],{},"Zufällige Reihenfolge",[651,22417,22418,22421,22424],{},[675,22419,22420],{},"-V",[675,22422,22423],{},"--version-sort",[675,22425,22426],{},"Versionsnummern sortieren (1.9 \u003C 1.10)",[651,22428,22429,22431,22434],{},[675,22430,19159],{},[675,22432,22433],{},"--zero-terminated",[675,22435,22436],{},"Null-Byte als Zeilentrenner (für find -print0)",[651,22438,22439,22442,22445],{},[675,22440,22441],{},"-S N",[675,22443,22444],{},"--buffer-size=N",[675,22446,22447],{},"Puffergröße (z.B. -S 1G)",[651,22449,22450,22453,22455],{},[675,22451,22452],{},"--parallel=N",[675,22454,21199],{},[675,22456,22457],{},"N CPU-Kerne nutzen",[16,22459,22460],{},[26,22461,22462],{},"Sortierschlüssel -k verstehen",[3392,22464,22466],{"className":3394,"code":22465,"language":3396,"meta":225,"style":225},"sort -k ANFANG[,ENDE][OPTIONEN]\n\n",[3398,22467,22468],{"__ignoreMap":225},[2915,22469,22470,22472,22475],{"class":3402,"line":3403},[2915,22471,22240],{"class":3406},[2915,22473,22474],{"class":3410}," -k",[2915,22476,22477],{"class":3414}," ANFANG[,ENDE][OPTIONEN]\n",[16,22479,7653,22480,22482,22483,22485,22486,22488,22489,22491,22492,22494],{},[5885,22481],{},"\n-k2 Ab Feld 2 bis Zeilenende sortieren",[5885,22484],{},"\n-k2,2 Nur Feld 2 als Schlüssel",[5885,22487],{},"\n-k2,2n Feld 2 numerisch sortieren",[5885,22490],{},"\n-k3,3r Feld 3 rückwärts sortieren",[5885,22493],{},"\n-k2,2 -k1,1 Erst nach Feld 2, dann nach Feld 1",[54,22496,8676],{"id":22497},"beispiele-13",[11,22499,22501],{"id":22500},"alphabetisch-sortieren","Alphabetisch sortieren",[16,22503,22504],{},"sort namen.txt",[11,22506,22508],{"id":22507},"numerisch-sortieren-wichtig-sonst-10-2-alphabetisch","Numerisch sortieren (wichtig: sonst 10 \u003C 2 alphabetisch!)",[3392,22510,22512],{"className":3394,"code":22511,"language":3396,"meta":225,"style":225},"sort -n zahlen.txt\n\n# Umgekehrt alphabetisch\n\nsort -r namen.txt\n\n# Numerisch + umgekehrt (größte Zahl oben)\n\nsort -nr zahlen.txt\n\n# Groß-\u002FKleinschreibung ignorieren\n\nsort -f namen.txt\n\n# Duplikate entfernen\n\nsort -u namen.txt\n\n# \u002Fetc\u002Fpasswd nach UID (3. Feld, numerisch) sortieren\n\nsort -t: -k3,3n \u002Fetc\u002Fpasswd\n\n# Dateien nach Größe auflisten (du + sort)\n\ndu -sh \u002Fvar\u002F* | sort -h\n\n# Größte Dateien\u002FVerzeichnisse finden\n\ndu -sh \u002Fvar\u002Flog\u002F* | sort -rh | head -10\n\n# Prozesse nach CPU-Verbrauch sortieren\n\nps aux | sort -k3 -rn | head -10\n\n# IP-Adressen sortieren (nach Oktet)\n\nsort -t. -k1,1n -k2,2n -k3,3n -k4,4n ip_liste.txt\n\n# Versionsnummern sortieren\n\nsort -V versionen.txt\n\n# Prüfen ob Datei bereits sortiert ist\n\nsort -c namen.txt && echo \"Bereits sortiert\" || echo \"Nicht sortiert\"\n\n",[3398,22513,22514,22522,22526,22531,22535,22543,22547,22552,22556,22565,22569,22573,22577,22585,22589,22594,22598,22607,22611,22616,22620,22632,22636,22641,22645,22665,22669,22674,22678,22703,22707,22712,22716,22738,22742,22747,22751,22772,22776,22781,22785,22795,22799,22804,22808],{"__ignoreMap":225},[2915,22515,22516,22518,22520],{"class":3402,"line":3403},[2915,22517,22240],{"class":3406},[2915,22519,8127],{"class":3410},[2915,22521,8780],{"class":3414},[2915,22523,22524],{"class":3402,"line":1117},[2915,22525,3506],{"emptyLinePlaceholder":3505},[2915,22527,22528],{"class":3402,"line":1125},[2915,22529,22530],{"class":3511},"# Umgekehrt alphabetisch\n",[2915,22532,22533],{"class":3402,"line":3515},[2915,22534,3506],{"emptyLinePlaceholder":3505},[2915,22536,22537,22539,22541],{"class":3402,"line":3520},[2915,22538,22240],{"class":3406},[2915,22540,7846],{"class":3410},[2915,22542,20759],{"class":3414},[2915,22544,22545],{"class":3402,"line":5070},[2915,22546,3506],{"emptyLinePlaceholder":3505},[2915,22548,22549],{"class":3402,"line":5075},[2915,22550,22551],{"class":3511},"# Numerisch + umgekehrt (größte Zahl oben)\n",[2915,22553,22554],{"class":3402,"line":5093},[2915,22555,3506],{"emptyLinePlaceholder":3505},[2915,22557,22558,22560,22563],{"class":3402,"line":5098},[2915,22559,22240],{"class":3406},[2915,22561,22562],{"class":3410}," -nr",[2915,22564,8780],{"class":3414},[2915,22566,22567],{"class":3402,"line":5207},[2915,22568,3506],{"emptyLinePlaceholder":3505},[2915,22570,22571],{"class":3402,"line":5212},[2915,22572,16373],{"class":3511},[2915,22574,22575],{"class":3402,"line":5218},[2915,22576,3506],{"emptyLinePlaceholder":3505},[2915,22578,22579,22581,22583],{"class":3402,"line":5223},[2915,22580,22240],{"class":3406},[2915,22582,10089],{"class":3410},[2915,22584,20759],{"class":3414},[2915,22586,22587],{"class":3402,"line":5229},[2915,22588,3506],{"emptyLinePlaceholder":3505},[2915,22590,22591],{"class":3402,"line":5253},[2915,22592,22593],{"class":3511},"# Duplikate entfernen\n",[2915,22595,22596],{"class":3402,"line":5266},[2915,22597,3506],{"emptyLinePlaceholder":3505},[2915,22599,22600,22602,22605],{"class":3402,"line":5721},[2915,22601,22240],{"class":3406},[2915,22603,22604],{"class":3410}," -u",[2915,22606,20759],{"class":3414},[2915,22608,22609],{"class":3402,"line":9401},[2915,22610,3506],{"emptyLinePlaceholder":3505},[2915,22612,22613],{"class":3402,"line":9406},[2915,22614,22615],{"class":3511},"# \u002Fetc\u002Fpasswd nach UID (3. Feld, numerisch) sortieren\n",[2915,22617,22618],{"class":3402,"line":9411},[2915,22619,3506],{"emptyLinePlaceholder":3505},[2915,22621,22622,22624,22627,22630],{"class":3402,"line":9416},[2915,22623,22240],{"class":3406},[2915,22625,22626],{"class":3410}," -t:",[2915,22628,22629],{"class":3410}," -k3,3n",[2915,22631,8758],{"class":3414},[2915,22633,22634],{"class":3402,"line":9428},[2915,22635,3506],{"emptyLinePlaceholder":3505},[2915,22637,22638],{"class":3402,"line":9433},[2915,22639,22640],{"class":3511},"# Dateien nach Größe auflisten (du + sort)\n",[2915,22642,22643],{"class":3402,"line":9454},[2915,22644,3506],{"emptyLinePlaceholder":3505},[2915,22646,22647,22650,22653,22656,22658,22660,22662],{"class":3402,"line":9459},[2915,22648,22649],{"class":3406},"du",[2915,22651,22652],{"class":3410}," -sh",[2915,22654,22655],{"class":3414}," \u002Fvar\u002F",[2915,22657,5078],{"class":3410},[2915,22659,7679],{"class":3533},[2915,22661,9152],{"class":3406},[2915,22663,22664],{"class":3410}," -h\n",[2915,22666,22667],{"class":3402,"line":9464},[2915,22668,3506],{"emptyLinePlaceholder":3505},[2915,22670,22671],{"class":3402,"line":9469},[2915,22672,22673],{"class":3511},"# Größte Dateien\u002FVerzeichnisse finden\n",[2915,22675,22676],{"class":3402,"line":9479},[2915,22677,3506],{"emptyLinePlaceholder":3505},[2915,22679,22680,22682,22684,22687,22689,22691,22693,22696,22698,22700],{"class":3402,"line":9484},[2915,22681,22649],{"class":3406},[2915,22683,22652],{"class":3410},[2915,22685,22686],{"class":3414}," \u002Fvar\u002Flog\u002F",[2915,22688,5078],{"class":3410},[2915,22690,7679],{"class":3533},[2915,22692,9152],{"class":3406},[2915,22694,22695],{"class":3410}," -rh",[2915,22697,7679],{"class":3533},[2915,22699,9197],{"class":3406},[2915,22701,22702],{"class":3410}," -10\n",[2915,22704,22705],{"class":3402,"line":9489},[2915,22706,3506],{"emptyLinePlaceholder":3505},[2915,22708,22709],{"class":3402,"line":9494},[2915,22710,22711],{"class":3511},"# Prozesse nach CPU-Verbrauch sortieren\n",[2915,22713,22714],{"class":3402,"line":9504},[2915,22715,3506],{"emptyLinePlaceholder":3505},[2915,22717,22718,22720,22722,22724,22726,22729,22732,22734,22736],{"class":3402,"line":9509},[2915,22719,7673],{"class":3406},[2915,22721,7676],{"class":3414},[2915,22723,7679],{"class":3533},[2915,22725,9152],{"class":3406},[2915,22727,22728],{"class":3410}," -k3",[2915,22730,22731],{"class":3410}," -rn",[2915,22733,7679],{"class":3533},[2915,22735,9197],{"class":3406},[2915,22737,22702],{"class":3410},[2915,22739,22740],{"class":3402,"line":9514},[2915,22741,3506],{"emptyLinePlaceholder":3505},[2915,22743,22744],{"class":3402,"line":9519},[2915,22745,22746],{"class":3511},"# IP-Adressen sortieren (nach Oktet)\n",[2915,22748,22749],{"class":3402,"line":9524},[2915,22750,3506],{"emptyLinePlaceholder":3505},[2915,22752,22753,22755,22758,22761,22764,22766,22769],{"class":3402,"line":9529},[2915,22754,22240],{"class":3406},[2915,22756,22757],{"class":3410}," -t.",[2915,22759,22760],{"class":3410}," -k1,1n",[2915,22762,22763],{"class":3410}," -k2,2n",[2915,22765,22629],{"class":3410},[2915,22767,22768],{"class":3410}," -k4,4n",[2915,22770,22771],{"class":3414}," ip_liste.txt\n",[2915,22773,22774],{"class":3402,"line":9534},[2915,22775,3506],{"emptyLinePlaceholder":3505},[2915,22777,22778],{"class":3402,"line":9539},[2915,22779,22780],{"class":3511},"# Versionsnummern sortieren\n",[2915,22782,22783],{"class":3402,"line":9552},[2915,22784,3506],{"emptyLinePlaceholder":3505},[2915,22786,22787,22789,22792],{"class":3402,"line":9557},[2915,22788,22240],{"class":3406},[2915,22790,22791],{"class":3410}," -V",[2915,22793,22794],{"class":3414}," versionen.txt\n",[2915,22796,22797],{"class":3402,"line":9570},[2915,22798,3506],{"emptyLinePlaceholder":3505},[2915,22800,22801],{"class":3402,"line":9575},[2915,22802,22803],{"class":3511},"# Prüfen ob Datei bereits sortiert ist\n",[2915,22805,22806],{"class":3402,"line":9588},[2915,22807,3506],{"emptyLinePlaceholder":3505},[2915,22809,22810,22812,22814,22817,22820,22822,22825,22828,22830],{"class":3402,"line":9593},[2915,22811,22240],{"class":3406},[2915,22813,9142],{"class":3410},[2915,22815,22816],{"class":3414}," namen.txt",[2915,22818,22819],{"class":3529}," && ",[2915,22821,5059],{"class":3410},[2915,22823,22824],{"class":3414}," \"Bereits sortiert\"",[2915,22826,22827],{"class":3533}," ||",[2915,22829,5035],{"class":3410},[2915,22831,22832],{"class":3414}," \"Nicht sortiert\"\n",[11,22834,22836],{"id":22835},"in-datei-schreiben-kann-auch-eingabedatei-sein","In Datei schreiben (kann auch Eingabedatei sein)",[16,22838,22839],{},"sort namen.txt -o namen.txt",[54,22841,11749],{"id":22842},"ausgabe-13",[11,22844,22846],{"id":22845},"cat-namentxt","cat namen.txt",[16,22848,22849],{},"Zara",[16,22851,22852],{},"Alice",[16,22854,22855],{},"bob",[16,22857,22852],{},[11,22859,22504],{"id":22860},"sort-namentxt",[16,22862,22852],{},[16,22864,22852],{},[16,22866,22849],{},[16,22868,22869],{},"bob \u003C- Großbuchstaben vor Kleinbuchstaben!",[11,22871,22873],{"id":22872},"sort-f-namentxt-case-insensitive","sort -f namen.txt (case-insensitive)",[16,22875,22852],{},[16,22877,22852],{},[16,22879,22855],{},[16,22881,22849],{},[11,22883,22885],{"id":22884},"sort-u-namentxt","sort -u namen.txt",[16,22887,22852],{},[16,22889,22849],{},[16,22891,22855],{},[11,22893,22895],{"id":22894},"sort-t-k33n-etcpasswd-head-4","sort -t: -k3,3n \u002Fetc\u002Fpasswd | head -4",[16,22897,15422],{},[16,22899,15425],{},[16,22901,15428],{},[16,22903,22904],{},"sys❌3:3:sys:\u002Fdev:\u002Fusr\u002Fsbin\u002Fnologin",[11,22906,22908],{"id":22907},"du-sh-varlog-sort-rh-head-5","du -sh \u002Fvar\u002Flog\u002F* | sort -rh | head -5",[16,22910,22911],{},"248M \u002Fvar\u002Flog\u002Fjournal",[16,22913,22914],{},"12M \u002Fvar\u002Flog\u002Fsyslog",[16,22916,22917],{},"4,5M \u002Fvar\u002Flog\u002Fauth.log",[16,22919,22920],{},"1,2M \u002Fvar\u002Flog\u002Fkern.log",[16,22922,22923],{},"440K \u002Fvar\u002Flog\u002Fdpkg.log",[11,22925,8864],{"id":8864},[16,22927,22928,22930,22931,22934],{},[26,22929,11461],{}," Gibt den Inhalt von Dateien aus, verbindet mehrere Dateien und leitet Inhalte weiter. \"cat\" steht für ",[257,22932,22933],{},"concatenate"," (verketten).",[16,22936,22937,4850,22939],{},[26,22938,6691],{},[26,22940,22941,22942,4850,22944],{},"cat ",[2915,22943,11472],{},[2915,22945,14599],{},[54,22947,11532],{"id":22948},"flags-12",[645,22950,22951,22967],{},[648,22952,22953],{},[651,22954,22955,22959,22963],{},[654,22956,22957],{},[26,22958,11543],{},[654,22960,22961],{},[26,22962,11548],{},[654,22964,22965],{},[26,22966,5483],{},[670,22968,22969,22979,22989,22999,23010,23020,23030,23040,23049],{},[651,22970,22971,22973,22976],{},[675,22972,7742],{},[675,22974,22975],{},"--number",[675,22977,22978],{},"Alle Zeilen nummerieren",[651,22980,22981,22983,22986],{},[675,22982,22331],{},[675,22984,22985],{},"--number-nonblank",[675,22987,22988],{},"Nur nicht-leere Zeilen nummerieren (überschreibt -n)",[651,22990,22991,22993,22996],{},[675,22992,21166],{},[675,22994,22995],{},"--show-all",[675,22997,22998],{},"Alles anzeigen: entspricht -vET (Tabs als ^I, Zeilenende als $)",[651,23000,23001,23004,23007],{},[675,23002,23003],{},"-T",[675,23005,23006],{},"--show-tabs",[675,23008,23009],{},"Tabs als ^I sichtbar machen",[651,23011,23012,23014,23017],{},[675,23013,7781],{},[675,23015,23016],{},"--show-ends",[675,23018,23019],{},"Zeilenenden als $ anzeigen",[651,23021,23022,23024,23027],{},[675,23023,7734],{},[675,23025,23026],{},"--show-nonprinting",[675,23028,23029],{},"Nicht-druckbare Zeichen sichtbar machen",[651,23031,23032,23034,23037],{},[675,23033,4849],{},[675,23035,23036],{},"--squeeze-blank",[675,23038,23039],{},"Mehrere aufeinanderfolgende Leerzeilen zu einer zusammenfassen",[651,23041,23042,23044,23046],{},[675,23043,7967],{},[675,23045,21199],{},[675,23047,23048],{},"Entspricht -vE",[651,23050,23051,23053,23055],{},[675,23052,21196],{},[675,23054,21199],{},[675,23056,23057],{},"Entspricht -vT",[16,23059,23060],{},[26,23061,23062],{},"Umleitungsoperatoren",[645,23064,23065,23077],{},[648,23066,23067],{},[651,23068,23069,23073],{},[654,23070,23071],{},[26,23072,18195],{},[654,23074,23075],{},[26,23076,5483],{},[670,23078,23079,23086,23094,23102],{},[651,23080,23081,23083],{},[675,23082,3534],{},[675,23084,23085],{},"Ausgabe in Datei umleiten (überschreibt!)",[651,23087,23088,23091],{},[675,23089,23090],{},">>",[675,23092,23093],{},"Ausgabe an Datei anhängen",[651,23095,23096,23099],{},[675,23097,23098],{},"\u003C",[675,23100,23101],{},"Eingabe aus Datei lesen",[651,23103,23104,23107],{},[675,23105,23106],{},"\u003C\u003CEOF",[675,23108,23109],{},"Here-Document: mehrzeilige Eingabe direkt im Skript",[54,23111,8676],{"id":23112},"beispiele-14",[11,23114,23116],{"id":23115},"datei-ausgeben","Datei ausgeben",[3392,23118,23120],{"className":3394,"code":23119,"language":3396,"meta":225,"style":225},"cat datei.txt\n\n# Mit Zeilennummern\n\ncat -n datei.txt\n\n# Nur nicht-leere Zeilen nummerieren\n\ncat -b datei.txt\n\n# Tabs und Zeilenenden sichtbar machen (Debugging von Skripten)\n\ncat -A skript.sh\n\n# Leerzeilen zusammenfassen\n\ncat -s datei.txt\n\n# Mehrere Dateien verketten und ausgeben\n\ncat datei1.txt datei2.txt datei3.txt\n\n# Mehrere Dateien zu einer zusammenführen\n\ncat datei1.txt datei2.txt > gesamt.txt\n\n# Ans Ende einer Datei anhängen\n\ncat neue_zeilen.txt >> bestehend.txt\n\n# Neue Datei interaktiv erstellen (Strg+D = EOF)\n\ncat > neue_datei.txt\n\n",[3398,23121,23122,23128,23132,23136,23140,23148,23152,23157,23161,23170,23174,23179,23183,23192,23196,23201,23205,23214,23218,23223,23227,23239,23243,23248,23252,23266,23270,23275,23279,23291,23295,23300,23304],{"__ignoreMap":225},[2915,23123,23124,23126],{"class":3402,"line":3403},[2915,23125,8864],{"class":3406},[2915,23127,7698],{"class":3414},[2915,23129,23130],{"class":3402,"line":1117},[2915,23131,3506],{"emptyLinePlaceholder":3505},[2915,23133,23134],{"class":3402,"line":1125},[2915,23135,16420],{"class":3511},[2915,23137,23138],{"class":3402,"line":3515},[2915,23139,3506],{"emptyLinePlaceholder":3505},[2915,23141,23142,23144,23146],{"class":3402,"line":3520},[2915,23143,8864],{"class":3406},[2915,23145,8127],{"class":3410},[2915,23147,7698],{"class":3414},[2915,23149,23150],{"class":3402,"line":5070},[2915,23151,3506],{"emptyLinePlaceholder":3505},[2915,23153,23154],{"class":3402,"line":5075},[2915,23155,23156],{"class":3511},"# Nur nicht-leere Zeilen nummerieren\n",[2915,23158,23159],{"class":3402,"line":5093},[2915,23160,3506],{"emptyLinePlaceholder":3505},[2915,23162,23163,23165,23168],{"class":3402,"line":5098},[2915,23164,8864],{"class":3406},[2915,23166,23167],{"class":3410}," -b",[2915,23169,7698],{"class":3414},[2915,23171,23172],{"class":3402,"line":5207},[2915,23173,3506],{"emptyLinePlaceholder":3505},[2915,23175,23176],{"class":3402,"line":5212},[2915,23177,23178],{"class":3511},"# Tabs und Zeilenenden sichtbar machen (Debugging von Skripten)\n",[2915,23180,23181],{"class":3402,"line":5218},[2915,23182,3506],{"emptyLinePlaceholder":3505},[2915,23184,23185,23187,23190],{"class":3402,"line":5223},[2915,23186,8864],{"class":3406},[2915,23188,23189],{"class":3410}," -A",[2915,23191,13411],{"class":3414},[2915,23193,23194],{"class":3402,"line":5229},[2915,23195,3506],{"emptyLinePlaceholder":3505},[2915,23197,23198],{"class":3402,"line":5253},[2915,23199,23200],{"class":3511},"# Leerzeilen zusammenfassen\n",[2915,23202,23203],{"class":3402,"line":5266},[2915,23204,3506],{"emptyLinePlaceholder":3505},[2915,23206,23207,23209,23212],{"class":3402,"line":5721},[2915,23208,8864],{"class":3406},[2915,23210,23211],{"class":3410}," -s",[2915,23213,7698],{"class":3414},[2915,23215,23216],{"class":3402,"line":9401},[2915,23217,3506],{"emptyLinePlaceholder":3505},[2915,23219,23220],{"class":3402,"line":9406},[2915,23221,23222],{"class":3511},"# Mehrere Dateien verketten und ausgeben\n",[2915,23224,23225],{"class":3402,"line":9411},[2915,23226,3506],{"emptyLinePlaceholder":3505},[2915,23228,23229,23231,23233,23236],{"class":3402,"line":9416},[2915,23230,8864],{"class":3406},[2915,23232,15349],{"class":3414},[2915,23234,23235],{"class":3414}," datei2.txt",[2915,23237,23238],{"class":3414}," datei3.txt\n",[2915,23240,23241],{"class":3402,"line":9428},[2915,23242,3506],{"emptyLinePlaceholder":3505},[2915,23244,23245],{"class":3402,"line":9433},[2915,23246,23247],{"class":3511},"# Mehrere Dateien zu einer zusammenführen\n",[2915,23249,23250],{"class":3402,"line":9454},[2915,23251,3506],{"emptyLinePlaceholder":3505},[2915,23253,23254,23256,23258,23260,23263],{"class":3402,"line":9459},[2915,23255,8864],{"class":3406},[2915,23257,15349],{"class":3414},[2915,23259,23235],{"class":3414},[2915,23261,23262],{"class":3533}," >",[2915,23264,23265],{"class":3414}," gesamt.txt\n",[2915,23267,23268],{"class":3402,"line":9464},[2915,23269,3506],{"emptyLinePlaceholder":3505},[2915,23271,23272],{"class":3402,"line":9469},[2915,23273,23274],{"class":3511},"# Ans Ende einer Datei anhängen\n",[2915,23276,23277],{"class":3402,"line":9479},[2915,23278,3506],{"emptyLinePlaceholder":3505},[2915,23280,23281,23283,23286,23288],{"class":3402,"line":9484},[2915,23282,8864],{"class":3406},[2915,23284,23285],{"class":3414}," neue_zeilen.txt",[2915,23287,12241],{"class":3533},[2915,23289,23290],{"class":3414}," bestehend.txt\n",[2915,23292,23293],{"class":3402,"line":9489},[2915,23294,3506],{"emptyLinePlaceholder":3505},[2915,23296,23297],{"class":3402,"line":9494},[2915,23298,23299],{"class":3511},"# Neue Datei interaktiv erstellen (Strg+D = EOF)\n",[2915,23301,23302],{"class":3402,"line":9504},[2915,23303,3506],{"emptyLinePlaceholder":3505},[2915,23305,23306,23308,23310],{"class":3402,"line":9509},[2915,23307,8864],{"class":3406},[2915,23309,23262],{"class":3533},[2915,23311,23312],{"class":3414}," neue_datei.txt\n",[16,23314,15463],{},[16,23316,15466],{},[16,23318,23319],{},"^D",[11,23321,23323],{"id":23322},"here-document-mehrzeiligen-text-direkt-in-datei-schreiben","Here-Document – mehrzeiligen Text direkt in Datei schreiben",[3392,23325,23327],{"className":3394,"code":23326,"language":3396,"meta":225,"style":225},"cat > konfiguration.conf \u003C\u003C EOF\n\n# Automatisch generiert\n\nhost=localhost\n\nport=8080\n\ndebug=false\n\n",[3398,23328,23329,23344,23348,23353,23357,23362,23366,23371,23375],{"__ignoreMap":225},[2915,23330,23331,23333,23335,23338,23341],{"class":3402,"line":3403},[2915,23332,8864],{"class":3406},[2915,23334,23262],{"class":3533},[2915,23336,23337],{"class":3414}," konfiguration.conf",[2915,23339,23340],{"class":3533}," \u003C\u003C",[2915,23342,23343],{"class":3414}," EOF\n",[2915,23345,23346],{"class":3402,"line":1117},[2915,23347,3506],{"emptyLinePlaceholder":3505},[2915,23349,23350],{"class":3402,"line":1125},[2915,23351,23352],{"class":3414},"# Automatisch generiert\n",[2915,23354,23355],{"class":3402,"line":3515},[2915,23356,3506],{"emptyLinePlaceholder":3505},[2915,23358,23359],{"class":3402,"line":3520},[2915,23360,23361],{"class":3414},"host=localhost\n",[2915,23363,23364],{"class":3402,"line":5070},[2915,23365,3506],{"emptyLinePlaceholder":3505},[2915,23367,23368],{"class":3402,"line":5075},[2915,23369,23370],{"class":3414},"port=8080\n",[2915,23372,23373],{"class":3402,"line":5093},[2915,23374,3506],{"emptyLinePlaceholder":3505},[2915,23376,23377],{"class":3402,"line":5098},[2915,23378,23379],{"class":3414},"debug=false\n",[16,23381,23382],{},"EOF",[11,23384,23386],{"id":23385},"leere-datei-erstellen","Leere Datei erstellen",[3392,23388,23390],{"className":3394,"code":23389,"language":3396,"meta":225,"style":225},"cat \u002Fdev\u002Fnull > datei.txt\n\n# Binäre Dateien verketten (z.B. Split-Archive)\n\ncat archiv.part1 archiv.part2 archiv.part3 > archiv.tar.gz\n\n# Inhalt einer Datei in eine Variable einlesen\n\nINHALT=$(cat konfiguration.conf)\n\n",[3398,23391,23392,23403,23407,23412,23416,23434,23438,23443,23447],{"__ignoreMap":225},[2915,23393,23394,23396,23399,23401],{"class":3402,"line":3403},[2915,23395,8864],{"class":3406},[2915,23397,23398],{"class":3414}," \u002Fdev\u002Fnull",[2915,23400,23262],{"class":3533},[2915,23402,7698],{"class":3414},[2915,23404,23405],{"class":3402,"line":1117},[2915,23406,3506],{"emptyLinePlaceholder":3505},[2915,23408,23409],{"class":3402,"line":1125},[2915,23410,23411],{"class":3511},"# Binäre Dateien verketten (z.B. Split-Archive)\n",[2915,23413,23414],{"class":3402,"line":3515},[2915,23415,3506],{"emptyLinePlaceholder":3505},[2915,23417,23418,23420,23423,23426,23429,23431],{"class":3402,"line":3520},[2915,23419,8864],{"class":3406},[2915,23421,23422],{"class":3414}," archiv.part1",[2915,23424,23425],{"class":3414}," archiv.part2",[2915,23427,23428],{"class":3414}," archiv.part3",[2915,23430,23262],{"class":3533},[2915,23432,23433],{"class":3414}," archiv.tar.gz\n",[2915,23435,23436],{"class":3402,"line":5070},[2915,23437,3506],{"emptyLinePlaceholder":3505},[2915,23439,23440],{"class":3402,"line":5075},[2915,23441,23442],{"class":3511},"# Inhalt einer Datei in eine Variable einlesen\n",[2915,23444,23445],{"class":3402,"line":5093},[2915,23446,3506],{"emptyLinePlaceholder":3505},[2915,23448,23449,23452,23454,23456,23458,23460],{"class":3402,"line":5098},[2915,23450,23451],{"class":3529},"INHALT",[2915,23453,5137],{"class":3533},[2915,23455,9001],{"class":3529},[2915,23457,8864],{"class":3406},[2915,23459,23337],{"class":3414},[2915,23461,5152],{"class":3529},[54,23463,11749],{"id":23464},"ausgabe-14",[11,23466,23468],{"id":23467},"cat-n-dateitxt","cat -n datei.txt",[16,23470,21079],{},[16,23472,21082],{},[16,23474,13071],{},[16,23476,23477],{},"4 Zeile vier",[11,23479,23481],{"id":23480},"cat-b-dateitxt-leere-zeile-bekommt-keine-nummer","cat -b datei.txt (leere Zeile bekommt keine Nummer)",[16,23483,21079],{},[16,23485,21082],{},[16,23487,23488],{},"3 Zeile vier",[11,23490,23492],{"id":23491},"cat-a-skriptsh","cat -A skript.sh",[3392,23494,23496],{"className":3394,"code":23495,"language":3396,"meta":225,"style":225},"#!\u002Fbin\u002Fbash$\n\necho \"Hallo\"$\n\n^Ieingerückter Text$\n\n# ^I = Tab-Zeichen, $ = Zeilenende\n\n# cat -s datei.txt (Leerzeilen zusammengefasst)\n\n",[3398,23497,23498,23503,23507,23517,23521,23531,23535,23540,23544],{"__ignoreMap":225},[2915,23499,23500],{"class":3402,"line":3403},[2915,23501,23502],{"class":3511},"#!\u002Fbin\u002Fbash$\n",[2915,23504,23505],{"class":3402,"line":1117},[2915,23506,3506],{"emptyLinePlaceholder":3505},[2915,23508,23509,23511,23514],{"class":3402,"line":1125},[2915,23510,5059],{"class":3410},[2915,23512,23513],{"class":3414}," \"Hallo\"",[2915,23515,23516],{"class":3529},"$\n",[2915,23518,23519],{"class":3402,"line":3515},[2915,23520,3506],{"emptyLinePlaceholder":3505},[2915,23522,23523,23526,23529],{"class":3402,"line":3520},[2915,23524,23525],{"class":3406},"^Ieingerückter",[2915,23527,23528],{"class":3414}," Text",[2915,23530,23516],{"class":3529},[2915,23532,23533],{"class":3402,"line":5070},[2915,23534,3506],{"emptyLinePlaceholder":3505},[2915,23536,23537],{"class":3402,"line":5075},[2915,23538,23539],{"class":3511},"# ^I = Tab-Zeichen, $ = Zeilenende\n",[2915,23541,23542],{"class":3402,"line":5093},[2915,23543,3506],{"emptyLinePlaceholder":3505},[2915,23545,23546],{"class":3402,"line":5098},[2915,23547,23548],{"class":3511},"# cat -s datei.txt (Leerzeilen zusammengefasst)\n",[16,23550,15463],{},[16,23552,15469],{},[11,23554,23556],{"id":23555},"vorher-waren-3-leerzeilen-zwischen-zeile-1-und-3","(vorher waren 3 Leerzeilen zwischen Zeile 1 und 3)",[11,23558,23559],{"id":23559},"tac",[16,23561,23562,23564,23565,23568],{},[26,23563,11461],{}," Gibt den Inhalt einer Datei in ",[26,23566,23567],{},"umgekehrter Zeilenreihenfolge"," aus. Der Name ist \"cat\" rückwärts geschrieben.",[16,23570,23571,4850,23573],{},[26,23572,6691],{},[26,23574,23575,23576,4850,23578],{},"tac ",[2915,23577,11472],{},[2915,23579,14599],{},[54,23581,11532],{"id":23582},"flags-13",[645,23584,23585,23597],{},[648,23586,23587],{},[651,23588,23589,23593],{},[654,23590,23591],{},[26,23592,11543],{},[654,23594,23595],{},[26,23596,5483],{},[670,23598,23599,23607,23614],{},[651,23600,23601,23604],{},[675,23602,23603],{},"-s TRENNER",[675,23605,23606],{},"Eigenen Datensatz-Trennzeichen verwenden (statt Newline \\n)",[651,23608,23609,23611],{},[675,23610,4853],{},[675,23612,23613],{},"Den Trenner als regulären Ausdruck interpretieren",[651,23615,23616,23618],{},[675,23617,22331],{},[675,23619,23620],{},"Trenner wird an den Anfang statt an das Ende gestellt",[54,23622,8676],{"id":23623},"beispiele-15",[11,23625,23627],{"id":23626},"datei-umgekehrt-ausgeben","Datei umgekehrt ausgeben",[16,23629,23630],{},"tac datei.txt",[11,23632,23634],{"id":23633},"log-datei-umgekehrt-anzeigen-neueste-einträge-zuerst","Log-Datei umgekehrt anzeigen: neueste Einträge zuerst",[3392,23636,23638],{"className":3394,"code":23637,"language":3396,"meta":225,"style":225},"tac \u002Fvar\u002Flog\u002Fsyslog | less\n\n# Nur die letzten 20 Einträge (von hinten)\n\ntac \u002Fvar\u002Flog\u002Fauth.log | head -20\n\n# Mit grep kombinieren: letzten Fehler suchen\n\ntac \u002Fvar\u002Flog\u002Fsyslog | grep -m 1 \"ERROR\"\n\n# History umgekehrt anzeigen (letzter Befehl zuerst)\n\nhistory | tac | head -10\n\n# Eigener Trenner (z.B. Datensätze durch \"---\" getrennt)\n\ntac -s \"---\" mehrteilig.txt\n\n# Zeilen umkehren und mit Zeilennummern versehen\n\ntac datei.txt | cat -n\n\n",[3398,23639,23640,23651,23655,23660,23664,23678,23682,23687,23691,23708,23712,23717,23721,23737,23741,23746,23750,23762,23766,23771,23775],{"__ignoreMap":225},[2915,23641,23642,23644,23646,23648],{"class":3402,"line":3403},[2915,23643,23559],{"class":3406},[2915,23645,15709],{"class":3414},[2915,23647,7679],{"class":3533},[2915,23649,23650],{"class":3406}," less\n",[2915,23652,23653],{"class":3402,"line":1117},[2915,23654,3506],{"emptyLinePlaceholder":3505},[2915,23656,23657],{"class":3402,"line":1125},[2915,23658,23659],{"class":3511},"# Nur die letzten 20 Einträge (von hinten)\n",[2915,23661,23662],{"class":3402,"line":3515},[2915,23663,3506],{"emptyLinePlaceholder":3505},[2915,23665,23666,23668,23671,23673,23675],{"class":3402,"line":3520},[2915,23667,23559],{"class":3406},[2915,23669,23670],{"class":3414}," \u002Fvar\u002Flog\u002Fauth.log",[2915,23672,7679],{"class":3533},[2915,23674,9197],{"class":3406},[2915,23676,23677],{"class":3410}," -20\n",[2915,23679,23680],{"class":3402,"line":5070},[2915,23681,3506],{"emptyLinePlaceholder":3505},[2915,23683,23684],{"class":3402,"line":5075},[2915,23685,23686],{"class":3511},"# Mit grep kombinieren: letzten Fehler suchen\n",[2915,23688,23689],{"class":3402,"line":5093},[2915,23690,3506],{"emptyLinePlaceholder":3505},[2915,23692,23693,23695,23697,23699,23701,23703,23705],{"class":3402,"line":5098},[2915,23694,23559],{"class":3406},[2915,23696,15709],{"class":3414},[2915,23698,7679],{"class":3533},[2915,23700,7682],{"class":3406},[2915,23702,14780],{"class":3410},[2915,23704,9016],{"class":3410},[2915,23706,23707],{"class":3414}," \"ERROR\"\n",[2915,23709,23710],{"class":3402,"line":5207},[2915,23711,3506],{"emptyLinePlaceholder":3505},[2915,23713,23714],{"class":3402,"line":5212},[2915,23715,23716],{"class":3511},"# History umgekehrt anzeigen (letzter Befehl zuerst)\n",[2915,23718,23719],{"class":3402,"line":5218},[2915,23720,3506],{"emptyLinePlaceholder":3505},[2915,23722,23723,23726,23728,23731,23733,23735],{"class":3402,"line":5223},[2915,23724,23725],{"class":3410},"history",[2915,23727,7679],{"class":3533},[2915,23729,23730],{"class":3406}," tac",[2915,23732,7679],{"class":3533},[2915,23734,9197],{"class":3406},[2915,23736,22702],{"class":3410},[2915,23738,23739],{"class":3402,"line":5229},[2915,23740,3506],{"emptyLinePlaceholder":3505},[2915,23742,23743],{"class":3402,"line":5253},[2915,23744,23745],{"class":3511},"# Eigener Trenner (z.B. Datensätze durch \"---\" getrennt)\n",[2915,23747,23748],{"class":3402,"line":5266},[2915,23749,3506],{"emptyLinePlaceholder":3505},[2915,23751,23752,23754,23756,23759],{"class":3402,"line":5721},[2915,23753,23559],{"class":3406},[2915,23755,23211],{"class":3410},[2915,23757,23758],{"class":3414}," \"---\"",[2915,23760,23761],{"class":3414}," mehrteilig.txt\n",[2915,23763,23764],{"class":3402,"line":9401},[2915,23765,3506],{"emptyLinePlaceholder":3505},[2915,23767,23768],{"class":3402,"line":9406},[2915,23769,23770],{"class":3511},"# Zeilen umkehren und mit Zeilennummern versehen\n",[2915,23772,23773],{"class":3402,"line":9411},[2915,23774,3506],{"emptyLinePlaceholder":3505},[2915,23776,23777,23779,23781,23783,23786],{"class":3402,"line":9416},[2915,23778,23559],{"class":3406},[2915,23780,19951],{"class":3414},[2915,23782,7679],{"class":3533},[2915,23784,23785],{"class":3406}," cat",[2915,23787,23788],{"class":3410}," -n\n",[54,23790,11749],{"id":23791},"ausgabe-15",[11,23793,23795],{"id":23794},"cat-dateitxt","cat datei.txt",[16,23797,15463],{},[16,23799,15466],{},[16,23801,15469],{},[16,23803,23804],{},"Zeile 4",[11,23806,23630],{"id":23807},"tac-dateitxt",[16,23809,23804],{},[16,23811,15469],{},[16,23813,15466],{},[16,23815,15463],{},[11,23817,23819],{"id":23818},"tac-varlogauthlog-grep-m-1-failed","tac \u002Fvar\u002Flog\u002Fauth.log | grep -m 1 \"Failed\"",[16,23821,23822,23823,23825],{},"Apr 29 09:45:01 server sshd",[2915,23824,15900],{},": Failed password for invalid user admin from 10.0.0.5",[11,23827,23829],{"id":23828},"letzter-fehlgeschlagener-login-versuch","\u003C- letzter fehlgeschlagener Login-Versuch",[11,23831,23832],{"id":23832},"passwd",[16,23834,23835,23837,23838,23841,23842,23844,23845,23847],{},[26,23836,11461],{}," Verwaltet Benutzerpasswörter. Normale Benutzer können ihr ",[26,23839,23840],{},"eigenes"," Passwort ändern; root kann ",[26,23843,7027],{}," Passwörter und Konto-Ablaufzeiten verwalten. Das Passwort wird verschlüsselt in ",[26,23846,13729],{}," gespeichert.",[16,23849,23850,4850,23852],{},[26,23851,6691],{},[26,23853,23854,23855,4850,23857],{},"passwd ",[2915,23856,11472],{},[2915,23858,11475],{},[54,23860,11532],{"id":23861},"flags-14",[645,23863,23864,23880],{},[648,23865,23866],{},[651,23867,23868,23872,23876],{},[654,23869,23870],{},[26,23871,11543],{},[654,23873,23874],{},[26,23875,11548],{},[654,23877,23878],{},[26,23879,5483],{},[670,23881,23882,23892,23902,23912,23922,23933,23944,23955,23966,23976],{},[651,23883,23884,23886,23889],{},[675,23885,7757],{},[675,23887,23888],{},"--lock",[675,23890,23891],{},"Konto sperren – fügt ! vor den Hash in \u002Fetc\u002Fshadow ein (Login mit Passwort nicht mehr möglich, SSH-Key-Login aber weiterhin!)",[651,23893,23894,23896,23899],{},[675,23895,11559],{},[675,23897,23898],{},"--unlock",[675,23900,23901],{},"Konto entsperren – entfernt ! aus dem Hash",[651,23903,23904,23906,23909],{},[675,23905,21246],{},[675,23907,23908],{},"--delete",[675,23910,23911],{},"Passwort löschen (leeres Passwort = unsicher!)",[651,23913,23914,23916,23919],{},[675,23915,7967],{},[675,23917,23918],{},"--expire",[675,23920,23921],{},"Passwort sofort ablaufen lassen – Benutzer muss es beim nächsten Login ändern",[651,23923,23924,23927,23930],{},[675,23925,23926],{},"-n TAGE",[675,23928,23929],{},"--minimum=TAGE",[675,23931,23932],{},"Mindestanzahl Tage bis Passwort geändert werden darf (0 = jederzeit)",[651,23934,23935,23938,23941],{},[675,23936,23937],{},"-x TAGE",[675,23939,23940],{},"--maximum=TAGE",[675,23942,23943],{},"Maximale Gültigkeitsdauer in Tagen (99999 = unbegrenzt)",[651,23945,23946,23949,23952],{},[675,23947,23948],{},"-w TAGE",[675,23950,23951],{},"--warning=TAGE",[675,23953,23954],{},"Warnung N Tage vor Ablauf",[651,23956,23957,23960,23963],{},[675,23958,23959],{},"-i TAGE",[675,23961,23962],{},"--inactive=TAGE",[675,23964,23965],{},"Konto wird N Tage nach Ablauf deaktiviert",[651,23967,23968,23970,23973],{},[675,23969,12020],{},[675,23971,23972],{},"--status",[675,23974,23975],{},"Passwortstatus anzeigen",[651,23977,23978,23981,23983],{},[675,23979,23980],{},"--stdin",[675,23982,21199],{},[675,23984,23985],{},"Passwort von Standardeingabe lesen (nicht auf allen Systemen verfügbar)",[16,23987,23988],{},[26,23989,23990],{},"Status-Ausgabe (passwd -S)",[16,23992,23993,23994,23996],{},"BENUTZER STATUS DATUM MIN MAX WARN INAKTIV",[5885,23995],{},"\nalice P 04\u002F29\u002F2026 0 99999 7 -1",[16,23998,23999],{},"Status-Codes:",[3392,24001,24003],{"className":3394,"code":24002,"language":3396,"meta":225,"style":225},"P = Password (Passwort gesetzt)\nL = Locked (Konto gesperrt)\nNP = No Password (kein Passwort)\n\n",[3398,24004,24005,24022,24040],{"__ignoreMap":225},[2915,24006,24007,24009,24011,24014,24017,24020],{"class":3402,"line":3403},[2915,24008,19316],{"class":3406},[2915,24010,13922],{"class":3414},[2915,24012,24013],{"class":3414}," Password",[2915,24015,24016],{"class":3529}," (Passwort ",[2915,24018,24019],{"class":3414},"gesetzt",[2915,24021,5152],{"class":3529},[2915,24023,24024,24027,24029,24032,24035,24038],{"class":3402,"line":1117},[2915,24025,24026],{"class":3406},"L",[2915,24028,13922],{"class":3414},[2915,24030,24031],{"class":3414}," Locked",[2915,24033,24034],{"class":3529}," (Konto ",[2915,24036,24037],{"class":3414},"gesperrt",[2915,24039,5152],{"class":3529},[2915,24041,24042,24045,24047,24050,24052,24055,24057],{"class":3402,"line":1125},[2915,24043,24044],{"class":3406},"NP",[2915,24046,13922],{"class":3414},[2915,24048,24049],{"class":3414}," No",[2915,24051,24013],{"class":3414},[2915,24053,24054],{"class":3529}," (kein ",[2915,24056,2639],{"class":3414},[2915,24058,5152],{"class":3529},[16,24060,24061],{},[26,24062,24063],{},"Zusammenhang mit chage",[16,24065,24066,24069],{},[26,24067,24068],{},"chage"," bietet erweiterte Kontrolle über Passwort-Ablauf:",[3392,24071,24073],{"className":3394,"code":24072,"language":3396,"meta":225,"style":225},"chage -l alice # Ablaufinformationen anzeigen\nchage -M 90 alice # Maximale Gültigkeit 90 Tage\nchage -E 2026-12-31 alice # Konto-Ablaufdatum setzen\nchage -d 0 alice # Passwort sofort ablaufen lassen\n\n",[3398,24074,24075,24086,24101,24115],{"__ignoreMap":225},[2915,24076,24077,24079,24081,24083],{"class":3402,"line":3403},[2915,24078,24068],{"class":3406},[2915,24080,9029],{"class":3410},[2915,24082,11735],{"class":3414},[2915,24084,24085],{"class":3511}," # Ablaufinformationen anzeigen\n",[2915,24087,24088,24090,24093,24096,24098],{"class":3402,"line":1117},[2915,24089,24068],{"class":3406},[2915,24091,24092],{"class":3410}," -M",[2915,24094,24095],{"class":3410}," 90",[2915,24097,11735],{"class":3414},[2915,24099,24100],{"class":3511}," # Maximale Gültigkeit 90 Tage\n",[2915,24102,24103,24105,24107,24110,24112],{"class":3402,"line":1125},[2915,24104,24068],{"class":3406},[2915,24106,16541],{"class":3410},[2915,24108,24109],{"class":3414}," 2026-12-31",[2915,24111,11735],{"class":3414},[2915,24113,24114],{"class":3511}," # Konto-Ablaufdatum setzen\n",[2915,24116,24117,24119,24121,24124,24126],{"class":3402,"line":3515},[2915,24118,24068],{"class":3406},[2915,24120,6798],{"class":3410},[2915,24122,24123],{"class":3410}," 0",[2915,24125,11735],{"class":3414},[2915,24127,24128],{"class":3511}," # Passwort sofort ablaufen lassen\n",[54,24130,8676],{"id":24131},"beispiele-16",[11,24133,24135],{"id":24134},"eigenes-passwort-ändern-interaktiv","Eigenes Passwort ändern (interaktiv)",[16,24137,23832],{},[11,24139,24141],{"id":24140},"passwort-eines-benutzers-ändern-als-root","Passwort eines Benutzers ändern (als root)",[16,24143,24144],{},"passwd alice",[11,24146,24148],{"id":24147},"konto-sperren-root","Konto sperren (root)",[3392,24150,24152],{"className":3394,"code":24151,"language":3396,"meta":225,"style":225},"passwd -l alice\n\n# Konto entsperren\n\npasswd -u alice\n\n# Passwort sofort ablaufen lassen\n\npasswd -e alice\n\n# Passwortstatus anzeigen\n\npasswd -S alice\n\n# Minimale Gültigkeitsdauer setzen (7 Tage)\n\npasswd -n 7 alice\n\n# Maximale Gültigkeitsdauer setzen (90 Tage)\n\npasswd -x 90 alice\n\n# 14 Tage vorher warnen\n\npasswd -w 14 alice\n\n# 7 Tage nach Ablauf Konto deaktivieren\n\npasswd -i 7 alice\n\n# Passwort nicht-interaktiv setzen (sicher via chpasswd)\n\necho \"alice:neuespasswort\" | chpasswd\n\n",[3398,24153,24154,24163,24167,24172,24176,24184,24188,24193,24197,24205,24209,24214,24218,24227,24231,24236,24240,24251,24255,24260,24264,24275,24279,24284,24288,24299,24303,24308,24312,24322,24326,24331,24335],{"__ignoreMap":225},[2915,24155,24156,24158,24160],{"class":3402,"line":3403},[2915,24157,23832],{"class":3406},[2915,24159,9029],{"class":3410},[2915,24161,24162],{"class":3414}," alice\n",[2915,24164,24165],{"class":3402,"line":1117},[2915,24166,3506],{"emptyLinePlaceholder":3505},[2915,24168,24169],{"class":3402,"line":1125},[2915,24170,24171],{"class":3511},"# Konto entsperren\n",[2915,24173,24174],{"class":3402,"line":3515},[2915,24175,3506],{"emptyLinePlaceholder":3505},[2915,24177,24178,24180,24182],{"class":3402,"line":3520},[2915,24179,23832],{"class":3406},[2915,24181,22604],{"class":3410},[2915,24183,24162],{"class":3414},[2915,24185,24186],{"class":3402,"line":5070},[2915,24187,3506],{"emptyLinePlaceholder":3505},[2915,24189,24190],{"class":3402,"line":5075},[2915,24191,24192],{"class":3511},"# Passwort sofort ablaufen lassen\n",[2915,24194,24195],{"class":3402,"line":5093},[2915,24196,3506],{"emptyLinePlaceholder":3505},[2915,24198,24199,24201,24203],{"class":3402,"line":5098},[2915,24200,23832],{"class":3406},[2915,24202,19828],{"class":3410},[2915,24204,24162],{"class":3414},[2915,24206,24207],{"class":3402,"line":5207},[2915,24208,3506],{"emptyLinePlaceholder":3505},[2915,24210,24211],{"class":3402,"line":5212},[2915,24212,24213],{"class":3511},"# Passwortstatus anzeigen\n",[2915,24215,24216],{"class":3402,"line":5218},[2915,24217,3506],{"emptyLinePlaceholder":3505},[2915,24219,24220,24222,24225],{"class":3402,"line":5223},[2915,24221,23832],{"class":3406},[2915,24223,24224],{"class":3410}," -S",[2915,24226,24162],{"class":3414},[2915,24228,24229],{"class":3402,"line":5229},[2915,24230,3506],{"emptyLinePlaceholder":3505},[2915,24232,24233],{"class":3402,"line":5253},[2915,24234,24235],{"class":3511},"# Minimale Gültigkeitsdauer setzen (7 Tage)\n",[2915,24237,24238],{"class":3402,"line":5266},[2915,24239,3506],{"emptyLinePlaceholder":3505},[2915,24241,24242,24244,24246,24249],{"class":3402,"line":5721},[2915,24243,23832],{"class":3406},[2915,24245,8127],{"class":3410},[2915,24247,24248],{"class":3410}," 7",[2915,24250,24162],{"class":3414},[2915,24252,24253],{"class":3402,"line":9401},[2915,24254,3506],{"emptyLinePlaceholder":3505},[2915,24256,24257],{"class":3402,"line":9406},[2915,24258,24259],{"class":3511},"# Maximale Gültigkeitsdauer setzen (90 Tage)\n",[2915,24261,24262],{"class":3402,"line":9411},[2915,24263,3506],{"emptyLinePlaceholder":3505},[2915,24265,24266,24268,24271,24273],{"class":3402,"line":9416},[2915,24267,23832],{"class":3406},[2915,24269,24270],{"class":3410}," -x",[2915,24272,24095],{"class":3410},[2915,24274,24162],{"class":3414},[2915,24276,24277],{"class":3402,"line":9428},[2915,24278,3506],{"emptyLinePlaceholder":3505},[2915,24280,24281],{"class":3402,"line":9433},[2915,24282,24283],{"class":3511},"# 14 Tage vorher warnen\n",[2915,24285,24286],{"class":3402,"line":9454},[2915,24287,3506],{"emptyLinePlaceholder":3505},[2915,24289,24290,24292,24294,24297],{"class":3402,"line":9459},[2915,24291,23832],{"class":3406},[2915,24293,11742],{"class":3410},[2915,24295,24296],{"class":3410}," 14",[2915,24298,24162],{"class":3414},[2915,24300,24301],{"class":3402,"line":9464},[2915,24302,3506],{"emptyLinePlaceholder":3505},[2915,24304,24305],{"class":3402,"line":9469},[2915,24306,24307],{"class":3511},"# 7 Tage nach Ablauf Konto deaktivieren\n",[2915,24309,24310],{"class":3402,"line":9479},[2915,24311,3506],{"emptyLinePlaceholder":3505},[2915,24313,24314,24316,24318,24320],{"class":3402,"line":9484},[2915,24315,23832],{"class":3406},[2915,24317,7692],{"class":3410},[2915,24319,24248],{"class":3410},[2915,24321,24162],{"class":3414},[2915,24323,24324],{"class":3402,"line":9489},[2915,24325,3506],{"emptyLinePlaceholder":3505},[2915,24327,24328],{"class":3402,"line":9494},[2915,24329,24330],{"class":3511},"# Passwort nicht-interaktiv setzen (sicher via chpasswd)\n",[2915,24332,24333],{"class":3402,"line":9504},[2915,24334,3506],{"emptyLinePlaceholder":3505},[2915,24336,24337,24339,24342,24344],{"class":3402,"line":9509},[2915,24338,5059],{"class":3410},[2915,24340,24341],{"class":3414}," \"alice:neuespasswort\"",[2915,24343,7679],{"class":3533},[2915,24345,24346],{"class":3406}," chpasswd\n",[54,24348,11749],{"id":24349},"ausgabe-16",[11,24351,24144],{"id":24352},"passwd-alice",[16,24354,24355],{},"Neues Passwort:",[16,24357,24358],{},"Neues Passwort wiederholen:",[16,24360,24361],{},"passwd: Passwort erfolgreich aktualisiert",[11,24363,24365],{"id":24364},"passwd-s-alice","passwd -S alice",[16,24367,24368],{},"alice P 04\u002F29\u002F2026 7 90 14 7",[11,24370,24372],{"id":24371},"_7-tage-inaktivität-bis-deaktivierung","| | | | | +-- 7 Tage Inaktivität bis Deaktivierung",[11,24374,24376],{"id":24375},"_14-tage-warnung-vor-ablauf","| | | | +-- 14 Tage Warnung vor Ablauf",[11,24378,24380],{"id":24379},"_90-tage-max-gültigkeit","| | | +-- 90 Tage max. Gültigkeit",[11,24382,24384],{"id":24383},"_7-tage-mindestgültigkeit","| | +-- 7 Tage Mindestgültigkeit",[11,24386,24388],{"id":24387},"datum-der-letzten-änderung","| +-- Datum der letzten Änderung",[11,24390,24392],{"id":24391},"p-passwort-gesetzt","+-- P = Passwort gesetzt",[11,24394,24396],{"id":24395},"passwd-l-alice","passwd -l alice",[16,24398,24399],{},"passwd: Passwort für alice gesperrt.",[11,24401,24403],{"id":24402},"sudo-grep-alice-etcshadow-cut-d-f12","sudo grep alice \u002Fetc\u002Fshadow | cut -d: -f1,2",[16,24405,24406],{},"alice:!$6$hash... \u003C- ! vor dem Hash = gesperrt",[11,24408,9916],{"id":9916},[16,24410,24411,24413,24414,24416],{},[26,24412,11461],{}," Das Shell-Built-in ",[26,24415,9916],{}," hat zwei Hauptfunktionen:",[966,24418,24419,24431],{},[23,24420,24421,24424,24425,24427,24428,24430],{},[26,24422,24423],{},"Shell-Optionen setzen"," mit ",[26,24426,3523],{}," (aktivieren) oder ",[26,24429,13172],{}," (deaktivieren)",[23,24432,24433,2913,24436,7379,24438,24440],{},[26,24434,24435],{},"Positionsparameter",[26,24437,8638],{},[26,24439,8646],{},", ...) neu setzen",[16,24442,24443,24445,24446,24449],{},[26,24444,9916],{}," ist ein ",[26,24447,24448],{},"Built-in der Shell"," (bash, sh) – kein externes Programm. Es gilt für den aktuellen Shell-Prozess und alle daraus gestarteten Unterprozesse.",[16,24451,24452],{},[26,24453,6691],{},[16,24455,24456,24457,4850,24459],{},"set ",[2915,24458,11472],{},[2915,24460,24461],{},"ARGUMENTE",[3392,24463,24465],{"className":3394,"code":24464,"language":3396,"meta":225,"style":225},"set -o OPTIONSNAME \u003C- langer Optionsname aktivieren\nset +o OPTIONSNAME \u003C- Option deaktivieren\n\n",[3398,24466,24467,24489],{"__ignoreMap":225},[2915,24468,24469,24471,24473,24476,24478,24480,24483,24486],{"class":3402,"line":3403},[2915,24470,9916],{"class":3410},[2915,24472,17610],{"class":3410},[2915,24474,24475],{"class":3414}," OPTIONSNAME",[2915,24477,5657],{"class":3533},[2915,24479,3523],{"class":3414},[2915,24481,24482],{"class":3414}," langer",[2915,24484,24485],{"class":3414}," Optionsname",[2915,24487,24488],{"class":3414}," aktivieren\n",[2915,24490,24491,24493,24496,24498,24500,24502,24505],{"class":3402,"line":1117},[2915,24492,9916],{"class":3410},[2915,24494,24495],{"class":3414}," +o",[2915,24497,24475],{"class":3414},[2915,24499,5657],{"class":3533},[2915,24501,3523],{"class":3414},[2915,24503,24504],{"class":3414}," Option",[2915,24506,24507],{"class":3414}," deaktivieren\n",[16,24509,24510,24515,24516,4850,24521,24524,24525,4850,24530],{},[257,24511,24512],{},[26,24513,24514],{},"Merke:","***-***",[257,24517,24518],{},[26,24519,24520],{},"aktiviert",[257,24522,24523],{},"eine Option,"," ***+***",[257,24526,24527],{},[26,24528,24529],{},"deaktiviert",[257,24531,24532],{},"sie – das ist umgekehrt vom Intuitiven!",[54,24534,24536],{"id":24535},"wichtige-optionen-kurzform-langform","Wichtige Optionen (Kurzform \u002F Langform)",[645,24538,24539,24557],{},[648,24540,24541],{},[651,24542,24543,24548,24553],{},[654,24544,24545],{},[26,24546,24547],{},"Kurzform",[654,24549,24550],{},[26,24551,24552],{},"Langform (-o)",[654,24554,24555],{},[26,24556,5483],{},[670,24558,24559,24569,24579,24589,24599,24609,24622,24632,24642,24652,24662,24672,24682,24692,24702,24712],{},[651,24560,24561,24563,24566],{},[675,24562,7967],{},[675,24564,24565],{},"errexit",[675,24567,24568],{},"Skript sofort beenden wenn ein Befehl fehlschlägt (Exit-Code != 0)",[651,24570,24571,24573,24576],{},[675,24572,11559],{},[675,24574,24575],{},"nounset",[675,24577,24578],{},"Fehler bei nicht gesetzten Variablen statt leerem String",[651,24580,24581,24583,24586],{},[675,24582,16157],{},[675,24584,24585],{},"xtrace",[675,24587,24588],{},"Jeden Befehl vor Ausführung ausgeben (Debugging)",[651,24590,24591,24593,24596],{},[675,24592,7734],{},[675,24594,24595],{},"verbose",[675,24597,24598],{},"Jede gelesene Eingabezeile ausgeben (vor Substitution)",[651,24600,24601,24603,24606],{},[675,24602,7742],{},[675,24604,24605],{},"noexec",[675,24607,24608],{},"Befehle lesen und auf Syntaxfehler prüfen, aber nicht ausführen",[651,24610,24611,24613,24616],{},[675,24612,9329],{},[675,24614,24615],{},"noglob",[675,24617,24618,24619,24621],{},"Glob-Expansion deaktivieren (*, ?, ",[2915,24620,6528],{}," werden nicht expandiert)",[651,24623,24624,24626,24629],{},[675,24625,22390],{},[675,24627,24628],{},"noclobber",[675,24630,24631],{},"Vorhandene Dateien nicht mit > überschreiben",[651,24633,24634,24636,24639],{},[675,24635,22331],{},[675,24637,24638],{},"notify",[675,24640,24641],{},"Status beendeter Hintergrundprozesse sofort melden",[651,24643,24644,24646,24649],{},[675,24645,12572],{},[675,24647,24648],{},"hashall",[675,24650,24651],{},"Befehlspfade cachen (Standard: aktiviert)",[651,24653,24654,24656,24659],{},[675,24655,14657],{},[675,24657,24658],{},"monitor",[675,24660,24661],{},"Job-Control aktivieren (Standard in interaktiver Shell)",[651,24663,24664,24666,24669],{},[675,24665,21196],{},[675,24667,24668],{},"onecmd",[675,24670,24671],{},"Nach einem Befehl beenden",[651,24673,24674,24676,24679],{},[675,24675,21199],{},[675,24677,24678],{},"pipefail",[675,24680,24681],{},"Pipe schlägt fehl wenn irgendein Befehl in der Pipe fehlschlägt (kein Kurzform!)",[651,24683,24684,24686,24689],{},[675,24685,21199],{},[675,24687,24688],{},"nocaseglob",[675,24690,24691],{},"Glob-Matching ohne Groß-\u002FKleinschreibung",[651,24693,24694,24696,24699],{},[675,24695,21199],{},[675,24697,24698],{},"nullglob",[675,24700,24701],{},"Nicht-passende Globs werden zu leerem String",[651,24703,24704,24706,24709],{},[675,24705,21199],{},[675,24707,24708],{},"extglob",[675,24710,24711],{},"Erweiterte Glob-Muster aktivieren (*(...), +(...), etc.)",[651,24713,24714,24716,24719],{},[675,24715,21199],{},[675,24717,24718],{},"errtrace",[675,24720,24721],{},"-e gilt auch innerhalb von Funktionen",[54,24723,24725],{"id":24724},"die-sichere-skript-präambel","Die \"Sichere Skript-Präambel\"",[3392,24727,24729],{"className":3394,"code":24728,"language":3396,"meta":225,"style":225},"#!\u002Fbin\u002Fbash\n\nset -euo pipefail\n\n",[3398,24730,24731,24735,24739],{"__ignoreMap":225},[2915,24732,24733],{"class":3402,"line":3403},[2915,24734,5125],{"class":3511},[2915,24736,24737],{"class":3402,"line":1117},[2915,24738,3506],{"emptyLinePlaceholder":3505},[2915,24740,24741,24743,24745],{"class":3402,"line":1125},[2915,24742,9916],{"class":3410},[2915,24744,9919],{"class":3410},[2915,24746,9922],{"class":3414},[16,24748,24749,24750,24753],{},"Dies sind die ",[26,24751,24752],{},"drei wichtigsten Optionen"," für robuste Shell-Skripte:",[645,24755,24756,24769],{},[648,24757,24758],{},[651,24759,24760,24764],{},[654,24761,24762],{},[26,24763,7715],{},[654,24765,24766],{},[26,24767,24768],{},"Was sie verhindert",[670,24770,24771,24778,24785],{},[651,24772,24773,24775],{},[675,24774,7967],{},[675,24776,24777],{},"Skript läuft weiter obwohl ein Befehl fehlgeschlagen ist",[651,24779,24780,24782],{},[675,24781,11559],{},[675,24783,24784],{},"Eine nicht gesetzte Variable wird stillschweigend als leer behandelt",[651,24786,24787,24789],{},[675,24788,24678],{},[675,24790,24791],{},"Fehler in der Mitte einer Pipe wird ignoriert",[54,24793,24795],{"id":24794},"positionsparameter-setzen","Positionsparameter setzen",[16,24797,24798],{},"set -- alice bob charlie",[3392,24800,24802],{"className":3394,"code":24801,"language":3396,"meta":225,"style":225},"echo $1 # alice\n\necho $2 # bob\n\necho $3 # charlie\n\necho $@ # alice bob charlie\n\necho $# # 3 (Anzahl)\n\n# \"--\" löst das Problem wenn Argumente mit - beginnen\n\nset -- -n -v datei.txt\n\necho $1 # -n (ohne -- würde das als Option interpretiert)\n\n",[3398,24803,24804,24813,24817,24827,24831,24841,24845,24855,24859,24869,24873,24878,24882,24895,24899],{"__ignoreMap":225},[2915,24805,24806,24808,24810],{"class":3402,"line":3403},[2915,24807,5059],{"class":3410},[2915,24809,5825],{"class":5824},[2915,24811,24812],{"class":3511}," # alice\n",[2915,24814,24815],{"class":3402,"line":1117},[2915,24816,3506],{"emptyLinePlaceholder":3505},[2915,24818,24819,24821,24824],{"class":3402,"line":1125},[2915,24820,5059],{"class":3410},[2915,24822,24823],{"class":5824}," $2",[2915,24825,24826],{"class":3511}," # bob\n",[2915,24828,24829],{"class":3402,"line":3515},[2915,24830,3506],{"emptyLinePlaceholder":3505},[2915,24832,24833,24835,24838],{"class":3402,"line":3520},[2915,24834,5059],{"class":3410},[2915,24836,24837],{"class":5824}," $3",[2915,24839,24840],{"class":3511}," # charlie\n",[2915,24842,24843],{"class":3402,"line":5070},[2915,24844,3506],{"emptyLinePlaceholder":3505},[2915,24846,24847,24849,24852],{"class":3402,"line":5075},[2915,24848,5059],{"class":3410},[2915,24850,24851],{"class":5824}," $@",[2915,24853,24854],{"class":3511}," # alice bob charlie\n",[2915,24856,24857],{"class":3402,"line":5093},[2915,24858,3506],{"emptyLinePlaceholder":3505},[2915,24860,24861,24863,24866],{"class":3402,"line":5098},[2915,24862,5059],{"class":3410},[2915,24864,24865],{"class":3410}," $#",[2915,24867,24868],{"class":3511}," # 3 (Anzahl)\n",[2915,24870,24871],{"class":3402,"line":5207},[2915,24872,3506],{"emptyLinePlaceholder":3505},[2915,24874,24875],{"class":3402,"line":5212},[2915,24876,24877],{"class":3511},"# \"--\" löst das Problem wenn Argumente mit - beginnen\n",[2915,24879,24880],{"class":3402,"line":5218},[2915,24881,3506],{"emptyLinePlaceholder":3505},[2915,24883,24884,24886,24889,24891,24893],{"class":3402,"line":5223},[2915,24885,9916],{"class":3410},[2915,24887,24888],{"class":3410}," --",[2915,24890,8127],{"class":3410},[2915,24892,16455],{"class":3410},[2915,24894,7698],{"class":3414},[2915,24896,24897],{"class":3402,"line":5229},[2915,24898,3506],{"emptyLinePlaceholder":3505},[2915,24900,24901,24903,24905],{"class":3402,"line":5253},[2915,24902,5059],{"class":3410},[2915,24904,5825],{"class":5824},[2915,24906,24907],{"class":3511}," # -n (ohne -- würde das als Option interpretiert)\n",[16,24909,24910],{},[26,24911,24912],{},"Aktuelle Einstellungen anzeigen",[11,24914,24916],{"id":24915},"alle-gesetzten-optionen-anzeigen","Alle gesetzten Optionen anzeigen",[3392,24918,24920],{"className":3394,"code":24919,"language":3396,"meta":225,"style":225},"set -o\n\n",[3398,24921,24922],{"__ignoreMap":225},[2915,24923,24924,24926],{"class":3402,"line":3403},[2915,24925,9916],{"class":3410},[2915,24927,24928],{"class":3410}," -o\n",[11,24930,24932],{"id":24931},"alle-variablen-und-funktionen-ausgeben","Alle Variablen und Funktionen ausgeben",[16,24934,9916],{},[11,24936,24938],{"id":24937},"aktive-optionen-als-buchstabenstring-prüfen","Aktive Optionen als Buchstabenstring prüfen",[3392,24940,24942],{"className":3394,"code":24941,"language":3396,"meta":225,"style":225},"echo $-\n\n# Prüfen ob eine bestimmte Option aktiv ist\n\n[[ $- == e ]] && echo \"errexit aktiv\"\n\n",[3398,24943,24944,24951,24955,24960,24964],{"__ignoreMap":225},[2915,24945,24946,24948],{"class":3402,"line":3403},[2915,24947,5059],{"class":3410},[2915,24949,24950],{"class":3410}," $-\n",[2915,24952,24953],{"class":3402,"line":1117},[2915,24954,3506],{"emptyLinePlaceholder":3505},[2915,24956,24957],{"class":3402,"line":1125},[2915,24958,24959],{"class":3511},"# Prüfen ob eine bestimmte Option aktiv ist\n",[2915,24961,24962],{"class":3402,"line":3515},[2915,24963,3506],{"emptyLinePlaceholder":3505},[2915,24965,24966,24968,24971,24973,24976,24978],{"class":3402,"line":3520},[2915,24967,10155],{"class":3529},[2915,24969,24970],{"class":3410},"$-",[2915,24972,10246],{"class":3533},[2915,24974,24975],{"class":3529}," e ]] && ",[2915,24977,5059],{"class":3410},[2915,24979,24980],{"class":3414}," \"errexit aktiv\"\n",[54,24982,8676],{"id":24983},"beispiele-17",[11,24985,24987],{"id":24986},"skript-sofort-bei-fehler-beenden","Skript sofort bei Fehler beenden",[3392,24989,24991],{"className":3394,"code":24990,"language":3396,"meta":225,"style":225},"set -e\n\n# Fehler bei ungesetzten Variablen\n\nset -u\n\n# Pipe-Fehler aktivieren\n\nset -o pipefail\n\n# Debugging: jeden Befehl vor Ausführung anzeigen\n\nset -x\n\nls \u002Ftmp\n\nset +x # Debugging wieder deaktivieren\n\n# Syntaxcheck ohne Ausführung\n\nset -n\n\n# Alle drei auf einmal setzen (empfohlene Praxis)\n\nset -euo pipefail\n\n# Glob-Expansion deaktivieren (* als Literal behandeln)\n\nset -f\n\necho .txt # gibt \".txt\" aus – keine Dateinamen\n\nset +f\n\necho *.txt # gibt Dateinamen aus\n\n# Überschreiben mit > verhindern\n\nset -C\n\necho \"test\" > bereits_vorhanden.txt # Fehler: Datei existiert\n\nset +C\n\necho \"test\" > bereits_vorhanden.txt # Erfolgreich\n\n# Positionsparameter neu setzen\n\nset -- eins zwei drei\n\necho \"Anzahl: $#\" # 3\n\necho \"Alle: $@\" # eins zwei drei\n\n# Fehler für einen einzelnen Befehl erlauben (|| true verhindert -e-Abbruch)\n\nbefehl_der_fehlschlagen_kann || true\n\n# Alternative: Fehlerbehandlung mit if (ignoriert -e automatisch)\n\nif ! befehl_der_fehlschlagen_kann; then\n\necho \"Fehler aufgetreten, aber Skript läuft weiter\"\n\nfi\n\n",[3398,24992,24993,25000,25004,25009,25013,25019,25023,25028,25032,25040,25044,25049,25053,25060,25064,25070,25074,25083,25087,25092,25096,25102,25106,25111,25115,25123,25127,25132,25136,25142,25146,25156,25160,25167,25171,25183,25187,25192,25196,25203,25207,25221,25225,25232,25236,25249,25253,25258,25262,25277,25281,25295,25299,25313,25317,25322,25326,25336,25340,25345,25349,25362,25366,25373,25377],{"__ignoreMap":225},[2915,24994,24995,24997],{"class":3402,"line":3403},[2915,24996,9916],{"class":3410},[2915,24998,24999],{"class":3410}," -e\n",[2915,25001,25002],{"class":3402,"line":1117},[2915,25003,3506],{"emptyLinePlaceholder":3505},[2915,25005,25006],{"class":3402,"line":1125},[2915,25007,25008],{"class":3511},"# Fehler bei ungesetzten Variablen\n",[2915,25010,25011],{"class":3402,"line":3515},[2915,25012,3506],{"emptyLinePlaceholder":3505},[2915,25014,25015,25017],{"class":3402,"line":3520},[2915,25016,9916],{"class":3410},[2915,25018,11642],{"class":3410},[2915,25020,25021],{"class":3402,"line":5070},[2915,25022,3506],{"emptyLinePlaceholder":3505},[2915,25024,25025],{"class":3402,"line":5075},[2915,25026,25027],{"class":3511},"# Pipe-Fehler aktivieren\n",[2915,25029,25030],{"class":3402,"line":5093},[2915,25031,3506],{"emptyLinePlaceholder":3505},[2915,25033,25034,25036,25038],{"class":3402,"line":5098},[2915,25035,9916],{"class":3410},[2915,25037,17610],{"class":3410},[2915,25039,9922],{"class":3414},[2915,25041,25042],{"class":3402,"line":5207},[2915,25043,3506],{"emptyLinePlaceholder":3505},[2915,25045,25046],{"class":3402,"line":5212},[2915,25047,25048],{"class":3511},"# Debugging: jeden Befehl vor Ausführung anzeigen\n",[2915,25050,25051],{"class":3402,"line":5218},[2915,25052,3506],{"emptyLinePlaceholder":3505},[2915,25054,25055,25057],{"class":3402,"line":5223},[2915,25056,9916],{"class":3410},[2915,25058,25059],{"class":3410}," -x\n",[2915,25061,25062],{"class":3402,"line":5229},[2915,25063,3506],{"emptyLinePlaceholder":3505},[2915,25065,25066,25068],{"class":3402,"line":5253},[2915,25067,12214],{"class":3406},[2915,25069,14286],{"class":3414},[2915,25071,25072],{"class":3402,"line":5266},[2915,25073,3506],{"emptyLinePlaceholder":3505},[2915,25075,25076,25078,25080],{"class":3402,"line":5721},[2915,25077,9916],{"class":3410},[2915,25079,17705],{"class":3414},[2915,25081,25082],{"class":3511}," # Debugging wieder deaktivieren\n",[2915,25084,25085],{"class":3402,"line":9401},[2915,25086,3506],{"emptyLinePlaceholder":3505},[2915,25088,25089],{"class":3402,"line":9406},[2915,25090,25091],{"class":3511},"# Syntaxcheck ohne Ausführung\n",[2915,25093,25094],{"class":3402,"line":9411},[2915,25095,3506],{"emptyLinePlaceholder":3505},[2915,25097,25098,25100],{"class":3402,"line":9416},[2915,25099,9916],{"class":3410},[2915,25101,23788],{"class":3410},[2915,25103,25104],{"class":3402,"line":9428},[2915,25105,3506],{"emptyLinePlaceholder":3505},[2915,25107,25108],{"class":3402,"line":9433},[2915,25109,25110],{"class":3511},"# Alle drei auf einmal setzen (empfohlene Praxis)\n",[2915,25112,25113],{"class":3402,"line":9454},[2915,25114,3506],{"emptyLinePlaceholder":3505},[2915,25116,25117,25119,25121],{"class":3402,"line":9459},[2915,25118,9916],{"class":3410},[2915,25120,9919],{"class":3410},[2915,25122,9922],{"class":3414},[2915,25124,25125],{"class":3402,"line":9464},[2915,25126,3506],{"emptyLinePlaceholder":3505},[2915,25128,25129],{"class":3402,"line":9469},[2915,25130,25131],{"class":3511},"# Glob-Expansion deaktivieren (* als Literal behandeln)\n",[2915,25133,25134],{"class":3402,"line":9479},[2915,25135,3506],{"emptyLinePlaceholder":3505},[2915,25137,25138,25140],{"class":3402,"line":9484},[2915,25139,9916],{"class":3410},[2915,25141,17782],{"class":3410},[2915,25143,25144],{"class":3402,"line":9489},[2915,25145,3506],{"emptyLinePlaceholder":3505},[2915,25147,25148,25150,25153],{"class":3402,"line":9494},[2915,25149,5059],{"class":3410},[2915,25151,25152],{"class":3414}," .txt",[2915,25154,25155],{"class":3511}," # gibt \".txt\" aus – keine Dateinamen\n",[2915,25157,25158],{"class":3402,"line":9504},[2915,25159,3506],{"emptyLinePlaceholder":3505},[2915,25161,25162,25164],{"class":3402,"line":9509},[2915,25163,9916],{"class":3410},[2915,25165,25166],{"class":3414}," +f\n",[2915,25168,25169],{"class":3402,"line":9514},[2915,25170,3506],{"emptyLinePlaceholder":3505},[2915,25172,25173,25175,25177,25180],{"class":3402,"line":9519},[2915,25174,5059],{"class":3410},[2915,25176,5828],{"class":3410},[2915,25178,25179],{"class":3414},".txt",[2915,25181,25182],{"class":3511}," # gibt Dateinamen aus\n",[2915,25184,25185],{"class":3402,"line":9524},[2915,25186,3506],{"emptyLinePlaceholder":3505},[2915,25188,25189],{"class":3402,"line":9529},[2915,25190,25191],{"class":3511},"# Überschreiben mit > verhindern\n",[2915,25193,25194],{"class":3402,"line":9534},[2915,25195,3506],{"emptyLinePlaceholder":3505},[2915,25197,25198,25200],{"class":3402,"line":9539},[2915,25199,9916],{"class":3410},[2915,25201,25202],{"class":3410}," -C\n",[2915,25204,25205],{"class":3402,"line":9552},[2915,25206,3506],{"emptyLinePlaceholder":3505},[2915,25208,25209,25211,25213,25215,25218],{"class":3402,"line":9557},[2915,25210,5059],{"class":3410},[2915,25212,7695],{"class":3414},[2915,25214,23262],{"class":3533},[2915,25216,25217],{"class":3414}," bereits_vorhanden.txt",[2915,25219,25220],{"class":3511}," # Fehler: Datei existiert\n",[2915,25222,25223],{"class":3402,"line":9570},[2915,25224,3506],{"emptyLinePlaceholder":3505},[2915,25226,25227,25229],{"class":3402,"line":9575},[2915,25228,9916],{"class":3410},[2915,25230,25231],{"class":3414}," +C\n",[2915,25233,25234],{"class":3402,"line":9588},[2915,25235,3506],{"emptyLinePlaceholder":3505},[2915,25237,25238,25240,25242,25244,25246],{"class":3402,"line":9593},[2915,25239,5059],{"class":3410},[2915,25241,7695],{"class":3414},[2915,25243,23262],{"class":3533},[2915,25245,25217],{"class":3414},[2915,25247,25248],{"class":3511}," # Erfolgreich\n",[2915,25250,25251],{"class":3402,"line":9598},[2915,25252,3506],{"emptyLinePlaceholder":3505},[2915,25254,25255],{"class":3402,"line":9603},[2915,25256,25257],{"class":3511},"# Positionsparameter neu setzen\n",[2915,25259,25260],{"class":3402,"line":9619},[2915,25261,3506],{"emptyLinePlaceholder":3505},[2915,25263,25264,25266,25268,25271,25274],{"class":3402,"line":9624},[2915,25265,9916],{"class":3410},[2915,25267,24888],{"class":3410},[2915,25269,25270],{"class":3414}," eins",[2915,25272,25273],{"class":3414}," zwei",[2915,25275,25276],{"class":3414}," drei\n",[2915,25278,25279],{"class":3402,"line":9629},[2915,25280,3506],{"emptyLinePlaceholder":3505},[2915,25282,25283,25285,25288,25290,25292],{"class":3402,"line":9634},[2915,25284,5059],{"class":3410},[2915,25286,25287],{"class":3414}," \"Anzahl: ",[2915,25289,4891],{"class":3410},[2915,25291,4957],{"class":3414},[2915,25293,25294],{"class":3511}," # 3\n",[2915,25296,25297],{"class":3402,"line":9642},[2915,25298,3506],{"emptyLinePlaceholder":3505},[2915,25300,25301,25303,25306,25308,25310],{"class":3402,"line":9647},[2915,25302,5059],{"class":3410},[2915,25304,25305],{"class":3414}," \"Alle: ",[2915,25307,10222],{"class":3410},[2915,25309,4957],{"class":3414},[2915,25311,25312],{"class":3511}," # eins zwei drei\n",[2915,25314,25315],{"class":3402,"line":9656},[2915,25316,3506],{"emptyLinePlaceholder":3505},[2915,25318,25319],{"class":3402,"line":9661},[2915,25320,25321],{"class":3511},"# Fehler für einen einzelnen Befehl erlauben (|| true verhindert -e-Abbruch)\n",[2915,25323,25324],{"class":3402,"line":9666},[2915,25325,3506],{"emptyLinePlaceholder":3505},[2915,25327,25328,25331,25333],{"class":3402,"line":9671},[2915,25329,25330],{"class":3406},"befehl_der_fehlschlagen_kann",[2915,25332,22827],{"class":3533},[2915,25334,25335],{"class":3410}," true\n",[2915,25337,25338],{"class":3402,"line":9685},[2915,25339,3506],{"emptyLinePlaceholder":3505},[2915,25341,25342],{"class":3402,"line":9690},[2915,25343,25344],{"class":3511},"# Alternative: Fehlerbehandlung mit if (ignoriert -e automatisch)\n",[2915,25346,25347],{"class":3402,"line":9711},[2915,25348,3506],{"emptyLinePlaceholder":3505},[2915,25350,25351,25353,25355,25358,25360],{"class":3402,"line":9716},[2915,25352,4951],{"class":3533},[2915,25354,10332],{"class":3533},[2915,25356,25357],{"class":3406}," befehl_der_fehlschlagen_kann",[2915,25359,5248],{"class":3529},[2915,25361,4979],{"class":3533},[2915,25363,25364],{"class":3402,"line":9721},[2915,25365,3506],{"emptyLinePlaceholder":3505},[2915,25367,25368,25370],{"class":3402,"line":9726},[2915,25369,5059],{"class":3410},[2915,25371,25372],{"class":3414}," \"Fehler aufgetreten, aber Skript läuft weiter\"\n",[2915,25374,25375],{"class":3402,"line":9734},[2915,25376,3506],{"emptyLinePlaceholder":3505},[2915,25378,25379],{"class":3402,"line":9739},[2915,25380,4997],{"class":3533},[54,25382,11749],{"id":25383},"ausgabe-17",[11,25385,25387],{"id":25386},"set-x-debugging-aktiv","set -x (Debugging aktiv)",[11,25389,25391],{"id":25390},"jeder-befehl-wird-mit-am-anfang-gezeigt","Jeder Befehl wird mit + am Anfang gezeigt",[3392,25393,25395],{"className":3394,"code":25394,"language":3396,"meta":225,"style":225},"ls \u002Ftmp\n\n",[3398,25396,25397],{"__ignoreMap":225},[2915,25398,25399,25401],{"class":3402,"line":3403},[2915,25400,12214],{"class":3406},[2915,25402,14286],{"class":3414},[20,25404,25405],{},[23,25406,25407],{},"ls \u002Ftmp",[16,25409,25410],{},"datei1.txt datei2.txt",[11,25412,25414],{"id":25413},"set-o-alle-optionen-anzeigen","set -o (alle Optionen anzeigen)",[16,25416,25417],{},"allexport off",[16,25419,25420],{},"braceexpand on",[16,25422,25423],{},"errexit off",[16,25425,25426],{},"errtrace off",[16,25428,25429],{},"functrace off",[16,25431,25432],{},"hashall on",[16,25434,25435],{},"histexpand on",[16,25437,25438],{},"history on",[16,25440,25441],{},"ignoreeof off",[16,25443,25444],{},"interactive-comments on",[16,25446,25447],{},"keyword off",[16,25449,25450],{},"monitor on",[16,25452,25453],{},"noclobber off",[16,25455,25456],{},"noexec off",[16,25458,25459],{},"noglob off",[16,25461,25462],{},"nolog off",[16,25464,25465],{},"notify off",[16,25467,25468],{},"nounset off",[16,25470,25471],{},"onecmd off",[16,25473,25474],{},"physical off",[16,25476,25477],{},"pipefail off",[16,25479,25480],{},"posix off",[16,25482,25483],{},"privileged off",[16,25485,25486],{},"verbose off",[16,25488,25489],{},"vi off",[16,25491,25492],{},"xtrace off",[11,25494,25495],{"id":5059},"echo $-",[16,25497,25498],{},"himBHs \u003C- aktive Optionen als Buchstaben",[54,25500,25502],{"id":25501},"praxisbeispiel-robustes-backup-skript","Praxisbeispiel: Robustes Backup-Skript",[3392,25504,25506],{"className":3394,"code":25505,"language":3396,"meta":225,"style":225},"#!\u002Fbin\u002Fbash\n\nset -euo pipefail # Sicher und robust\n\nQUELLE=\"\u002Fhome\u002Fmatta\"\n\nZIEL=\"\u002Fbackup\u002Fmatta\"\n\necho \"Sicherung von $QUELLE nach $ZIEL\"\n\n# Ohne -e würde das Skript weiterlaufen auch wenn mkdir fehlschlägt\n\nmkdir -p \"$ZIEL\"\n\n# Ohne pipefail würde ein Fehler in tar ignoriert wenn gzip funktioniert\n\ntar czf - \"$QUELLE\" | gzip > \"$ZIEL\u002Fbackup_$(date +%F).tar.gz\"\n\necho \"Fertig!\"\n\nWichtig:set -e hat Ausnahmen – Befehle in if-Bedingungen, while-Tests sowie hinter || oder &&* lösen keinen Exit aus, da ihr Fehlschlag dort erwartet wird.*\n\n# rsync\n\n",[3398,25507,25508,25512,25516,25528,25532,25542,25546,25556,25560,25578,25582,25587,25591,25603,25607,25612,25616,25649,25653,25660,25664,25713,25717],{"__ignoreMap":225},[2915,25509,25510],{"class":3402,"line":3403},[2915,25511,5125],{"class":3511},[2915,25513,25514],{"class":3402,"line":1117},[2915,25515,3506],{"emptyLinePlaceholder":3505},[2915,25517,25518,25520,25522,25525],{"class":3402,"line":1125},[2915,25519,9916],{"class":3410},[2915,25521,9919],{"class":3410},[2915,25523,25524],{"class":3414}," pipefail",[2915,25526,25527],{"class":3511}," # Sicher und robust\n",[2915,25529,25530],{"class":3402,"line":3515},[2915,25531,3506],{"emptyLinePlaceholder":3505},[2915,25533,25534,25537,25539],{"class":3402,"line":3520},[2915,25535,25536],{"class":3529},"QUELLE",[2915,25538,5137],{"class":3533},[2915,25540,25541],{"class":3414},"\"\u002Fhome\u002Fmatta\"\n",[2915,25543,25544],{"class":3402,"line":5070},[2915,25545,3506],{"emptyLinePlaceholder":3505},[2915,25547,25548,25551,25553],{"class":3402,"line":5075},[2915,25549,25550],{"class":3529},"ZIEL",[2915,25552,5137],{"class":3533},[2915,25554,25555],{"class":3414},"\"\u002Fbackup\u002Fmatta\"\n",[2915,25557,25558],{"class":3402,"line":5093},[2915,25559,3506],{"emptyLinePlaceholder":3505},[2915,25561,25562,25564,25567,25570,25573,25576],{"class":3402,"line":5098},[2915,25563,5059],{"class":3410},[2915,25565,25566],{"class":3414}," \"Sicherung von ",[2915,25568,25569],{"class":3529},"$QUELLE",[2915,25571,25572],{"class":3414}," nach ",[2915,25574,25575],{"class":3529},"$ZIEL",[2915,25577,5204],{"class":3414},[2915,25579,25580],{"class":3402,"line":5207},[2915,25581,3506],{"emptyLinePlaceholder":3505},[2915,25583,25584],{"class":3402,"line":5212},[2915,25585,25586],{"class":3511},"# Ohne -e würde das Skript weiterlaufen auch wenn mkdir fehlschlägt\n",[2915,25588,25589],{"class":3402,"line":5218},[2915,25590,3506],{"emptyLinePlaceholder":3505},[2915,25592,25593,25595,25597,25599,25601],{"class":3402,"line":5223},[2915,25594,5690],{"class":3406},[2915,25596,6956],{"class":3410},[2915,25598,4968],{"class":3414},[2915,25600,25575],{"class":3529},[2915,25602,5204],{"class":3414},[2915,25604,25605],{"class":3402,"line":5229},[2915,25606,3506],{"emptyLinePlaceholder":3505},[2915,25608,25609],{"class":3402,"line":5253},[2915,25610,25611],{"class":3511},"# Ohne pipefail würde ein Fehler in tar ignoriert wenn gzip funktioniert\n",[2915,25613,25614],{"class":3402,"line":5266},[2915,25615,3506],{"emptyLinePlaceholder":3505},[2915,25617,25618,25620,25623,25625,25627,25629,25631,25633,25635,25637,25639,25641,25644,25646],{"class":3402,"line":5721},[2915,25619,10346],{"class":3406},[2915,25621,25622],{"class":3414}," czf",[2915,25624,3530],{"class":3414},[2915,25626,4968],{"class":3414},[2915,25628,25569],{"class":3529},[2915,25630,4957],{"class":3414},[2915,25632,7679],{"class":3533},[2915,25634,17737],{"class":3406},[2915,25636,23262],{"class":3533},[2915,25638,4968],{"class":3414},[2915,25640,25575],{"class":3529},[2915,25642,25643],{"class":3414},"\u002Fbackup_$(",[2915,25645,10041],{"class":3406},[2915,25647,25648],{"class":3414}," +%F).tar.gz\"\n",[2915,25650,25651],{"class":3402,"line":9401},[2915,25652,3506],{"emptyLinePlaceholder":3505},[2915,25654,25655,25657],{"class":3402,"line":9406},[2915,25656,5059],{"class":3410},[2915,25658,25659],{"class":3414}," \"Fertig!\"\n",[2915,25661,25662],{"class":3402,"line":9411},[2915,25663,3506],{"emptyLinePlaceholder":3505},[2915,25665,25666,25669,25671,25674,25677,25680,25683,25685,25688,25691,25694,25697,25699,25702,25705,25707,25710],{"class":3402,"line":9416},[2915,25667,25668],{"class":3406},"Wichtig:set",[2915,25670,19828],{"class":3410},[2915,25672,25673],{"class":3414}," hat",[2915,25675,25676],{"class":3414}," Ausnahmen",[2915,25678,25679],{"class":3414}," –",[2915,25681,25682],{"class":3414}," Befehle",[2915,25684,15061],{"class":3414},[2915,25686,25687],{"class":3414}," if-Bedingungen,",[2915,25689,25690],{"class":3414}," while-Tests",[2915,25692,25693],{"class":3414}," sowie",[2915,25695,25696],{"class":3414}," hinter",[2915,25698,22827],{"class":3533},[2915,25700,25701],{"class":3406}," oder",[2915,25703,25704],{"class":3529}," &&",[2915,25706,5078],{"class":3533},[2915,25708,25709],{"class":3529}," lösen keinen Exit aus, da ihr Fehlschlag dort erwartet wird.",[2915,25711,25712],{"class":3533},"*\n",[2915,25714,25715],{"class":3402,"line":9428},[2915,25716,3506],{"emptyLinePlaceholder":3505},[2915,25718,25719],{"class":3402,"line":9433},[2915,25720,25721],{"class":3511},"# rsync\n",[16,25723,25724,25726,25727,25730],{},[26,25725,11461],{}," rsync (Remote Sync) synchronisiert Dateien und Verzeichnisse lokal oder über Netzwerk. Es überträgt dank ",[26,25728,25729],{},"Delta-Transfer-Algorithmus"," nur die tatsächlich geänderten Teile einer Datei – extrem schnell und bandbreitenschonend.",[16,25732,25733,25735,25736,25738],{},[26,25734,6691],{}," rsync ",[2915,25737,11472],{}," QUELLE ZIEL",[54,25740,25742],{"id":25741},"wie-rsync-intern-funktioniert","Wie rsync intern funktioniert",[966,25744,25745,25748,25751,25754,25757,25760],{},[23,25746,25747],{},"Zieldatei → Aufteilung in gleich große Blöcke",[23,25749,25750],{},"Für jeden Block: schwache Prüfsumme (rolling checksum) + starke Prüfsumme (MD5)",[23,25752,25753],{},"Prüfsummen → Sender",[23,25755,25756],{},"Sender gleicht Quelldatei mit den Prüfsummen ab",[23,25758,25759],{},"Nur NEUE \u002F GEÄNDERTE Blöcke werden übertragen",[23,25761,25762],{},"Zieldatei wird aus alten + neuen Blöcken zusammengesetzt",[16,25764,25765],{},"Ergebnis: Statt 500 MB werden vielleicht nur 3 KB übertragen.",[54,25767,25769],{"id":25768},"alle-wichtigen-optionen","Alle wichtigen Optionen",[645,25771,25772,25788],{},[648,25773,25774],{},[651,25775,25776,25780,25784],{},[654,25777,25778],{},[26,25779,7715],{},[654,25781,25782],{},[26,25783,11548],{},[654,25785,25786],{},[26,25787,5483],{},[670,25789,25790,25800,25809,25819,25829,25839,25848,25858,25868,25878,25888,25897,25907,25917,25926,25936,25946,25957,25966,25976,25986,25996,26006,26016,26026,26036,26046,26056,26066,26076,26086,26096,26106,26116,26126,26136,26146,26156,26166,26176,26185,26195,26205,26215],{},[651,25791,25792,25794,25797],{},[675,25793,21155],{},[675,25795,25796],{},"--archive",[675,25798,25799],{},"Archivmodus = -rlptgoD zusammengefasst (empfohlen)",[651,25801,25802,25804,25806],{},[675,25803,4853],{},[675,25805,16016],{},[675,25807,25808],{},"Verzeichnisse rekursiv übertragen",[651,25810,25811,25813,25816],{},[675,25812,7757],{},[675,25814,25815],{},"--links",[675,25817,25818],{},"Symlinks als Symlinks übertragen",[651,25820,25821,25823,25826],{},[675,25822,12028],{},[675,25824,25825],{},"--perms",[675,25827,25828],{},"Berechtigungen erhalten",[651,25830,25831,25833,25836],{},[675,25832,21196],{},[675,25834,25835],{},"--times",[675,25837,25838],{},"Zeitstempel erhalten",[651,25840,25841,25843,25845],{},[675,25842,11570],{},[675,25844,11573],{},[675,25846,25847],{},"Gruppeninfos erhalten",[651,25849,25850,25852,25855],{},[675,25851,7797],{},[675,25853,25854],{},"--owner",[675,25856,25857],{},"Eigentümer erhalten (nur root)",[651,25859,25860,25863,25865],{},[675,25861,25862],{},"-D",[675,25864],{},[675,25866,25867],{},"Gerätedateien + Sonderdateien erhalten",[651,25869,25870,25872,25875],{},[675,25871,7734],{},[675,25873,25874],{},"--verbose",[675,25876,25877],{},"Ausführliche Ausgabe",[651,25879,25880,25883,25885],{},[675,25881,25882],{},"-vv",[675,25884],{},[675,25886,25887],{},"Sehr ausführliche Ausgabe",[651,25889,25890,25892,25894],{},[675,25891,15165],{},[675,25893,16192],{},[675,25895,25896],{},"Keine Ausgabe außer Fehlern",[651,25898,25899,25901,25904],{},[675,25900,7742],{},[675,25902,25903],{},"--dry-run",[675,25905,25906],{},"Simulation – zeigt was passieren würde, ändert nichts",[651,25908,25909,25911,25914],{},[675,25910,19159],{},[675,25912,25913],{},"--compress",[675,25915,25916],{},"Daten vor Übertragung komprimieren",[651,25918,25919,25921,25923],{},[675,25920,12604],{},[675,25922],{},[675,25924,25925],{},"--partial --progress kombiniert: Fortschritt + Wiederaufnahme",[651,25927,25928,25931,25933],{},[675,25929,25930],{},"--progress",[675,25932],{},[675,25934,25935],{},"Fortschrittsbalken für jede Datei",[651,25937,25938,25941,25943],{},[675,25939,25940],{},"--partial",[675,25942],{},[675,25944,25945],{},"Unvollständige Übertragungen behalten (Wiederaufnahme möglich)",[651,25947,25948,25951,25954],{},[675,25949,25950],{},"-e BEFEHL",[675,25952,25953],{},"--rsh=BEFEHL",[675,25955,25956],{},"Remote-Shell angeben (Standard: ssh)",[651,25958,25959,25961,25963],{},[675,25960,23908],{},[675,25962],{},[675,25964,25965],{},"Dateien im Ziel löschen, die in der Quelle fehlen (echtes Spiegeln)",[651,25967,25968,25971,25973],{},[675,25969,25970],{},"--delete-before",[675,25972],{},[675,25974,25975],{},"Löschen VOR der Übertragung",[651,25977,25978,25981,25983],{},[675,25979,25980],{},"--delete-after",[675,25982],{},[675,25984,25985],{},"Löschen NACH der Übertragung",[651,25987,25988,25991,25993],{},[675,25989,25990],{},"--exclude=MUSTER",[675,25992],{},[675,25994,25995],{},"Dateien\u002FVerzeichnisse ausschließen",[651,25997,25998,26001,26003],{},[675,25999,26000],{},"--exclude-from=DATEI",[675,26002],{},[675,26004,26005],{},"Ausschlussliste aus Datei lesen",[651,26007,26008,26011,26013],{},[675,26009,26010],{},"--include=MUSTER",[675,26012],{},[675,26014,26015],{},"Ausschluss für bestimmtes Muster aufheben",[651,26017,26018,26021,26023],{},[675,26019,26020],{},"--filter=REGEL",[675,26022],{},[675,26024,26025],{},"Flexible Filterregel (+ einschließen, - ausschließen)",[651,26027,26028,26031,26033],{},[675,26029,26030],{},"--backup",[675,26032],{},[675,26034,26035],{},"Backup geänderter Zieldateien anlegen",[651,26037,26038,26041,26043],{},[675,26039,26040],{},"--backup-dir=DIR",[675,26042],{},[675,26044,26045],{},"Backup-Verzeichnis for geänderte Dateien",[651,26047,26048,26051,26053],{},[675,26049,26050],{},"--suffix=SUFFIX",[675,26052],{},[675,26054,26055],{},"Backup-Suffix (Standard: ~)",[651,26057,26058,26060,26063],{},[675,26059,11559],{},[675,26061,26062],{},"--update",[675,26064,26065],{},"Neuere Zieldateien nicht überschreiben",[651,26067,26068,26070,26073],{},[675,26069,7765],{},[675,26071,26072],{},"--checksum",[675,26074,26075],{},"Vergleich per Prüfsumme statt Größe + Mtime",[651,26077,26078,26080,26083],{},[675,26079,16219],{},[675,26081,26082],{},"--hard-links",[675,26084,26085],{},"Hardlinks als Hardlinks erhalten",[651,26087,26088,26090,26093],{},[675,26089,21166],{},[675,26091,26092],{},"--acls",[675,26094,26095],{},"ACLs (Access Control Lists) übertragen",[651,26097,26098,26100,26103],{},[675,26099,21226],{},[675,26101,26102],{},"--xattrs",[675,26104,26105],{},"Erweiterte Attribute übertragen",[651,26107,26108,26111,26113],{},[675,26109,26110],{},"--chmod=RECHTE",[675,26112],{},[675,26114,26115],{},"Berechtigungen an Zieldateien setzen",[651,26117,26118,26121,26123],{},[675,26119,26120],{},"--chown=USER:GRP",[675,26122],{},[675,26124,26125],{},"Eigentümer\u002FGruppe an Zieldateien setzen",[651,26127,26128,26131,26133],{},[675,26129,26130],{},"--max-size=GRÖSSE",[675,26132],{},[675,26134,26135],{},"Dateien über dieser Größe überspringen (z.B. 100M)",[651,26137,26138,26141,26143],{},[675,26139,26140],{},"--min-size=GRÖSSE",[675,26142],{},[675,26144,26145],{},"Dateien unter dieser Größe überspringen",[651,26147,26148,26151,26153],{},[675,26149,26150],{},"--bwlimit=KBPS",[675,26152],{},[675,26154,26155],{},"Bandbreitenlimit (KB\u002Fs)",[651,26157,26158,26161,26163],{},[675,26159,26160],{},"--timeout=SEK",[675,26162],{},[675,26164,26165],{},"I\u002FO-Timeout in Sekunden",[651,26167,26168,26171,26173],{},[675,26169,26170],{},"--stats",[675,26172],{},[675,26174,26175],{},"Übertragungsstatistik am Ende anzeigen",[651,26177,26178,26180,26182],{},[675,26179,12572],{},[675,26181,21179],{},[675,26183,26184],{},"Größen lesbar ausgeben (KB, MB, GB)",[651,26186,26187,26190,26192],{},[675,26188,26189],{},"--log-file=DATEI",[675,26191],{},[675,26193,26194],{},"Übertragungsprotokoll in Datei schreiben",[651,26196,26197,26200,26202],{},[675,26198,26199],{},"--password-file=DATEI",[675,26201],{},[675,26203,26204],{},"rsync-Daemon-Passwort aus Datei lesen",[651,26206,26207,26210,26212],{},[675,26208,26209],{},"--port=PORT",[675,26211],{},[675,26213,26214],{},"Alternativen Port angeben (rsync-Daemon)",[651,26216,26217,26220,26222],{},[675,26218,26219],{},"--list-only",[675,26221],{},[675,26223,26224],{},"Nur auflisten, nicht übertragen",[54,26226,26228],{"id":26227},"der-slash-trick-sehr-wichtig","Der Slash-Trick (sehr wichtig!)",[3392,26230,26232],{"className":3394,"code":26231,"language":3396,"meta":225,"style":225},"rsync -av \u002Fquelle \u002Fziel # ← Kopiert ORDNER \"quelle\" in \"ziel\" → \u002Fziel\u002Fquelle\u002F...\n\nrsync -av \u002Fquelle\u002F \u002Fziel # ← Kopiert INHALT von \"quelle\" → \u002Fziel\u002F...\n\n# ^\n\n",[3398,26233,26234,26251,26255,26269,26273],{"__ignoreMap":225},[2915,26235,26236,26239,26242,26245,26248],{"class":3402,"line":3403},[2915,26237,26238],{"class":3406},"rsync",[2915,26240,26241],{"class":3410}," -av",[2915,26243,26244],{"class":3414}," \u002Fquelle",[2915,26246,26247],{"class":3414}," \u002Fziel",[2915,26249,26250],{"class":3511}," # ← Kopiert ORDNER \"quelle\" in \"ziel\" → \u002Fziel\u002Fquelle\u002F...\n",[2915,26252,26253],{"class":3402,"line":1117},[2915,26254,3506],{"emptyLinePlaceholder":3505},[2915,26256,26257,26259,26261,26264,26266],{"class":3402,"line":1125},[2915,26258,26238],{"class":3406},[2915,26260,26241],{"class":3410},[2915,26262,26263],{"class":3414}," \u002Fquelle\u002F",[2915,26265,26247],{"class":3414},[2915,26267,26268],{"class":3511}," # ← Kopiert INHALT von \"quelle\" → \u002Fziel\u002F...\n",[2915,26270,26271],{"class":3402,"line":3515},[2915,26272,3506],{"emptyLinePlaceholder":3505},[2915,26274,26275],{"class":3402,"line":3520},[2915,26276,26277],{"class":3511},"# ^\n",[11,26279,26281],{"id":26280},"abschließender-slash-bedeutet-der-inhalt-dieses-ordners","Abschließender Slash bedeutet: \"der Inhalt dieses Ordners\"",[16,26283,26284,26287],{},[26,26285,26286],{},"Faustregel:"," Mit \u002F am Ende der Quelle verhält sich rsync wie cp -r quelle\u002F* ziel\u002F.",[54,26289,8676],{"id":26290},"beispiele-18",[11,26292,26294],{"id":26293},"lokal","─── Lokal ───────────────────────────────────────────────────",[11,26296,26298],{"id":26297},"einfache-lokale-synchronisation","Einfache lokale Synchronisation",[3392,26300,26302],{"className":3394,"code":26301,"language":3396,"meta":225,"style":225},"rsync -av \u002Fhome\u002Fuser\u002Fdaten\u002F \u002Fbackup\u002Fdaten\u002F\n\n# Trockenlauf: erst prüfen, dann ausführen\n\nrsync -avn \u002Fhome\u002Fuser\u002Fdaten\u002F \u002Fbackup\u002Fdaten\u002F\n\n# Exaktes Spiegeln (überschüssige Zieldateien werden gelöscht)\n\nrsync -av --delete \u002Fhome\u002Fuser\u002F \u002Fbackup\u002Fuser\u002F\n\n# Mit Fortschrittsanzeige\n\nrsync -avP \u002Fquelle\u002F \u002Fziel\u002F\n\n# gleichwertig:\n\nrsync -av --progress --partial \u002Fquelle\u002F \u002Fziel\u002F\n\n# ─── Remote (SSH) ────────────────────────────────────────────\n\n# Lokal → Remote (push)\n\nrsync -avz \u002Fhome\u002Fuser\u002Fprojekt\u002F benutzer@server:\u002Fbackup\u002Fprojekt\u002F\n\n# Remote → Lokal (pull)\n\nrsync -avz benutzer@server:\u002Fvar\u002Fwww\u002Fhtml\u002F \u002Flokal\u002Fwebseite\u002F\n\n# SSH auf Port 2222\n\nrsync -avz -e \"ssh -p 2222\" \u002Fdaten\u002F user@server:\u002Fbackup\u002F\n\n# SSH mit spezifischem Key\n\nrsync -avz -e \"ssh -i ~\u002F.ssh\u002Fdeploy_key\" \u002Fdaten\u002F user@server:\u002Fbackup\u002F\n\n# ─── Filtern ─────────────────────────────────────────────────\n\n# Temporäre Dateien und Logs ausschließen\n\nrsync -av --exclude=\".tmp\" --exclude=\".log\" \u002Fdaten\u002F \u002Fbackup\u002Fdaten\u002F\n\n# Ausschlussdatei (eine Regel pro Zeile)\n\n# .rsync-exclude Inhalt: *.tmp \u002F logs\u002F \u002F .git\u002F\n\nrsync -av --exclude-from=\u002Fhome\u002Fuser\u002F.rsync-exclude \u002Fdaten\u002F \u002Fbackup\u002F\n\n# Nur Bilder synchronisieren\n\nrsync -av --include=\".jpg\" --include=\".png\" --exclude=\"*\" \u002Ffotos\u002F \u002Fbackup\u002Ffotos\u002F\n\n# node_modules ausschließen (typisch für Web-Projekte)\n\nrsync -av --exclude=\"node_modules\u002F\" \u002Fprojekt\u002F server:\u002Fdeploy\u002F\n\n# ─── Backup mit Versionierung ────────────────────────────────\n\n# Geänderte Dateien mit Datum in separatem Ordner sichern\n\nrsync -av --backup --backup-dir=\u002Fbackup\u002F$(date %Y-%m-%d) \u002Fhome\u002F \u002Fbackup\u002Faktuell\u002F\n\n# Bandbreite begrenzen (500 KB\u002Fs)\n\nrsync -avz --bwlimit=500 \u002Fdaten\u002F user@server:\u002Fbackup\u002F\n\n# Statistiken anzeigen\n\nrsync -av --stats \u002Fquelle\u002F \u002Fziel\u002F\n\n# Nur nach Prüfsumme vergleichen (langsamer, aber genauer)\n\nrsync -avc \u002Fquelle\u002F \u002Fziel\u002F\n\n",[3398,26303,26304,26316,26320,26325,26329,26340,26344,26349,26353,26368,26372,26377,26381,26393,26397,26402,26406,26422,26426,26431,26435,26440,26444,26457,26461,26466,26470,26482,26486,26491,26495,26512,26516,26521,26525,26540,26544,26549,26553,26558,26562,26583,26587,26592,26596,26601,26605,26619,26623,26628,26632,26660,26664,26669,26673,26690,26694,26699,26703,26708,26712,26737,26741,26746,26750,26763,26767,26772,26776,26789,26793,26798,26802],{"__ignoreMap":225},[2915,26305,26306,26308,26310,26313],{"class":3402,"line":3403},[2915,26307,26238],{"class":3406},[2915,26309,26241],{"class":3410},[2915,26311,26312],{"class":3414}," \u002Fhome\u002Fuser\u002Fdaten\u002F",[2915,26314,26315],{"class":3414}," \u002Fbackup\u002Fdaten\u002F\n",[2915,26317,26318],{"class":3402,"line":1117},[2915,26319,3506],{"emptyLinePlaceholder":3505},[2915,26321,26322],{"class":3402,"line":1125},[2915,26323,26324],{"class":3511},"# Trockenlauf: erst prüfen, dann ausführen\n",[2915,26326,26327],{"class":3402,"line":3515},[2915,26328,3506],{"emptyLinePlaceholder":3505},[2915,26330,26331,26333,26336,26338],{"class":3402,"line":3520},[2915,26332,26238],{"class":3406},[2915,26334,26335],{"class":3410}," -avn",[2915,26337,26312],{"class":3414},[2915,26339,26315],{"class":3414},[2915,26341,26342],{"class":3402,"line":5070},[2915,26343,3506],{"emptyLinePlaceholder":3505},[2915,26345,26346],{"class":3402,"line":5075},[2915,26347,26348],{"class":3511},"# Exaktes Spiegeln (überschüssige Zieldateien werden gelöscht)\n",[2915,26350,26351],{"class":3402,"line":5093},[2915,26352,3506],{"emptyLinePlaceholder":3505},[2915,26354,26355,26357,26359,26362,26365],{"class":3402,"line":5098},[2915,26356,26238],{"class":3406},[2915,26358,26241],{"class":3410},[2915,26360,26361],{"class":3410}," --delete",[2915,26363,26364],{"class":3414}," \u002Fhome\u002Fuser\u002F",[2915,26366,26367],{"class":3414}," \u002Fbackup\u002Fuser\u002F\n",[2915,26369,26370],{"class":3402,"line":5207},[2915,26371,3506],{"emptyLinePlaceholder":3505},[2915,26373,26374],{"class":3402,"line":5212},[2915,26375,26376],{"class":3511},"# Mit Fortschrittsanzeige\n",[2915,26378,26379],{"class":3402,"line":5218},[2915,26380,3506],{"emptyLinePlaceholder":3505},[2915,26382,26383,26385,26388,26390],{"class":3402,"line":5223},[2915,26384,26238],{"class":3406},[2915,26386,26387],{"class":3410}," -avP",[2915,26389,26263],{"class":3414},[2915,26391,26392],{"class":3414}," \u002Fziel\u002F\n",[2915,26394,26395],{"class":3402,"line":5229},[2915,26396,3506],{"emptyLinePlaceholder":3505},[2915,26398,26399],{"class":3402,"line":5253},[2915,26400,26401],{"class":3511},"# gleichwertig:\n",[2915,26403,26404],{"class":3402,"line":5266},[2915,26405,3506],{"emptyLinePlaceholder":3505},[2915,26407,26408,26410,26412,26415,26418,26420],{"class":3402,"line":5721},[2915,26409,26238],{"class":3406},[2915,26411,26241],{"class":3410},[2915,26413,26414],{"class":3410}," --progress",[2915,26416,26417],{"class":3410}," --partial",[2915,26419,26263],{"class":3414},[2915,26421,26392],{"class":3414},[2915,26423,26424],{"class":3402,"line":9401},[2915,26425,3506],{"emptyLinePlaceholder":3505},[2915,26427,26428],{"class":3402,"line":9406},[2915,26429,26430],{"class":3511},"# ─── Remote (SSH) ────────────────────────────────────────────\n",[2915,26432,26433],{"class":3402,"line":9411},[2915,26434,3506],{"emptyLinePlaceholder":3505},[2915,26436,26437],{"class":3402,"line":9416},[2915,26438,26439],{"class":3511},"# Lokal → Remote (push)\n",[2915,26441,26442],{"class":3402,"line":9428},[2915,26443,3506],{"emptyLinePlaceholder":3505},[2915,26445,26446,26448,26451,26454],{"class":3402,"line":9433},[2915,26447,26238],{"class":3406},[2915,26449,26450],{"class":3410}," -avz",[2915,26452,26453],{"class":3414}," \u002Fhome\u002Fuser\u002Fprojekt\u002F",[2915,26455,26456],{"class":3414}," benutzer@server:\u002Fbackup\u002Fprojekt\u002F\n",[2915,26458,26459],{"class":3402,"line":9454},[2915,26460,3506],{"emptyLinePlaceholder":3505},[2915,26462,26463],{"class":3402,"line":9459},[2915,26464,26465],{"class":3511},"# Remote → Lokal (pull)\n",[2915,26467,26468],{"class":3402,"line":9464},[2915,26469,3506],{"emptyLinePlaceholder":3505},[2915,26471,26472,26474,26476,26479],{"class":3402,"line":9469},[2915,26473,26238],{"class":3406},[2915,26475,26450],{"class":3410},[2915,26477,26478],{"class":3414}," benutzer@server:\u002Fvar\u002Fwww\u002Fhtml\u002F",[2915,26480,26481],{"class":3414}," \u002Flokal\u002Fwebseite\u002F\n",[2915,26483,26484],{"class":3402,"line":9479},[2915,26485,3506],{"emptyLinePlaceholder":3505},[2915,26487,26488],{"class":3402,"line":9484},[2915,26489,26490],{"class":3511},"# SSH auf Port 2222\n",[2915,26492,26493],{"class":3402,"line":9489},[2915,26494,3506],{"emptyLinePlaceholder":3505},[2915,26496,26497,26499,26501,26503,26506,26509],{"class":3402,"line":9494},[2915,26498,26238],{"class":3406},[2915,26500,26450],{"class":3410},[2915,26502,19828],{"class":3410},[2915,26504,26505],{"class":3414}," \"ssh -p 2222\"",[2915,26507,26508],{"class":3414}," \u002Fdaten\u002F",[2915,26510,26511],{"class":3414}," user@server:\u002Fbackup\u002F\n",[2915,26513,26514],{"class":3402,"line":9504},[2915,26515,3506],{"emptyLinePlaceholder":3505},[2915,26517,26518],{"class":3402,"line":9509},[2915,26519,26520],{"class":3511},"# SSH mit spezifischem Key\n",[2915,26522,26523],{"class":3402,"line":9514},[2915,26524,3506],{"emptyLinePlaceholder":3505},[2915,26526,26527,26529,26531,26533,26536,26538],{"class":3402,"line":9519},[2915,26528,26238],{"class":3406},[2915,26530,26450],{"class":3410},[2915,26532,19828],{"class":3410},[2915,26534,26535],{"class":3414}," \"ssh -i ~\u002F.ssh\u002Fdeploy_key\"",[2915,26537,26508],{"class":3414},[2915,26539,26511],{"class":3414},[2915,26541,26542],{"class":3402,"line":9524},[2915,26543,3506],{"emptyLinePlaceholder":3505},[2915,26545,26546],{"class":3402,"line":9529},[2915,26547,26548],{"class":3511},"# ─── Filtern ─────────────────────────────────────────────────\n",[2915,26550,26551],{"class":3402,"line":9534},[2915,26552,3506],{"emptyLinePlaceholder":3505},[2915,26554,26555],{"class":3402,"line":9539},[2915,26556,26557],{"class":3511},"# Temporäre Dateien und Logs ausschließen\n",[2915,26559,26560],{"class":3402,"line":9552},[2915,26561,3506],{"emptyLinePlaceholder":3505},[2915,26563,26564,26566,26568,26571,26574,26576,26579,26581],{"class":3402,"line":9557},[2915,26565,26238],{"class":3406},[2915,26567,26241],{"class":3410},[2915,26569,26570],{"class":3410}," --exclude=",[2915,26572,26573],{"class":3414},"\".tmp\"",[2915,26575,26570],{"class":3410},[2915,26577,26578],{"class":3414},"\".log\"",[2915,26580,26508],{"class":3414},[2915,26582,26315],{"class":3414},[2915,26584,26585],{"class":3402,"line":9570},[2915,26586,3506],{"emptyLinePlaceholder":3505},[2915,26588,26589],{"class":3402,"line":9575},[2915,26590,26591],{"class":3511},"# Ausschlussdatei (eine Regel pro Zeile)\n",[2915,26593,26594],{"class":3402,"line":9588},[2915,26595,3506],{"emptyLinePlaceholder":3505},[2915,26597,26598],{"class":3402,"line":9593},[2915,26599,26600],{"class":3511},"# .rsync-exclude Inhalt: *.tmp \u002F logs\u002F \u002F .git\u002F\n",[2915,26602,26603],{"class":3402,"line":9598},[2915,26604,3506],{"emptyLinePlaceholder":3505},[2915,26606,26607,26609,26611,26614,26616],{"class":3402,"line":9603},[2915,26608,26238],{"class":3406},[2915,26610,26241],{"class":3410},[2915,26612,26613],{"class":3410}," --exclude-from=\u002Fhome\u002Fuser\u002F.rsync-exclude",[2915,26615,26508],{"class":3414},[2915,26617,26618],{"class":3414}," \u002Fbackup\u002F\n",[2915,26620,26621],{"class":3402,"line":9619},[2915,26622,3506],{"emptyLinePlaceholder":3505},[2915,26624,26625],{"class":3402,"line":9624},[2915,26626,26627],{"class":3511},"# Nur Bilder synchronisieren\n",[2915,26629,26630],{"class":3402,"line":9629},[2915,26631,3506],{"emptyLinePlaceholder":3505},[2915,26633,26634,26636,26638,26641,26644,26646,26649,26651,26654,26657],{"class":3402,"line":9634},[2915,26635,26238],{"class":3406},[2915,26637,26241],{"class":3410},[2915,26639,26640],{"class":3410}," --include=",[2915,26642,26643],{"class":3414},"\".jpg\"",[2915,26645,26640],{"class":3410},[2915,26647,26648],{"class":3414},"\".png\"",[2915,26650,26570],{"class":3410},[2915,26652,26653],{"class":3414},"\"*\"",[2915,26655,26656],{"class":3414}," \u002Ffotos\u002F",[2915,26658,26659],{"class":3414}," \u002Fbackup\u002Ffotos\u002F\n",[2915,26661,26662],{"class":3402,"line":9642},[2915,26663,3506],{"emptyLinePlaceholder":3505},[2915,26665,26666],{"class":3402,"line":9647},[2915,26667,26668],{"class":3511},"# node_modules ausschließen (typisch für Web-Projekte)\n",[2915,26670,26671],{"class":3402,"line":9656},[2915,26672,3506],{"emptyLinePlaceholder":3505},[2915,26674,26675,26677,26679,26681,26684,26687],{"class":3402,"line":9661},[2915,26676,26238],{"class":3406},[2915,26678,26241],{"class":3410},[2915,26680,26570],{"class":3410},[2915,26682,26683],{"class":3414},"\"node_modules\u002F\"",[2915,26685,26686],{"class":3414}," \u002Fprojekt\u002F",[2915,26688,26689],{"class":3414}," server:\u002Fdeploy\u002F\n",[2915,26691,26692],{"class":3402,"line":9666},[2915,26693,3506],{"emptyLinePlaceholder":3505},[2915,26695,26696],{"class":3402,"line":9671},[2915,26697,26698],{"class":3511},"# ─── Backup mit Versionierung ────────────────────────────────\n",[2915,26700,26701],{"class":3402,"line":9685},[2915,26702,3506],{"emptyLinePlaceholder":3505},[2915,26704,26705],{"class":3402,"line":9690},[2915,26706,26707],{"class":3511},"# Geänderte Dateien mit Datum in separatem Ordner sichern\n",[2915,26709,26710],{"class":3402,"line":9711},[2915,26711,3506],{"emptyLinePlaceholder":3505},[2915,26713,26714,26716,26718,26721,26724,26726,26729,26731,26734],{"class":3402,"line":9716},[2915,26715,26238],{"class":3406},[2915,26717,26241],{"class":3410},[2915,26719,26720],{"class":3410}," --backup",[2915,26722,26723],{"class":3410}," --backup-dir=\u002Fbackup\u002F$(",[2915,26725,10041],{"class":3406},[2915,26727,26728],{"class":3414}," %Y-%m-%d",[2915,26730,5032],{"class":3410},[2915,26732,26733],{"class":3414}," \u002Fhome\u002F",[2915,26735,26736],{"class":3414}," \u002Fbackup\u002Faktuell\u002F\n",[2915,26738,26739],{"class":3402,"line":9721},[2915,26740,3506],{"emptyLinePlaceholder":3505},[2915,26742,26743],{"class":3402,"line":9726},[2915,26744,26745],{"class":3511},"# Bandbreite begrenzen (500 KB\u002Fs)\n",[2915,26747,26748],{"class":3402,"line":9734},[2915,26749,3506],{"emptyLinePlaceholder":3505},[2915,26751,26752,26754,26756,26759,26761],{"class":3402,"line":9739},[2915,26753,26238],{"class":3406},[2915,26755,26450],{"class":3410},[2915,26757,26758],{"class":3410}," --bwlimit=500",[2915,26760,26508],{"class":3414},[2915,26762,26511],{"class":3414},[2915,26764,26765],{"class":3402,"line":9747},[2915,26766,3506],{"emptyLinePlaceholder":3505},[2915,26768,26769],{"class":3402,"line":9752},[2915,26770,26771],{"class":3511},"# Statistiken anzeigen\n",[2915,26773,26774],{"class":3402,"line":9760},[2915,26775,3506],{"emptyLinePlaceholder":3505},[2915,26777,26778,26780,26782,26785,26787],{"class":3402,"line":9765},[2915,26779,26238],{"class":3406},[2915,26781,26241],{"class":3410},[2915,26783,26784],{"class":3410}," --stats",[2915,26786,26263],{"class":3414},[2915,26788,26392],{"class":3414},[2915,26790,26791],{"class":3402,"line":9773},[2915,26792,3506],{"emptyLinePlaceholder":3505},[2915,26794,26795],{"class":3402,"line":9778},[2915,26796,26797],{"class":3511},"# Nur nach Prüfsumme vergleichen (langsamer, aber genauer)\n",[2915,26799,26800],{"class":3402,"line":9786},[2915,26801,3506],{"emptyLinePlaceholder":3505},[2915,26803,26804,26806,26809,26811],{"class":3402,"line":9791},[2915,26805,26238],{"class":3406},[2915,26807,26808],{"class":3410}," -avc",[2915,26810,26263],{"class":3414},[2915,26812,26392],{"class":3414},[54,26814,11749],{"id":26815},"ausgabe-18",[11,26817,26819],{"id":26818},"rsync-avp-homeuser-backup","rsync -avP \u002Fhome\u002Fuser\u002F \u002Fbackup\u002F",[16,26821,26822,26823,26825,26826,26828,26829,26831,26832,26834,26835,26837,26838,26840,26841,5891],{},"sending incremental file list",[5885,26824],{},"\n.\u002F",[5885,26827],{},"\ndokumente\u002F",[5885,26830],{},"\ndokumente\u002Fbericht.pdf",[5885,26833],{},"\n1,234,567 100% 12.34MB\u002Fs 0:00:00 (xfr#1, to-chk=23\u002F47)",[5885,26836],{},"\nfotos\u002Ffoto1.jpg",[5885,26839],{},"\n987,654 100% 9.87MB\u002Fs 0:00:00 (xfr#2, to-chk=22\u002F47)",[5885,26842],{},[16,26844,26845,26846,26848],{},"sent 2,345,678 bytes received 1,234 bytes 1,234,567.00 bytes\u002Fsec",[5885,26847],{},"\ntotal size is 45,678,901 speedup is 19.48",[16,26850,26851,26853],{},[26,26852,12391],{}," Bei regelmäßigen Backups ist rsync -avz --delete --backup --backup-dir=\u002Fbackup\u002F$(date +%F) eine einfache aber effektive Incremental-Backup-Strategie.",[11,26855,26856],{"id":26856},"basename",[16,26858,26859,26861,26862,26865],{},[26,26860,11461],{}," Entfernt den Verzeichnispfad aus einem Dateipfad und gibt nur den ",[26,26863,26864],{},"Dateinamen"," zurück. Optional kann auch die Dateiendung abgeschnitten werden. Gegenstück: dirname (gibt den Verzeichnispfad zurück).",[16,26867,26868],{},[26,26869,6691],{},[16,26871,26872,26873],{},"basename PFAD ",[2915,26874,19124],{},[3392,26876,26878],{"className":3394,"code":26877,"language":3396,"meta":225,"style":225},"basename -a PFAD... -s SUFFIX\n\n",[3398,26879,26880],{"__ignoreMap":225},[2915,26881,26882,26884,26886,26889,26891],{"class":3402,"line":3403},[2915,26883,26856],{"class":3406},[2915,26885,10056],{"class":3410},[2915,26887,26888],{"class":3414}," PFAD...",[2915,26890,23211],{"class":3410},[2915,26892,26893],{"class":3414}," SUFFIX\n",[54,26895,26897],{"id":26896},"alle-optionen","Alle Optionen",[645,26899,26900,26916],{},[648,26901,26902],{},[651,26903,26904,26908,26912],{},[654,26905,26906],{},[26,26907,7715],{},[654,26909,26910],{},[26,26911,11548],{},[654,26913,26914],{},[26,26915,5483],{},[670,26917,26918,26928,26938,26948],{},[651,26919,26920,26922,26925],{},[675,26921,21155],{},[675,26923,26924],{},"--multiple",[675,26926,26927],{},"Mehrere Pfade in einem Aufruf verarbeiten",[651,26929,26930,26933,26935],{},[675,26931,26932],{},"-s SUFFIX",[675,26934,26050],{},[675,26936,26937],{},"Dieses Suffix vom Ergebnis entfernen",[651,26939,26940,26943,26945],{},[675,26941,26942],{},"--help",[675,26944],{},[675,26946,26947],{},"Hilfe anzeigen",[651,26949,26950,26953,26955],{},[675,26951,26952],{},"--version",[675,26954],{},[675,26956,26957],{},"Versionsnummer anzeigen",[54,26959,8676],{"id":26960},"beispiele-19",[11,26962,26964],{"id":26963},"grundlegende-verwendung","─── Grundlegende Verwendung ─────────────────────────────────",[11,26966,26968],{"id":26967},"nur-dateiname-ohne-pfad","Nur Dateiname (ohne Pfad)",[3392,26970,26972],{"className":3394,"code":26971,"language":3396,"meta":225,"style":225},"basename \u002Fhome\u002Fuser\u002Fdokumente\u002Fbericht.pdf\n\n# → bericht.pdf\n\n# Dateiname ohne Endung\n\nbasename \u002Fhome\u002Fuser\u002Fdokumente\u002Fbericht.pdf .pdf\n\n# → bericht\n\n# Nur mit Programmname (Pfad egal)\n\nbasename \u002Fusr\u002Fbin\u002Fpython3\n\n# → python3\n\nbasename \u002Fusr\u002Flib\u002Fsystemd\u002Fsystemd-journald\n\n# → systemd-journald\n\n# ─── Suffix entfernen (-s) ───────────────────────────────────\n\n# Endung .txt entfernen\n\nbasename -s .txt \u002Fpfad\u002Fzur\u002Fdatei.txt\n\n# → datei\n\n# Doppeltes Suffix .tar.gz\n\nbasename \u002Fbackup\u002Farchiv.tar.gz .tar.gz\n\n# → archiv\n\n# ─── Mehrere Dateien auf einmal (-a) ────────────────────────\n\nbasename -a \u002Fetc\u002Fhosts \u002Fetc\u002Fpasswd \u002Fetc\u002Fshadow\n\n# → hosts\n\n# passwd\n\n# shadow\n\n# Mehrere Dateien Suffix entfernen\n\nbasename -a -s .conf \u002Fetc\u002Fssh\u002Fsshd_config.conf \u002Fetc\u002Fnginx\u002Fnginx.conf\n\n# → sshd_config\n\n# nginx\n\n# ─── In Skripten ─────────────────────────────────────────────\n\n# Skriptname ohne Pfad (für Fehlermeldungen)\n\nPROG=$(basename \"$0\")\n\necho \"Verwendung: $PROG [OPTIONEN]\" >&2\n\n# Lock-Datei basierend auf Skriptname\n\nPROG=$(basename \"$0\" .sh)\n\nLOCKFILE=\"\u002Ftmp\u002F${PROG}.lock\"\n\nif [ -f \"$LOCKFILE\" ]; then\n\necho \"$PROG läuft bereits!\" >&2\n\nexit 1\n\nfi\n\ntouch \"$LOCKFILE\"\n\ntrap \"rm -f '$LOCKFILE'\" EXIT\n\n# Alle .sh-Dateien ohne Endung verarbeiten\n\nfor f in \u002Fskripte\u002F*.sh; do\n\nname=$(basename \"$f\" .sh)\n\necho \"Verarbeite Skript: $name\"\n\ndone\n\n# Backup mit Datum und originalem Dateinamen\n\nDATEI=\"\u002Fetc\u002Fnginx\u002Fnginx.conf\"\n\nBACKUP=\"\u002Fbackup\u002F$(basename \"$DATEI\").$(date %Y%m%d)\"\n\ncp \"$DATEI\" \"$BACKUP\"\n\necho \"Backup: $BACKUP\"\n\n# ─── dirname als Gegenstück ──────────────────────────────────\n\nDATEI=\"\u002Fhome\u002Fuser\u002Fdaten\u002Freport.csv\"\n\nDIR=$(dirname \"$DATEI\") # → \u002Fhome\u002Fuser\u002Fdaten\n\nNAME=$(basename \"$DATEI\" .csv) # → report\n\necho \"Verzeichnis: $DIR\"\n\necho \"Dateiname: $NAME\"\n\necho \"Voller Pfad: $DIR\u002F$NAME.csv\"\n\n",[3398,26973,26974,26981,26985,26990,26994,26999,27003,27013,27017,27022,27026,27031,27035,27042,27046,27051,27055,27062,27066,27071,27075,27080,27084,27089,27093,27104,27108,27113,27117,27122,27126,27136,27140,27145,27149,27154,27158,27173,27177,27182,27186,27191,27195,27200,27204,27209,27213,27230,27234,27239,27243,27248,27252,27257,27261,27266,27270,27289,27293,27309,27313,27318,27322,27343,27347,27361,27365,27383,27387,27400,27404,27410,27414,27418,27422,27432,27436,27450,27454,27459,27463,27479,27483,27504,27508,27520,27524,27528,27532,27537,27541,27550,27554,27578,27582,27600,27604,27615,27619,27624,27628,27637,27641,27664,27668,27693,27697,27709,27713,27725,27729],{"__ignoreMap":225},[2915,26975,26976,26978],{"class":3402,"line":3403},[2915,26977,26856],{"class":3406},[2915,26979,26980],{"class":3414}," \u002Fhome\u002Fuser\u002Fdokumente\u002Fbericht.pdf\n",[2915,26982,26983],{"class":3402,"line":1117},[2915,26984,3506],{"emptyLinePlaceholder":3505},[2915,26986,26987],{"class":3402,"line":1125},[2915,26988,26989],{"class":3511},"# → bericht.pdf\n",[2915,26991,26992],{"class":3402,"line":3515},[2915,26993,3506],{"emptyLinePlaceholder":3505},[2915,26995,26996],{"class":3402,"line":3520},[2915,26997,26998],{"class":3511},"# Dateiname ohne Endung\n",[2915,27000,27001],{"class":3402,"line":5070},[2915,27002,3506],{"emptyLinePlaceholder":3505},[2915,27004,27005,27007,27010],{"class":3402,"line":5075},[2915,27006,26856],{"class":3406},[2915,27008,27009],{"class":3414}," \u002Fhome\u002Fuser\u002Fdokumente\u002Fbericht.pdf",[2915,27011,27012],{"class":3414}," .pdf\n",[2915,27014,27015],{"class":3402,"line":5093},[2915,27016,3506],{"emptyLinePlaceholder":3505},[2915,27018,27019],{"class":3402,"line":5098},[2915,27020,27021],{"class":3511},"# → bericht\n",[2915,27023,27024],{"class":3402,"line":5207},[2915,27025,3506],{"emptyLinePlaceholder":3505},[2915,27027,27028],{"class":3402,"line":5212},[2915,27029,27030],{"class":3511},"# Nur mit Programmname (Pfad egal)\n",[2915,27032,27033],{"class":3402,"line":5218},[2915,27034,3506],{"emptyLinePlaceholder":3505},[2915,27036,27037,27039],{"class":3402,"line":5223},[2915,27038,26856],{"class":3406},[2915,27040,27041],{"class":3414}," \u002Fusr\u002Fbin\u002Fpython3\n",[2915,27043,27044],{"class":3402,"line":5229},[2915,27045,3506],{"emptyLinePlaceholder":3505},[2915,27047,27048],{"class":3402,"line":5253},[2915,27049,27050],{"class":3511},"# → python3\n",[2915,27052,27053],{"class":3402,"line":5266},[2915,27054,3506],{"emptyLinePlaceholder":3505},[2915,27056,27057,27059],{"class":3402,"line":5721},[2915,27058,26856],{"class":3406},[2915,27060,27061],{"class":3414}," \u002Fusr\u002Flib\u002Fsystemd\u002Fsystemd-journald\n",[2915,27063,27064],{"class":3402,"line":9401},[2915,27065,3506],{"emptyLinePlaceholder":3505},[2915,27067,27068],{"class":3402,"line":9406},[2915,27069,27070],{"class":3511},"# → systemd-journald\n",[2915,27072,27073],{"class":3402,"line":9411},[2915,27074,3506],{"emptyLinePlaceholder":3505},[2915,27076,27077],{"class":3402,"line":9416},[2915,27078,27079],{"class":3511},"# ─── Suffix entfernen (-s) ───────────────────────────────────\n",[2915,27081,27082],{"class":3402,"line":9428},[2915,27083,3506],{"emptyLinePlaceholder":3505},[2915,27085,27086],{"class":3402,"line":9433},[2915,27087,27088],{"class":3511},"# Endung .txt entfernen\n",[2915,27090,27091],{"class":3402,"line":9454},[2915,27092,3506],{"emptyLinePlaceholder":3505},[2915,27094,27095,27097,27099,27101],{"class":3402,"line":9459},[2915,27096,26856],{"class":3406},[2915,27098,23211],{"class":3410},[2915,27100,25152],{"class":3414},[2915,27102,27103],{"class":3414}," \u002Fpfad\u002Fzur\u002Fdatei.txt\n",[2915,27105,27106],{"class":3402,"line":9464},[2915,27107,3506],{"emptyLinePlaceholder":3505},[2915,27109,27110],{"class":3402,"line":9469},[2915,27111,27112],{"class":3511},"# → datei\n",[2915,27114,27115],{"class":3402,"line":9479},[2915,27116,3506],{"emptyLinePlaceholder":3505},[2915,27118,27119],{"class":3402,"line":9484},[2915,27120,27121],{"class":3511},"# Doppeltes Suffix .tar.gz\n",[2915,27123,27124],{"class":3402,"line":9489},[2915,27125,3506],{"emptyLinePlaceholder":3505},[2915,27127,27128,27130,27133],{"class":3402,"line":9494},[2915,27129,26856],{"class":3406},[2915,27131,27132],{"class":3414}," \u002Fbackup\u002Farchiv.tar.gz",[2915,27134,27135],{"class":3414}," .tar.gz\n",[2915,27137,27138],{"class":3402,"line":9504},[2915,27139,3506],{"emptyLinePlaceholder":3505},[2915,27141,27142],{"class":3402,"line":9509},[2915,27143,27144],{"class":3511},"# → archiv\n",[2915,27146,27147],{"class":3402,"line":9514},[2915,27148,3506],{"emptyLinePlaceholder":3505},[2915,27150,27151],{"class":3402,"line":9519},[2915,27152,27153],{"class":3511},"# ─── Mehrere Dateien auf einmal (-a) ────────────────────────\n",[2915,27155,27156],{"class":3402,"line":9524},[2915,27157,3506],{"emptyLinePlaceholder":3505},[2915,27159,27160,27162,27164,27167,27170],{"class":3402,"line":9529},[2915,27161,26856],{"class":3406},[2915,27163,10056],{"class":3410},[2915,27165,27166],{"class":3414}," \u002Fetc\u002Fhosts",[2915,27168,27169],{"class":3414}," \u002Fetc\u002Fpasswd",[2915,27171,27172],{"class":3414}," \u002Fetc\u002Fshadow\n",[2915,27174,27175],{"class":3402,"line":9534},[2915,27176,3506],{"emptyLinePlaceholder":3505},[2915,27178,27179],{"class":3402,"line":9539},[2915,27180,27181],{"class":3511},"# → hosts\n",[2915,27183,27184],{"class":3402,"line":9552},[2915,27185,3506],{"emptyLinePlaceholder":3505},[2915,27187,27188],{"class":3402,"line":9557},[2915,27189,27190],{"class":3511},"# passwd\n",[2915,27192,27193],{"class":3402,"line":9570},[2915,27194,3506],{"emptyLinePlaceholder":3505},[2915,27196,27197],{"class":3402,"line":9575},[2915,27198,27199],{"class":3511},"# shadow\n",[2915,27201,27202],{"class":3402,"line":9588},[2915,27203,3506],{"emptyLinePlaceholder":3505},[2915,27205,27206],{"class":3402,"line":9593},[2915,27207,27208],{"class":3511},"# Mehrere Dateien Suffix entfernen\n",[2915,27210,27211],{"class":3402,"line":9598},[2915,27212,3506],{"emptyLinePlaceholder":3505},[2915,27214,27215,27217,27219,27221,27224,27227],{"class":3402,"line":9603},[2915,27216,26856],{"class":3406},[2915,27218,10056],{"class":3410},[2915,27220,23211],{"class":3410},[2915,27222,27223],{"class":3414}," .conf",[2915,27225,27226],{"class":3414}," \u002Fetc\u002Fssh\u002Fsshd_config.conf",[2915,27228,27229],{"class":3414}," \u002Fetc\u002Fnginx\u002Fnginx.conf\n",[2915,27231,27232],{"class":3402,"line":9619},[2915,27233,3506],{"emptyLinePlaceholder":3505},[2915,27235,27236],{"class":3402,"line":9624},[2915,27237,27238],{"class":3511},"# → sshd_config\n",[2915,27240,27241],{"class":3402,"line":9629},[2915,27242,3506],{"emptyLinePlaceholder":3505},[2915,27244,27245],{"class":3402,"line":9634},[2915,27246,27247],{"class":3511},"# nginx\n",[2915,27249,27250],{"class":3402,"line":9642},[2915,27251,3506],{"emptyLinePlaceholder":3505},[2915,27253,27254],{"class":3402,"line":9647},[2915,27255,27256],{"class":3511},"# ─── In Skripten ─────────────────────────────────────────────\n",[2915,27258,27259],{"class":3402,"line":9656},[2915,27260,3506],{"emptyLinePlaceholder":3505},[2915,27262,27263],{"class":3402,"line":9661},[2915,27264,27265],{"class":3511},"# Skriptname ohne Pfad (für Fehlermeldungen)\n",[2915,27267,27268],{"class":3402,"line":9666},[2915,27269,3506],{"emptyLinePlaceholder":3505},[2915,27271,27272,27275,27277,27279,27281,27283,27285,27287],{"class":3402,"line":9671},[2915,27273,27274],{"class":3529},"PROG",[2915,27276,5137],{"class":3533},[2915,27278,9001],{"class":3529},[2915,27280,26856],{"class":3406},[2915,27282,4968],{"class":3414},[2915,27284,4879],{"class":3410},[2915,27286,4957],{"class":3414},[2915,27288,5152],{"class":3529},[2915,27290,27291],{"class":3402,"line":9685},[2915,27292,3506],{"emptyLinePlaceholder":3505},[2915,27294,27295,27297,27300,27303,27306],{"class":3402,"line":9690},[2915,27296,5059],{"class":3410},[2915,27298,27299],{"class":3414}," \"Verwendung: ",[2915,27301,27302],{"class":3529},"$PROG",[2915,27304,27305],{"class":3414}," [OPTIONEN]\"",[2915,27307,27308],{"class":3533}," >&2\n",[2915,27310,27311],{"class":3402,"line":9711},[2915,27312,3506],{"emptyLinePlaceholder":3505},[2915,27314,27315],{"class":3402,"line":9716},[2915,27316,27317],{"class":3511},"# Lock-Datei basierend auf Skriptname\n",[2915,27319,27320],{"class":3402,"line":9721},[2915,27321,3506],{"emptyLinePlaceholder":3505},[2915,27323,27324,27326,27328,27330,27332,27334,27336,27338,27341],{"class":3402,"line":9726},[2915,27325,27274],{"class":3529},[2915,27327,5137],{"class":3533},[2915,27329,9001],{"class":3529},[2915,27331,26856],{"class":3406},[2915,27333,4968],{"class":3414},[2915,27335,4879],{"class":3410},[2915,27337,4957],{"class":3414},[2915,27339,27340],{"class":3414}," .sh",[2915,27342,5152],{"class":3529},[2915,27344,27345],{"class":3402,"line":9734},[2915,27346,3506],{"emptyLinePlaceholder":3505},[2915,27348,27349,27351,27353,27356,27358],{"class":3402,"line":9739},[2915,27350,9994],{"class":3529},[2915,27352,5137],{"class":3533},[2915,27354,27355],{"class":3414},"\"\u002Ftmp\u002F${",[2915,27357,27274],{"class":3529},[2915,27359,27360],{"class":3414},"}.lock\"\n",[2915,27362,27363],{"class":3402,"line":9747},[2915,27364,3506],{"emptyLinePlaceholder":3505},[2915,27366,27367,27369,27371,27373,27375,27377,27379,27381],{"class":3402,"line":9752},[2915,27368,4951],{"class":3533},[2915,27370,4954],{"class":3529},[2915,27372,9329],{"class":3533},[2915,27374,4968],{"class":3414},[2915,27376,10094],{"class":3529},[2915,27378,4957],{"class":3414},[2915,27380,4976],{"class":3529},[2915,27382,4979],{"class":3533},[2915,27384,27385],{"class":3402,"line":9760},[2915,27386,3506],{"emptyLinePlaceholder":3505},[2915,27388,27389,27391,27393,27395,27398],{"class":3402,"line":9765},[2915,27390,5059],{"class":3410},[2915,27392,4968],{"class":3414},[2915,27394,27302],{"class":3529},[2915,27396,27397],{"class":3414}," läuft bereits!\"",[2915,27399,27308],{"class":3533},[2915,27401,27402],{"class":3402,"line":9773},[2915,27403,3506],{"emptyLinePlaceholder":3505},[2915,27405,27406,27408],{"class":3402,"line":9778},[2915,27407,9650],{"class":3410},[2915,27409,9653],{"class":3410},[2915,27411,27412],{"class":3402,"line":9786},[2915,27413,3506],{"emptyLinePlaceholder":3505},[2915,27415,27416],{"class":3402,"line":9791},[2915,27417,4997],{"class":3533},[2915,27419,27420],{"class":3402,"line":9800},[2915,27421,3506],{"emptyLinePlaceholder":3505},[2915,27423,27424,27426,27428,27430],{"class":3402,"line":9805},[2915,27425,10189],{"class":3406},[2915,27427,4968],{"class":3414},[2915,27429,10094],{"class":3529},[2915,27431,5204],{"class":3414},[2915,27433,27434],{"class":3402,"line":20122},[2915,27435,3506],{"emptyLinePlaceholder":3505},[2915,27437,27438,27440,27443,27445,27448],{"class":3402,"line":20127},[2915,27439,10140],{"class":3410},[2915,27441,27442],{"class":3414}," \"rm -f '",[2915,27444,10094],{"class":3529},[2915,27446,27447],{"class":3414},"'\"",[2915,27449,10146],{"class":3414},[2915,27451,27452],{"class":3402,"line":20133},[2915,27453,3506],{"emptyLinePlaceholder":3505},[2915,27455,27456],{"class":3402,"line":20138},[2915,27457,27458],{"class":3511},"# Alle .sh-Dateien ohne Endung verarbeiten\n",[2915,27460,27461],{"class":3402,"line":20150},[2915,27462,3506],{"emptyLinePlaceholder":3505},[2915,27464,27465,27467,27470,27472,27475,27477],{"class":3402,"line":20155},[2915,27466,5175],{"class":3533},[2915,27468,27469],{"class":3529}," f ",[2915,27471,5181],{"class":3533},[2915,27473,27474],{"class":3414}," \u002Fskripte\u002F*.sh",[2915,27476,5248],{"class":3529},[2915,27478,5187],{"class":3533},[2915,27480,27481],{"class":3402,"line":20161},[2915,27482,3506],{"emptyLinePlaceholder":3505},[2915,27484,27485,27488,27490,27492,27494,27496,27498,27500,27502],{"class":3402,"line":20166},[2915,27486,27487],{"class":3529},"name",[2915,27489,5137],{"class":3533},[2915,27491,9001],{"class":3529},[2915,27493,26856],{"class":3406},[2915,27495,4968],{"class":3414},[2915,27497,5644],{"class":3529},[2915,27499,4957],{"class":3414},[2915,27501,27340],{"class":3414},[2915,27503,5152],{"class":3529},[2915,27505,27506],{"class":3402,"line":20178},[2915,27507,3506],{"emptyLinePlaceholder":3505},[2915,27509,27510,27512,27515,27518],{"class":3402,"line":20183},[2915,27511,5059],{"class":3410},[2915,27513,27514],{"class":3414}," \"Verarbeite Skript: ",[2915,27516,27517],{"class":3529},"$name",[2915,27519,5204],{"class":3414},[2915,27521,27522],{"class":3402,"line":20189},[2915,27523,3506],{"emptyLinePlaceholder":3505},[2915,27525,27526],{"class":3402,"line":20194},[2915,27527,5269],{"class":3533},[2915,27529,27530],{"class":3402,"line":20206},[2915,27531,3506],{"emptyLinePlaceholder":3505},[2915,27533,27534],{"class":3402,"line":20211},[2915,27535,27536],{"class":3511},"# Backup mit Datum und originalem Dateinamen\n",[2915,27538,27539],{"class":3402,"line":20217},[2915,27540,3506],{"emptyLinePlaceholder":3505},[2915,27542,27543,27545,27547],{"class":3402,"line":20222},[2915,27544,5960],{"class":3529},[2915,27546,5137],{"class":3533},[2915,27548,27549],{"class":3414},"\"\u002Fetc\u002Fnginx\u002Fnginx.conf\"\n",[2915,27551,27552],{"class":3402,"line":20234},[2915,27553,3506],{"emptyLinePlaceholder":3505},[2915,27555,27556,27559,27561,27564,27566,27568,27570,27573,27575],{"class":3402,"line":20239},[2915,27557,27558],{"class":3529},"BACKUP",[2915,27560,5137],{"class":3533},[2915,27562,27563],{"class":3414},"\"\u002Fbackup\u002F$(",[2915,27565,26856],{"class":3406},[2915,27567,4968],{"class":3414},[2915,27569,10602],{"class":3529},[2915,27571,27572],{"class":3414},"\").$(",[2915,27574,10041],{"class":3406},[2915,27576,27577],{"class":3414}," %Y%m%d)\"\n",[2915,27579,27580],{"class":3402,"line":20245},[2915,27581,3506],{"emptyLinePlaceholder":3505},[2915,27583,27584,27587,27589,27591,27593,27595,27598],{"class":3402,"line":20250},[2915,27585,27586],{"class":3406},"cp",[2915,27588,4968],{"class":3414},[2915,27590,10602],{"class":3529},[2915,27592,4957],{"class":3414},[2915,27594,4968],{"class":3414},[2915,27596,27597],{"class":3529},"$BACKUP",[2915,27599,5204],{"class":3414},[2915,27601,27602],{"class":3402,"line":20256},[2915,27603,3506],{"emptyLinePlaceholder":3505},[2915,27605,27606,27608,27611,27613],{"class":3402,"line":20261},[2915,27607,5059],{"class":3410},[2915,27609,27610],{"class":3414}," \"Backup: ",[2915,27612,27597],{"class":3529},[2915,27614,5204],{"class":3414},[2915,27616,27617],{"class":3402,"line":20271},[2915,27618,3506],{"emptyLinePlaceholder":3505},[2915,27620,27621],{"class":3402,"line":20276},[2915,27622,27623],{"class":3511},"# ─── dirname als Gegenstück ──────────────────────────────────\n",[2915,27625,27626],{"class":3402,"line":20282},[2915,27627,3506],{"emptyLinePlaceholder":3505},[2915,27629,27630,27632,27634],{"class":3402,"line":20287},[2915,27631,5960],{"class":3529},[2915,27633,5137],{"class":3533},[2915,27635,27636],{"class":3414},"\"\u002Fhome\u002Fuser\u002Fdaten\u002Freport.csv\"\n",[2915,27638,27639],{"class":3402,"line":20297},[2915,27640,3506],{"emptyLinePlaceholder":3505},[2915,27642,27643,27646,27648,27650,27653,27655,27657,27659,27661],{"class":3402,"line":20302},[2915,27644,27645],{"class":3529},"DIR",[2915,27647,5137],{"class":3533},[2915,27649,9001],{"class":3529},[2915,27651,27652],{"class":3406},"dirname",[2915,27654,4968],{"class":3414},[2915,27656,10602],{"class":3529},[2915,27658,4957],{"class":3414},[2915,27660,5056],{"class":3529},[2915,27662,27663],{"class":3511},"# → \u002Fhome\u002Fuser\u002Fdaten\n",[2915,27665,27666],{"class":3402,"line":20308},[2915,27667,3506],{"emptyLinePlaceholder":3505},[2915,27669,27670,27673,27675,27677,27679,27681,27683,27685,27688,27690],{"class":3402,"line":20313},[2915,27671,27672],{"class":3529},"NAME",[2915,27674,5137],{"class":3533},[2915,27676,9001],{"class":3529},[2915,27678,26856],{"class":3406},[2915,27680,4968],{"class":3414},[2915,27682,10602],{"class":3529},[2915,27684,4957],{"class":3414},[2915,27686,27687],{"class":3414}," .csv",[2915,27689,5056],{"class":3529},[2915,27691,27692],{"class":3511},"# → report\n",[2915,27694,27695],{"class":3402,"line":20323},[2915,27696,3506],{"emptyLinePlaceholder":3505},[2915,27698,27699,27701,27704,27707],{"class":3402,"line":20328},[2915,27700,5059],{"class":3410},[2915,27702,27703],{"class":3414}," \"Verzeichnis: ",[2915,27705,27706],{"class":3529},"$DIR",[2915,27708,5204],{"class":3414},[2915,27710,27711],{"class":3402,"line":20334},[2915,27712,3506],{"emptyLinePlaceholder":3505},[2915,27714,27715,27717,27720,27723],{"class":3402,"line":20339},[2915,27716,5059],{"class":3410},[2915,27718,27719],{"class":3414}," \"Dateiname: ",[2915,27721,27722],{"class":3529},"$NAME",[2915,27724,5204],{"class":3414},[2915,27726,27727],{"class":3402,"line":20349},[2915,27728,3506],{"emptyLinePlaceholder":3505},[2915,27730,27731,27733,27736,27738,27740,27742],{"class":3402,"line":20354},[2915,27732,5059],{"class":3410},[2915,27734,27735],{"class":3414}," \"Voller Pfad: ",[2915,27737,27706],{"class":3529},[2915,27739,12410],{"class":3414},[2915,27741,27722],{"class":3529},[2915,27743,27744],{"class":3414},".csv\"\n",[54,27746,11749],{"id":27747},"ausgabe-19",[11,27749,27751],{"id":27750},"basename-homemattaprojektskriptsh","basename \u002Fhome\u002Fmatta\u002Fprojekt\u002Fskript.sh",[16,27753,27754],{},"skript.sh",[11,27756,27758],{"id":27757},"basename-homemattaprojektskriptsh-sh","basename \u002Fhome\u002Fmatta\u002Fprojekt\u002Fskript.sh .sh",[16,27760,27761],{},"skript",[11,27763,27765],{"id":27764},"basename-a-varlogsyslog-varlogauthlog-varlogkernlog","basename -a \u002Fvar\u002Flog\u002Fsyslog \u002Fvar\u002Flog\u002Fauth.log \u002Fvar\u002Flog\u002Fkern.log",[16,27767,27768],{},"syslog",[16,27770,27771],{},"auth.log",[16,27773,27774],{},"kern.log",[11,27776,27778],{"id":27777},"basename-a-s-log-varlogsyslog-varlogauthlog","basename -a -s .log \u002Fvar\u002Flog\u002Fsyslog \u002Fvar\u002Flog\u002Fauth.log",[16,27780,27768],{},[16,27782,27783],{},"auth",[11,27785,27787],{"id":27786},"dirname-homemattaprojektskriptsh","dirname \u002Fhome\u002Fmatta\u002Fprojekt\u002Fskript.sh",[16,27789,27790],{},"\u002Fhome\u002Fmatta\u002Fprojekt",[11,27792,6792],{"id":6792},[16,27794,27795,27797,27798,27801],{},[26,27796,11461],{}," Docker ist eine Plattform zur ",[26,27799,27800],{},"Containerisierung von Anwendungen",". Ein Container ist eine isolierte, portable Ausführungsumgebung mit allem was die Anwendung benötigt (Code, Bibliotheken, Konfiguration).",[16,27803,27804,27806,27807,27809],{},[26,27805,6691],{}," docker ",[2915,27808,11472],{}," BEFEHL",[54,27811,27813],{"id":27812},"grundkonzepte","Grundkonzepte",[645,27815,27816,27829],{},[648,27817,27818],{},[651,27819,27820,27825],{},[654,27821,27822],{},[26,27823,27824],{},"Begriff",[654,27826,27827],{},[26,27828,5483],{},[670,27830,27831,27839,27847,27855,27862,27870,27878],{},[651,27832,27833,27836],{},[675,27834,27835],{},"Image",[675,27837,27838],{},"Unveränderliche Vorlage\u002FBauplan für Container",[651,27840,27841,27844],{},[675,27842,27843],{},"Container",[675,27845,27846],{},"Laufende (oder gestoppte) Instanz eines Images",[651,27848,27849,27852],{},[675,27850,27851],{},"Dockerfile",[675,27853,27854],{},"Textdatei mit Anweisungen zum Bauen eines Images",[651,27856,27857,27859],{},[675,27858,2013],{},[675,27860,27861],{},"Speicher für Images (Docker Hub, ghcr.io, eigene)",[651,27863,27864,27867],{},[675,27865,27866],{},"Layer",[675,27868,27869],{},"Jede Dockerfile-Anweisung erzeugt eine unveränderliche Schicht",[651,27871,27872,27875],{},[675,27873,27874],{},"Volume",[675,27876,27877],{},"Persistenter Datenspeicher außerhalb des Containers",[651,27879,27880,27883],{},[675,27881,27882],{},"Network",[675,27884,27885],{},"Virtuelles Netzwerk für Container-Kommunikation",[54,27887,27889],{"id":27888},"wichtige-docker-befehle","Wichtige docker-Befehle",[228,27891,27893],{"id":27892},"images","Images",[645,27895,27896,27908],{},[648,27897,27898],{},[651,27899,27900,27904],{},[654,27901,27902],{},[26,27903,6993],{},[654,27905,27906],{},[26,27907,5483],{},[670,27909,27910,27923,27935,27943,27950,27958,27966,27974,27982,27990,27998],{},[651,27911,27912,27920],{},[675,27913,27914,27915],{},"docker pull IMAGE",[2915,27916,27917],{},[27918,27919],"tag",{},[675,27921,27922],{},"Image von Registry herunterladen",[651,27924,27925,27932],{},[675,27926,27927,27928],{},"docker push IMAGE",[2915,27929,27930],{},[27918,27931],{},[675,27933,27934],{},"Image in Registry hochladen",[651,27936,27937,27940],{},[675,27938,27939],{},"docker build -t NAME .",[675,27941,27942],{},"Image aus Dockerfile im aktuellen Verzeichnis bauen",[651,27944,27945,27947],{},[675,27946,6639],{},[675,27948,27949],{},"Alle lokalen Images auflisten",[651,27951,27952,27955],{},[675,27953,27954],{},"docker rmi IMAGE",[675,27956,27957],{},"Image löschen",[651,27959,27960,27963],{},[675,27961,27962],{},"docker tag QUELLE ZIEL",[675,27964,27965],{},"Image neu taggen",[651,27967,27968,27971],{},[675,27969,27970],{},"docker image prune",[675,27972,27973],{},"Unbenutzte Images löschen",[651,27975,27976,27979],{},[675,27977,27978],{},"docker image inspect IMAGE",[675,27980,27981],{},"Detaillierte Image-Infos",[651,27983,27984,27987],{},[675,27985,27986],{},"docker image history IMAGE",[675,27988,27989],{},"Layer-Historie anzeigen",[651,27991,27992,27995],{},[675,27993,27994],{},"docker save -o datei.tar IMAGE",[675,27996,27997],{},"Image als Tar-Archiv exportieren",[651,27999,28000,28003],{},[675,28001,28002],{},"docker load -i datei.tar",[675,28004,28005],{},"Image aus Tar-Archiv laden",[228,28007,27843],{"id":28008},"container",[645,28010,28011,28023],{},[648,28012,28013],{},[651,28014,28015,28019],{},[654,28016,28017],{},[26,28018,6993],{},[654,28020,28021],{},[26,28022,5483],{},[670,28024,28025,28033,28041,28049,28057,28065,28073,28080,28087,28095,28103,28111,28119,28127,28135,28143],{},[651,28026,28027,28030],{},[675,28028,28029],{},"docker run IMAGE",[675,28031,28032],{},"Container aus Image starten (erstellt neuen Container)",[651,28034,28035,28038],{},[675,28036,28037],{},"docker start CONTAINER",[675,28039,28040],{},"Gestoppten Container starten",[651,28042,28043,28046],{},[675,28044,28045],{},"docker stop CONTAINER",[675,28047,28048],{},"Container graceful stoppen (SIGTERM → SIGKILL)",[651,28050,28051,28054],{},[675,28052,28053],{},"docker restart CONTAINER",[675,28055,28056],{},"Container neu starten",[651,28058,28059,28062],{},[675,28060,28061],{},"docker kill CONTAINER",[675,28063,28064],{},"Container sofort beenden (SIGKILL)",[651,28066,28067,28070],{},[675,28068,28069],{},"docker rm CONTAINER",[675,28071,28072],{},"Gestoppten Container entfernen",[651,28074,28075,28077],{},[675,28076,7007],{},[675,28078,28079],{},"Laufende Container anzeigen",[651,28081,28082,28084],{},[675,28083,7021],{},[675,28085,28086],{},"Alle Container (auch gestoppte)",[651,28088,28089,28092],{},[675,28090,28091],{},"docker exec CONTAINER BEFEHL",[675,28093,28094],{},"Befehl in laufendem Container ausführen",[651,28096,28097,28100],{},[675,28098,28099],{},"docker logs CONTAINER",[675,28101,28102],{},"Container-Logs anzeigen",[651,28104,28105,28108],{},[675,28106,28107],{},"docker inspect CONTAINER",[675,28109,28110],{},"Detaillierte Container-Infos (JSON)",[651,28112,28113,28116],{},[675,28114,28115],{},"docker stats",[675,28117,28118],{},"Ressourcenverbrauch live anzeigen",[651,28120,28121,28124],{},[675,28122,28123],{},"docker top CONTAINER",[675,28125,28126],{},"Prozesse im Container anzeigen",[651,28128,28129,28132],{},[675,28130,28131],{},"docker diff CONTAINER",[675,28133,28134],{},"Dateisystemänderungen seit Start",[651,28136,28137,28140],{},[675,28138,28139],{},"docker cp CONTAINER:PFAD LOKAL",[675,28141,28142],{},"Datei aus Container kopieren",[651,28144,28145,28148],{},[675,28146,28147],{},"docker commit CONTAINER IMAGE",[675,28149,28150],{},"Container in Image umwandeln",[228,28152,28154],{"id":28153},"volumes-und-netzwerke","Volumes und Netzwerke",[645,28156,28157,28169],{},[648,28158,28159],{},[651,28160,28161,28165],{},[654,28162,28163],{},[26,28164,6993],{},[654,28166,28167],{},[26,28168,5483],{},[670,28170,28171,28179,28187,28195,28203,28211,28219,28227,28235,28243],{},[651,28172,28173,28176],{},[675,28174,28175],{},"docker volume create NAME",[675,28177,28178],{},"Volume erstellen",[651,28180,28181,28184],{},[675,28182,28183],{},"docker volume ls",[675,28185,28186],{},"Volumes auflisten",[651,28188,28189,28192],{},[675,28190,28191],{},"docker volume rm NAME",[675,28193,28194],{},"Volume löschen",[651,28196,28197,28200],{},[675,28198,28199],{},"docker volume inspect NAME",[675,28201,28202],{},"Volume-Details",[651,28204,28205,28208],{},[675,28206,28207],{},"docker volume prune",[675,28209,28210],{},"Unbenutzte Volumes löschen",[651,28212,28213,28216],{},[675,28214,28215],{},"docker network create NAME",[675,28217,28218],{},"Netzwerk erstellen",[651,28220,28221,28224],{},[675,28222,28223],{},"docker network ls",[675,28225,28226],{},"Netzwerke auflisten",[651,28228,28229,28232],{},[675,28230,28231],{},"docker network rm NAME",[675,28233,28234],{},"Netzwerk löschen",[651,28236,28237,28240],{},[675,28238,28239],{},"docker network inspect NAME",[675,28241,28242],{},"Netzwerk-Details",[651,28244,28245,28248],{},[675,28246,28247],{},"docker network connect NET CONT",[675,28249,28250],{},"Container zu Netzwerk hinzufügen",[54,28252,28254],{"id":28253},"docker-run-optionen-wichtigste","docker run Optionen (wichtigste)",[645,28256,28257,28269],{},[648,28258,28259],{},[651,28260,28261,28265],{},[654,28262,28263],{},[26,28264,7715],{},[654,28266,28267],{},[26,28268,5483],{},[670,28270,28271,28279,28287,28295,28303,28311,28319,28327,28335,28343,28351,28359,28367,28380,28388,28396,28404,28412,28420,28428,28436],{},[651,28272,28273,28276],{},[675,28274,28275],{},"-d \u002F --detach",[675,28277,28278],{},"Im Hintergrund starten",[651,28280,28281,28284],{},[675,28282,28283],{},"-it",[675,28285,28286],{},"Interaktives Terminal (-i: stdin offen, -t: TTY)",[651,28288,28289,28292],{},[675,28290,28291],{},"--name NAME",[675,28293,28294],{},"Container benennen",[651,28296,28297,28300],{},[675,28298,28299],{},"-p HOST:CONT",[675,28301,28302],{},"Port-Weiterleitung (z.B. -p 8080:80)",[651,28304,28305,28308],{},[675,28306,28307],{},"-v HOST:CONT",[675,28309,28310],{},"Volume \u002F Bind-Mount (-v \u002Flokal:\u002Fcontainer)",[651,28312,28313,28316],{},[675,28314,28315],{},"--volume=vol:\u002Fpfad",[675,28317,28318],{},"Named Volume einbinden",[651,28320,28321,28324],{},[675,28322,28323],{},"-e VAR=WERT",[675,28325,28326],{},"Umgebungsvariable setzen",[651,28328,28329,28332],{},[675,28330,28331],{},"--env-file DATEI",[675,28333,28334],{},"Umgebungsvariablen aus Datei",[651,28336,28337,28340],{},[675,28338,28339],{},"--rm",[675,28341,28342],{},"Container nach Beenden automatisch löschen",[651,28344,28345,28348],{},[675,28346,28347],{},"--restart POLICY",[675,28349,28350],{},"Neustart-Policy (no, always, on-failure, unless-stopped)",[651,28352,28353,28356],{},[675,28354,28355],{},"--network NETZWERK",[675,28357,28358],{},"Container in Netzwerk einbinden",[651,28360,28361,28364],{},[675,28362,28363],{},"--network=host",[675,28365,28366],{},"Host-Netzwerk direkt nutzen",[651,28368,28369,28377],{},[675,28370,28371,28372],{},"-u USER",[2915,28373,28374],{},[28375,28376],"grp",{},[675,28378,28379],{},"Als bestimmten Benutzer ausführen",[651,28381,28382,28385],{},[675,28383,28384],{},"-w DIR",[675,28386,28387],{},"Arbeitsverzeichnis im Container",[651,28389,28390,28393],{},[675,28391,28392],{},"--entrypoint CMD",[675,28394,28395],{},"Standard-Entrypoint überschreiben",[651,28397,28398,28401],{},[675,28399,28400],{},"--memory=512m",[675,28402,28403],{},"RAM-Limit setzen",[651,28405,28406,28409],{},[675,28407,28408],{},"--cpus=1.5",[675,28410,28411],{},"CPU-Limit setzen",[651,28413,28414,28417],{},[675,28415,28416],{},"--read-only",[675,28418,28419],{},"Dateisystem des Containers schreibgeschützt",[651,28421,28422,28425],{},[675,28423,28424],{},"--tmpfs \u002Ftmp",[675,28426,28427],{},"In-Memory-Dateisystem für bestimmten Pfad",[651,28429,28430,28433],{},[675,28431,28432],{},"-l KEY=WERT",[675,28434,28435],{},"Label setzen",[651,28437,28438,28441],{},[675,28439,28440],{},"--hostname NAME",[675,28442,28443],{},"Hostname im Container",[54,28445,28447],{"id":28446},"dockerfile-aufbau","Dockerfile Aufbau",[3392,28449,28451],{"className":7163,"code":28450,"language":7165,"meta":225,"style":225},"# ─── Basisimage ───────────────────────────────────────────────\n\nFROM ubuntu:22.04\n\n# oder für kleinere Images:\n\nFROM alpine:3.19\n\nFROM debian:bookworm-slim\n\n# ─── Metadaten ────────────────────────────────────────────────\n\nLABEL maintainer=\"admin@example.com\"\n\nLABEL version=\"1.0\"\n\nLABEL description=\"Meine Anwendung\"\n\n# ─── Umgebungsvariablen ───────────────────────────────────────\n\nENV APP_VERSION=1.0 \\\n\n",[3398,28452,28453,28458,28462,28469,28473,28478,28482,28489,28493,28500,28504,28509,28513,28522,28526,28536,28540,28550,28554,28559,28563],{"__ignoreMap":225},[2915,28454,28455],{"class":3402,"line":3403},[2915,28456,28457],{"class":3511},"# ─── Basisimage ───────────────────────────────────────────────\n",[2915,28459,28460],{"class":3402,"line":1117},[2915,28461,3506],{"emptyLinePlaceholder":3505},[2915,28463,28464,28466],{"class":3402,"line":1125},[2915,28465,7190],{"class":3533},[2915,28467,28468],{"class":3529}," ubuntu:22.04\n",[2915,28470,28471],{"class":3402,"line":3515},[2915,28472,3506],{"emptyLinePlaceholder":3505},[2915,28474,28475],{"class":3402,"line":3520},[2915,28476,28477],{"class":3511},"# oder für kleinere Images:\n",[2915,28479,28480],{"class":3402,"line":5070},[2915,28481,3506],{"emptyLinePlaceholder":3505},[2915,28483,28484,28486],{"class":3402,"line":5075},[2915,28485,7190],{"class":3533},[2915,28487,28488],{"class":3529}," alpine:3.19\n",[2915,28490,28491],{"class":3402,"line":5093},[2915,28492,3506],{"emptyLinePlaceholder":3505},[2915,28494,28495,28497],{"class":3402,"line":5098},[2915,28496,7190],{"class":3533},[2915,28498,28499],{"class":3529}," debian:bookworm-slim\n",[2915,28501,28502],{"class":3402,"line":5207},[2915,28503,3506],{"emptyLinePlaceholder":3505},[2915,28505,28506],{"class":3402,"line":5212},[2915,28507,28508],{"class":3511},"# ─── Metadaten ────────────────────────────────────────────────\n",[2915,28510,28511],{"class":3402,"line":5218},[2915,28512,3506],{"emptyLinePlaceholder":3505},[2915,28514,28515,28517,28519],{"class":3402,"line":5223},[2915,28516,7208],{"class":3533},[2915,28518,7211],{"class":3529},[2915,28520,28521],{"class":3414},"\"admin@example.com\"\n",[2915,28523,28524],{"class":3402,"line":5229},[2915,28525,3506],{"emptyLinePlaceholder":3505},[2915,28527,28528,28530,28533],{"class":3402,"line":5253},[2915,28529,7208],{"class":3533},[2915,28531,28532],{"class":3529}," version=",[2915,28534,28535],{"class":3414},"\"1.0\"\n",[2915,28537,28538],{"class":3402,"line":5266},[2915,28539,3506],{"emptyLinePlaceholder":3505},[2915,28541,28542,28544,28547],{"class":3402,"line":5721},[2915,28543,7208],{"class":3533},[2915,28545,28546],{"class":3529}," description=",[2915,28548,28549],{"class":3414},"\"Meine Anwendung\"\n",[2915,28551,28552],{"class":3402,"line":9401},[2915,28553,3506],{"emptyLinePlaceholder":3505},[2915,28555,28556],{"class":3402,"line":9406},[2915,28557,28558],{"class":3511},"# ─── Umgebungsvariablen ───────────────────────────────────────\n",[2915,28560,28561],{"class":3402,"line":9411},[2915,28562,3506],{"emptyLinePlaceholder":3505},[2915,28564,28565,28567],{"class":3402,"line":9416},[2915,28566,7238],{"class":3533},[2915,28568,28569],{"class":3529}," APP_VERSION=1.0 \\\n",[3392,28571,28573],{"className":3394,"code":28572,"language":3396,"meta":225,"style":225},"NODE_ENV=production \\\n\nPORT=3000\n\n# ─── Build-Argumente (nur zur Build-Zeit verfügbar) ───────────\n\n",[3398,28574,28575,28587,28591,28596,28600],{"__ignoreMap":225},[2915,28576,28577,28580,28582,28585],{"class":3402,"line":3403},[2915,28578,28579],{"class":3529},"NODE_ENV",[2915,28581,5137],{"class":3533},[2915,28583,28584],{"class":3414},"production",[2915,28586,6801],{"class":3406},[2915,28588,28589],{"class":3402,"line":1117},[2915,28590,3506],{"emptyLinePlaceholder":3505},[2915,28592,28593],{"class":3402,"line":1125},[2915,28594,28595],{"class":3529},"PORT=3000\n",[2915,28597,28598],{"class":3402,"line":3515},[2915,28599,3506],{"emptyLinePlaceholder":3505},[2915,28601,28602],{"class":3402,"line":3520},[2915,28603,28604],{"class":3511},"# ─── Build-Argumente (nur zur Build-Zeit verfügbar) ───────────\n",[3392,28606,28608],{"className":7163,"code":28607,"language":7165,"meta":225,"style":225},"ARG BUILD_DATE\n\nARG GIT_COMMIT\n\n# ─── Benutzer und Arbeitsverzeichnis ──────────────────────────\n\nRUN groupadd -r appuser && useradd -r -g appuser appuser\n\nWORKDIR \u002Fapp\n\n# ─── Pakete installieren ──────────────────────────────────────\n\nRUN apt-get update && apt-get install -y \\\n\n",[3398,28609,28610,28617,28621,28628,28632,28637,28641,28648,28652,28658,28662,28667,28671],{"__ignoreMap":225},[2915,28611,28612,28614],{"class":3402,"line":3403},[2915,28613,7172],{"class":3533},[2915,28615,28616],{"class":3529}," BUILD_DATE\n",[2915,28618,28619],{"class":3402,"line":1117},[2915,28620,3506],{"emptyLinePlaceholder":3505},[2915,28622,28623,28625],{"class":3402,"line":1125},[2915,28624,7172],{"class":3533},[2915,28626,28627],{"class":3529}," GIT_COMMIT\n",[2915,28629,28630],{"class":3402,"line":3515},[2915,28631,3506],{"emptyLinePlaceholder":3505},[2915,28633,28634],{"class":3402,"line":3520},[2915,28635,28636],{"class":3511},"# ─── Benutzer und Arbeitsverzeichnis ──────────────────────────\n",[2915,28638,28639],{"class":3402,"line":5070},[2915,28640,3506],{"emptyLinePlaceholder":3505},[2915,28642,28643,28645],{"class":3402,"line":5075},[2915,28644,7298],{"class":3533},[2915,28646,28647],{"class":3529}," groupadd -r appuser && useradd -r -g appuser appuser\n",[2915,28649,28650],{"class":3402,"line":5093},[2915,28651,3506],{"emptyLinePlaceholder":3505},[2915,28653,28654,28656],{"class":3402,"line":5098},[2915,28655,7250],{"class":3533},[2915,28657,7448],{"class":3529},[2915,28659,28660],{"class":3402,"line":5207},[2915,28661,3506],{"emptyLinePlaceholder":3505},[2915,28663,28664],{"class":3402,"line":5212},[2915,28665,28666],{"class":3511},"# ─── Pakete installieren ──────────────────────────────────────\n",[2915,28668,28669],{"class":3402,"line":5218},[2915,28670,3506],{"emptyLinePlaceholder":3505},[2915,28672,28673,28675],{"class":3402,"line":5223},[2915,28674,7298],{"class":3533},[2915,28676,28677],{"class":3529}," apt-get update && apt-get install -y \\\n",[3392,28679,28681],{"className":3394,"code":28680,"language":3396,"meta":225,"style":225},"curl \\\n\n",[3398,28682,28683],{"__ignoreMap":225},[2915,28684,28685,28688],{"class":3402,"line":3403},[2915,28686,28687],{"class":3406},"curl",[2915,28689,6801],{"class":3410},[16,28691,28692],{},"nginx \\",[16,28694,28695],{},"&& rm -rf \u002Fvar\u002Flib\u002Fapt\u002Flists\u002F* # Image-Größe reduzieren!",[3392,28697,28699],{"className":7163,"code":28698,"language":7165,"meta":225,"style":225},"# ─── Dateien kopieren ─────────────────────────────────────────\n\nCOPY . . # Alles aus Build-Kontext kopieren\n\nCOPY package.json package-lock.json .\u002F # Zuerst nur package-Dateien\n\nRUN npm ci --only=production # Cache-freundlich: nur bei Paket-Änderung\n\nCOPY src\u002F .\u002Fsrc\u002F # Dann den Rest\n\nADD archiv.tar.gz \u002Fapp\u002F # ADD kann auch Archive entpacken\n\n# ─── Port deklarieren (Dokumentation, keine echte Weiterleitung) ─\n\nEXPOSE 3000\n\nEXPOSE 80\u002Ftcp\n\nEXPOSE 53\u002Fudp\n\n# ─── Volume deklarieren ───────────────────────────────────────\n\nVOLUME [\"\u002Fapp\u002Fdata\", \"\u002Fapp\u002Flogs\"]\n\n# ─── Gesundheitscheck ─────────────────────────────────────────\n\nHEALTHCHECK --interval=30s --timeout=10s --retries=3 \\\n\nCMD curl -f http:\u002F\u002Flocalhost:3000\u002Fhealth || exit 1\n\n# ─── Benutzer wechseln (nie als root laufen!) ─────────────────\n\nUSER appuser\n\n# ─── Entrypoint vs CMD ────────────────────────────────────────\n\n# ENTRYPOINT: unveränderlicher Hauptbefehl\n\n# CMD: Standardargumente (überschreibbar mit docker run ... BEFEHL)\n\nENTRYPOINT [\"node\"]\n\nCMD [\"server.js\"]\n\n# → docker run image → node server.js\n\n# → docker run image app.js → node app.js\n\n# → docker run --entrypoint sh image → sh\n\n# Nur CMD (kein Entrypoint):\n\nCMD [\"nginx\", \"-g\", \"daemon off;\"]\n\n",[3398,28700,28701,28706,28710,28717,28721,28728,28732,28739,28743,28750,28754,28762,28766,28771,28775,28782,28786,28793,28797,28804,28808,28813,28817,28834,28838,28843,28847,28854,28858,28865,28869,28874,28878,28886,28890,28895,28899,28904,28908,28913,28917,28928,28932,28943,28947,28952,28956,28961,28965,28970,28974,28979,28983],{"__ignoreMap":225},[2915,28702,28703],{"class":3402,"line":3403},[2915,28704,28705],{"class":3511},"# ─── Dateien kopieren ─────────────────────────────────────────\n",[2915,28707,28708],{"class":3402,"line":1117},[2915,28709,3506],{"emptyLinePlaceholder":3505},[2915,28711,28712,28714],{"class":3402,"line":1125},[2915,28713,7274],{"class":3533},[2915,28715,28716],{"class":3529}," . . # Alles aus Build-Kontext kopieren\n",[2915,28718,28719],{"class":3402,"line":3515},[2915,28720,3506],{"emptyLinePlaceholder":3505},[2915,28722,28723,28725],{"class":3402,"line":3520},[2915,28724,7274],{"class":3533},[2915,28726,28727],{"class":3529}," package.json package-lock.json .\u002F # Zuerst nur package-Dateien\n",[2915,28729,28730],{"class":3402,"line":5070},[2915,28731,3506],{"emptyLinePlaceholder":3505},[2915,28733,28734,28736],{"class":3402,"line":5075},[2915,28735,7298],{"class":3533},[2915,28737,28738],{"class":3529}," npm ci --only=production # Cache-freundlich: nur bei Paket-Änderung\n",[2915,28740,28741],{"class":3402,"line":5093},[2915,28742,3506],{"emptyLinePlaceholder":3505},[2915,28744,28745,28747],{"class":3402,"line":5098},[2915,28746,7274],{"class":3533},[2915,28748,28749],{"class":3529}," src\u002F .\u002Fsrc\u002F # Dann den Rest\n",[2915,28751,28752],{"class":3402,"line":5207},[2915,28753,3506],{"emptyLinePlaceholder":3505},[2915,28755,28756,28759],{"class":3402,"line":5212},[2915,28757,28758],{"class":3533},"ADD",[2915,28760,28761],{"class":3529}," archiv.tar.gz \u002Fapp\u002F # ADD kann auch Archive entpacken\n",[2915,28763,28764],{"class":3402,"line":5218},[2915,28765,3506],{"emptyLinePlaceholder":3505},[2915,28767,28768],{"class":3402,"line":5223},[2915,28769,28770],{"class":3511},"# ─── Port deklarieren (Dokumentation, keine echte Weiterleitung) ─\n",[2915,28772,28773],{"class":3402,"line":5229},[2915,28774,3506],{"emptyLinePlaceholder":3505},[2915,28776,28777,28779],{"class":3402,"line":5253},[2915,28778,7353],{"class":3533},[2915,28780,28781],{"class":3529}," 3000\n",[2915,28783,28784],{"class":3402,"line":5266},[2915,28785,3506],{"emptyLinePlaceholder":3505},[2915,28787,28788,28790],{"class":3402,"line":5721},[2915,28789,7353],{"class":3533},[2915,28791,28792],{"class":3529}," 80\u002Ftcp\n",[2915,28794,28795],{"class":3402,"line":9401},[2915,28796,3506],{"emptyLinePlaceholder":3505},[2915,28798,28799,28801],{"class":3402,"line":9406},[2915,28800,7353],{"class":3533},[2915,28802,28803],{"class":3529}," 53\u002Fudp\n",[2915,28805,28806],{"class":3402,"line":9411},[2915,28807,3506],{"emptyLinePlaceholder":3505},[2915,28809,28810],{"class":3402,"line":9416},[2915,28811,28812],{"class":3511},"# ─── Volume deklarieren ───────────────────────────────────────\n",[2915,28814,28815],{"class":3402,"line":9428},[2915,28816,3506],{"emptyLinePlaceholder":3505},[2915,28818,28819,28822,28824,28827,28829,28832],{"class":3402,"line":9433},[2915,28820,28821],{"class":3533},"VOLUME",[2915,28823,7373],{"class":3529},[2915,28825,28826],{"class":3414},"\"\u002Fapp\u002Fdata\"",[2915,28828,7379],{"class":3529},[2915,28830,28831],{"class":3414},"\"\u002Fapp\u002Flogs\"",[2915,28833,7385],{"class":3529},[2915,28835,28836],{"class":3402,"line":9454},[2915,28837,3506],{"emptyLinePlaceholder":3505},[2915,28839,28840],{"class":3402,"line":9459},[2915,28841,28842],{"class":3511},"# ─── Gesundheitscheck ─────────────────────────────────────────\n",[2915,28844,28845],{"class":3402,"line":9464},[2915,28846,3506],{"emptyLinePlaceholder":3505},[2915,28848,28849,28851],{"class":3402,"line":9469},[2915,28850,7333],{"class":3533},[2915,28852,28853],{"class":3529}," --interval=30s --timeout=10s --retries=3 \\\n",[2915,28855,28856],{"class":3402,"line":9479},[2915,28857,3506],{"emptyLinePlaceholder":3505},[2915,28859,28860,28862],{"class":3402,"line":9484},[2915,28861,7341],{"class":3533},[2915,28863,28864],{"class":3529}," curl -f http:\u002F\u002Flocalhost:3000\u002Fhealth || exit 1\n",[2915,28866,28867],{"class":3402,"line":9489},[2915,28868,3506],{"emptyLinePlaceholder":3505},[2915,28870,28871],{"class":3402,"line":9494},[2915,28872,28873],{"class":3511},"# ─── Benutzer wechseln (nie als root laufen!) ─────────────────\n",[2915,28875,28876],{"class":3402,"line":9504},[2915,28877,3506],{"emptyLinePlaceholder":3505},[2915,28879,28880,28883],{"class":3402,"line":9509},[2915,28881,28882],{"class":3533},"USER",[2915,28884,28885],{"class":3529}," appuser\n",[2915,28887,28888],{"class":3402,"line":9514},[2915,28889,3506],{"emptyLinePlaceholder":3505},[2915,28891,28892],{"class":3402,"line":9519},[2915,28893,28894],{"class":3511},"# ─── Entrypoint vs CMD ────────────────────────────────────────\n",[2915,28896,28897],{"class":3402,"line":9524},[2915,28898,3506],{"emptyLinePlaceholder":3505},[2915,28900,28901],{"class":3402,"line":9529},[2915,28902,28903],{"class":3511},"# ENTRYPOINT: unveränderlicher Hauptbefehl\n",[2915,28905,28906],{"class":3402,"line":9534},[2915,28907,3506],{"emptyLinePlaceholder":3505},[2915,28909,28910],{"class":3402,"line":9539},[2915,28911,28912],{"class":3511},"# CMD: Standardargumente (überschreibbar mit docker run ... BEFEHL)\n",[2915,28914,28915],{"class":3402,"line":9552},[2915,28916,3506],{"emptyLinePlaceholder":3505},[2915,28918,28919,28922,28924,28926],{"class":3402,"line":9557},[2915,28920,28921],{"class":3533},"ENTRYPOINT",[2915,28923,7373],{"class":3529},[2915,28925,7587],{"class":3414},[2915,28927,7385],{"class":3529},[2915,28929,28930],{"class":3402,"line":9570},[2915,28931,3506],{"emptyLinePlaceholder":3505},[2915,28933,28934,28936,28938,28941],{"class":3402,"line":9575},[2915,28935,7341],{"class":3533},[2915,28937,7373],{"class":3529},[2915,28939,28940],{"class":3414},"\"server.js\"",[2915,28942,7385],{"class":3529},[2915,28944,28945],{"class":3402,"line":9588},[2915,28946,3506],{"emptyLinePlaceholder":3505},[2915,28948,28949],{"class":3402,"line":9593},[2915,28950,28951],{"class":3511},"# → docker run image → node server.js\n",[2915,28953,28954],{"class":3402,"line":9598},[2915,28955,3506],{"emptyLinePlaceholder":3505},[2915,28957,28958],{"class":3402,"line":9603},[2915,28959,28960],{"class":3511},"# → docker run image app.js → node app.js\n",[2915,28962,28963],{"class":3402,"line":9619},[2915,28964,3506],{"emptyLinePlaceholder":3505},[2915,28966,28967],{"class":3402,"line":9624},[2915,28968,28969],{"class":3511},"# → docker run --entrypoint sh image → sh\n",[2915,28971,28972],{"class":3402,"line":9629},[2915,28973,3506],{"emptyLinePlaceholder":3505},[2915,28975,28976],{"class":3402,"line":9634},[2915,28977,28978],{"class":3511},"# Nur CMD (kein Entrypoint):\n",[2915,28980,28981],{"class":3402,"line":9642},[2915,28982,3506],{"emptyLinePlaceholder":3505},[2915,28984,28985,28987,28989,28992,28994,28997,28999,29002],{"class":3402,"line":9647},[2915,28986,7341],{"class":3533},[2915,28988,7373],{"class":3529},[2915,28990,28991],{"class":3414},"\"nginx\"",[2915,28993,7379],{"class":3529},[2915,28995,28996],{"class":3414},"\"-g\"",[2915,28998,7379],{"class":3529},[2915,29000,29001],{"class":3414},"\"daemon off;\"",[2915,29003,7385],{"class":3529},[54,29005,8676],{"id":29006},"beispiele-20",[11,29008,29010],{"id":29009},"einfacher-container-start","Einfacher Container-Start",[3392,29012,29014],{"className":3394,"code":29013,"language":3396,"meta":225,"style":225},"docker run hello-world\n\n# Nginx-Webserver auf Port 8080\n\ndocker run -d -p 8080:80 --name mein-nginx nginx:alpine\n\n# Interaktive Shell in Ubuntu\n\ndocker run -it --rm ubuntu:22.04 bash\n\n# Image bauen\n\ndocker build -t meine-app:1.0 .\n\ndocker build -t meine-app:1.0 -f Dockerfile.prod .\n\n# Container-Logs verfolgen\n\ndocker logs -f mein-container\n\n# In laufenden Container einsteigen\n\ndocker exec -it mein-container bash\n\ndocker exec -it mein-container sh # für Alpine-Images\n\n# Port-Info anzeigen\n\ndocker port mein-container\n\n# Alle Container und Images aufräumen\n\ndocker system prune -af --volumes\n\n# Ressourcen aller laufenden Container\n\ndocker stats --no-stream\n\n# Container-IP-Adresse\n\ndocker inspect mein-container | grep -i ipaddress\n\n# docker compose\n\n",[3398,29015,29016,29025,29029,29034,29038,29058,29062,29067,29071,29089,29093,29098,29102,29116,29120,29137,29141,29146,29150,29162,29166,29171,29175,29189,29193,29209,29213,29218,29222,29231,29235,29240,29244,29260,29264,29269,29273,29283,29287,29292,29296,29314,29318],{"__ignoreMap":225},[2915,29017,29018,29020,29022],{"class":3402,"line":3403},[2915,29019,6792],{"class":3406},[2915,29021,6795],{"class":3414},[2915,29023,29024],{"class":3414}," hello-world\n",[2915,29026,29027],{"class":3402,"line":1117},[2915,29028,3506],{"emptyLinePlaceholder":3505},[2915,29030,29031],{"class":3402,"line":1125},[2915,29032,29033],{"class":3511},"# Nginx-Webserver auf Port 8080\n",[2915,29035,29036],{"class":3402,"line":3515},[2915,29037,3506],{"emptyLinePlaceholder":3505},[2915,29039,29040,29042,29044,29046,29048,29050,29052,29055],{"class":3402,"line":3520},[2915,29041,6792],{"class":3406},[2915,29043,6795],{"class":3414},[2915,29045,6798],{"class":3410},[2915,29047,6956],{"class":3410},[2915,29049,6959],{"class":3414},[2915,29051,6962],{"class":3410},[2915,29053,29054],{"class":3414}," mein-nginx",[2915,29056,29057],{"class":3414}," nginx:alpine\n",[2915,29059,29060],{"class":3402,"line":5070},[2915,29061,3506],{"emptyLinePlaceholder":3505},[2915,29063,29064],{"class":3402,"line":5075},[2915,29065,29066],{"class":3511},"# Interaktive Shell in Ubuntu\n",[2915,29068,29069],{"class":3402,"line":5093},[2915,29070,3506],{"emptyLinePlaceholder":3505},[2915,29072,29073,29075,29077,29080,29083,29086],{"class":3402,"line":5098},[2915,29074,6792],{"class":3406},[2915,29076,6795],{"class":3414},[2915,29078,29079],{"class":3410}," -it",[2915,29081,29082],{"class":3410}," --rm",[2915,29084,29085],{"class":3414}," ubuntu:22.04",[2915,29087,29088],{"class":3414}," bash\n",[2915,29090,29091],{"class":3402,"line":5207},[2915,29092,3506],{"emptyLinePlaceholder":3505},[2915,29094,29095],{"class":3402,"line":5212},[2915,29096,29097],{"class":3511},"# Image bauen\n",[2915,29099,29100],{"class":3402,"line":5218},[2915,29101,3506],{"emptyLinePlaceholder":3505},[2915,29103,29104,29106,29109,29111,29114],{"class":3402,"line":5223},[2915,29105,6792],{"class":3406},[2915,29107,29108],{"class":3414}," build",[2915,29110,14262],{"class":3410},[2915,29112,29113],{"class":3414}," meine-app:1.0",[2915,29115,7852],{"class":3414},[2915,29117,29118],{"class":3402,"line":5229},[2915,29119,3506],{"emptyLinePlaceholder":3505},[2915,29121,29122,29124,29126,29128,29130,29132,29135],{"class":3402,"line":5253},[2915,29123,6792],{"class":3406},[2915,29125,29108],{"class":3414},[2915,29127,14262],{"class":3410},[2915,29129,29113],{"class":3414},[2915,29131,10089],{"class":3410},[2915,29133,29134],{"class":3414}," Dockerfile.prod",[2915,29136,7852],{"class":3414},[2915,29138,29139],{"class":3402,"line":5266},[2915,29140,3506],{"emptyLinePlaceholder":3505},[2915,29142,29143],{"class":3402,"line":5721},[2915,29144,29145],{"class":3511},"# Container-Logs verfolgen\n",[2915,29147,29148],{"class":3402,"line":9401},[2915,29149,3506],{"emptyLinePlaceholder":3505},[2915,29151,29152,29154,29157,29159],{"class":3402,"line":9406},[2915,29153,6792],{"class":3406},[2915,29155,29156],{"class":3414}," logs",[2915,29158,10089],{"class":3410},[2915,29160,29161],{"class":3414}," mein-container\n",[2915,29163,29164],{"class":3402,"line":9411},[2915,29165,3506],{"emptyLinePlaceholder":3505},[2915,29167,29168],{"class":3402,"line":9416},[2915,29169,29170],{"class":3511},"# In laufenden Container einsteigen\n",[2915,29172,29173],{"class":3402,"line":9428},[2915,29174,3506],{"emptyLinePlaceholder":3505},[2915,29176,29177,29179,29182,29184,29187],{"class":3402,"line":9433},[2915,29178,6792],{"class":3406},[2915,29180,29181],{"class":3414}," exec",[2915,29183,29079],{"class":3410},[2915,29185,29186],{"class":3414}," mein-container",[2915,29188,29088],{"class":3414},[2915,29190,29191],{"class":3402,"line":9454},[2915,29192,3506],{"emptyLinePlaceholder":3505},[2915,29194,29195,29197,29199,29201,29203,29206],{"class":3402,"line":9459},[2915,29196,6792],{"class":3406},[2915,29198,29181],{"class":3414},[2915,29200,29079],{"class":3410},[2915,29202,29186],{"class":3414},[2915,29204,29205],{"class":3414}," sh",[2915,29207,29208],{"class":3511}," # für Alpine-Images\n",[2915,29210,29211],{"class":3402,"line":9464},[2915,29212,3506],{"emptyLinePlaceholder":3505},[2915,29214,29215],{"class":3402,"line":9469},[2915,29216,29217],{"class":3511},"# Port-Info anzeigen\n",[2915,29219,29220],{"class":3402,"line":9479},[2915,29221,3506],{"emptyLinePlaceholder":3505},[2915,29223,29224,29226,29229],{"class":3402,"line":9484},[2915,29225,6792],{"class":3406},[2915,29227,29228],{"class":3414}," port",[2915,29230,29161],{"class":3414},[2915,29232,29233],{"class":3402,"line":9489},[2915,29234,3506],{"emptyLinePlaceholder":3505},[2915,29236,29237],{"class":3402,"line":9494},[2915,29238,29239],{"class":3511},"# Alle Container und Images aufräumen\n",[2915,29241,29242],{"class":3402,"line":9504},[2915,29243,3506],{"emptyLinePlaceholder":3505},[2915,29245,29246,29248,29251,29254,29257],{"class":3402,"line":9509},[2915,29247,6792],{"class":3406},[2915,29249,29250],{"class":3414}," system",[2915,29252,29253],{"class":3414}," prune",[2915,29255,29256],{"class":3410}," -af",[2915,29258,29259],{"class":3410}," --volumes\n",[2915,29261,29262],{"class":3402,"line":9514},[2915,29263,3506],{"emptyLinePlaceholder":3505},[2915,29265,29266],{"class":3402,"line":9519},[2915,29267,29268],{"class":3511},"# Ressourcen aller laufenden Container\n",[2915,29270,29271],{"class":3402,"line":9524},[2915,29272,3506],{"emptyLinePlaceholder":3505},[2915,29274,29275,29277,29280],{"class":3402,"line":9529},[2915,29276,6792],{"class":3406},[2915,29278,29279],{"class":3414}," stats",[2915,29281,29282],{"class":3410}," --no-stream\n",[2915,29284,29285],{"class":3402,"line":9534},[2915,29286,3506],{"emptyLinePlaceholder":3505},[2915,29288,29289],{"class":3402,"line":9539},[2915,29290,29291],{"class":3511},"# Container-IP-Adresse\n",[2915,29293,29294],{"class":3402,"line":9552},[2915,29295,3506],{"emptyLinePlaceholder":3505},[2915,29297,29298,29300,29303,29305,29307,29309,29311],{"class":3402,"line":9557},[2915,29299,6792],{"class":3406},[2915,29301,29302],{"class":3414}," inspect",[2915,29304,29186],{"class":3414},[2915,29306,7679],{"class":3533},[2915,29308,7682],{"class":3406},[2915,29310,7692],{"class":3410},[2915,29312,29313],{"class":3414}," ipaddress\n",[2915,29315,29316],{"class":3402,"line":9570},[2915,29317,3506],{"emptyLinePlaceholder":3505},[2915,29319,29320],{"class":3402,"line":9575},[2915,29321,29322],{"class":3511},"# docker compose\n",[16,29324,29325,29327,29328,29331],{},[26,29326,11461],{}," docker compose (früher docker-compose) verwaltet ",[26,29329,29330],{},"Multi-Container-Anwendungen"," über eine einzige YAML-Datei. Es orchestriert das gemeinsame Starten, Stoppen und Konfigurieren mehrerer zusammengehöriger Container.",[16,29333,29334,29336,29337,29339,29340,29343,29345,29348],{},[26,29335,6691],{}," docker compose ",[2915,29338,11472],{}," BEFEHL ",[2915,29341,29342],{},"SERVICE...",[5885,29344],{},[26,29346,29347],{},"Standarddatei:"," docker-compose.yml (oder docker-compose.yaml)",[54,29350,29352],{"id":29351},"alle-docker-compose-befehle","Alle docker compose Befehle",[645,29354,29355,29367],{},[648,29356,29357],{},[651,29358,29359,29363],{},[654,29360,29361],{},[26,29362,6993],{},[654,29364,29365],{},[26,29366,5483],{},[670,29368,29369,29377,29385,29393,29401,29408,29416,29424,29432,29440,29448,29455,29463,29470,29478,29486,29493,29500,29508,29515,29523,29531,29538,29546,29554],{},[651,29370,29371,29374],{},[675,29372,29373],{},"up",[675,29375,29376],{},"Container erstellen und starten",[651,29378,29379,29382],{},[675,29380,29381],{},"down",[675,29383,29384],{},"Container stoppen und entfernen",[651,29386,29387,29390],{},[675,29388,29389],{},"start",[675,29391,29392],{},"Gestoppte Container starten (ohne neu zu erstellen)",[651,29394,29395,29398],{},[675,29396,29397],{},"stop",[675,29399,29400],{},"Container graceful stoppen (SIGTERM)",[651,29402,29403,29406],{},[675,29404,29405],{},"restart",[675,29407,28056],{},[651,29409,29410,29413],{},[675,29411,29412],{},"pause",[675,29414,29415],{},"Container einfrieren (SIGSTOP)",[651,29417,29418,29421],{},[675,29419,29420],{},"unpause",[675,29422,29423],{},"Eingefrorene Container fortsetzen",[651,29425,29426,29429],{},[675,29427,29428],{},"build",[675,29430,29431],{},"Images (neu) bauen",[651,29433,29434,29437],{},[675,29435,29436],{},"pull",[675,29438,29439],{},"Images aller Services herunterladen",[651,29441,29442,29445],{},[675,29443,29444],{},"push",[675,29446,29447],{},"Images in Registry hochladen",[651,29449,29450,29452],{},[675,29451,7673],{},[675,29453,29454],{},"Status aller Container",[651,29456,29457,29460],{},[675,29458,29459],{},"logs",[675,29461,29462],{},"Logs aller oder bestimmter Services",[651,29464,29465,29468],{},[675,29466,29467],{},"exec",[675,29469,28094],{},[651,29471,29472,29475],{},[675,29473,29474],{},"run",[675,29476,29477],{},"Einmaligen Befehl in neuem Container ausführen",[651,29479,29480,29483],{},[675,29481,29482],{},"config",[675,29484,29485],{},"Konfiguration ausgeben \u002F validieren",[651,29487,29488,29490],{},[675,29489,27892],{},[675,29491,29492],{},"Images der definierten Services auflisten",[651,29494,29495,29497],{},[675,29496,10086],{},[675,29498,29499],{},"Gestoppte Container entfernen",[651,29501,29502,29505],{},[675,29503,29504],{},"kill",[675,29506,29507],{},"Container sofort mit Signal beenden",[651,29509,29510,29512],{},[675,29511,3185],{},[675,29513,29514],{},"Prozesse in laufenden Containern",[651,29516,29517,29520],{},[675,29518,29519],{},"events",[675,29521,29522],{},"Echtzeit-Ereignisstream ausgeben",[651,29524,29525,29528],{},[675,29526,29527],{},"port",[675,29529,29530],{},"Published Port eines Services anzeigen",[651,29532,29533,29535],{},[675,29534,27586],{},[675,29536,29537],{},"Dateien zwischen Host und Container kopieren",[651,29539,29540,29543],{},[675,29541,29542],{},"wait",[675,29544,29545],{},"Warten bis Container beendet sind",[651,29547,29548,29551],{},[675,29549,29550],{},"watch",[675,29552,29553],{},"Quellcode-Änderungen live in Container übertragen",[651,29555,29556,29559],{},[675,29557,29558],{},"version",[675,29560,29561],{},"Versionsinformationen",[54,29563,29565],{"id":29564},"optionen-für-docker-compose-up","Optionen für docker compose up",[645,29567,29568,29580],{},[648,29569,29570],{},[651,29571,29572,29576],{},[654,29573,29574],{},[26,29575,7715],{},[654,29577,29578],{},[26,29579,5483],{},[670,29581,29582,29589,29597,29605,29613,29621,29629,29637,29645,29653,29661,29669,29677],{},[651,29583,29584,29586],{},[675,29585,28275],{},[675,29587,29588],{},"Im Hintergrund starten (detached mode)",[651,29590,29591,29594],{},[675,29592,29593],{},"--build",[675,29595,29596],{},"Images neu bauen vor dem Start",[651,29598,29599,29602],{},[675,29600,29601],{},"--no-build",[675,29603,29604],{},"Images nicht bauen (auch wenn Dockerfile neuer)",[651,29606,29607,29610],{},[675,29608,29609],{},"--no-recreate",[675,29611,29612],{},"Existierende Container nicht neu erstellen",[651,29614,29615,29618],{},[675,29616,29617],{},"--force-recreate",[675,29619,29620],{},"Container immer neu erstellen",[651,29622,29623,29626],{},[675,29624,29625],{},"--always-recreate-deps",[675,29627,29628],{},"Abhängigkeiten immer neu erstellen",[651,29630,29631,29634],{},[675,29632,29633],{},"--remove-orphans",[675,29635,29636],{},"Container für nicht mehr definierte Services entfernen",[651,29638,29639,29642],{},[675,29640,29641],{},"--scale SERVICE=N",[675,29643,29644],{},"Service auf N Instanzen skalieren",[651,29646,29647,29650],{},[675,29648,29649],{},"-t N \u002F --timeout N",[675,29651,29652],{},"Stop-Timeout in Sekunden (Standard: 10)",[651,29654,29655,29658],{},[675,29656,29657],{},"--wait",[675,29659,29660],{},"Warten bis alle Container healthy sind",[651,29662,29663,29666],{},[675,29664,29665],{},"--wait-timeout N",[675,29667,29668],{},"Timeout für --wait",[651,29670,29671,29674],{},[675,29672,29673],{},"--no-attach SERVICE",[675,29675,29676],{},"Logs dieses Services nicht anzeigen",[651,29678,29679,29682],{},[675,29680,29681],{},"--pull always\u002Fmissing\u002Fnever",[675,29683,29684],{},"Pull-Policy für Images",[54,29686,29688],{"id":29687},"optionen-für-docker-compose-down","Optionen für docker compose down",[645,29690,29691,29703],{},[648,29692,29693],{},[651,29694,29695,29699],{},[654,29696,29697],{},[26,29698,7715],{},[654,29700,29701],{},[26,29702,5483],{},[670,29704,29705,29713,29721,29729,29736],{},[651,29706,29707,29710],{},[675,29708,29709],{},"-v \u002F --volumes",[675,29711,29712],{},"Named Volumes und anonyme Volumes ebenfalls löschen",[651,29714,29715,29718],{},[675,29716,29717],{},"--rmi all",[675,29719,29720],{},"Alle Images der Services entfernen",[651,29722,29723,29726],{},[675,29724,29725],{},"--rmi local",[675,29727,29728],{},"Nur lokal gebaute Images entfernen",[651,29730,29731,29733],{},[675,29732,29633],{},[675,29734,29735],{},"Orphan-Container entfernen",[651,29737,29738,29740],{},[675,29739,29649],{},[675,29741,29742],{},"Stop-Timeout",[54,29744,29746],{"id":29745},"optionen-für-docker-compose-logs","Optionen für docker compose logs",[645,29748,29749,29761],{},[648,29750,29751],{},[651,29752,29753,29757],{},[654,29754,29755],{},[26,29756,7715],{},[654,29758,29759],{},[26,29760,5483],{},[670,29762,29763,29771,29779,29787,29795,29803],{},[651,29764,29765,29768],{},[675,29766,29767],{},"-f \u002F --follow",[675,29769,29770],{},"Logs live verfolgen",[651,29772,29773,29776],{},[675,29774,29775],{},"--tail=N",[675,29777,29778],{},"Nur letzte N Zeilen anzeigen",[651,29780,29781,29784],{},[675,29782,29783],{},"-t \u002F --timestamps",[675,29785,29786],{},"Zeitstempel voranstellen",[651,29788,29789,29792],{},[675,29790,29791],{},"--no-log-prefix",[675,29793,29794],{},"Service-Namen nicht voranstellen",[651,29796,29797,29800],{},[675,29798,29799],{},"--since ZEIT",[675,29801,29802],{},"Logs ab bestimmtem Zeitpunkt (z.B. 1h, 2024-01-01)",[651,29804,29805,29808],{},[675,29806,29807],{},"--until ZEIT",[675,29809,29810],{},"Logs bis zu bestimmtem Zeitpunkt",[54,29812,29814],{"id":29813},"optionen-für-docker-compose-exec","Optionen für docker compose exec",[645,29816,29817,29829],{},[648,29818,29819],{},[651,29820,29821,29825],{},[654,29822,29823],{},[26,29824,7715],{},[654,29826,29827],{},[26,29828,5483],{},[670,29830,29831,29838,29845,29851,29858,29866],{},[651,29832,29833,29835],{},[675,29834,28283],{},[675,29836,29837],{},"Interaktives Terminal",[651,29839,29840,29842],{},[675,29841,28371],{},[675,29843,29844],{},"Als Benutzer ausführen",[651,29846,29847,29849],{},[675,29848,28323],{},[675,29850,28326],{},[651,29852,29853,29855],{},[675,29854,28384],{},[675,29856,29857],{},"Arbeitsverzeichnis setzen",[651,29859,29860,29863],{},[675,29861,29862],{},"--no-TTY",[675,29864,29865],{},"Kein TTY",[651,29867,29868,29871],{},[675,29869,29870],{},"--index=N",[675,29872,29873],{},"Bei skaliertem Service: N-te Instanz (Standard: 1)",[54,29875,29877],{"id":29876},"allgemeine-optionen-vor-dem-befehl","Allgemeine Optionen (vor dem Befehl)",[645,29879,29880,29892],{},[648,29881,29882],{},[651,29883,29884,29888],{},[654,29885,29886],{},[26,29887,7715],{},[654,29889,29890],{},[26,29891,5483],{},[670,29893,29894,29901,29909,29917,29924,29932,29940],{},[651,29895,29896,29898],{},[675,29897,18176],{},[675,29899,29900],{},"Andere Compose-Datei verwenden",[651,29902,29903,29906],{},[675,29904,29905],{},"-p NAME",[675,29907,29908],{},"Projektname festlegen (Standard: Verzeichnisname)",[651,29910,29911,29914],{},[675,29912,29913],{},"--profile PROFIL",[675,29915,29916],{},"Service-Profile aktivieren",[651,29918,29919,29921],{},[675,29920,28331],{},[675,29922,29923],{},"Andere .env-Datei verwenden",[651,29925,29926,29929],{},[675,29927,29928],{},"--no-ansi",[675,29930,29931],{},"Keine Farb-Ausgabe",[651,29933,29934,29937],{},[675,29935,29936],{},"--progress auto\u002Ftty\u002Fplain\u002Fquiet",[675,29938,29939],{},"Ausgabe-Stil",[651,29941,29942,29945],{},[675,29943,29944],{},"--ansi auto\u002Fnever\u002Falways",[675,29946,29947],{},"ANSI-Farben steuern",[54,29949,29951],{"id":29950},"aufbau-einer-docker-composeyml-vollständiges-beispiel","Aufbau einer docker-compose.yml – vollständiges Beispiel",[3392,29953,29957],{"className":29954,"code":29955,"language":29956,"meta":225,"style":225},"language-yaml shiki shiki-themes github-light github-dark","version: '3.9'\n\nservices:\n\nfrontend:\n\nbuild:\n\ncontext: .\u002Fclient-react\n\ndockerfile: Dockerfile\n\nargs:\n\n- REACT_APP_VERSION=1.0.0\n\nimage: 'mein-frontend:latest'\n\ncontainer_name: frontend\n\nhostname: frontend\n\nrestart: unless-stopped\n\nports:\n\n- '3000:3000'\n\n- '127.0.0.1:4000:4000'\n\nvolumes:\n\n- '.\u002Fsrc:\u002Fapp\u002Fsrc'\n\n- \u002Fapp\u002Fnode_modules\n\nenvironment:\n\nNODE_ENV: development\n\nAPI_URL: 'http:\u002F\u002Fbackend:8080'\n\nenv_file:\n\n- .env\n\n- .env.local\n\nnetworks:\n\n- frontend-net\n\ndepends_on:\n\nbackend:\n\ncondition: service_healthy\n\nhealthcheck:\n\ntest:\n\n- CMD\n\n- curl\n\n- '-f'\n\n- 'http:\u002F\u002Flocalhost:3000'\n\ninterval: 30s\n\ntimeout: 10s\n\nretries: 3\n\nstart_period: 60s\n\nlogging:\n\ndriver: json-file\n\noptions:\n\nmax-size: 10m\n\nmax-file: '3'\n\nlabels:\n\n- traefik.enable=true\n\n- traefik.http.routers.frontend.rule=Host(`app.example.com`)\n\ndeploy:\n\nresources:\n\nlimits:\n\ncpus: '0.5'\n\nmemory: 256M\n\nreservations:\n\nmemory: 128M\n\nbackend:\n\nbuild:\n\ncontext: .\u002Fapi-golang\n\nrestart: always\n\nports:\n\n- '8080:8080'\n\nenvironment:\n\n- DB_HOST=database\n\n- DB_PORT=5432\n\n- 'DB_NAME=${POSTGRES_DB}'\n\n- 'DB_USER=${POSTGRES_USER}'\n\n- 'DB_PASSWORD=${POSTGRES_PASSWORD}'\n\nnetworks:\n\n- frontend-net\n\n- backend-net\n\ndepends_on:\n\ndatabase:\n\ncondition: service_healthy\n\nhealthcheck:\n\ntest:\n\n- CMD-SHELL\n\n- 'wget -q --spider http:\u002F\u002Flocalhost:8080\u002Fhealth || exit 1'\n\ninterval: 10s\n\ntimeout: 5s\n\nretries: 5\n\nstart_period: 30s\n\ndatabase:\n\nimage: 'postgres:15-alpine'\n\nrestart: always\n\nvolumes:\n\n- 'db_data:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata'\n\n- '.\u002Finit.sql:\u002Fdocker-entrypoint-initdb.d\u002Finit.sql'\n\nenvironment:\n\nPOSTGRES_DB: '${POSTGRES_DB:-myapp}'\n\nPOSTGRES_USER: '${POSTGRES_USER:-user}'\n\nPOSTGRES_PASSWORD: '${POSTGRES_PASSWORD:?DB-Passwort erforderlich!}'\n\nnetworks:\n\n- backend-net\n\nhealthcheck:\n\ntest:\n\n- CMD-SHELL\n\n- 'pg_isready -U ${POSTGRES_USER:-user}'\n\ninterval: 10s\n\ntimeout: 5s\n\nretries: 5\n\nexpose:\n\n- '5432'\n\ncache:\n\nimage: 'redis:7-alpine'\n\nrestart: unless-stopped\n\ncommand: redis-server --appendonly yes\n\nvolumes:\n\n- 'redis_data:\u002Fdata'\n\nnetworks:\n\n- backend-net\n\nprofiles:\n\n- cache\n\nvolumes:\n\ndb_data:\n\ndriver: local\n\nredis_data: null\n\nnginx_logs:\n\ndriver: local\n\ndriver_opts:\n\ntype: none\n\no: bind\n\ndevice: \u002Fsrv\u002Flogs\u002Fnginx\n\nnetworks:\n\nfrontend-net:\n\ndriver: bridge\n\nbackend-net:\n\ndriver: bridge\n\ninternal: true\n\nmonitoring:\n\nexternal: true\n\nname: monitoring_net\n\n","yaml",[3398,29958,29959,29969,29973,29980,29984,29991,29995,30001,30005,30015,30019,30028,30032,30039,30043,30051,30055,30065,30069,30079,30083,30091,30095,30104,30108,30115,30119,30126,30130,30137,30141,30148,30152,30159,30163,30170,30174,30181,30185,30194,30198,30208,30212,30219,30223,30230,30234,30241,30245,30252,30256,30263,30267,30274,30278,30285,30289,30299,30303,30310,30314,30320,30324,30331,30335,30342,30346,30353,30357,30364,30368,30378,30382,30392,30396,30406,30410,30420,30424,30431,30435,30445,30449,30456,30460,30470,30474,30484,30488,30495,30499,30506,30510,30517,30521,30528,30532,30539,30543,30550,30554,30564,30568,30578,30582,30589,30593,30602,30606,30612,30616,30622,30626,30635,30639,30648,30652,30658,30662,30669,30673,30679,30683,30690,30694,30701,30705,30712,30716,30723,30727,30734,30738,30744,30748,30754,30758,30765,30769,30775,30779,30786,30790,30798,30802,30808,30812,30818,30822,30829,30833,30840,30844,30852,30856,30865,30869,30878,30882,30890,30894,30900,30904,30913,30917,30925,30929,30935,30939,30946,30950,30957,30961,30967,30971,30981,30985,30995,30999,31009,31013,31019,31023,31029,31033,31039,31043,31049,31053,31059,31063,31070,31074,31082,31086,31094,31098,31106,31110,31117,31121,31128,31132,31139,31143,31152,31156,31164,31168,31178,31182,31188,31192,31199,31204,31211,31216,31223,31228,31236,31241,31249,31254,31261,31266,31274,31279,31289,31294,31305,31310,31318,31323,31332,31337,31345,31350,31361,31366,31376,31381,31392,31397,31404,31409,31417,31422,31432,31437,31445,31450,31459,31464,31474,31479,31487,31492,31502,31507],{"__ignoreMap":225},[2915,29960,29961,29964,29966],{"class":3402,"line":3403},[2915,29962,29558],{"class":29963},"s9eBZ",[2915,29965,6162],{"class":3529},[2915,29967,29968],{"class":3414},"'3.9'\n",[2915,29970,29971],{"class":3402,"line":1117},[2915,29972,3506],{"emptyLinePlaceholder":3505},[2915,29974,29975,29978],{"class":3402,"line":1125},[2915,29976,29977],{"class":29963},"services",[2915,29979,1554],{"class":3529},[2915,29981,29982],{"class":3402,"line":3515},[2915,29983,3506],{"emptyLinePlaceholder":3505},[2915,29985,29986,29989],{"class":3402,"line":3520},[2915,29987,29988],{"class":29963},"frontend",[2915,29990,1554],{"class":3529},[2915,29992,29993],{"class":3402,"line":5070},[2915,29994,3506],{"emptyLinePlaceholder":3505},[2915,29996,29997,29999],{"class":3402,"line":5075},[2915,29998,29428],{"class":29963},[2915,30000,1554],{"class":3529},[2915,30002,30003],{"class":3402,"line":5093},[2915,30004,3506],{"emptyLinePlaceholder":3505},[2915,30006,30007,30010,30012],{"class":3402,"line":5098},[2915,30008,30009],{"class":29963},"context",[2915,30011,6162],{"class":3529},[2915,30013,30014],{"class":3414},".\u002Fclient-react\n",[2915,30016,30017],{"class":3402,"line":5207},[2915,30018,3506],{"emptyLinePlaceholder":3505},[2915,30020,30021,30023,30025],{"class":3402,"line":5212},[2915,30022,7165],{"class":29963},[2915,30024,6162],{"class":3529},[2915,30026,30027],{"class":3414},"Dockerfile\n",[2915,30029,30030],{"class":3402,"line":5218},[2915,30031,3506],{"emptyLinePlaceholder":3505},[2915,30033,30034,30037],{"class":3402,"line":5223},[2915,30035,30036],{"class":29963},"args",[2915,30038,1554],{"class":3529},[2915,30040,30041],{"class":3402,"line":5229},[2915,30042,3506],{"emptyLinePlaceholder":3505},[2915,30044,30045,30048],{"class":3402,"line":5253},[2915,30046,30047],{"class":3529},"- ",[2915,30049,30050],{"class":3414},"REACT_APP_VERSION=1.0.0\n",[2915,30052,30053],{"class":3402,"line":5266},[2915,30054,3506],{"emptyLinePlaceholder":3505},[2915,30056,30057,30060,30062],{"class":3402,"line":5721},[2915,30058,30059],{"class":29963},"image",[2915,30061,6162],{"class":3529},[2915,30063,30064],{"class":3414},"'mein-frontend:latest'\n",[2915,30066,30067],{"class":3402,"line":9401},[2915,30068,3506],{"emptyLinePlaceholder":3505},[2915,30070,30071,30074,30076],{"class":3402,"line":9406},[2915,30072,30073],{"class":29963},"container_name",[2915,30075,6162],{"class":3529},[2915,30077,30078],{"class":3414},"frontend\n",[2915,30080,30081],{"class":3402,"line":9411},[2915,30082,3506],{"emptyLinePlaceholder":3505},[2915,30084,30085,30087,30089],{"class":3402,"line":9416},[2915,30086,10761],{"class":29963},[2915,30088,6162],{"class":3529},[2915,30090,30078],{"class":3414},[2915,30092,30093],{"class":3402,"line":9428},[2915,30094,3506],{"emptyLinePlaceholder":3505},[2915,30096,30097,30099,30101],{"class":3402,"line":9433},[2915,30098,29405],{"class":29963},[2915,30100,6162],{"class":3529},[2915,30102,30103],{"class":3414},"unless-stopped\n",[2915,30105,30106],{"class":3402,"line":9454},[2915,30107,3506],{"emptyLinePlaceholder":3505},[2915,30109,30110,30113],{"class":3402,"line":9459},[2915,30111,30112],{"class":29963},"ports",[2915,30114,1554],{"class":3529},[2915,30116,30117],{"class":3402,"line":9464},[2915,30118,3506],{"emptyLinePlaceholder":3505},[2915,30120,30121,30123],{"class":3402,"line":9469},[2915,30122,30047],{"class":3529},[2915,30124,30125],{"class":3414},"'3000:3000'\n",[2915,30127,30128],{"class":3402,"line":9479},[2915,30129,3506],{"emptyLinePlaceholder":3505},[2915,30131,30132,30134],{"class":3402,"line":9484},[2915,30133,30047],{"class":3529},[2915,30135,30136],{"class":3414},"'127.0.0.1:4000:4000'\n",[2915,30138,30139],{"class":3402,"line":9489},[2915,30140,3506],{"emptyLinePlaceholder":3505},[2915,30142,30143,30146],{"class":3402,"line":9494},[2915,30144,30145],{"class":29963},"volumes",[2915,30147,1554],{"class":3529},[2915,30149,30150],{"class":3402,"line":9504},[2915,30151,3506],{"emptyLinePlaceholder":3505},[2915,30153,30154,30156],{"class":3402,"line":9509},[2915,30155,30047],{"class":3529},[2915,30157,30158],{"class":3414},"'.\u002Fsrc:\u002Fapp\u002Fsrc'\n",[2915,30160,30161],{"class":3402,"line":9514},[2915,30162,3506],{"emptyLinePlaceholder":3505},[2915,30164,30165,30167],{"class":3402,"line":9519},[2915,30166,30047],{"class":3529},[2915,30168,30169],{"class":3414},"\u002Fapp\u002Fnode_modules\n",[2915,30171,30172],{"class":3402,"line":9524},[2915,30173,3506],{"emptyLinePlaceholder":3505},[2915,30175,30176,30179],{"class":3402,"line":9529},[2915,30177,30178],{"class":29963},"environment",[2915,30180,1554],{"class":3529},[2915,30182,30183],{"class":3402,"line":9534},[2915,30184,3506],{"emptyLinePlaceholder":3505},[2915,30186,30187,30189,30191],{"class":3402,"line":9539},[2915,30188,28579],{"class":29963},[2915,30190,6162],{"class":3529},[2915,30192,30193],{"class":3414},"development\n",[2915,30195,30196],{"class":3402,"line":9552},[2915,30197,3506],{"emptyLinePlaceholder":3505},[2915,30199,30200,30203,30205],{"class":3402,"line":9557},[2915,30201,30202],{"class":29963},"API_URL",[2915,30204,6162],{"class":3529},[2915,30206,30207],{"class":3414},"'http:\u002F\u002Fbackend:8080'\n",[2915,30209,30210],{"class":3402,"line":9570},[2915,30211,3506],{"emptyLinePlaceholder":3505},[2915,30213,30214,30217],{"class":3402,"line":9575},[2915,30215,30216],{"class":29963},"env_file",[2915,30218,1554],{"class":3529},[2915,30220,30221],{"class":3402,"line":9588},[2915,30222,3506],{"emptyLinePlaceholder":3505},[2915,30224,30225,30227],{"class":3402,"line":9593},[2915,30226,30047],{"class":3529},[2915,30228,30229],{"class":3414},".env\n",[2915,30231,30232],{"class":3402,"line":9598},[2915,30233,3506],{"emptyLinePlaceholder":3505},[2915,30235,30236,30238],{"class":3402,"line":9603},[2915,30237,30047],{"class":3529},[2915,30239,30240],{"class":3414},".env.local\n",[2915,30242,30243],{"class":3402,"line":9619},[2915,30244,3506],{"emptyLinePlaceholder":3505},[2915,30246,30247,30250],{"class":3402,"line":9624},[2915,30248,30249],{"class":29963},"networks",[2915,30251,1554],{"class":3529},[2915,30253,30254],{"class":3402,"line":9629},[2915,30255,3506],{"emptyLinePlaceholder":3505},[2915,30257,30258,30260],{"class":3402,"line":9634},[2915,30259,30047],{"class":3529},[2915,30261,30262],{"class":3414},"frontend-net\n",[2915,30264,30265],{"class":3402,"line":9642},[2915,30266,3506],{"emptyLinePlaceholder":3505},[2915,30268,30269,30272],{"class":3402,"line":9647},[2915,30270,30271],{"class":29963},"depends_on",[2915,30273,1554],{"class":3529},[2915,30275,30276],{"class":3402,"line":9656},[2915,30277,3506],{"emptyLinePlaceholder":3505},[2915,30279,30280,30283],{"class":3402,"line":9661},[2915,30281,30282],{"class":29963},"backend",[2915,30284,1554],{"class":3529},[2915,30286,30287],{"class":3402,"line":9666},[2915,30288,3506],{"emptyLinePlaceholder":3505},[2915,30290,30291,30294,30296],{"class":3402,"line":9671},[2915,30292,30293],{"class":29963},"condition",[2915,30295,6162],{"class":3529},[2915,30297,30298],{"class":3414},"service_healthy\n",[2915,30300,30301],{"class":3402,"line":9685},[2915,30302,3506],{"emptyLinePlaceholder":3505},[2915,30304,30305,30308],{"class":3402,"line":9690},[2915,30306,30307],{"class":29963},"healthcheck",[2915,30309,1554],{"class":3529},[2915,30311,30312],{"class":3402,"line":9711},[2915,30313,3506],{"emptyLinePlaceholder":3505},[2915,30315,30316,30318],{"class":3402,"line":9716},[2915,30317,5913],{"class":29963},[2915,30319,1554],{"class":3529},[2915,30321,30322],{"class":3402,"line":9721},[2915,30323,3506],{"emptyLinePlaceholder":3505},[2915,30325,30326,30328],{"class":3402,"line":9726},[2915,30327,30047],{"class":3529},[2915,30329,30330],{"class":3414},"CMD\n",[2915,30332,30333],{"class":3402,"line":9734},[2915,30334,3506],{"emptyLinePlaceholder":3505},[2915,30336,30337,30339],{"class":3402,"line":9739},[2915,30338,30047],{"class":3529},[2915,30340,30341],{"class":3414},"curl\n",[2915,30343,30344],{"class":3402,"line":9747},[2915,30345,3506],{"emptyLinePlaceholder":3505},[2915,30347,30348,30350],{"class":3402,"line":9752},[2915,30349,30047],{"class":3529},[2915,30351,30352],{"class":3414},"'-f'\n",[2915,30354,30355],{"class":3402,"line":9760},[2915,30356,3506],{"emptyLinePlaceholder":3505},[2915,30358,30359,30361],{"class":3402,"line":9765},[2915,30360,30047],{"class":3529},[2915,30362,30363],{"class":3414},"'http:\u002F\u002Flocalhost:3000'\n",[2915,30365,30366],{"class":3402,"line":9773},[2915,30367,3506],{"emptyLinePlaceholder":3505},[2915,30369,30370,30373,30375],{"class":3402,"line":9778},[2915,30371,30372],{"class":29963},"interval",[2915,30374,6162],{"class":3529},[2915,30376,30377],{"class":3414},"30s\n",[2915,30379,30380],{"class":3402,"line":9786},[2915,30381,3506],{"emptyLinePlaceholder":3505},[2915,30383,30384,30387,30389],{"class":3402,"line":9791},[2915,30385,30386],{"class":29963},"timeout",[2915,30388,6162],{"class":3529},[2915,30390,30391],{"class":3414},"10s\n",[2915,30393,30394],{"class":3402,"line":9800},[2915,30395,3506],{"emptyLinePlaceholder":3505},[2915,30397,30398,30401,30403],{"class":3402,"line":9805},[2915,30399,30400],{"class":29963},"retries",[2915,30402,6162],{"class":3529},[2915,30404,30405],{"class":3410},"3\n",[2915,30407,30408],{"class":3402,"line":20122},[2915,30409,3506],{"emptyLinePlaceholder":3505},[2915,30411,30412,30415,30417],{"class":3402,"line":20127},[2915,30413,30414],{"class":29963},"start_period",[2915,30416,6162],{"class":3529},[2915,30418,30419],{"class":3414},"60s\n",[2915,30421,30422],{"class":3402,"line":20133},[2915,30423,3506],{"emptyLinePlaceholder":3505},[2915,30425,30426,30429],{"class":3402,"line":20138},[2915,30427,30428],{"class":29963},"logging",[2915,30430,1554],{"class":3529},[2915,30432,30433],{"class":3402,"line":20150},[2915,30434,3506],{"emptyLinePlaceholder":3505},[2915,30436,30437,30440,30442],{"class":3402,"line":20155},[2915,30438,30439],{"class":29963},"driver",[2915,30441,6162],{"class":3529},[2915,30443,30444],{"class":3414},"json-file\n",[2915,30446,30447],{"class":3402,"line":20161},[2915,30448,3506],{"emptyLinePlaceholder":3505},[2915,30450,30451,30454],{"class":3402,"line":20166},[2915,30452,30453],{"class":29963},"options",[2915,30455,1554],{"class":3529},[2915,30457,30458],{"class":3402,"line":20178},[2915,30459,3506],{"emptyLinePlaceholder":3505},[2915,30461,30462,30465,30467],{"class":3402,"line":20183},[2915,30463,30464],{"class":29963},"max-size",[2915,30466,6162],{"class":3529},[2915,30468,30469],{"class":3414},"10m\n",[2915,30471,30472],{"class":3402,"line":20189},[2915,30473,3506],{"emptyLinePlaceholder":3505},[2915,30475,30476,30479,30481],{"class":3402,"line":20194},[2915,30477,30478],{"class":29963},"max-file",[2915,30480,6162],{"class":3529},[2915,30482,30483],{"class":3414},"'3'\n",[2915,30485,30486],{"class":3402,"line":20206},[2915,30487,3506],{"emptyLinePlaceholder":3505},[2915,30489,30490,30493],{"class":3402,"line":20211},[2915,30491,30492],{"class":29963},"labels",[2915,30494,1554],{"class":3529},[2915,30496,30497],{"class":3402,"line":20217},[2915,30498,3506],{"emptyLinePlaceholder":3505},[2915,30500,30501,30503],{"class":3402,"line":20222},[2915,30502,30047],{"class":3529},[2915,30504,30505],{"class":3414},"traefik.enable=true\n",[2915,30507,30508],{"class":3402,"line":20234},[2915,30509,3506],{"emptyLinePlaceholder":3505},[2915,30511,30512,30514],{"class":3402,"line":20239},[2915,30513,30047],{"class":3529},[2915,30515,30516],{"class":3414},"traefik.http.routers.frontend.rule=Host(`app.example.com`)\n",[2915,30518,30519],{"class":3402,"line":20245},[2915,30520,3506],{"emptyLinePlaceholder":3505},[2915,30522,30523,30526],{"class":3402,"line":20250},[2915,30524,30525],{"class":29963},"deploy",[2915,30527,1554],{"class":3529},[2915,30529,30530],{"class":3402,"line":20256},[2915,30531,3506],{"emptyLinePlaceholder":3505},[2915,30533,30534,30537],{"class":3402,"line":20261},[2915,30535,30536],{"class":29963},"resources",[2915,30538,1554],{"class":3529},[2915,30540,30541],{"class":3402,"line":20271},[2915,30542,3506],{"emptyLinePlaceholder":3505},[2915,30544,30545,30548],{"class":3402,"line":20276},[2915,30546,30547],{"class":29963},"limits",[2915,30549,1554],{"class":3529},[2915,30551,30552],{"class":3402,"line":20282},[2915,30553,3506],{"emptyLinePlaceholder":3505},[2915,30555,30556,30559,30561],{"class":3402,"line":20287},[2915,30557,30558],{"class":29963},"cpus",[2915,30560,6162],{"class":3529},[2915,30562,30563],{"class":3414},"'0.5'\n",[2915,30565,30566],{"class":3402,"line":20297},[2915,30567,3506],{"emptyLinePlaceholder":3505},[2915,30569,30570,30573,30575],{"class":3402,"line":20302},[2915,30571,30572],{"class":29963},"memory",[2915,30574,6162],{"class":3529},[2915,30576,30577],{"class":3414},"256M\n",[2915,30579,30580],{"class":3402,"line":20308},[2915,30581,3506],{"emptyLinePlaceholder":3505},[2915,30583,30584,30587],{"class":3402,"line":20313},[2915,30585,30586],{"class":29963},"reservations",[2915,30588,1554],{"class":3529},[2915,30590,30591],{"class":3402,"line":20323},[2915,30592,3506],{"emptyLinePlaceholder":3505},[2915,30594,30595,30597,30599],{"class":3402,"line":20328},[2915,30596,30572],{"class":29963},[2915,30598,6162],{"class":3529},[2915,30600,30601],{"class":3414},"128M\n",[2915,30603,30604],{"class":3402,"line":20334},[2915,30605,3506],{"emptyLinePlaceholder":3505},[2915,30607,30608,30610],{"class":3402,"line":20339},[2915,30609,30282],{"class":29963},[2915,30611,1554],{"class":3529},[2915,30613,30614],{"class":3402,"line":20349},[2915,30615,3506],{"emptyLinePlaceholder":3505},[2915,30617,30618,30620],{"class":3402,"line":20354},[2915,30619,29428],{"class":29963},[2915,30621,1554],{"class":3529},[2915,30623,30624],{"class":3402,"line":20360},[2915,30625,3506],{"emptyLinePlaceholder":3505},[2915,30627,30628,30630,30632],{"class":3402,"line":20365},[2915,30629,30009],{"class":29963},[2915,30631,6162],{"class":3529},[2915,30633,30634],{"class":3414},".\u002Fapi-golang\n",[2915,30636,30637],{"class":3402,"line":20375},[2915,30638,3506],{"emptyLinePlaceholder":3505},[2915,30640,30641,30643,30645],{"class":3402,"line":20380},[2915,30642,29405],{"class":29963},[2915,30644,6162],{"class":3529},[2915,30646,30647],{"class":3414},"always\n",[2915,30649,30650],{"class":3402,"line":20386},[2915,30651,3506],{"emptyLinePlaceholder":3505},[2915,30653,30654,30656],{"class":3402,"line":20391},[2915,30655,30112],{"class":29963},[2915,30657,1554],{"class":3529},[2915,30659,30660],{"class":3402,"line":20397},[2915,30661,3506],{"emptyLinePlaceholder":3505},[2915,30663,30664,30666],{"class":3402,"line":20402},[2915,30665,30047],{"class":3529},[2915,30667,30668],{"class":3414},"'8080:8080'\n",[2915,30670,30671],{"class":3402,"line":20412},[2915,30672,3506],{"emptyLinePlaceholder":3505},[2915,30674,30675,30677],{"class":3402,"line":20417},[2915,30676,30178],{"class":29963},[2915,30678,1554],{"class":3529},[2915,30680,30681],{"class":3402,"line":20423},[2915,30682,3506],{"emptyLinePlaceholder":3505},[2915,30684,30685,30687],{"class":3402,"line":20428},[2915,30686,30047],{"class":3529},[2915,30688,30689],{"class":3414},"DB_HOST=database\n",[2915,30691,30692],{"class":3402,"line":20438},[2915,30693,3506],{"emptyLinePlaceholder":3505},[2915,30695,30696,30698],{"class":3402,"line":20443},[2915,30697,30047],{"class":3529},[2915,30699,30700],{"class":3414},"DB_PORT=5432\n",[2915,30702,30703],{"class":3402,"line":20449},[2915,30704,3506],{"emptyLinePlaceholder":3505},[2915,30706,30707,30709],{"class":3402,"line":20454},[2915,30708,30047],{"class":3529},[2915,30710,30711],{"class":3414},"'DB_NAME=${POSTGRES_DB}'\n",[2915,30713,30714],{"class":3402,"line":20464},[2915,30715,3506],{"emptyLinePlaceholder":3505},[2915,30717,30718,30720],{"class":3402,"line":20469},[2915,30719,30047],{"class":3529},[2915,30721,30722],{"class":3414},"'DB_USER=${POSTGRES_USER}'\n",[2915,30724,30725],{"class":3402,"line":20475},[2915,30726,3506],{"emptyLinePlaceholder":3505},[2915,30728,30729,30731],{"class":3402,"line":20480},[2915,30730,30047],{"class":3529},[2915,30732,30733],{"class":3414},"'DB_PASSWORD=${POSTGRES_PASSWORD}'\n",[2915,30735,30736],{"class":3402,"line":20490},[2915,30737,3506],{"emptyLinePlaceholder":3505},[2915,30739,30740,30742],{"class":3402,"line":20495},[2915,30741,30249],{"class":29963},[2915,30743,1554],{"class":3529},[2915,30745,30746],{"class":3402,"line":20501},[2915,30747,3506],{"emptyLinePlaceholder":3505},[2915,30749,30750,30752],{"class":3402,"line":20506},[2915,30751,30047],{"class":3529},[2915,30753,30262],{"class":3414},[2915,30755,30756],{"class":3402,"line":20512},[2915,30757,3506],{"emptyLinePlaceholder":3505},[2915,30759,30760,30762],{"class":3402,"line":20517},[2915,30761,30047],{"class":3529},[2915,30763,30764],{"class":3414},"backend-net\n",[2915,30766,30767],{"class":3402,"line":20535},[2915,30768,3506],{"emptyLinePlaceholder":3505},[2915,30770,30771,30773],{"class":3402,"line":20540},[2915,30772,30271],{"class":29963},[2915,30774,1554],{"class":3529},[2915,30776,30777],{"class":3402,"line":20546},[2915,30778,3506],{"emptyLinePlaceholder":3505},[2915,30780,30781,30784],{"class":3402,"line":20551},[2915,30782,30783],{"class":29963},"database",[2915,30785,1554],{"class":3529},[2915,30787,30788],{"class":3402,"line":20563},[2915,30789,3506],{"emptyLinePlaceholder":3505},[2915,30791,30792,30794,30796],{"class":3402,"line":20568},[2915,30793,30293],{"class":29963},[2915,30795,6162],{"class":3529},[2915,30797,30298],{"class":3414},[2915,30799,30800],{"class":3402,"line":20574},[2915,30801,3506],{"emptyLinePlaceholder":3505},[2915,30803,30804,30806],{"class":3402,"line":20579},[2915,30805,30307],{"class":29963},[2915,30807,1554],{"class":3529},[2915,30809,30810],{"class":3402,"line":20589},[2915,30811,3506],{"emptyLinePlaceholder":3505},[2915,30813,30814,30816],{"class":3402,"line":20594},[2915,30815,5913],{"class":29963},[2915,30817,1554],{"class":3529},[2915,30819,30820],{"class":3402,"line":20600},[2915,30821,3506],{"emptyLinePlaceholder":3505},[2915,30823,30824,30826],{"class":3402,"line":20605},[2915,30825,30047],{"class":3529},[2915,30827,30828],{"class":3414},"CMD-SHELL\n",[2915,30830,30831],{"class":3402,"line":20615},[2915,30832,3506],{"emptyLinePlaceholder":3505},[2915,30834,30835,30837],{"class":3402,"line":20620},[2915,30836,30047],{"class":3529},[2915,30838,30839],{"class":3414},"'wget -q --spider http:\u002F\u002Flocalhost:8080\u002Fhealth || exit 1'\n",[2915,30841,30842],{"class":3402,"line":20626},[2915,30843,3506],{"emptyLinePlaceholder":3505},[2915,30845,30846,30848,30850],{"class":3402,"line":20631},[2915,30847,30372],{"class":29963},[2915,30849,6162],{"class":3529},[2915,30851,30391],{"class":3414},[2915,30853,30854],{"class":3402,"line":20641},[2915,30855,3506],{"emptyLinePlaceholder":3505},[2915,30857,30858,30860,30862],{"class":3402,"line":20646},[2915,30859,30386],{"class":29963},[2915,30861,6162],{"class":3529},[2915,30863,30864],{"class":3414},"5s\n",[2915,30866,30867],{"class":3402,"line":20652},[2915,30868,3506],{"emptyLinePlaceholder":3505},[2915,30870,30871,30873,30875],{"class":3402,"line":20657},[2915,30872,30400],{"class":29963},[2915,30874,6162],{"class":3529},[2915,30876,30877],{"class":3410},"5\n",[2915,30879,30880],{"class":3402,"line":20663},[2915,30881,3506],{"emptyLinePlaceholder":3505},[2915,30883,30884,30886,30888],{"class":3402,"line":20668},[2915,30885,30414],{"class":29963},[2915,30887,6162],{"class":3529},[2915,30889,30377],{"class":3414},[2915,30891,30892],{"class":3402,"line":20678},[2915,30893,3506],{"emptyLinePlaceholder":3505},[2915,30895,30896,30898],{"class":3402,"line":20683},[2915,30897,30783],{"class":29963},[2915,30899,1554],{"class":3529},[2915,30901,30902],{"class":3402,"line":20689},[2915,30903,3506],{"emptyLinePlaceholder":3505},[2915,30905,30906,30908,30910],{"class":3402,"line":20694},[2915,30907,30059],{"class":29963},[2915,30909,6162],{"class":3529},[2915,30911,30912],{"class":3414},"'postgres:15-alpine'\n",[2915,30914,30915],{"class":3402,"line":20705},[2915,30916,3506],{"emptyLinePlaceholder":3505},[2915,30918,30919,30921,30923],{"class":3402,"line":20710},[2915,30920,29405],{"class":29963},[2915,30922,6162],{"class":3529},[2915,30924,30647],{"class":3414},[2915,30926,30927],{"class":3402,"line":20716},[2915,30928,3506],{"emptyLinePlaceholder":3505},[2915,30930,30931,30933],{"class":3402,"line":20721},[2915,30932,30145],{"class":29963},[2915,30934,1554],{"class":3529},[2915,30936,30937],{"class":3402,"line":20733},[2915,30938,3506],{"emptyLinePlaceholder":3505},[2915,30940,30941,30943],{"class":3402,"line":20738},[2915,30942,30047],{"class":3529},[2915,30944,30945],{"class":3414},"'db_data:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata'\n",[2915,30947,30948],{"class":3402,"line":20744},[2915,30949,3506],{"emptyLinePlaceholder":3505},[2915,30951,30952,30954],{"class":3402,"line":20749},[2915,30953,30047],{"class":3529},[2915,30955,30956],{"class":3414},"'.\u002Finit.sql:\u002Fdocker-entrypoint-initdb.d\u002Finit.sql'\n",[2915,30958,30959],{"class":3402,"line":20762},[2915,30960,3506],{"emptyLinePlaceholder":3505},[2915,30962,30963,30965],{"class":3402,"line":20767},[2915,30964,30178],{"class":29963},[2915,30966,1554],{"class":3529},[2915,30968,30969],{"class":3402,"line":20773},[2915,30970,3506],{"emptyLinePlaceholder":3505},[2915,30972,30973,30976,30978],{"class":3402,"line":20778},[2915,30974,30975],{"class":29963},"POSTGRES_DB",[2915,30977,6162],{"class":3529},[2915,30979,30980],{"class":3414},"'${POSTGRES_DB:-myapp}'\n",[2915,30982,30983],{"class":3402,"line":20784},[2915,30984,3506],{"emptyLinePlaceholder":3505},[2915,30986,30987,30990,30992],{"class":3402,"line":20789},[2915,30988,30989],{"class":29963},"POSTGRES_USER",[2915,30991,6162],{"class":3529},[2915,30993,30994],{"class":3414},"'${POSTGRES_USER:-user}'\n",[2915,30996,30997],{"class":3402,"line":20799},[2915,30998,3506],{"emptyLinePlaceholder":3505},[2915,31000,31001,31004,31006],{"class":3402,"line":20804},[2915,31002,31003],{"class":29963},"POSTGRES_PASSWORD",[2915,31005,6162],{"class":3529},[2915,31007,31008],{"class":3414},"'${POSTGRES_PASSWORD:?DB-Passwort erforderlich!}'\n",[2915,31010,31011],{"class":3402,"line":20810},[2915,31012,3506],{"emptyLinePlaceholder":3505},[2915,31014,31015,31017],{"class":3402,"line":20815},[2915,31016,30249],{"class":29963},[2915,31018,1554],{"class":3529},[2915,31020,31021],{"class":3402,"line":20825},[2915,31022,3506],{"emptyLinePlaceholder":3505},[2915,31024,31025,31027],{"class":3402,"line":20830},[2915,31026,30047],{"class":3529},[2915,31028,30764],{"class":3414},[2915,31030,31031],{"class":3402,"line":20836},[2915,31032,3506],{"emptyLinePlaceholder":3505},[2915,31034,31035,31037],{"class":3402,"line":20841},[2915,31036,30307],{"class":29963},[2915,31038,1554],{"class":3529},[2915,31040,31041],{"class":3402,"line":20847},[2915,31042,3506],{"emptyLinePlaceholder":3505},[2915,31044,31045,31047],{"class":3402,"line":20852},[2915,31046,5913],{"class":29963},[2915,31048,1554],{"class":3529},[2915,31050,31051],{"class":3402,"line":20862},[2915,31052,3506],{"emptyLinePlaceholder":3505},[2915,31054,31055,31057],{"class":3402,"line":20867},[2915,31056,30047],{"class":3529},[2915,31058,30828],{"class":3414},[2915,31060,31061],{"class":3402,"line":20873},[2915,31062,3506],{"emptyLinePlaceholder":3505},[2915,31064,31065,31067],{"class":3402,"line":20878},[2915,31066,30047],{"class":3529},[2915,31068,31069],{"class":3414},"'pg_isready -U ${POSTGRES_USER:-user}'\n",[2915,31071,31072],{"class":3402,"line":20884},[2915,31073,3506],{"emptyLinePlaceholder":3505},[2915,31075,31076,31078,31080],{"class":3402,"line":20889},[2915,31077,30372],{"class":29963},[2915,31079,6162],{"class":3529},[2915,31081,30391],{"class":3414},[2915,31083,31084],{"class":3402,"line":20900},[2915,31085,3506],{"emptyLinePlaceholder":3505},[2915,31087,31088,31090,31092],{"class":3402,"line":20905},[2915,31089,30386],{"class":29963},[2915,31091,6162],{"class":3529},[2915,31093,30864],{"class":3414},[2915,31095,31096],{"class":3402,"line":20911},[2915,31097,3506],{"emptyLinePlaceholder":3505},[2915,31099,31100,31102,31104],{"class":3402,"line":20916},[2915,31101,30400],{"class":29963},[2915,31103,6162],{"class":3529},[2915,31105,30877],{"class":3410},[2915,31107,31108],{"class":3402,"line":20926},[2915,31109,3506],{"emptyLinePlaceholder":3505},[2915,31111,31112,31115],{"class":3402,"line":20931},[2915,31113,31114],{"class":29963},"expose",[2915,31116,1554],{"class":3529},[2915,31118,31119],{"class":3402,"line":20937},[2915,31120,3506],{"emptyLinePlaceholder":3505},[2915,31122,31123,31125],{"class":3402,"line":20942},[2915,31124,30047],{"class":3529},[2915,31126,31127],{"class":3414},"'5432'\n",[2915,31129,31130],{"class":3402,"line":20954},[2915,31131,3506],{"emptyLinePlaceholder":3505},[2915,31133,31134,31137],{"class":3402,"line":20959},[2915,31135,31136],{"class":29963},"cache",[2915,31138,1554],{"class":3529},[2915,31140,31141],{"class":3402,"line":20965},[2915,31142,3506],{"emptyLinePlaceholder":3505},[2915,31144,31145,31147,31149],{"class":3402,"line":20970},[2915,31146,30059],{"class":29963},[2915,31148,6162],{"class":3529},[2915,31150,31151],{"class":3414},"'redis:7-alpine'\n",[2915,31153,31154],{"class":3402,"line":20983},[2915,31155,3506],{"emptyLinePlaceholder":3505},[2915,31157,31158,31160,31162],{"class":3402,"line":20988},[2915,31159,29405],{"class":29963},[2915,31161,6162],{"class":3529},[2915,31163,30103],{"class":3414},[2915,31165,31166],{"class":3402,"line":20994},[2915,31167,3506],{"emptyLinePlaceholder":3505},[2915,31169,31170,31173,31175],{"class":3402,"line":20999},[2915,31171,31172],{"class":29963},"command",[2915,31174,6162],{"class":3529},[2915,31176,31177],{"class":3414},"redis-server --appendonly yes\n",[2915,31179,31180],{"class":3402,"line":21009},[2915,31181,3506],{"emptyLinePlaceholder":3505},[2915,31183,31184,31186],{"class":3402,"line":21014},[2915,31185,30145],{"class":29963},[2915,31187,1554],{"class":3529},[2915,31189,31190],{"class":3402,"line":21020},[2915,31191,3506],{"emptyLinePlaceholder":3505},[2915,31193,31194,31196],{"class":3402,"line":21025},[2915,31195,30047],{"class":3529},[2915,31197,31198],{"class":3414},"'redis_data:\u002Fdata'\n",[2915,31200,31202],{"class":3402,"line":31201},214,[2915,31203,3506],{"emptyLinePlaceholder":3505},[2915,31205,31207,31209],{"class":3402,"line":31206},215,[2915,31208,30249],{"class":29963},[2915,31210,1554],{"class":3529},[2915,31212,31214],{"class":3402,"line":31213},216,[2915,31215,3506],{"emptyLinePlaceholder":3505},[2915,31217,31219,31221],{"class":3402,"line":31218},217,[2915,31220,30047],{"class":3529},[2915,31222,30764],{"class":3414},[2915,31224,31226],{"class":3402,"line":31225},218,[2915,31227,3506],{"emptyLinePlaceholder":3505},[2915,31229,31231,31234],{"class":3402,"line":31230},219,[2915,31232,31233],{"class":29963},"profiles",[2915,31235,1554],{"class":3529},[2915,31237,31239],{"class":3402,"line":31238},220,[2915,31240,3506],{"emptyLinePlaceholder":3505},[2915,31242,31244,31246],{"class":3402,"line":31243},221,[2915,31245,30047],{"class":3529},[2915,31247,31248],{"class":3414},"cache\n",[2915,31250,31252],{"class":3402,"line":31251},222,[2915,31253,3506],{"emptyLinePlaceholder":3505},[2915,31255,31257,31259],{"class":3402,"line":31256},223,[2915,31258,30145],{"class":29963},[2915,31260,1554],{"class":3529},[2915,31262,31264],{"class":3402,"line":31263},224,[2915,31265,3506],{"emptyLinePlaceholder":3505},[2915,31267,31269,31272],{"class":3402,"line":31268},225,[2915,31270,31271],{"class":29963},"db_data",[2915,31273,1554],{"class":3529},[2915,31275,31277],{"class":3402,"line":31276},226,[2915,31278,3506],{"emptyLinePlaceholder":3505},[2915,31280,31282,31284,31286],{"class":3402,"line":31281},227,[2915,31283,30439],{"class":29963},[2915,31285,6162],{"class":3529},[2915,31287,31288],{"class":3414},"local\n",[2915,31290,31292],{"class":3402,"line":31291},228,[2915,31293,3506],{"emptyLinePlaceholder":3505},[2915,31295,31297,31300,31302],{"class":3402,"line":31296},229,[2915,31298,31299],{"class":29963},"redis_data",[2915,31301,6162],{"class":3529},[2915,31303,31304],{"class":3410},"null\n",[2915,31306,31308],{"class":3402,"line":31307},230,[2915,31309,3506],{"emptyLinePlaceholder":3505},[2915,31311,31313,31316],{"class":3402,"line":31312},231,[2915,31314,31315],{"class":29963},"nginx_logs",[2915,31317,1554],{"class":3529},[2915,31319,31321],{"class":3402,"line":31320},232,[2915,31322,3506],{"emptyLinePlaceholder":3505},[2915,31324,31326,31328,31330],{"class":3402,"line":31325},233,[2915,31327,30439],{"class":29963},[2915,31329,6162],{"class":3529},[2915,31331,31288],{"class":3414},[2915,31333,31335],{"class":3402,"line":31334},234,[2915,31336,3506],{"emptyLinePlaceholder":3505},[2915,31338,31340,31343],{"class":3402,"line":31339},235,[2915,31341,31342],{"class":29963},"driver_opts",[2915,31344,1554],{"class":3529},[2915,31346,31348],{"class":3402,"line":31347},236,[2915,31349,3506],{"emptyLinePlaceholder":3505},[2915,31351,31353,31356,31358],{"class":3402,"line":31352},237,[2915,31354,31355],{"class":29963},"type",[2915,31357,6162],{"class":3529},[2915,31359,31360],{"class":3414},"none\n",[2915,31362,31364],{"class":3402,"line":31363},238,[2915,31365,3506],{"emptyLinePlaceholder":3505},[2915,31367,31369,31371,31373],{"class":3402,"line":31368},239,[2915,31370,12309],{"class":29963},[2915,31372,6162],{"class":3529},[2915,31374,31375],{"class":3414},"bind\n",[2915,31377,31379],{"class":3402,"line":31378},240,[2915,31380,3506],{"emptyLinePlaceholder":3505},[2915,31382,31384,31387,31389],{"class":3402,"line":31383},241,[2915,31385,31386],{"class":29963},"device",[2915,31388,6162],{"class":3529},[2915,31390,31391],{"class":3414},"\u002Fsrv\u002Flogs\u002Fnginx\n",[2915,31393,31395],{"class":3402,"line":31394},242,[2915,31396,3506],{"emptyLinePlaceholder":3505},[2915,31398,31400,31402],{"class":3402,"line":31399},243,[2915,31401,30249],{"class":29963},[2915,31403,1554],{"class":3529},[2915,31405,31407],{"class":3402,"line":31406},244,[2915,31408,3506],{"emptyLinePlaceholder":3505},[2915,31410,31412,31415],{"class":3402,"line":31411},245,[2915,31413,31414],{"class":29963},"frontend-net",[2915,31416,1554],{"class":3529},[2915,31418,31420],{"class":3402,"line":31419},246,[2915,31421,3506],{"emptyLinePlaceholder":3505},[2915,31423,31425,31427,31429],{"class":3402,"line":31424},247,[2915,31426,30439],{"class":29963},[2915,31428,6162],{"class":3529},[2915,31430,31431],{"class":3414},"bridge\n",[2915,31433,31435],{"class":3402,"line":31434},248,[2915,31436,3506],{"emptyLinePlaceholder":3505},[2915,31438,31440,31443],{"class":3402,"line":31439},249,[2915,31441,31442],{"class":29963},"backend-net",[2915,31444,1554],{"class":3529},[2915,31446,31448],{"class":3402,"line":31447},250,[2915,31449,3506],{"emptyLinePlaceholder":3505},[2915,31451,31453,31455,31457],{"class":3402,"line":31452},251,[2915,31454,30439],{"class":29963},[2915,31456,6162],{"class":3529},[2915,31458,31431],{"class":3414},[2915,31460,31462],{"class":3402,"line":31461},252,[2915,31463,3506],{"emptyLinePlaceholder":3505},[2915,31465,31467,31470,31472],{"class":3402,"line":31466},253,[2915,31468,31469],{"class":29963},"internal",[2915,31471,6162],{"class":3529},[2915,31473,10257],{"class":3410},[2915,31475,31477],{"class":3402,"line":31476},254,[2915,31478,3506],{"emptyLinePlaceholder":3505},[2915,31480,31482,31485],{"class":3402,"line":31481},255,[2915,31483,31484],{"class":29963},"monitoring",[2915,31486,1554],{"class":3529},[2915,31488,31490],{"class":3402,"line":31489},256,[2915,31491,3506],{"emptyLinePlaceholder":3505},[2915,31493,31495,31498,31500],{"class":3402,"line":31494},257,[2915,31496,31497],{"class":29963},"external",[2915,31499,6162],{"class":3529},[2915,31501,10257],{"class":3410},[2915,31503,31505],{"class":3402,"line":31504},258,[2915,31506,3506],{"emptyLinePlaceholder":3505},[2915,31508,31510,31512,31514],{"class":3402,"line":31509},259,[2915,31511,27487],{"class":29963},[2915,31513,6162],{"class":3529},[2915,31515,31516],{"class":3414},"monitoring_net\n",[54,31518,31520],{"id":31519},"restart-policies","restart-Policies",[645,31522,31523,31536],{},[648,31524,31525],{},[651,31526,31527,31532],{},[654,31528,31529],{},[26,31530,31531],{},"Wert",[654,31533,31534],{},[26,31535,5483],{},[670,31537,31538,31546,31554,31562],{},[651,31539,31540,31543],{},[675,31541,31542],{},"no",[675,31544,31545],{},"Niemals neu starten (Standard)",[651,31547,31548,31551],{},[675,31549,31550],{},"always",[675,31552,31553],{},"Immer neu starten – auch nach manuellem Stopp",[651,31555,31556,31559],{},[675,31557,31558],{},"on-failure",[675,31560,31561],{},"Nur bei Fehler (Exit-Code ≠ 0) neu starten",[651,31563,31564,31567],{},[675,31565,31566],{},"unless-stopped",[675,31568,31569],{},"Immer neu starten, außer wenn manuell gestoppt",[54,31571,31573],{"id":31572},"depends_on-condition-werte","depends_on – condition-Werte",[645,31575,31576,31588],{},[648,31577,31578],{},[651,31579,31580,31584],{},[654,31581,31582],{},[26,31583,31531],{},[654,31585,31586],{},[26,31587,5483],{},[670,31589,31590,31598,31606],{},[651,31591,31592,31595],{},[675,31593,31594],{},"service_started",[675,31596,31597],{},"Warten bis der Container gestartet ist (Standard)",[651,31599,31600,31603],{},[675,31601,31602],{},"service_healthy",[675,31604,31605],{},"Warten bis der Container healthy ist (Healthcheck nötig!)",[651,31607,31608,31611],{},[675,31609,31610],{},"service_completed_successfully",[675,31612,31613],{},"Warten bis der Container mit Exit 0 beendet wurde",[54,31615,31617],{"id":31616},"env-datei",".env-Datei",[11,31619,31621],{"id":31620},"env-im-selben-verzeichnis-wie-docker-composeyml",".env (im selben Verzeichnis wie docker-compose.yml)",[11,31623,31625],{"id":31624},"automatisch-von-docker-compose-geladen","Automatisch von docker compose geladen",[3392,31627,31629],{"className":3394,"code":31628,"language":3396,"meta":225,"style":225},"POSTGRES_DB=myapp\nPOSTGRES_USER=app_user\nPOSTGRES_PASSWORD=sicheres_passwort_123\nIMAGE_TAG=1.5.2\nAPP_PORT=3000\n\n",[3398,31630,31631,31640,31649,31658,31668],{"__ignoreMap":225},[2915,31632,31633,31635,31637],{"class":3402,"line":3403},[2915,31634,30975],{"class":3529},[2915,31636,5137],{"class":3533},[2915,31638,31639],{"class":3414},"myapp\n",[2915,31641,31642,31644,31646],{"class":3402,"line":1117},[2915,31643,30989],{"class":3529},[2915,31645,5137],{"class":3533},[2915,31647,31648],{"class":3414},"app_user\n",[2915,31650,31651,31653,31655],{"class":3402,"line":1125},[2915,31652,31003],{"class":3529},[2915,31654,5137],{"class":3533},[2915,31656,31657],{"class":3414},"sicheres_passwort_123\n",[2915,31659,31660,31663,31665],{"class":3402,"line":3515},[2915,31661,31662],{"class":3529},"IMAGE_TAG",[2915,31664,5137],{"class":3533},[2915,31666,31667],{"class":3414},"1.5.2\n",[2915,31669,31670,31673,31675],{"class":3402,"line":3520},[2915,31671,31672],{"class":3529},"APP_PORT",[2915,31674,5137],{"class":3533},[2915,31676,31677],{"class":3414},"3000\n",[16,31679,31680],{},"Verwendung im docker-compose.yml:",[3392,31682,31684],{"className":29954,"code":31683,"language":29956,"meta":225,"style":225},"services:\n\napp:\n\nimage: 'meineapp:${IMAGE_TAG:-latest}'\n\nports:\n\n- '${APP_PORT}:3000'\n\nenvironment:\n\nDB_PASS: '${POSTGRES_PASSWORD:?Passwort muss gesetzt sein!}'\n\n",[3398,31685,31686,31692,31696,31703,31707,31716,31720,31726,31730,31737,31741,31747,31751],{"__ignoreMap":225},[2915,31687,31688,31690],{"class":3402,"line":3403},[2915,31689,29977],{"class":29963},[2915,31691,1554],{"class":3529},[2915,31693,31694],{"class":3402,"line":1117},[2915,31695,3506],{"emptyLinePlaceholder":3505},[2915,31697,31698,31701],{"class":3402,"line":1125},[2915,31699,31700],{"class":29963},"app",[2915,31702,1554],{"class":3529},[2915,31704,31705],{"class":3402,"line":3515},[2915,31706,3506],{"emptyLinePlaceholder":3505},[2915,31708,31709,31711,31713],{"class":3402,"line":3520},[2915,31710,30059],{"class":29963},[2915,31712,6162],{"class":3529},[2915,31714,31715],{"class":3414},"'meineapp:${IMAGE_TAG:-latest}'\n",[2915,31717,31718],{"class":3402,"line":5070},[2915,31719,3506],{"emptyLinePlaceholder":3505},[2915,31721,31722,31724],{"class":3402,"line":5075},[2915,31723,30112],{"class":29963},[2915,31725,1554],{"class":3529},[2915,31727,31728],{"class":3402,"line":5093},[2915,31729,3506],{"emptyLinePlaceholder":3505},[2915,31731,31732,31734],{"class":3402,"line":5098},[2915,31733,30047],{"class":3529},[2915,31735,31736],{"class":3414},"'${APP_PORT}:3000'\n",[2915,31738,31739],{"class":3402,"line":5207},[2915,31740,3506],{"emptyLinePlaceholder":3505},[2915,31742,31743,31745],{"class":3402,"line":5212},[2915,31744,30178],{"class":29963},[2915,31746,1554],{"class":3529},[2915,31748,31749],{"class":3402,"line":5218},[2915,31750,3506],{"emptyLinePlaceholder":3505},[2915,31752,31753,31756,31758],{"class":3402,"line":5223},[2915,31754,31755],{"class":29963},"DB_PASS",[2915,31757,6162],{"class":3529},[2915,31759,31760],{"class":3414},"'${POSTGRES_PASSWORD:?Passwort muss gesetzt sein!}'\n",[54,31762,31764],{"id":31763},"praktische-beispiele","Praktische Beispiele",[11,31766,31768],{"id":31767},"starten","─── Starten ─────────────────────────────────────────────────",[11,31770,31772],{"id":31771},"alle-services-im-hintergrund-starten","Alle Services im Hintergrund starten",[3392,31774,31776],{"className":3394,"code":31775,"language":3396,"meta":225,"style":225},"docker compose up -d\n\n# Starten und Live-Logs beobachten (kein -d)\n\ndocker compose up\n\n# Images neu bauen und dann starten\n\ndocker compose up -d --build\n\n# Nur bestimmte Services starten\n\ndocker compose up -d database cache\n\n# Mit einem Profil starten\n\ndocker compose --profile cache up -d\n\n# Warten bis alle Container healthy sind\n\ndocker compose up -d --wait\n\n# ─── Logs ────────────────────────────────────────────────────\n\n# Alle Logs live verfolgen\n\ndocker compose logs -f\n\n# Nur Backend-Logs, letzte 100 Zeilen\n\ndocker compose logs --tail=100 -f backend\n\n# Logs mit Zeitstempel\n\ndocker compose logs -t\n\n# ─── Befehle ausführen ───────────────────────────────────────\n\n# Bash im Backend-Container\n\ndocker compose exec backend bash\n\n# Datenbankzugriff\n\ndocker compose exec database psql -U app_user -d myapp\n\n# HTTP-Anfrage aus dem Container\n\ndocker compose exec backend curl http:\u002F\u002Fdatabase:5432\n\n# Einmaliger Befehl (neuer Container, wird danach gelöscht)\n\ndocker compose run --rm backend npm test\n\ndocker compose run --rm backend python manage.py migrate\n\n# ─── Status und Diagnose ──────────────────────────────────────\n\n# Status aller Container\n\ndocker compose ps\n\n# Mit Ports und Healthcheck\n\ndocker compose ps -a\n\n# Ressourcenverbrauch\n\ndocker stats $(docker compose ps -q)\n\n# Prozesse in Containern\n\ndocker compose top\n\n# Konfiguration validieren und anzeigen\n\ndocker compose config\n\n# ─── Stoppen und Aufräumen ────────────────────────────────────\n\n# Stoppen (Container bleiben erhalten)\n\ndocker compose stop\n\n# Stoppen und Container entfernen\n\ndocker compose down\n\n# Stoppen, Container UND Volumes entfernen (VORSICHT: Datenverlust!)\n\ndocker compose down -v\n\n# Stoppen und auch Images entfernen\n\ndocker compose down --rmi all\n\n# Nur bestimmte Services neu starten\n\ndocker compose restart backend\n\n# ─── Skalieren ───────────────────────────────────────────────\n\n# Backend auf 3 Instanzen skalieren\n\ndocker compose up -d --scale backend=3\n\n# ─── Mehrere Compose-Dateien ──────────────────────────────────\n\n# Produktion mit Überschreibungs-Datei\n\ndocker compose -f docker-compose.yml -f docker-compose.prod.yml up -d\n\n# Mit eigenem Projektname\n\ndocker compose -p mein-projekt up -d\n\n# Mit anderer .env-Datei\n\ndocker compose --env-file .env.production up -d\n\n",[3398,31777,31778,31791,31795,31800,31804,31813,31817,31822,31826,31839,31843,31848,31852,31868,31872,31877,31881,31897,31901,31906,31910,31923,31927,31932,31936,31941,31945,31955,31959,31964,31968,31984,31988,31993,31997,32008,32012,32017,32021,32026,32030,32043,32047,32052,32056,32080,32084,32089,32093,32109,32113,32118,32122,32140,32144,32165,32169,32174,32178,32183,32187,32196,32200,32205,32209,32221,32225,32230,32234,32253,32257,32262,32266,32275,32279,32284,32288,32297,32301,32306,32310,32315,32319,32328,32332,32337,32341,32350,32354,32359,32363,32375,32379,32384,32388,32402,32406,32411,32415,32426,32430,32435,32439,32444,32448,32466,32470,32475,32479,32484,32488,32508,32512,32517,32521,32536,32540,32545,32549],{"__ignoreMap":225},[2915,31779,31780,31782,31785,31788],{"class":3402,"line":3403},[2915,31781,6792],{"class":3406},[2915,31783,31784],{"class":3414}," compose",[2915,31786,31787],{"class":3414}," up",[2915,31789,31790],{"class":3410}," -d\n",[2915,31792,31793],{"class":3402,"line":1117},[2915,31794,3506],{"emptyLinePlaceholder":3505},[2915,31796,31797],{"class":3402,"line":1125},[2915,31798,31799],{"class":3511},"# Starten und Live-Logs beobachten (kein -d)\n",[2915,31801,31802],{"class":3402,"line":3515},[2915,31803,3506],{"emptyLinePlaceholder":3505},[2915,31805,31806,31808,31810],{"class":3402,"line":3520},[2915,31807,6792],{"class":3406},[2915,31809,31784],{"class":3414},[2915,31811,31812],{"class":3414}," up\n",[2915,31814,31815],{"class":3402,"line":5070},[2915,31816,3506],{"emptyLinePlaceholder":3505},[2915,31818,31819],{"class":3402,"line":5075},[2915,31820,31821],{"class":3511},"# Images neu bauen und dann starten\n",[2915,31823,31824],{"class":3402,"line":5093},[2915,31825,3506],{"emptyLinePlaceholder":3505},[2915,31827,31828,31830,31832,31834,31836],{"class":3402,"line":5098},[2915,31829,6792],{"class":3406},[2915,31831,31784],{"class":3414},[2915,31833,31787],{"class":3414},[2915,31835,6798],{"class":3410},[2915,31837,31838],{"class":3410}," --build\n",[2915,31840,31841],{"class":3402,"line":5207},[2915,31842,3506],{"emptyLinePlaceholder":3505},[2915,31844,31845],{"class":3402,"line":5212},[2915,31846,31847],{"class":3511},"# Nur bestimmte Services starten\n",[2915,31849,31850],{"class":3402,"line":5218},[2915,31851,3506],{"emptyLinePlaceholder":3505},[2915,31853,31854,31856,31858,31860,31862,31865],{"class":3402,"line":5223},[2915,31855,6792],{"class":3406},[2915,31857,31784],{"class":3414},[2915,31859,31787],{"class":3414},[2915,31861,6798],{"class":3410},[2915,31863,31864],{"class":3414}," database",[2915,31866,31867],{"class":3414}," cache\n",[2915,31869,31870],{"class":3402,"line":5229},[2915,31871,3506],{"emptyLinePlaceholder":3505},[2915,31873,31874],{"class":3402,"line":5253},[2915,31875,31876],{"class":3511},"# Mit einem Profil starten\n",[2915,31878,31879],{"class":3402,"line":5266},[2915,31880,3506],{"emptyLinePlaceholder":3505},[2915,31882,31883,31885,31887,31890,31893,31895],{"class":3402,"line":5721},[2915,31884,6792],{"class":3406},[2915,31886,31784],{"class":3414},[2915,31888,31889],{"class":3410}," --profile",[2915,31891,31892],{"class":3414}," cache",[2915,31894,31787],{"class":3414},[2915,31896,31790],{"class":3410},[2915,31898,31899],{"class":3402,"line":9401},[2915,31900,3506],{"emptyLinePlaceholder":3505},[2915,31902,31903],{"class":3402,"line":9406},[2915,31904,31905],{"class":3511},"# Warten bis alle Container healthy sind\n",[2915,31907,31908],{"class":3402,"line":9411},[2915,31909,3506],{"emptyLinePlaceholder":3505},[2915,31911,31912,31914,31916,31918,31920],{"class":3402,"line":9416},[2915,31913,6792],{"class":3406},[2915,31915,31784],{"class":3414},[2915,31917,31787],{"class":3414},[2915,31919,6798],{"class":3410},[2915,31921,31922],{"class":3410}," --wait\n",[2915,31924,31925],{"class":3402,"line":9428},[2915,31926,3506],{"emptyLinePlaceholder":3505},[2915,31928,31929],{"class":3402,"line":9433},[2915,31930,31931],{"class":3511},"# ─── Logs ────────────────────────────────────────────────────\n",[2915,31933,31934],{"class":3402,"line":9454},[2915,31935,3506],{"emptyLinePlaceholder":3505},[2915,31937,31938],{"class":3402,"line":9459},[2915,31939,31940],{"class":3511},"# Alle Logs live verfolgen\n",[2915,31942,31943],{"class":3402,"line":9464},[2915,31944,3506],{"emptyLinePlaceholder":3505},[2915,31946,31947,31949,31951,31953],{"class":3402,"line":9469},[2915,31948,6792],{"class":3406},[2915,31950,31784],{"class":3414},[2915,31952,29156],{"class":3414},[2915,31954,17782],{"class":3410},[2915,31956,31957],{"class":3402,"line":9479},[2915,31958,3506],{"emptyLinePlaceholder":3505},[2915,31960,31961],{"class":3402,"line":9484},[2915,31962,31963],{"class":3511},"# Nur Backend-Logs, letzte 100 Zeilen\n",[2915,31965,31966],{"class":3402,"line":9489},[2915,31967,3506],{"emptyLinePlaceholder":3505},[2915,31969,31970,31972,31974,31976,31979,31981],{"class":3402,"line":9494},[2915,31971,6792],{"class":3406},[2915,31973,31784],{"class":3414},[2915,31975,29156],{"class":3414},[2915,31977,31978],{"class":3410}," --tail=100",[2915,31980,10089],{"class":3410},[2915,31982,31983],{"class":3414}," backend\n",[2915,31985,31986],{"class":3402,"line":9504},[2915,31987,3506],{"emptyLinePlaceholder":3505},[2915,31989,31990],{"class":3402,"line":9509},[2915,31991,31992],{"class":3511},"# Logs mit Zeitstempel\n",[2915,31994,31995],{"class":3402,"line":9514},[2915,31996,3506],{"emptyLinePlaceholder":3505},[2915,31998,31999,32001,32003,32005],{"class":3402,"line":9519},[2915,32000,6792],{"class":3406},[2915,32002,31784],{"class":3414},[2915,32004,29156],{"class":3414},[2915,32006,32007],{"class":3410}," -t\n",[2915,32009,32010],{"class":3402,"line":9524},[2915,32011,3506],{"emptyLinePlaceholder":3505},[2915,32013,32014],{"class":3402,"line":9529},[2915,32015,32016],{"class":3511},"# ─── Befehle ausführen ───────────────────────────────────────\n",[2915,32018,32019],{"class":3402,"line":9534},[2915,32020,3506],{"emptyLinePlaceholder":3505},[2915,32022,32023],{"class":3402,"line":9539},[2915,32024,32025],{"class":3511},"# Bash im Backend-Container\n",[2915,32027,32028],{"class":3402,"line":9552},[2915,32029,3506],{"emptyLinePlaceholder":3505},[2915,32031,32032,32034,32036,32038,32041],{"class":3402,"line":9557},[2915,32033,6792],{"class":3406},[2915,32035,31784],{"class":3414},[2915,32037,29181],{"class":3414},[2915,32039,32040],{"class":3414}," backend",[2915,32042,29088],{"class":3414},[2915,32044,32045],{"class":3402,"line":9570},[2915,32046,3506],{"emptyLinePlaceholder":3505},[2915,32048,32049],{"class":3402,"line":9575},[2915,32050,32051],{"class":3511},"# Datenbankzugriff\n",[2915,32053,32054],{"class":3402,"line":9588},[2915,32055,3506],{"emptyLinePlaceholder":3505},[2915,32057,32058,32060,32062,32064,32066,32069,32072,32075,32077],{"class":3402,"line":9593},[2915,32059,6792],{"class":3406},[2915,32061,31784],{"class":3414},[2915,32063,29181],{"class":3414},[2915,32065,31864],{"class":3414},[2915,32067,32068],{"class":3414}," psql",[2915,32070,32071],{"class":3410}," -U",[2915,32073,32074],{"class":3414}," app_user",[2915,32076,6798],{"class":3410},[2915,32078,32079],{"class":3414}," myapp\n",[2915,32081,32082],{"class":3402,"line":9598},[2915,32083,3506],{"emptyLinePlaceholder":3505},[2915,32085,32086],{"class":3402,"line":9603},[2915,32087,32088],{"class":3511},"# HTTP-Anfrage aus dem Container\n",[2915,32090,32091],{"class":3402,"line":9619},[2915,32092,3506],{"emptyLinePlaceholder":3505},[2915,32094,32095,32097,32099,32101,32103,32106],{"class":3402,"line":9624},[2915,32096,6792],{"class":3406},[2915,32098,31784],{"class":3414},[2915,32100,29181],{"class":3414},[2915,32102,32040],{"class":3414},[2915,32104,32105],{"class":3414}," curl",[2915,32107,32108],{"class":3414}," http:\u002F\u002Fdatabase:5432\n",[2915,32110,32111],{"class":3402,"line":9629},[2915,32112,3506],{"emptyLinePlaceholder":3505},[2915,32114,32115],{"class":3402,"line":9634},[2915,32116,32117],{"class":3511},"# Einmaliger Befehl (neuer Container, wird danach gelöscht)\n",[2915,32119,32120],{"class":3402,"line":9642},[2915,32121,3506],{"emptyLinePlaceholder":3505},[2915,32123,32124,32126,32128,32130,32132,32134,32137],{"class":3402,"line":9647},[2915,32125,6792],{"class":3406},[2915,32127,31784],{"class":3414},[2915,32129,6795],{"class":3414},[2915,32131,29082],{"class":3410},[2915,32133,32040],{"class":3414},[2915,32135,32136],{"class":3414}," npm",[2915,32138,32139],{"class":3414}," test\n",[2915,32141,32142],{"class":3402,"line":9656},[2915,32143,3506],{"emptyLinePlaceholder":3505},[2915,32145,32146,32148,32150,32152,32154,32156,32159,32162],{"class":3402,"line":9661},[2915,32147,6792],{"class":3406},[2915,32149,31784],{"class":3414},[2915,32151,6795],{"class":3414},[2915,32153,29082],{"class":3410},[2915,32155,32040],{"class":3414},[2915,32157,32158],{"class":3414}," python",[2915,32160,32161],{"class":3414}," manage.py",[2915,32163,32164],{"class":3414}," migrate\n",[2915,32166,32167],{"class":3402,"line":9666},[2915,32168,3506],{"emptyLinePlaceholder":3505},[2915,32170,32171],{"class":3402,"line":9671},[2915,32172,32173],{"class":3511},"# ─── Status und Diagnose ──────────────────────────────────────\n",[2915,32175,32176],{"class":3402,"line":9685},[2915,32177,3506],{"emptyLinePlaceholder":3505},[2915,32179,32180],{"class":3402,"line":9690},[2915,32181,32182],{"class":3511},"# Status aller Container\n",[2915,32184,32185],{"class":3402,"line":9711},[2915,32186,3506],{"emptyLinePlaceholder":3505},[2915,32188,32189,32191,32193],{"class":3402,"line":9716},[2915,32190,6792],{"class":3406},[2915,32192,31784],{"class":3414},[2915,32194,32195],{"class":3414}," ps\n",[2915,32197,32198],{"class":3402,"line":9721},[2915,32199,3506],{"emptyLinePlaceholder":3505},[2915,32201,32202],{"class":3402,"line":9726},[2915,32203,32204],{"class":3511},"# Mit Ports und Healthcheck\n",[2915,32206,32207],{"class":3402,"line":9734},[2915,32208,3506],{"emptyLinePlaceholder":3505},[2915,32210,32211,32213,32215,32218],{"class":3402,"line":9739},[2915,32212,6792],{"class":3406},[2915,32214,31784],{"class":3414},[2915,32216,32217],{"class":3414}," ps",[2915,32219,32220],{"class":3410}," -a\n",[2915,32222,32223],{"class":3402,"line":9747},[2915,32224,3506],{"emptyLinePlaceholder":3505},[2915,32226,32227],{"class":3402,"line":9752},[2915,32228,32229],{"class":3511},"# Ressourcenverbrauch\n",[2915,32231,32232],{"class":3402,"line":9760},[2915,32233,3506],{"emptyLinePlaceholder":3505},[2915,32235,32236,32238,32240,32243,32245,32247,32249,32251],{"class":3402,"line":9765},[2915,32237,6792],{"class":3406},[2915,32239,29279],{"class":3414},[2915,32241,32242],{"class":3529}," $(",[2915,32244,6792],{"class":3406},[2915,32246,31784],{"class":3414},[2915,32248,32217],{"class":3414},[2915,32250,15372],{"class":3410},[2915,32252,5152],{"class":3529},[2915,32254,32255],{"class":3402,"line":9773},[2915,32256,3506],{"emptyLinePlaceholder":3505},[2915,32258,32259],{"class":3402,"line":9778},[2915,32260,32261],{"class":3511},"# Prozesse in Containern\n",[2915,32263,32264],{"class":3402,"line":9786},[2915,32265,3506],{"emptyLinePlaceholder":3505},[2915,32267,32268,32270,32272],{"class":3402,"line":9791},[2915,32269,6792],{"class":3406},[2915,32271,31784],{"class":3414},[2915,32273,32274],{"class":3414}," top\n",[2915,32276,32277],{"class":3402,"line":9800},[2915,32278,3506],{"emptyLinePlaceholder":3505},[2915,32280,32281],{"class":3402,"line":9805},[2915,32282,32283],{"class":3511},"# Konfiguration validieren und anzeigen\n",[2915,32285,32286],{"class":3402,"line":20122},[2915,32287,3506],{"emptyLinePlaceholder":3505},[2915,32289,32290,32292,32294],{"class":3402,"line":20127},[2915,32291,6792],{"class":3406},[2915,32293,31784],{"class":3414},[2915,32295,32296],{"class":3414}," config\n",[2915,32298,32299],{"class":3402,"line":20133},[2915,32300,3506],{"emptyLinePlaceholder":3505},[2915,32302,32303],{"class":3402,"line":20138},[2915,32304,32305],{"class":3511},"# ─── Stoppen und Aufräumen ────────────────────────────────────\n",[2915,32307,32308],{"class":3402,"line":20150},[2915,32309,3506],{"emptyLinePlaceholder":3505},[2915,32311,32312],{"class":3402,"line":20155},[2915,32313,32314],{"class":3511},"# Stoppen (Container bleiben erhalten)\n",[2915,32316,32317],{"class":3402,"line":20161},[2915,32318,3506],{"emptyLinePlaceholder":3505},[2915,32320,32321,32323,32325],{"class":3402,"line":20166},[2915,32322,6792],{"class":3406},[2915,32324,31784],{"class":3414},[2915,32326,32327],{"class":3414}," stop\n",[2915,32329,32330],{"class":3402,"line":20178},[2915,32331,3506],{"emptyLinePlaceholder":3505},[2915,32333,32334],{"class":3402,"line":20183},[2915,32335,32336],{"class":3511},"# Stoppen und Container entfernen\n",[2915,32338,32339],{"class":3402,"line":20189},[2915,32340,3506],{"emptyLinePlaceholder":3505},[2915,32342,32343,32345,32347],{"class":3402,"line":20194},[2915,32344,6792],{"class":3406},[2915,32346,31784],{"class":3414},[2915,32348,32349],{"class":3414}," down\n",[2915,32351,32352],{"class":3402,"line":20206},[2915,32353,3506],{"emptyLinePlaceholder":3505},[2915,32355,32356],{"class":3402,"line":20211},[2915,32357,32358],{"class":3511},"# Stoppen, Container UND Volumes entfernen (VORSICHT: Datenverlust!)\n",[2915,32360,32361],{"class":3402,"line":20217},[2915,32362,3506],{"emptyLinePlaceholder":3505},[2915,32364,32365,32367,32369,32372],{"class":3402,"line":20222},[2915,32366,6792],{"class":3406},[2915,32368,31784],{"class":3414},[2915,32370,32371],{"class":3414}," down",[2915,32373,32374],{"class":3410}," -v\n",[2915,32376,32377],{"class":3402,"line":20234},[2915,32378,3506],{"emptyLinePlaceholder":3505},[2915,32380,32381],{"class":3402,"line":20239},[2915,32382,32383],{"class":3511},"# Stoppen und auch Images entfernen\n",[2915,32385,32386],{"class":3402,"line":20245},[2915,32387,3506],{"emptyLinePlaceholder":3505},[2915,32389,32390,32392,32394,32396,32399],{"class":3402,"line":20250},[2915,32391,6792],{"class":3406},[2915,32393,31784],{"class":3414},[2915,32395,32371],{"class":3414},[2915,32397,32398],{"class":3410}," --rmi",[2915,32400,32401],{"class":3414}," all\n",[2915,32403,32404],{"class":3402,"line":20256},[2915,32405,3506],{"emptyLinePlaceholder":3505},[2915,32407,32408],{"class":3402,"line":20261},[2915,32409,32410],{"class":3511},"# Nur bestimmte Services neu starten\n",[2915,32412,32413],{"class":3402,"line":20271},[2915,32414,3506],{"emptyLinePlaceholder":3505},[2915,32416,32417,32419,32421,32424],{"class":3402,"line":20276},[2915,32418,6792],{"class":3406},[2915,32420,31784],{"class":3414},[2915,32422,32423],{"class":3414}," restart",[2915,32425,31983],{"class":3414},[2915,32427,32428],{"class":3402,"line":20282},[2915,32429,3506],{"emptyLinePlaceholder":3505},[2915,32431,32432],{"class":3402,"line":20287},[2915,32433,32434],{"class":3511},"# ─── Skalieren ───────────────────────────────────────────────\n",[2915,32436,32437],{"class":3402,"line":20297},[2915,32438,3506],{"emptyLinePlaceholder":3505},[2915,32440,32441],{"class":3402,"line":20302},[2915,32442,32443],{"class":3511},"# Backend auf 3 Instanzen skalieren\n",[2915,32445,32446],{"class":3402,"line":20308},[2915,32447,3506],{"emptyLinePlaceholder":3505},[2915,32449,32450,32452,32454,32456,32458,32461,32464],{"class":3402,"line":20313},[2915,32451,6792],{"class":3406},[2915,32453,31784],{"class":3414},[2915,32455,31787],{"class":3414},[2915,32457,6798],{"class":3410},[2915,32459,32460],{"class":3410}," --scale",[2915,32462,32463],{"class":3414}," backend=",[2915,32465,30405],{"class":3410},[2915,32467,32468],{"class":3402,"line":20323},[2915,32469,3506],{"emptyLinePlaceholder":3505},[2915,32471,32472],{"class":3402,"line":20328},[2915,32473,32474],{"class":3511},"# ─── Mehrere Compose-Dateien ──────────────────────────────────\n",[2915,32476,32477],{"class":3402,"line":20334},[2915,32478,3506],{"emptyLinePlaceholder":3505},[2915,32480,32481],{"class":3402,"line":20339},[2915,32482,32483],{"class":3511},"# Produktion mit Überschreibungs-Datei\n",[2915,32485,32486],{"class":3402,"line":20349},[2915,32487,3506],{"emptyLinePlaceholder":3505},[2915,32489,32490,32492,32494,32496,32499,32501,32504,32506],{"class":3402,"line":20354},[2915,32491,6792],{"class":3406},[2915,32493,31784],{"class":3414},[2915,32495,10089],{"class":3410},[2915,32497,32498],{"class":3414}," docker-compose.yml",[2915,32500,10089],{"class":3410},[2915,32502,32503],{"class":3414}," docker-compose.prod.yml",[2915,32505,31787],{"class":3414},[2915,32507,31790],{"class":3410},[2915,32509,32510],{"class":3402,"line":20360},[2915,32511,3506],{"emptyLinePlaceholder":3505},[2915,32513,32514],{"class":3402,"line":20365},[2915,32515,32516],{"class":3511},"# Mit eigenem Projektname\n",[2915,32518,32519],{"class":3402,"line":20375},[2915,32520,3506],{"emptyLinePlaceholder":3505},[2915,32522,32523,32525,32527,32529,32532,32534],{"class":3402,"line":20380},[2915,32524,6792],{"class":3406},[2915,32526,31784],{"class":3414},[2915,32528,6956],{"class":3410},[2915,32530,32531],{"class":3414}," mein-projekt",[2915,32533,31787],{"class":3414},[2915,32535,31790],{"class":3410},[2915,32537,32538],{"class":3402,"line":20386},[2915,32539,3506],{"emptyLinePlaceholder":3505},[2915,32541,32542],{"class":3402,"line":20391},[2915,32543,32544],{"class":3511},"# Mit anderer .env-Datei\n",[2915,32546,32547],{"class":3402,"line":20397},[2915,32548,3506],{"emptyLinePlaceholder":3505},[2915,32550,32551,32553,32555,32558,32561,32563],{"class":3402,"line":20402},[2915,32552,6792],{"class":3406},[2915,32554,31784],{"class":3414},[2915,32556,32557],{"class":3410}," --env-file",[2915,32559,32560],{"class":3414}," .env.production",[2915,32562,31787],{"class":3414},[2915,32564,31790],{"class":3410},[54,32566,11749],{"id":32567},"ausgabe-20",[11,32569,32571],{"id":32570},"docker-compose-ps","docker compose ps",[16,32573,32574,32575,32577,32578,32580,32581,32583],{},"NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS",[5885,32576],{},"\nmein-projekt-backend-1 backend:latest \".\u002Fserver\" backend 2 hours ago Up 2 hours (healthy) 0.0.0.0:8080->8080\u002Ftcp",[5885,32579],{},"\nmein-projekt-frontend-1 frontend:latest \"nginx -g 'daemon of…\" frontend 2 hours ago Up 2 hours 0.0.0.0:3000->3000\u002Ftcp",[5885,32582],{},"\nmein-projekt-database-1 postgres:15-alpine \"docker-entrypoint.s…\" database 2 hours ago Up 2 hours (healthy)",[16,32585,32586,32589],{},[26,32587,32588],{},"Best Practice:"," Niemals Passwörter direkt in docker-compose.yml schreiben – immer .env-Datei verwenden und .env in .gitignore eintragen!",[11,32591,13729],{"id":32592},"etcshadow",[16,32594,32595,32597,32598,32601,32602,32604,32605,32608],{},[26,32596,11461],{}," Enthält die ",[26,32599,32600],{},"verschlüsselten Passwörter"," und Passwort-Ablaufinformationen aller Systembenutzer. Nur ",[26,32603,12437],{}," (und die Gruppe ",[26,32606,32607],{},"shadow",") kann diese Datei lesen.",[16,32610,32611],{},[26,32612,32613],{},"Berechtigungen:",[16,32615,32616,32617,32619],{},"-rw-r----- 1 root shadow \u003C- auf Debian\u002FUbuntu",[5885,32618],{},"\n-rw------- 1 root root \u003C- auf RHEL\u002FCentOS",[16,32621,32622],{},[26,32623,32624],{},"Format (9 Felder, Trenner: :)",[16,32626,32627],{},"benutzername:passwort-hash:letzte-änderung:min-tage:max-tage:warn-tage:inaktiv-tage:ablauf:reserviert",[54,32629,32631],{"id":32630},"feldübersicht","Feldübersicht",[645,32633,32634,32651],{},[648,32635,32636],{},[651,32637,32638,32643,32647],{},[654,32639,32640],{},[26,32641,32642],{},"Feld-Nr.",[654,32644,32645],{},[26,32646,14388],{},[654,32648,32649],{},[26,32650,4550],{},[670,32652,32653,32663,32673,32683,32693,32703,32713,32723,32732],{},[651,32654,32655,32657,32660],{},[675,32656,12976],{},[675,32658,32659],{},"benutzername",[675,32661,32662],{},"Login-Name (muss mit \u002Fetc\u002Fpasswd übereinstimmen)",[651,32664,32665,32667,32670],{},[675,32666,12959],{},[675,32668,32669],{},"passwort-hash",[675,32671,32672],{},"Gehashtes Passwort mit Algorithmus-Kennung",[651,32674,32675,32677,32680],{},[675,32676,13071],{},[675,32678,32679],{},"letzte-änderung",[675,32681,32682],{},"Tage seit 01.01.1970 der letzten Passwortänderung. 0 = muss bei nächstem Login geändert werden",[651,32684,32685,32687,32690],{},[675,32686,1633],{},[675,32688,32689],{},"min-tage",[675,32691,32692],{},"Minimum-Tage bis Passwort geändert werden darf (0 = jederzeit)",[651,32694,32695,32697,32700],{},[675,32696,13045],{},[675,32698,32699],{},"max-tage",[675,32701,32702],{},"Maximum-Gültigkeit in Tagen (99999 = läuft nie ab)",[651,32704,32705,32707,32710],{},[675,32706,13031],{},[675,32708,32709],{},"warn-tage",[675,32711,32712],{},"Warnung N Tage vor Ablauf (leer = keine Warnung)",[651,32714,32715,32717,32720],{},[675,32716,13017],{},[675,32718,32719],{},"inaktiv-tage",[675,32721,32722],{},"Tage nach Ablauf bis Konto deaktiviert wird (leer = nie)",[651,32724,32725,32727,32729],{},[675,32726,15039],{},[675,32728,402],{},[675,32730,32731],{},"Absolutes Ablaufdatum (Tage seit 01.01.1970, leer = nie)",[651,32733,32734,32737,32740],{},[675,32735,32736],{},"9",[675,32738,32739],{},"reserviert",[675,32741,32742],{},"Für zukünftige Verwendung reserviert, immer leer",[54,32744,32746],{"id":32745},"passwort-hash-formate","Passwort-Hash Formate",[645,32748,32749,32767],{},[648,32750,32751],{},[651,32752,32753,32758,32763],{},[654,32754,32755],{},[26,32756,32757],{},"Präfix",[654,32759,32760],{},[26,32761,32762],{},"Algorithmus",[654,32764,32765],{},[26,32766,1643],{},[670,32768,32769,32780,32791,32801,32812,32823,32834,32843,32853,32862],{},[651,32770,32771,32774,32777],{},[675,32772,32773],{},"$1$",[675,32775,32776],{},"MD5",[675,32778,32779],{},"Veraltet, unsicher!",[651,32781,32782,32785,32788],{},[675,32783,32784],{},"$2a$ \u002F $2b$",[675,32786,32787],{},"bcrypt",[675,32789,32790],{},"Gut",[651,32792,32793,32796,32799],{},[675,32794,32795],{},"$5$",[675,32797,32798],{},"SHA-256",[675,32800,32790],{},[651,32802,32803,32806,32809],{},[675,32804,32805],{},"$6$",[675,32807,32808],{},"SHA-512",[675,32810,32811],{},"Empfohlen (Standard auf vielen Systemen)",[651,32813,32814,32817,32820],{},[675,32815,32816],{},"$y$",[675,32818,32819],{},"yescrypt",[675,32821,32822],{},"Modern, sehr sicher (Standard Debian 11+)",[651,32824,32825,32828,32831],{},[675,32826,32827],{},"$7$",[675,32829,32830],{},"scrypt",[675,32832,32833],{},"Modern, sicher",[651,32835,32836,32838,32840],{},[675,32837,5592],{},[675,32839,21199],{},[675,32841,32842],{},"Konto gesperrt (passwd -l), ! vor dem Hash",[651,32844,32845,32848,32850],{},[675,32846,32847],{},"!!",[675,32849,21199],{},[675,32851,32852],{},"Konto gesperrt und nie ein Passwort gesetzt",[651,32854,32855,32857,32859],{},[675,32856,5078],{},[675,32858,21199],{},[675,32860,32861],{},"Kein Login möglich (Systemkonten wie daemon, bin)",[651,32863,32864,32867,32869],{},[675,32865,32866],{},"leer",[675,32868,21199],{},[675,32870,32871],{},"Kein Passwort – Login ohne Passwort möglich (sehr unsicher!)",[54,32873,32875],{"id":32874},"sha-512-hash-struktur","SHA-512-Hash-Struktur",[16,32877,32878,32879,32881,32882,32884,32885,32887,32888,32890,32891,32893],{},"$6$rounds=65536$saltwert$eigentlicher_hash",[5885,32880],{},"\n| | | |",[5885,32883],{},"\n| | | +-- Base64-kodierter Hash (86 Zeichen)",[5885,32886],{},"\n| | +-- Salt (zufälliger Wert, bis 16 Zeichen)",[5885,32889],{},"\n| +-- rounds: Anzahl der Iterationen (Standard: 5000)",[5885,32892],{},"\n+-- Algorithmus: 6 = SHA-512",[54,32895,32897],{"id":32896},"vollständige-beispielzeilen","Vollständige Beispielzeilen",[11,32899,32901],{"id":32900},"normales-konto-mit-sha-512-passwort","Normales Konto mit SHA-512-Passwort",[16,32903,32904],{},"alice:$6$rounds=65536$abc123xyz$HashHashHash...:19845:0:99999:7:::",[16,32906,32907],{},"| | | | | | |",[16,32909,32910],{},"| | | | | | +-- 7 Tage Warnung",[16,32912,32913],{},"| | | | | +-- max 99999 Tage",[16,32915,32916],{},"| | | | +-- min 0 Tage",[16,32918,32919],{},"| | | +-- letzte Änderung",[16,32921,32922],{},"| | +-- Hash",[16,32924,32925],{},"| +-- $6$ = SHA-512",[16,32927,32928],{},"+-- Benutzername",[11,32930,32932],{"id":32931},"gesperrtes-konto","Gesperrtes Konto",[16,32934,32935],{},"bob:!$6$hash...:19845:0:99999:7:::",[16,32937,32938],{},"^-- ! = gesperrt",[11,32940,32942],{"id":32941},"noch-nie-passwort-gesetzt","Noch nie Passwort gesetzt",[16,32944,32945],{},"newuser:!!:19845:0:99999:7:::",[16,32947,32948],{},"^^-- !! = kein Passwort, gesperrt",[11,32950,32952],{"id":32951},"systemkonto","Systemkonto",[16,32954,32955],{},"daemon:*:19845:0:99999:7:::",[16,32957,32958],{},"^-- * = kein Login möglich",[54,32960,32962],{"id":32961},"nützliche-befehle","Nützliche Befehle",[11,32964,32966],{"id":32965},"anzeigen-nur-als-root","Anzeigen (nur als root)",[3392,32968,32970],{"className":3394,"code":32969,"language":3396,"meta":225,"style":225},"sudo cat \u002Fetc\u002Fshadow\n\n",[3398,32971,32972],{"__ignoreMap":225},[2915,32973,32974,32976,32978],{"class":3402,"line":3403},[2915,32975,11814],{"class":3406},[2915,32977,23785],{"class":3414},[2915,32979,27172],{"class":3414},[11,32981,32983],{"id":32982},"einzelnen-benutzer-abfragen","Einzelnen Benutzer abfragen",[16,32985,32986],{},"sudo getent shadow alice",[11,32988,23975],{"id":32989},"passwortstatus-anzeigen",[16,32991,32992],{},"sudo passwd -S alice",[11,32994,32996],{"id":32995},"ausführliche-ablaufinformationen","Ausführliche Ablaufinformationen",[16,32998,32999],{},"sudo chage -l alice",[11,33001,33003],{"id":33002},"feld-3-tage-in-datum-umrechnen","Feld 3 (Tage) in Datum umrechnen",[3392,33005,33007],{"className":3394,"code":33006,"language":3396,"meta":225,"style":225},"date -d \"1970-01-01 + 19845 days\"\n\n# Konten ohne Passwort finden (Sicherheitscheck!)\n\nsudo awk -F: '$2 == \"\" {print $1}' \u002Fetc\u002Fshadow\n\n# Gesperrte Konten finden\n\nsudo awk -F: '$2 ~ \u002F^!\u002F {print $1}' \u002Fetc\u002Fshadow\n\n# Konten mit niemals ablaufendem Passwort\n\nsudo awk -F: '$5 == 99999 {print $1}' \u002Fetc\u002Fshadow\n\n# \u002Fetc\u002Fgroup\n\n",[3398,33008,33009,33018,33022,33027,33031,33045,33049,33054,33058,33071,33075,33080,33084,33097,33101],{"__ignoreMap":225},[2915,33010,33011,33013,33015],{"class":3402,"line":3403},[2915,33012,10041],{"class":3406},[2915,33014,6798],{"class":3410},[2915,33016,33017],{"class":3414}," \"1970-01-01 + 19845 days\"\n",[2915,33019,33020],{"class":3402,"line":1117},[2915,33021,3506],{"emptyLinePlaceholder":3505},[2915,33023,33024],{"class":3402,"line":1125},[2915,33025,33026],{"class":3511},"# Konten ohne Passwort finden (Sicherheitscheck!)\n",[2915,33028,33029],{"class":3402,"line":3515},[2915,33030,3506],{"emptyLinePlaceholder":3505},[2915,33032,33033,33035,33038,33040,33043],{"class":3402,"line":3520},[2915,33034,11814],{"class":3406},[2915,33036,33037],{"class":3414}," awk",[2915,33039,18643],{"class":3410},[2915,33041,33042],{"class":3414}," '$2 == \"\" {print $1}'",[2915,33044,27172],{"class":3414},[2915,33046,33047],{"class":3402,"line":5070},[2915,33048,3506],{"emptyLinePlaceholder":3505},[2915,33050,33051],{"class":3402,"line":5075},[2915,33052,33053],{"class":3511},"# Gesperrte Konten finden\n",[2915,33055,33056],{"class":3402,"line":5093},[2915,33057,3506],{"emptyLinePlaceholder":3505},[2915,33059,33060,33062,33064,33066,33069],{"class":3402,"line":5098},[2915,33061,11814],{"class":3406},[2915,33063,33037],{"class":3414},[2915,33065,18643],{"class":3410},[2915,33067,33068],{"class":3414}," '$2 ~ \u002F^!\u002F {print $1}'",[2915,33070,27172],{"class":3414},[2915,33072,33073],{"class":3402,"line":5207},[2915,33074,3506],{"emptyLinePlaceholder":3505},[2915,33076,33077],{"class":3402,"line":5212},[2915,33078,33079],{"class":3511},"# Konten mit niemals ablaufendem Passwort\n",[2915,33081,33082],{"class":3402,"line":5218},[2915,33083,3506],{"emptyLinePlaceholder":3505},[2915,33085,33086,33088,33090,33092,33095],{"class":3402,"line":5223},[2915,33087,11814],{"class":3406},[2915,33089,33037],{"class":3414},[2915,33091,18643],{"class":3410},[2915,33093,33094],{"class":3414}," '$5 == 99999 {print $1}'",[2915,33096,27172],{"class":3414},[2915,33098,33099],{"class":3402,"line":5229},[2915,33100,3506],{"emptyLinePlaceholder":3505},[2915,33102,33103],{"class":3402,"line":5253},[2915,33104,33105],{"class":3511},"# \u002Fetc\u002Fgroup\n",[16,33107,33108,33110,33111,33114,33115,33117,33118,33121],{},[26,33109,11461],{}," Enthält alle Gruppen des Systems mit ihren GIDs und Mitgliedern. Jeder Benutzer hat eine ",[26,33112,33113],{},"primäre Gruppe"," (in ",[26,33116,17975],{}," gespeichert) sowie beliebig viele ",[26,33119,33120],{},"sekundäre Gruppen"," (hier eingetragen).",[16,33123,33124,4850,33126,33129],{},[26,33125,32613],{},[26,33127,33128],{},"-rw-r--r-- 1 root root"," (von allen lesbar)",[16,33131,33132],{},[26,33133,33134],{},"Format (4 Felder, Trenner: :)",[16,33136,33137],{},"gruppenname:passwort:GID:mitglieder",[54,33139,32631],{"id":33140},"feldübersicht-1",[645,33142,33143,33159],{},[648,33144,33145],{},[651,33146,33147,33151,33155],{},[654,33148,33149],{},[26,33150,32642],{},[654,33152,33153],{},[26,33154,14388],{},[654,33156,33157],{},[26,33158,4550],{},[670,33160,33161,33171,33181,33191],{},[651,33162,33163,33165,33168],{},[675,33164,12976],{},[675,33166,33167],{},"gruppenname",[675,33169,33170],{},"Name der Gruppe",[651,33172,33173,33175,33178],{},[675,33174,12959],{},[675,33176,33177],{},"passwort",[675,33179,33180],{},"x = Passwort in \u002Fetc\u002Fgshadow; leer = kein Passwort",[651,33182,33183,33185,33188],{},[675,33184,13071],{},[675,33186,33187],{},"GID",[675,33189,33190],{},"Gruppen-ID (numerisch). 0 = root, 1-999 = System, 1000+ = normal",[651,33192,33193,33195,33198],{},[675,33194,1633],{},[675,33196,33197],{},"mitglieder",[675,33199,33200],{},"Kommagetrennte Liste der sekundären Mitglieder",[54,33202,33204],{"id":33203},"gid-bereiche-konvention","GID-Bereiche (Konvention)",[645,33206,33207,33219],{},[648,33208,33209],{},[651,33210,33211,33215],{},[654,33212,33213],{},[26,33214,11490],{},[654,33216,33217],{},[26,33218,8817],{},[670,33220,33221,33228,33236,33244],{},[651,33222,33223,33225],{},[675,33224,11501],{},[675,33226,33227],{},"root-Gruppe",[651,33229,33230,33233],{},[675,33231,33232],{},"1 – 99",[675,33234,33235],{},"Statische System-Gruppen",[651,33237,33238,33241],{},[675,33239,33240],{},"100 – 999",[675,33242,33243],{},"Dynamische System-\u002FDienst-Gruppen",[651,33245,33246,33249],{},[675,33247,33248],{},"1000+",[675,33250,33251],{},"Normale Benutzergruppen",[54,33253,33255],{"id":33254},"vollständiges-beispiel","Vollständiges Beispiel",[16,33257,33258],{},"root❌0:",[16,33260,33261],{},"daemon❌1:",[16,33263,33264],{},"adm❌4:syslog,matta",[16,33266,33267],{},"sudo❌27:matta,alice",[16,33269,33270],{},"cdrom❌24:matta",[16,33272,33273],{},"plugdev❌46:matta",[16,33275,33276],{},"docker❌999:matta,alice",[16,33278,33279],{},"entwickler❌1001:alice,bob,charlie",[16,33281,33282],{},"webteam❌1002:bob,diana",[54,33284,33286],{"id":33285},"unterschied-primäre-vs-sekundäre-gruppe","Unterschied: Primäre vs. Sekundäre Gruppe",[11,33288,17975],{"id":33289},"etcpasswd",[16,33291,33292],{},"alice❌1001:1001:Alice:\u002Fhome\u002Falice:\u002Fbin\u002Fbash",[16,33294,33295],{},"^^^^ GID 1001 = primäre Gruppe von alice",[11,33297,33299],{"id":33298},"etcgroup","\u002Fetc\u002Fgroup",[16,33301,33302],{},"entwickler❌1001:alice,bob",[11,33304,33306],{"id":33305},"alice-taucht-hier-als-sekundäres-mitglied-auf","alice taucht hier als sekundäres Mitglied auf",[11,33308,33310],{"id":33309},"würde-alice-diese-gruppe-als-primäre-haben-stünde-sie-nicht-hier","Würde alice diese Gruppe als primäre haben, stünde sie NICHT hier",[54,33312,32962],{"id":33313},"nützliche-befehle-1",[11,33315,33317],{"id":33316},"datei-anzeigen","Datei anzeigen",[3392,33319,33321],{"className":3394,"code":33320,"language":3396,"meta":225,"style":225},"cat \u002Fetc\u002Fgroup\n\n",[3398,33322,33323],{"__ignoreMap":225},[2915,33324,33325,33327],{"class":3402,"line":3403},[2915,33326,8864],{"class":3406},[2915,33328,33329],{"class":3414}," \u002Fetc\u002Fgroup\n",[11,33331,33333],{"id":33332},"alle-gruppen-des-aktuellen-benutzers","Alle Gruppen des aktuellen Benutzers",[16,33335,33336],{},"groups",[11,33338,33340],{"id":33339},"alle-gruppen-eines-bestimmten-benutzers","Alle Gruppen eines bestimmten Benutzers",[16,33342,33343],{},"groups alice",[3392,33345,33347],{"className":3394,"code":33346,"language":3396,"meta":225,"style":225},"id -Gn alice\n\n# Alle GIDs numerisch\n\nid -G alice\n\n",[3398,33348,33349,33357,33361,33366,33370],{"__ignoreMap":225},[2915,33350,33351,33353,33355],{"class":3402,"line":3403},[2915,33352,11456],{"class":3406},[2915,33354,11732],{"class":3410},[2915,33356,24162],{"class":3414},[2915,33358,33359],{"class":3402,"line":1117},[2915,33360,3506],{"emptyLinePlaceholder":3505},[2915,33362,33363],{"class":3402,"line":1125},[2915,33364,33365],{"class":3511},"# Alle GIDs numerisch\n",[2915,33367,33368],{"class":3402,"line":3515},[2915,33369,3506],{"emptyLinePlaceholder":3505},[2915,33371,33372,33374,33377],{"class":3402,"line":3520},[2915,33373,11456],{"class":3406},[2915,33375,33376],{"class":3410}," -G",[2915,33378,24162],{"class":3414},[11,33380,33382],{"id":33381},"gruppeninformationen-abfragen","Gruppeninformationen abfragen",[16,33384,33385],{},"getent group entwickler",[16,33387,33388],{},"getent group 1001",[11,33390,33392],{"id":33391},"benutzer-zu-gruppe-hinzufügen-gilt-ab-nächstem-login","Benutzer zu Gruppe hinzufügen (gilt ab nächstem Login)",[16,33394,33395],{},"sudo usermod -aG entwickler alice",[11,33397,33399],{"id":33398},"wichtig-ohne-a-werden-alle-bisherigen-gruppen-ersetzt","WICHTIG: ohne -a werden alle bisherigen Gruppen ersetzt!",[11,33401,33403],{"id":33402},"benutzer-aus-gruppe-entfernen","Benutzer aus Gruppe entfernen",[16,33405,33406],{},"sudo gpasswd -d alice entwickler",[11,33408,33410],{"id":33409},"neue-gruppe-erstellen","Neue Gruppe erstellen",[16,33412,33413],{},"sudo groupadd projektteam",[11,33415,33417],{"id":33416},"neue-gruppe-mit-spezifischer-gid","Neue Gruppe mit spezifischer GID",[16,33419,33420],{},"sudo groupadd -g 2000 ops",[11,33422,33424],{"id":33423},"gruppe-umbenennen","Gruppe umbenennen",[16,33426,33427],{},"sudo groupmod -n neuername altername",[11,33429,33431],{"id":33430},"gruppe-löschen","Gruppe löschen",[16,33433,33434],{},"sudo groupdel altername",[11,33436,33438],{"id":33437},"alle-mitglieder-der-sudo-gruppe","Alle Mitglieder der sudo-Gruppe",[16,33440,33441],{},"getent group sudo | cut -d: -f4",[54,33443,11749],{"id":33444},"ausgabe-21",[11,33446,33385],{"id":33447},"getent-group-entwickler",[16,33449,33279],{},[11,33451,33453],{"id":33452},"sekundäre-mitglieder-kommagetrennt","| | +-- sekundäre Mitglieder (kommagetrennt)",[11,33455,33457],{"id":33456},"gid","| +-- GID",[11,33459,33461],{"id":33460},"x-passwort-in-etcgshadow","+-- x = Passwort in \u002Fetc\u002Fgshadow",[11,33463,33343],{"id":33464},"groups-alice",[16,33466,33467],{},"alice : alice adm sudo entwickler docker",[11,33469,33471],{"id":33470},"primäre-gruppe","^^^^^ primäre Gruppe",[11,33473,33475],{"id":33474},"sekundäre-gruppen","^^^^^^^^^^^^^^^^^^^^^^^^^ sekundäre Gruppen",[11,33477,33479],{"id":33478},"etcgshadow","\u002Fetc\u002Fgshadow",[16,33481,33482,33484,33485,33488,33489,33491,33492,33494],{},[26,33483,11461],{}," Enthält verschlüsselte ",[26,33486,33487],{},"Gruppenpasswörter"," sowie Informationen zu Gruppenadministratoren. Nur ",[26,33490,12437],{}," und die Gruppe ",[26,33493,32607],{}," können diese Datei lesen.",[16,33496,33497,4850,33499],{},[26,33498,32613],{},[26,33500,33501],{},"-rw-r----- 1 root shadow",[16,33503,33504],{},[26,33505,33134],{},[16,33507,33508],{},"gruppenname:passwort-hash:administratoren:mitglieder",[54,33510,32631],{"id":33511},"feldübersicht-2",[645,33513,33514,33530],{},[648,33515,33516],{},[651,33517,33518,33522,33526],{},[654,33519,33520],{},[26,33521,32642],{},[654,33523,33524],{},[26,33525,14388],{},[654,33527,33528],{},[26,33529,4550],{},[670,33531,33532,33541,33550,33560],{},[651,33533,33534,33536,33538],{},[675,33535,12976],{},[675,33537,33167],{},[675,33539,33540],{},"Name der Gruppe (muss mit \u002Fetc\u002Fgroup übereinstimmen)",[651,33542,33543,33545,33547],{},[675,33544,12959],{},[675,33546,32669],{},[675,33548,33549],{},"Gehashtes Gruppenpasswort. ! \u002F !! = kein Passwort \u002F gesperrt; leer = kein Passwort",[651,33551,33552,33554,33557],{},[675,33553,13071],{},[675,33555,33556],{},"administratoren",[675,33558,33559],{},"Kommagetrennte Liste von Gruppenadmins – können Mitglieder hinzufügen\u002Fentfernen ohne root zu sein",[651,33561,33562,33564,33566],{},[675,33563,1633],{},[675,33565,33197],{},[675,33567,33568],{},"Kommagetrennte Liste der Mitglieder (spiegelt \u002Fetc\u002Fgroup Feld 4)",[54,33570,33572],{"id":33571},"gruppenpasswort-wofür","Gruppenpasswort – Wofür?",[16,33574,33575,33576,33579,33580,33583],{},"Gruppenpasswörter erlauben es einem Benutzer, der ",[26,33577,33578],{},"nicht Mitglied"," einer Gruppe ist, mittels ",[26,33581,33582],{},"newgrp \u003Cgruppe>"," temporär die Gruppe zu wechseln – wenn er das Gruppenpasswort kennt.",[11,33585,33587],{"id":33586},"gruppenpasswort-setzen","Gruppenpasswort setzen",[16,33589,33590],{},"sudo gpasswd entwickler",[11,33592,33594],{"id":33593},"nicht-mitglied-kann-beitreten-wenn-er-das-passwort-kennt","Nicht-Mitglied kann beitreten wenn er das Passwort kennt",[16,33596,33597],{},"newgrp entwickler",[11,33599,33600],{"id":33177},"Passwort:",[54,33602,33604],{"id":33603},"vollständiger-beispielinhalt","Vollständiger Beispielinhalt",[16,33606,33607],{},"root:::",[16,33609,33610],{},"daemon:::",[16,33612,33613],{},"sudo:!:root:matta,alice",[16,33615,33616],{},"entwickler:$6$AbcDef...:alice:alice,bob,charlie",[11,33618,33620],{"id":33619},"normale-mitglieder","| | +-- normale Mitglieder",[11,33622,33624],{"id":33623},"alice-ist-gruppenadmin","| +-- alice ist Gruppenadmin",[11,33626,33628],{"id":33627},"gehashtes-gruppenpasswort","+-- gehashtes Gruppenpasswort",[16,33630,33631],{},"webteam:!!::bob,diana",[11,33633,33635],{"id":33634},"kein-passwort-gesperrt","^^-- kein Passwort + gesperrt",[54,33637,32962],{"id":33638},"nützliche-befehle-2",[11,33640,32966],{"id":33641},"anzeigen-nur-als-root-1",[3392,33643,33645],{"className":3394,"code":33644,"language":3396,"meta":225,"style":225},"sudo cat \u002Fetc\u002Fgshadow\n\n",[3398,33646,33647],{"__ignoreMap":225},[2915,33648,33649,33651,33653],{"class":3402,"line":3403},[2915,33650,11814],{"class":3406},[2915,33652,23785],{"class":3414},[2915,33654,33655],{"class":3414}," \u002Fetc\u002Fgshadow\n",[11,33657,33659],{"id":33658},"einzelnen-eintrag-abfragen","Einzelnen Eintrag abfragen",[16,33661,33662],{},"sudo getent gshadow entwickler",[11,33664,33587],{"id":33665},"gruppenpasswort-setzen-1",[16,33667,33590],{},[11,33669,33671],{"id":33670},"gruppenpasswort-entfernen-jeder-kann-beitreten","Gruppenpasswort entfernen (jeder kann beitreten)",[16,33673,33674],{},"sudo gpasswd -r entwickler",[11,33676,33678],{"id":33677},"gruppenadmin-hinzufügen","Gruppenadmin hinzufügen",[16,33680,33681],{},"sudo gpasswd -A alice entwickler",[11,33683,33685],{"id":33684},"mitglied-hinzufügen-als-gruppenadmin-oder-root","Mitglied hinzufügen (als Gruppenadmin oder root)",[16,33687,33688],{},"sudo gpasswd -a bob entwickler",[11,33690,33692],{"id":33691},"mitglied-entfernen","Mitglied entfernen",[16,33694,33695],{},"sudo gpasswd -d charlie entwickler",[11,33697,33699],{"id":33698},"mitglieder-komplett-ersetzen","Mitglieder komplett ersetzen",[16,33701,33702],{},"sudo gpasswd -M alice,bob entwickler",[11,33704,33706],{"id":33705},"als-gruppenadmin-die-gruppe-temporär-wechseln","Als Gruppenadmin die Gruppe temporär wechseln",[16,33708,33597],{},[54,33710,11749],{"id":33711},"ausgabe-22",[11,33713,33662],{"id":33714},"sudo-getent-gshadow-entwickler",[16,33716,33616],{},[11,33718,33719],{"id":33197},"| | +-- Mitglieder",[11,33721,33723],{"id":33722},"admin-alice","| +-- Admin: alice",[11,33725,33727],{"id":33726},"hash-des-gruppenpassworts","+-- Hash des Gruppenpassworts",[11,33729,33731],{"id":33730},"sudo-gpasswd-a-diana-entwickler","sudo gpasswd -a diana entwickler",[16,33733,33734],{},"Benutzer diana wurde zur Gruppe entwickler hinzugefügt.",[11,33736,33738],{"id":33737},"schnellreferenz-berechtigungen","Schnellreferenz: Berechtigungen",[54,33740,33742],{"id":33741},"vollständige-oktal-tabelle","Vollständige Oktal-Tabelle",[645,33744,33745,33761],{},[648,33746,33747],{},[651,33748,33749,33753,33757],{},[654,33750,33751],{},[26,33752,12920],{},[654,33754,33755],{},[26,33756,13006],{},[654,33758,33759],{},[26,33760,4550],{},[670,33762,33763,33771,33780,33791,33800,33809,33818,33826,33835,33846,33857,33868,33879,33890,33901],{},[651,33764,33765,33767,33769],{},[675,33766,13372],{},[675,33768,13375],{},[675,33770,13378],{},[651,33772,33773,33775,33777],{},[675,33774,13328],{},[675,33776,13331],{},[675,33778,33779],{},"Standard für Verzeichnisse und Skripte",[651,33781,33782,33785,33788],{},[675,33783,33784],{},"750",[675,33786,33787],{},"rwxr-x---",[675,33789,33790],{},"Gruppe kann lesen, Andere nichts",[651,33792,33793,33795,33797],{},[675,33794,13350],{},[675,33796,13353],{},[675,33798,33799],{},"Nur Eigentümer darf alles",[651,33801,33802,33804,33806],{},[675,33803,13361],{},[675,33805,13364],{},[675,33807,33808],{},"Kollaborativer Dateizugriff",[651,33810,33811,33813,33815],{},[675,33812,13317],{},[675,33814,13320],{},[675,33816,33817],{},"Standard für Dateien",[651,33819,33820,33822,33824],{},[675,33821,13383],{},[675,33823,13386],{},[675,33825,13389],{},[651,33827,33828,33830,33832],{},[675,33829,13339],{},[675,33831,13342],{},[675,33833,33834],{},"Private Schlüssel (z.B. ~\u002F.ssh\u002Fid_rsa)",[651,33836,33837,33840,33843],{},[675,33838,33839],{},"444",[675,33841,33842],{},"r--r--r--",[675,33844,33845],{},"Nur-Lesen für alle",[651,33847,33848,33851,33854],{},[675,33849,33850],{},"400",[675,33852,33853],{},"r--------",[675,33855,33856],{},"Nur Eigentümer kann lesen",[651,33858,33859,33862,33865],{},[675,33860,33861],{},"4755",[675,33863,33864],{},"rwsr-xr-x",[675,33866,33867],{},"SUID gesetzt",[651,33869,33870,33873,33876],{},[675,33871,33872],{},"4750",[675,33874,33875],{},"rwsr-x---",[675,33877,33878],{},"SUID + Gruppe kann ausführen",[651,33880,33881,33884,33887],{},[675,33882,33883],{},"2775",[675,33885,33886],{},"rwxrwsr-x",[675,33888,33889],{},"SGID auf Verzeichnis (Gruppe vererbt sich)",[651,33891,33892,33895,33898],{},[675,33893,33894],{},"1777",[675,33896,33897],{},"rwxrwxrwt",[675,33899,33900],{},"Sticky Bit (wie \u002Ftmp)",[651,33902,33903,33906,33909],{},[675,33904,33905],{},"1755",[675,33907,33908],{},"rwxr-xr-t",[675,33910,33911],{},"Sticky Bit + normaler Zugriff",[54,33913,33915],{"id":33914},"rechte-struktur","Rechte-Struktur",[16,33917,33918],{},"Typ Eigentümer Gruppe Andere",[20,33920,33921],{},[23,33922,33923,33924,33926],{},"r w x r w x r w x",[5885,33925],{},"\n4 2 1 4 2 1 4 2 1",[228,33928,33930],{"id":33929},"dateitypen-in-ls-l","Dateitypen in ls -l",[645,33932,33933,33945],{},[648,33934,33935],{},[651,33936,33937,33941],{},[654,33938,33939],{},[26,33940,12915],{},[654,33942,33943],{},[26,33944,5473],{},[670,33946,33947,33953,33960,33966,33973,33980,33987],{},[651,33948,33949,33951],{},[675,33950,3523],{},[675,33952,11208],{},[651,33954,33955,33957],{},[675,33956,11221],{},[675,33958,33959],{},"Verzeichnis (directory)",[651,33961,33962,33964],{},[675,33963,11263],{},[675,33965,21479],{},[651,33967,33968,33970],{},[675,33969,11242],{},[675,33971,33972],{},"Zeichengerät (character device)",[651,33974,33975,33977],{},[675,33976,5053],{},[675,33978,33979],{},"Blockgerät (block device)",[651,33981,33982,33984],{},[675,33983,16],{},[675,33985,33986],{},"Named Pipe (FIFO)",[651,33988,33989,33991],{},[675,33990,11274],{},[675,33992,33993],{},"Unix-Socket",[54,33995,33997],{"id":33996},"spezialbit-anzeige-in-ls-l","Spezialbit-Anzeige in ls -l",[645,33999,34000,34022],{},[648,34001,34002],{},[651,34003,34004,34008,34013,34018],{},[654,34005,34006],{},[26,34007,2816],{},[654,34009,34010],{},[26,34011,34012],{},"Gesetzt + x",[654,34014,34015],{},[26,34016,34017],{},"Gesetzt, kein x",[654,34019,34020],{},[26,34021,14383],{},[670,34023,34024,34035,34046],{},[651,34025,34026,34029,34031,34033],{},[675,34027,34028],{},"Eigentümer-x",[675,34030,11274],{},[675,34032,13753],{},[675,34034,13690],{},[651,34036,34037,34040,34042,34044],{},[675,34038,34039],{},"Gruppen-x",[675,34041,11274],{},[675,34043,13753],{},[675,34045,13693],{},[651,34047,34048,34051,34053,34055],{},[675,34049,34050],{},"Andere-x",[675,34052,13230],{},[675,34054,14206],{},[675,34056,14449],{},[54,34058,34060],{"id":34059},"wichtige-systemdateien-und-ihre-rechte","Wichtige Systemdateien und ihre Rechte",[645,34062,34063,34086],{},[648,34064,34065],{},[651,34066,34067,34072,34076,34081],{},[654,34068,34069],{},[26,34070,34071],{},"Datei",[654,34073,34074],{},[26,34075,8325],{},[654,34077,34078],{},[26,34079,34080],{},"Eigentümer",[654,34082,34083],{},[26,34084,34085],{},"Warum",[670,34087,34088,34100,34112,34122,34132,34144,34157,34168,34179,34189],{},[651,34089,34090,34092,34094,34097],{},[675,34091,17975],{},[675,34093,13317],{},[675,34095,34096],{},"root:root",[675,34098,34099],{},"Jeder kann lesen",[651,34101,34102,34104,34106,34109],{},[675,34103,13729],{},[675,34105,13383],{},[675,34107,34108],{},"root:shadow",[675,34110,34111],{},"Nur root\u002Fshadow",[651,34113,34114,34116,34118,34120],{},[675,34115,33299],{},[675,34117,13317],{},[675,34119,34096],{},[675,34121,34099],{},[651,34123,34124,34126,34128,34130],{},[675,34125,33479],{},[675,34127,13383],{},[675,34129,34108],{},[675,34131,34111],{},[651,34133,34134,34137,34140,34142],{},[675,34135,34136],{},"\u002Fetc\u002Fsudoers",[675,34138,34139],{},"440",[675,34141,34096],{},[675,34143,13066],{},[651,34145,34146,34149,34151,34154],{},[675,34147,34148],{},"~\u002F.ssh\u002F",[675,34150,13350],{},[675,34152,34153],{},"user:user",[675,34155,34156],{},"Nur Eigentümer",[651,34158,34159,34162,34164,34166],{},[675,34160,34161],{},"~\u002F.ssh\u002Fid_rsa",[675,34163,13339],{},[675,34165,34153],{},[675,34167,34156],{},[651,34169,34170,34173,34175,34177],{},[675,34171,34172],{},"~\u002F.ssh\u002Fauthorized_keys",[675,34174,13339],{},[675,34176,34153],{},[675,34178,34156],{},[651,34180,34181,34183,34185,34187],{},[675,34182,14185],{},[675,34184,33894],{},[675,34186,34096],{},[675,34188,13697],{},[651,34190,34191,34193,34195,34197],{},[675,34192,13722],{},[675,34194,33861],{},[675,34196,34096],{},[675,34198,13690],{},[54,34200,34202],{"id":34201},"umask-berechnung","umask-Berechnung",[54,34204,34206,34207,34209],{"id":34205},"neue-datei-666minus-umask-022","Neue Datei: 666",[5885,34208],{},"\nminus umask: -022",[16,34211,34212],{},"Ergebnis: 644 (rw-r--r--)",[54,34214,34216,34217,34209],{"id":34215},"neues-verzeichnis-777minus-umask-022","Neues Verzeichnis: 777",[5885,34218],{},[16,34220,34221],{},"Ergebnis: 755 (rwxr-xr-x)",[4468,34223,34224],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":225,"searchDepth":1117,"depth":1117,"links":34226},[34227,34228,34229,34230,34231,34232,34233,34234,34235,34236,34237,34238,34239,34240,34241,34242,34243,34244,34245,34246,34247,34254,34255,34256,34257,34258,34259,34260,34261,34262,34263,34264,34265,34266,34267,34275,34276,34277,34278,34279,34280,34281,34282,34283,34284,34285,34286,34287,34288,34289,34290,34291,34292,34293,34294,34295,34296,34297,34298,34299,34300,34301,34302,34303,34304,34305,34306,34307,34308,34309,34310,34311,34312,34313,34314,34315,34316,34317,34318,34319,34320,34321,34322,34323,34324,34325,34326,34327,34332,34333,34334,34335,34336,34337,34338,34339,34340,34341,34342,34343,34344,34345,34346,34347,34348,34349,34350,34351,34352,34353,34354,34355,34356,34357,34358,34359,34360,34361,34362,34363,34364,34367,34368,34369,34370,34372],{"id":11478,"depth":1117,"text":11479},{"id":11531,"depth":1117,"text":11532},{"id":8675,"depth":1117,"text":8676},{"id":11748,"depth":1117,"text":11749},{"id":11963,"depth":1117,"text":11964},{"id":11999,"depth":1117,"text":11532},{"id":12034,"depth":1117,"text":12035},{"id":12120,"depth":1117,"text":8676},{"id":12274,"depth":1117,"text":11749},{"id":12457,"depth":1117,"text":12458},{"id":12522,"depth":1117,"text":11532},{"id":12610,"depth":1117,"text":8676},{"id":12823,"depth":1117,"text":11749},{"id":12898,"depth":1117,"text":12899},{"id":12985,"depth":1117,"text":12986},{"id":13122,"depth":1117,"text":13123},{"id":13236,"depth":1117,"text":11532},{"id":13291,"depth":1117,"text":13292},{"id":13392,"depth":1117,"text":8676},{"id":13647,"depth":1117,"text":11749},{"id":13678,"depth":1117,"text":13679,"children":34248},[34249,34250,34251,34252,34253],{"id":13701,"depth":1125,"text":13702},{"id":13933,"depth":1125,"text":13934},{"id":14161,"depth":1125,"text":14162},{"id":14371,"depth":1125,"text":14372},{"id":14465,"depth":1125,"text":14466},{"id":14602,"depth":1117,"text":11532},{"id":14694,"depth":1117,"text":8676},{"id":14952,"depth":1117,"text":11749},{"id":15112,"depth":1117,"text":11532},{"id":15178,"depth":1117,"text":8676},{"id":15415,"depth":1117,"text":11749},{"id":15500,"depth":1117,"text":11532},{"id":15593,"depth":1117,"text":8676},{"id":15863,"depth":1117,"text":11749},{"id":15969,"depth":1117,"text":11532},{"id":16228,"depth":1117,"text":16229},{"id":16346,"depth":1117,"text":8676},{"id":16751,"depth":1117,"text":11749},{"id":7701,"depth":1117,"text":7704,"children":34268},[34269,34270,34271,34272,34273,34274],{"id":16858,"depth":1125,"text":16859},{"id":16946,"depth":1125,"text":16947},{"id":17057,"depth":1125,"text":17058},{"id":17149,"depth":1125,"text":17150},{"id":8497,"depth":1125,"text":8498},{"id":17275,"depth":1125,"text":5580},{"id":17326,"depth":1117,"text":8676},{"id":17924,"depth":1117,"text":11749},{"id":18042,"depth":1117,"text":18043},{"id":18139,"depth":1117,"text":11532},{"id":18252,"depth":1117,"text":18253},{"id":18386,"depth":1117,"text":18387},{"id":18473,"depth":1117,"text":18474},{"id":18580,"depth":1117,"text":18581},{"id":18584,"depth":1117,"text":8676},{"id":19001,"depth":1117,"text":11749},{"id":19065,"depth":1117,"text":19066},{"id":19188,"depth":1117,"text":19189},{"id":19399,"depth":1117,"text":19400},{"id":19461,"depth":1117,"text":19462},{"id":19551,"depth":1117,"text":19552},{"id":19675,"depth":1117,"text":8676},{"id":21037,"depth":1117,"text":11749},{"id":21120,"depth":1117,"text":11532},{"id":21322,"depth":1117,"text":21323},{"id":21439,"depth":1117,"text":21440},{"id":21522,"depth":1117,"text":8676},{"id":21852,"depth":1117,"text":11749},{"id":21926,"depth":1117,"text":11532},{"id":22016,"depth":1117,"text":8676},{"id":22213,"depth":1117,"text":11749},{"id":22259,"depth":1117,"text":11532},{"id":22497,"depth":1117,"text":8676},{"id":22842,"depth":1117,"text":11749},{"id":22948,"depth":1117,"text":11532},{"id":23112,"depth":1117,"text":8676},{"id":23464,"depth":1117,"text":11749},{"id":23582,"depth":1117,"text":11532},{"id":23623,"depth":1117,"text":8676},{"id":23791,"depth":1117,"text":11749},{"id":23861,"depth":1117,"text":11532},{"id":24131,"depth":1117,"text":8676},{"id":24349,"depth":1117,"text":11749},{"id":24535,"depth":1117,"text":24536},{"id":24724,"depth":1117,"text":24725},{"id":24794,"depth":1117,"text":24795},{"id":24983,"depth":1117,"text":8676},{"id":25383,"depth":1117,"text":11749},{"id":25501,"depth":1117,"text":25502},{"id":25741,"depth":1117,"text":25742},{"id":25768,"depth":1117,"text":25769},{"id":26227,"depth":1117,"text":26228},{"id":26290,"depth":1117,"text":8676},{"id":26815,"depth":1117,"text":11749},{"id":26896,"depth":1117,"text":26897},{"id":26960,"depth":1117,"text":8676},{"id":27747,"depth":1117,"text":11749},{"id":27812,"depth":1117,"text":27813},{"id":27888,"depth":1117,"text":27889,"children":34328},[34329,34330,34331],{"id":27892,"depth":1125,"text":27893},{"id":28008,"depth":1125,"text":27843},{"id":28153,"depth":1125,"text":28154},{"id":28253,"depth":1117,"text":28254},{"id":28446,"depth":1117,"text":28447},{"id":29006,"depth":1117,"text":8676},{"id":29351,"depth":1117,"text":29352},{"id":29564,"depth":1117,"text":29565},{"id":29687,"depth":1117,"text":29688},{"id":29745,"depth":1117,"text":29746},{"id":29813,"depth":1117,"text":29814},{"id":29876,"depth":1117,"text":29877},{"id":29950,"depth":1117,"text":29951},{"id":31519,"depth":1117,"text":31520},{"id":31572,"depth":1117,"text":31573},{"id":31616,"depth":1117,"text":31617},{"id":31763,"depth":1117,"text":31764},{"id":32567,"depth":1117,"text":11749},{"id":32630,"depth":1117,"text":32631},{"id":32745,"depth":1117,"text":32746},{"id":32874,"depth":1117,"text":32875},{"id":32896,"depth":1117,"text":32897},{"id":32961,"depth":1117,"text":32962},{"id":33140,"depth":1117,"text":32631},{"id":33203,"depth":1117,"text":33204},{"id":33254,"depth":1117,"text":33255},{"id":33285,"depth":1117,"text":33286},{"id":33313,"depth":1117,"text":32962},{"id":33444,"depth":1117,"text":11749},{"id":33511,"depth":1117,"text":32631},{"id":33571,"depth":1117,"text":33572},{"id":33603,"depth":1117,"text":33604},{"id":33638,"depth":1117,"text":32962},{"id":33711,"depth":1117,"text":11749},{"id":33741,"depth":1117,"text":33742},{"id":33914,"depth":1117,"text":33915,"children":34365},[34366],{"id":33929,"depth":1125,"text":33930},{"id":33996,"depth":1117,"text":33997},{"id":34059,"depth":1117,"text":34060},{"id":34201,"depth":1117,"text":34202},{"id":34205,"depth":1117,"text":34371},"Neue Datei: 666\nminus umask: -022",{"id":34215,"depth":1117,"text":34373},"Neues Verzeichnis: 777\nminus umask: -022","AP","Beschreibung: Gibt die UID (User ID), die primäre GID (Group ID) sowie alle Gruppen des aktuellen oder eines angegebenen Benutzers aus. Besonders nützlich zur schnellen Überprüfung von Rechten im System.",{},{"title":11451},"\u002Ffaecher\u002Fbsa\u002Fap-cs","\u002Fdownloads\u002FBSA\u002FBSA_CS_AP.pdf","Abschlussprüfung",{"title":11451,"description":34375},"faecher\u002Fbsa\u002Fap-cs","rFDzXMIoGjN86_jOnsHvVNZUbvuF2nIkZ3hidFDvVmY",{"id":34385,"title":34386,"body":34387,"class":34374,"description":225,"extension":1155,"meta":60529,"navigation":60530,"path":60531,"pdfDownload":60532,"scope":34374,"scopeName":34380,"seo":60533,"stem":60534,"subject":1165,"subjectName":1166,"type":1167,"typeName":1168,"year":34380,"__hash__":60535},"faecher\u002Ffaecher\u002Fbsa\u002Fap-zsmf.md","Zusammenfassung – Abschlussprüfung",{"type":8,"value":34388,"toc":60266},[34389,34391,34563,34567,34571,34705,34709,34778,34782,34901,34905,35015,35019,35121,35125,35184,35188,35192,35232,35242,35259,35264,35267,35278,35283,35418,35422,35426,35519,35524,35558,35564,35566,35570,35577,35579,35582,35584,35586,35588,35591,35593,35595,35597,35601,35668,35673,35676,35680,35682,35853,35857,35860,35865,35876,35878,35880,35886,35891,35895,35900,35902,35956,35958,35962,36445,36448,36606,36610,36614,36723,36727,36757,36761,36777,36781,36803,36805,36809,36812,36816,36863,36867,36870,36874,36901,36905,36908,36912,36944,36948,36952,36978,36982,36985,36988,36991,36994,36997,37001,37048,37052,37056,37059,37062,37066,37069,37071,37075,37119,37122,37126,37129,37132,37136,37181,37184,37188,37191,37193,37197,37241,37244,37248,37251,37254,37257,37260,37309,37313,37317,37335,37338,37511,37513,37517,37570,37572,37576,37626,37630,37642,37644,37711,37715,37790,37792,37796,37877,37881,37883,37901,37905,37940,37942,38047,38049,38194,38198,38297,38301,38404,38406,38410,39087,39091,39095,39139,39143,39146,39220,39224,39238,39242,39366,39370,39438,39442,39445,39448,39451,39454,39504,39508,39512,39515,39518,39521,39523,39526,39529,39532,39535,39538,39541,39544,39547,39550,39553,39555,39559,40265,40269,40365,40369,40427,40438,40442,40446,40498,40502,40506,40510,40518,40522,40525,40533,40537,40540,40544,40549,40553,40622,40626,40745,40749,40753,40771,40773,40825,40829,40833,40914,40918,40981,40985,41050,41054,41104,41108,41171,41175,41211,41243,41247,41266,41299,41303,41328,41361,41364,41396,41400,41407,41431,41435,41497,41501,41578,41582,41659,41707,41711,41714,41726,41730,41816,41820,41903,41907,41911,42025,42029,42042,42046,42049,42114,42151,42155,42162,42168,42171,42188,42191,42194,42197,42211,42214,42218,42323,42327,42367,42371,42417,42421,42424,42428,42432,42530,42533,42537,42604,42608,42756,42760,42813,42817,42821,42845,42849,42922,42926,43036,43040,43104,43108,43181,43238,43242,43299,43303,43306,43330,43334,43338,43347,43349,43365,43369,43484,43488,43492,43612,43616,43688,43692,43696,43704,43708,43713,43781,43786,44047,44052,44070,44074,44120,44124,44127,44130,44133,44136,44139,44142,44153,44211,44215,44233,44253,44257,44316,44320,44325,44328,44362,44373,44377,44383,44404,44428,44436,44449,44458,44462,44550,44552,44556,44577,44581,44584,44588,44591,44595,44598,44602,44605,44609,44612,44616,44619,44623,44626,44630,44633,44637,44640,44644,44647,44651,44654,44658,44661,44665,44668,44672,44675,44679,44694,44697,44701,44720,44765,44769,44772,44775,44778,44781,44784,44787,44791,44795,44816,44820,44841,44843,44846,44856,44860,44865,44869,44901,44907,44909,45310,45312,45347,45350,45352,45356,45788,45792,45796,45799,45803,45807,45811,45926,45930,45999,46003,46375,46379,46384,46388,46458,46462,46492,46496,46499,46503,46532,46534,46596,46600,46603,46900,46904,46967,46970,46973,46977,47025,47028,47031,47034,47037,47040,47042,47096,47098,47100,47104,47179,47182,47227,47231,47250,47252,47254,47257,47274,47276,47279,47283,47286,47291,47450,47455,47498,47501,47506,47613,47618,47709,47712,47717,47782,47789,47832,47837,47851,47855,47858,47863,47893,47896,47927,47929,47931,47933,47936,47939,47944,47974,47976,47979,47982,48028,48030,48032,48035,48040,48092,48094,48096,48098,48100,48103,48108,48172,48174,48176,48179,48219,48221,48223,48225,48227,48230,48234,48237,48304,48306,48308,48310,48312,48315,48360,48364,48403,48405,48407,48411,48482,48484,48486,48488,48490,48493,48499,48505,48526,48529,48579,48581,48584,48587,48590,48593,48638,48640,48643,48646,48648,48650,48656,48660,48683,48686,48690,48696,48700,48702,48746,48749,48751,48827,48829,48833,48835,48837,48968,48972,48974,48976,49035,49039,49041,49043,49108,49111,49133,49137,49142,49147,49152,49155,49263,49267,49270,49272,49376,49380,49384,49386,49400,49410,49418,49420,49424,49428,49430,49442,49444,49454,49456,49470,49474,49484,49492,49500,49508,49516,49524,49532,49540,49548,49556,49564,49572,49580,49588,49596,49604,49612,49624,49636,49648,49656,49664,49676,49688,49700,49712,49724,49736,49748,49760,49768,49776,49784,49786,49790,49792,49822,49826,49828,49872,49876,49878,49920,49922,49930,49934,49952,49956,49961,49966,49970,50239,50243,50247,50312,50316,50396,50400,50585,50589,50593,50691,50695,50715,50719,50775,50778,50782,50834,50837,50841,50933,50937,50940,51211,51215,51291,51294,51416,51420,51524,51528,51717,51721,51813,51817,51905,51909,51923,51927,51936,51940,51943,51980,51984,51986,52146,52148,52222,52224,52273,52275,52318,52320,52360,52362,52411,52415,53474,53476,53518,53520,53522,53552,53555,53609,53612,53616,54048,54052,54056,54059,54063,54069,54072,54078,54081,54098,54104,54107,54110,54128,54134,54137,54199,54203,54205,54210,54216,54218,54229,54234,54237,54252,54261,54329,54462,54466,54468,54472,54481,54483,54494,54499,54505,54526,54529,54582,54594,54603,54612,54615,54619,54623,54649,54651,54742,54746,54748,54753,54762,54767,54773,54778,54878,54892,54895,54999,55003,55005,55009,55020,55028,55031,55041,55047,55050,55056,55093,55106,55109,55112,55204,55208,55210,55214,55222,55227,55230,55234,55375,55379,55381,55385,55393,55398,55401,55405,55493,55499,55529,55532,55575,55579,55583,55600,55604,55607,55610,55612,55615,55621,55650,55680,55701,55713,55731,55749,55752,55755,55781,55802,55805,55807,55809,55818,55845,55854,55882,55894,55928,55943,55966,55975,55981,56009,56030,56063,56069,56075,56095,56098,56110,56134,56146,56166,56172,56175,56177,56179,56194,56215,56236,56242,56261,56264,56283,56289,56304,56307,56309,56311,56317,56352,56364,56405,56432,56462,56482,56488,56491,56494,56499,56522,56540,56567,56597,56600,56602,56604,56613,56627,56708,56729,56756,56780,56789,56810,56828,56831,56837,56864,56894,56898,56901,56904,56913,56918,56930,56933,56936,56942,56951,56954,56957,56978,56987,56990,56996,56999,57014,57026,57054,57060,57066,57069,57099,57105,57146,57152,57197,57200,57203,57209,57221,57224,57244,57250,57266,57269,57272,57275,57354,57357,57360,57405,57407,57425,57428,57431,57454,57460,57490,57493,57496,57499,57505,57511,57514,57526,57529,57532,57541,57547,57556,57559,57565,57569,57572,57575,57578,57607,57619,57622,57627,57636,57641,57653,57656,57661,57673,57676,57681,57693,57696,57699,57702,57707,57716,57732,57735,57740,57802,57807,57841,57846,57858,57861,57869,57881,57886,57892,57895,57898,57903,57906,57909,57912,57915,57918,57921,58007,58010,58013,58016,58019,58024,58027,58039,58041,58050,58053,58056,58059,58121,58126,58129,58132,58135,58138,58140,58279,58284,58352,58355,58359,58362,58365,58368,58373,58379,58393,58398,58401,58413,58417,58420,58432,58437,58440,58452,58457,58460,58477,58480,58483,58486,58489,58492,58497,58500,58518,58523,58526,58541,58546,58549,58561,58566,58569,58581,58586,58589,58601,58604,58607,58612,58615,58618,58629,58632,58635,58640,58643,58647,58650,58653,58659,58662,58695,58731,58758,58797,58861,58864,58866,58869,58875,58887,58906,58914,58940,58971,58988,59006,59025,59039,59048,59072,59074,59077,59083,59089,59194,59211,59250,59341,59350,59352,59355,59361,59391,59429,59434,59501,59513,59547,59550,59628,59634,59636,59640,59643,59646,59649,59778,59782,59785,59788,59791,59877,59914,59943,59959,59983,59985,59988,60021,60023,60027,60030,60033,60036,60164,60166,60169,60186,60207,60263],[11,34390,4530],{"id":4529},[645,34392,34393,34409],{},[648,34394,34395],{},[651,34396,34397,34401,34405],{},[654,34398,34399],{},[26,34400,1198],{},[654,34402,34403],{},[26,34404,4545],{},[654,34406,34407],{},[26,34408,4550],{},[670,34410,34411,34419,34427,34435,34443,34451,34459,34467,34475,34483,34491,34499,34507,34515,34523,34531,34539,34547,34555],{},[651,34412,34413,34415,34417],{},[675,34414,4557],{},[675,34416,4560],{},[675,34418,4563],{},[651,34420,34421,34423,34425],{},[675,34422,4568],{},[675,34424,4571],{},[675,34426,4574],{},[651,34428,34429,34431,34433],{},[675,34430,4579],{},[675,34432,4582],{},[675,34434,4585],{},[651,34436,34437,34439,34441],{},[675,34438,4590],{},[675,34440,4593],{},[675,34442,4596],{},[651,34444,34445,34447,34449],{},[675,34446,4601],{},[675,34448,4604],{},[675,34450,4607],{},[651,34452,34453,34455,34457],{},[675,34454,4612],{},[675,34456,4615],{},[675,34458,4618],{},[651,34460,34461,34463,34465],{},[675,34462,4623],{},[675,34464,4626],{},[675,34466,4629],{},[651,34468,34469,34471,34473],{},[675,34470,4634],{},[675,34472,4637],{},[675,34474,4640],{},[651,34476,34477,34479,34481],{},[675,34478,4645],{},[675,34480,4648],{},[675,34482,4651],{},[651,34484,34485,34487,34489],{},[675,34486,4656],{},[675,34488,4659],{},[675,34490,4662],{},[651,34492,34493,34495,34497],{},[675,34494,4667],{},[675,34496,4670],{},[675,34498,4673],{},[651,34500,34501,34503,34505],{},[675,34502,4678],{},[675,34504,4681],{},[675,34506,4684],{},[651,34508,34509,34511,34513],{},[675,34510,4689],{},[675,34512,4692],{},[675,34514,4695],{},[651,34516,34517,34519,34521],{},[675,34518,4700],{},[675,34520,4703],{},[675,34522,4706],{},[651,34524,34525,34527,34529],{},[675,34526,4711],{},[675,34528,4714],{},[675,34530,4717],{},[651,34532,34533,34535,34537],{},[675,34534,4722],{},[675,34536,4725],{},[675,34538,4728],{},[651,34540,34541,34543,34545],{},[675,34542,4733],{},[675,34544,4736],{},[675,34546,4739],{},[651,34548,34549,34551,34553],{},[675,34550,4744],{},[675,34552,4747],{},[675,34554,4750],{},[651,34556,34557,34559,34561],{},[675,34558,4689],{},[675,34560,4757],{},[675,34562,4760],{},[11,34564,34566],{"id":34565},"grundlegende-linux-kommandos","Grundlegende Linux-Kommandos",[54,34568,34570],{"id":34569},"navigation-und-dateisystem","Navigation und Dateisystem",[645,34572,34573,34585],{},[648,34574,34575],{},[651,34576,34577,34581],{},[654,34578,34579],{},[26,34580,6993],{},[654,34582,34583],{},[26,34584,4550],{},[670,34586,34587,34594,34602,34610,34618,34626,34634,34642,34649,34657,34665,34673,34681,34689,34697],{},[651,34588,34589,34591],{},[675,34590,10777],{},[675,34592,34593],{},"Aktuelles Arbeitsverzeichnis anzeigen",[651,34595,34596,34599],{},[675,34597,34598],{},"Sudo (-u)",[675,34600,34601],{},"Programm als root(anderer benutzer)",[651,34603,34604,34607],{},[675,34605,34606],{},"su",[675,34608,34609],{},"Benutzer wechseln",[651,34611,34612,34615],{},[675,34613,34614],{},"cd verzeichnis",[675,34616,34617],{},"Verzeichnis wechseln",[651,34619,34620,34623],{},[675,34621,34622],{},"cd ~ oder cd",[675,34624,34625],{},"Ins Home-Verzeichnis wechseln",[651,34627,34628,34631],{},[675,34629,34630],{},"cd ..",[675,34632,34633],{},"Eine Ebene höher",[651,34635,34636,34639],{},[675,34637,34638],{},"cd -",[675,34640,34641],{},"Ins vorherige Verzeichnis",[651,34643,34644,34646],{},[675,34645,12214],{},[675,34647,34648],{},"Verzeichnisinhalt anzeigen",[651,34650,34651,34654],{},[675,34652,34653],{},"ls -l",[675,34655,34656],{},"Langes Listing (Details)",[651,34658,34659,34662],{},[675,34660,34661],{},"ls -a",[675,34663,34664],{},"Alle Dateien inkl. versteckte (mit . beginnend)",[651,34666,34667,34670],{},[675,34668,34669],{},"ls -lR",[675,34671,34672],{},"Rekursiv mit Details",[651,34674,34675,34678],{},[675,34676,34677],{},"ls -li",[675,34679,34680],{},"Mit Inode-Nummern",[651,34682,34683,34686],{},[675,34684,34685],{},"ls -lh",[675,34687,34688],{},"Menschenlesbare Größen",[651,34690,34691,34694],{},[675,34692,34693],{},"ls -ltr",[675,34695,34696],{},"Nach Zeit sortiert, älteste zuerst",[651,34698,34699,34702],{},[675,34700,34701],{},"ls -lSr",[675,34703,34704],{},"Nach Größe sortiert, kleinste zuerst",[54,34706,34708],{"id":34707},"wildcards-globbing","Wildcards \u002F Globbing",[645,34710,34711,34727],{},[648,34712,34713],{},[651,34714,34715,34719,34723],{},[654,34716,34717],{},[26,34718,16240],{},[654,34720,34721],{},[26,34722,5483],{},[654,34724,34725],{},[26,34726,730],{},[670,34728,34729,34739,34749,34765],{},[651,34730,34731,34733,34736],{},[675,34732,5078],{},[675,34734,34735],{},"Beliebig viele beliebige Zeichen",[675,34737,34738],{},"ls *.txt",[651,34740,34741,34743,34746],{},[675,34742,16286],{},[675,34744,34745],{},"Genau ein beliebiges Zeichen",[675,34747,34748],{},"ls prog?.c",[651,34750,34751,34755,34758],{},[675,34752,34753],{},[2915,34754,16296],{},[675,34756,34757],{},"Genau ein Zeichen aus der Menge",[675,34759,34760,34761,34764],{},"ls p",[2915,34762,34763],{},"12",".*",[651,34766,34767,34771,34774],{},[675,34768,34769],{},[2915,34770,16316],{},[675,34772,34773],{},"Zeichenbereich",[675,34775,21112,34776,5078],{},[2915,34777,16316],{},[54,34779,34781],{"id":34780},"dateien-erstellen-kopieren-verschieben-löschen","Dateien erstellen, kopieren, verschieben, löschen",[645,34783,34784,34796],{},[648,34785,34786],{},[651,34787,34788,34792],{},[654,34789,34790],{},[26,34791,6993],{},[654,34793,34794],{},[26,34795,4550],{},[670,34797,34798,34806,34814,34822,34830,34838,34846,34854,34862,34870,34877,34885,34893],{},[651,34799,34800,34803],{},[675,34801,34802],{},"touch datei",[675,34804,34805],{},"Leere Datei erstellen \u002F Zeitstempel ändern",[651,34807,34808,34811],{},[675,34809,34810],{},"touch -am datei",[675,34812,34813],{},"Zugriffs- und Änderungszeit ändern",[651,34815,34816,34819],{},[675,34817,34818],{},"mkdir verz",[675,34820,34821],{},"Verzeichnis erstellen",[651,34823,34824,34827],{},[675,34825,34826],{},"mkdir -p eltern\u002Fkind",[675,34828,34829],{},"Verschachtelte Verzeichnisse erstellen",[651,34831,34832,34835],{},[675,34833,34834],{},"cp quelle ziel",[675,34836,34837],{},"Datei kopieren",[651,34839,34840,34843],{},[675,34841,34842],{},"cp -r quelle ziel",[675,34844,34845],{},"Verzeichnis rekursiv kopieren",[651,34847,34848,34851],{},[675,34849,34850],{},"mv alt neu",[675,34852,34853],{},"Datei verschieben\u002Fumbenennen",[651,34855,34856,34859],{},[675,34857,34858],{},"mv -i alt neu",[675,34860,34861],{},"Mit Nachfrage",[651,34863,34864,34867],{},[675,34865,34866],{},"rm datei",[675,34868,34869],{},"Datei löschen",[651,34871,34872,34875],{},[675,34873,34874],{},"rm -i datei",[675,34876,34861],{},[651,34878,34879,34882],{},[675,34880,34881],{},"rm -r verzeichnis",[675,34883,34884],{},"Verzeichnis rekursiv löschen",[651,34886,34887,34890],{},[675,34888,34889],{},"rm -rf verzeichnis",[675,34891,34892],{},"Erzwungen rekursiv löschen (VORSICHT!)",[651,34894,34895,34898],{},[675,34896,34897],{},"rmdir verz",[675,34899,34900],{},"Leeres Verzeichnis löschen",[54,34902,34904],{"id":34903},"dateiinhalte-anzeigen","Dateiinhalte anzeigen",[645,34906,34907,34919],{},[648,34908,34909],{},[651,34910,34911,34915],{},[654,34912,34913],{},[26,34914,6993],{},[654,34916,34917],{},[26,34918,4550],{},[670,34920,34921,34929,34937,34945,34953,34960,34968,34976,34984,34991,34999,35007],{},[651,34922,34923,34926],{},[675,34924,34925],{},"cat datei",[675,34927,34928],{},"Gesamte Datei anzeigen",[651,34930,34931,34934],{},[675,34932,34933],{},"cat > datei",[675,34935,34936],{},"Von Tastatur in Datei schreiben (Beenden mit STRG+D)",[651,34938,34939,34942],{},[675,34940,34941],{},"cat >> datei",[675,34943,34944],{},"An Datei anhängen",[651,34946,34947,34950],{},[675,34948,34949],{},"less datei",[675,34951,34952],{},"Seitenweise anzeigen",[651,34954,34955,34958],{},[675,34956,34957],{},"more datei",[675,34959,34952],{},[651,34961,34962,34965],{},[675,34963,34964],{},"head datei",[675,34966,34967],{},"Erste 10 Zeilen",[651,34969,34970,34973],{},[675,34971,34972],{},"head -n 20 datei",[675,34974,34975],{},"Erste 20 Zeilen",[651,34977,34978,34981],{},[675,34979,34980],{},"tail datei",[675,34982,34983],{},"Letzte 10 Zeilen",[651,34985,34986,34989],{},[675,34987,34988],{},"tail -n 20 datei",[675,34990,15604],{},[651,34992,34993,34996],{},[675,34994,34995],{},"tail -f datei",[675,34997,34998],{},"Live-Überwachung einer Datei",[651,35000,35001,35004],{},[675,35002,35003],{},"wc -l datei",[675,35005,35006],{},"Zeilen zählen",[651,35008,35009,35012],{},[675,35010,35011],{},"diff datei1 datei2",[675,35013,35014],{},"Unterschiede zwischen Dateien",[54,35016,35018],{"id":35017},"systeminformationen","Systeminformationen",[645,35020,35021,35033],{},[648,35022,35023],{},[651,35024,35025,35029],{},[654,35026,35027],{},[26,35028,6993],{},[654,35030,35031],{},[26,35032,4550],{},[670,35034,35035,35043,35051,35059,35067,35075,35082,35089,35097,35105,35113],{},[651,35036,35037,35040],{},[675,35038,35039],{},"uname -a",[675,35041,35042],{},"System-Infos (Kernel, Architektur)",[651,35044,35045,35048],{},[675,35046,35047],{},"uname -v",[675,35049,35050],{},"Kernel-Version",[651,35052,35053,35056],{},[675,35054,35055],{},"uname -i",[675,35057,35058],{},"Hardware-Plattform",[651,35060,35061,35064],{},[675,35062,35063],{},"whoami",[675,35065,35066],{},"Aktueller Benutzername",[651,35068,35069,35072],{},[675,35070,35071],{},"who",[675,35073,35074],{},"Eingeloggte Benutzer",[651,35076,35077,35079],{},[675,35078,11456],{},[675,35080,35081],{},"Benutzer-\u002FGruppen-ID anzeigen",[651,35083,35084,35086],{},[675,35085,10041],{},[675,35087,35088],{},"Datum und Uhrzeit",[651,35090,35091,35094],{},[675,35092,35093],{},"uptime",[675,35095,35096],{},"Systemlaufzeit und Auslastung",[651,35098,35099,35102],{},[675,35100,35101],{},"free -h",[675,35103,35104],{},"Speicherauslastung",[651,35106,35107,35110],{},[675,35108,35109],{},"df -h",[675,35111,35112],{},"Festplattenbelegung",[651,35114,35115,35118],{},[675,35116,35117],{},"du -sh *",[675,35119,35120],{},"Verzeichnisgrößen",[54,35122,35124],{"id":35123},"umleitungen-und-pipes","Umleitungen und Pipes",[645,35126,35127,35139],{},[648,35128,35129],{},[651,35130,35131,35135],{},[654,35132,35133],{},[26,35134,18195],{},[654,35136,35137],{},[26,35138,4550],{},[670,35140,35141,35148,35155,35162,35168,35176],{},[651,35142,35143,35145],{},[675,35144,3534],{},[675,35146,35147],{},"Ausgabe in Datei (überschreiben)",[651,35149,35150,35152],{},[675,35151,23090],{},[675,35153,35154],{},"Ausgabe in Datei (anhängen)",[651,35156,35157,35159],{},[675,35158,23098],{},[675,35160,35161],{},"Eingabe aus Datei",[651,35163,35164,35166],{},[675,35165],{},[675,35167],{},[651,35169,35170,35173],{},[675,35171,35172],{},"2>&1",[675,35174,35175],{},"Fehlerausgabe zu Standardausgabe umleiten",[651,35177,35178,35181],{},[675,35179,35180],{},"&>\u002Fdev\u002Fnull",[675,35182,35183],{},"Alle Ausgaben unterdrücken",[54,35185,35187],{"id":35186},"cp-u","cp -u",[16,35189,35190],{},[26,35191,8604],{},[3392,35193,35195],{"className":3394,"code":35194,"language":3396,"meta":225,"style":225},"cp kopiert Dateien und Verzeichnisse. Die Option -u steht für update und verändert das Kopierverhaltens grundlegend:\n\n",[3398,35196,35197],{"__ignoreMap":225},[2915,35198,35199,35202,35205,35208,35211,35214,35217,35220,35223,35226,35229],{"class":3402,"line":3403},[2915,35200,35201],{"class":3406},"cp kopiert",[2915,35203,35204],{"class":3414}," Dateien",[2915,35206,35207],{"class":3414}," und",[2915,35209,35210],{"class":3414}," Verzeichnisse.",[2915,35212,35213],{"class":3414}," Die",[2915,35215,35216],{"class":3414}," Option -u steht",[2915,35218,35219],{"class":3414}," für update und",[2915,35221,35222],{"class":3414}," verändert",[2915,35224,35225],{"class":3414}," das",[2915,35227,35228],{"class":3414}," Kopierverhaltens",[2915,35230,35231],{"class":3414}," grundlegend:\n",[16,35233,35234,35235,35238,35239,6584],{},"Datei wird nur kopiert, wenn die ",[26,35236,35237],{},"Quelldatei neuer"," ist als die Zieldatei – oder wenn die Zieldatei ",[26,35240,35241],{},"nicht existiert",[3392,35243,35245],{"className":3394,"code":35244,"language":3396,"meta":225,"style":225},"cp -u quelle.txt ziel.txt\n\n",[3398,35246,35247],{"__ignoreMap":225},[2915,35248,35249,35251,35253,35256],{"class":3402,"line":3403},[2915,35250,27586],{"class":3406},[2915,35252,22604],{"class":3410},[2915,35254,35255],{"class":3414}," quelle.txt",[2915,35257,35258],{"class":3414}," ziel.txt\n",[16,35260,35261],{},[26,35262,35263],{},"Warum ist das nützlich?",[16,35265,35266],{},"Ohne -u überschreibt cp immer. Mit -u werden nur wirklich geänderte Dateien kopiert. Das ist ideal für:",[20,35268,35269,35272,35275],{},[23,35270,35271],{},"Inkrementelle Backups",[23,35273,35274],{},"Synchronisation von Verzeichnissen ohne rsync",[23,35276,35277],{},"Skripte, die nur bei Änderungen reagieren sollen",[16,35279,35280],{},[26,35281,35282],{},"Alle relevanten cp-Optionen im Überblick",[645,35284,35285,35301],{},[648,35286,35287],{},[651,35288,35289,35293,35297],{},[654,35290,35291],{},[26,35292,7715],{},[654,35294,35295],{},[26,35296,11548],{},[654,35298,35299],{},[26,35300,5483],{},[670,35302,35303,35312,35322,35331,35341,35351,35361,35370,35380,35390,35400,35409],{},[651,35304,35305,35307,35309],{},[675,35306,11559],{},[675,35308,26062],{},[675,35310,35311],{},"Nur kopieren wenn Quelle neuer als Ziel (oder Ziel fehlt)",[651,35313,35314,35317,35319],{},[675,35315,35316],{},"-r \u002F -R",[675,35318,16016],{},[675,35320,35321],{},"Verzeichnisse rekursiv kopieren",[651,35323,35324,35326,35328],{},[675,35325,7734],{},[675,35327,25874],{},[675,35329,35330],{},"Jede Aktion ausgeben",[651,35332,35333,35335,35338],{},[675,35334,7726],{},[675,35336,35337],{},"--interactive",[675,35339,35340],{},"Vor dem Überschreiben fragen",[651,35342,35343,35345,35348],{},[675,35344,7742],{},[675,35346,35347],{},"--no-clobber",[675,35349,35350],{},"Existierende Dateien niemals überschreiben",[651,35352,35353,35355,35358],{},[675,35354,12028],{},[675,35356,35357],{},"--preserve",[675,35359,35360],{},"Metadaten (Zeitstempel, Rechte, Eigentümer) erhalten",[651,35362,35363,35365,35367],{},[675,35364,21155],{},[675,35366,25796],{},[675,35368,35369],{},"Entspricht -dR --preserve=all",[651,35371,35372,35374,35377],{},[675,35373,7757],{},[675,35375,35376],{},"--link",[675,35378,35379],{},"Hardlinks statt Kopien erstellen",[651,35381,35382,35384,35387],{},[675,35383,4849],{},[675,35385,35386],{},"--symbolic-link",[675,35388,35389],{},"Symlinks statt Kopien",[651,35391,35392,35394,35397],{},[675,35393,9329],{},[675,35395,35396],{},"--force",[675,35398,35399],{},"Ziel-Datei entfernen wenn nicht schreibbar",[651,35401,35402,35404,35406],{},[675,35403,22331],{},[675,35405,26030],{},[675,35407,35408],{},"Backup der Zieldatei anlegen",[651,35410,35411,35413,35415],{},[675,35412,26050],{},[675,35414],{},[675,35416,35417],{},"Backup-Suffix festlegen (Standard: ~)",[16,35419,35420],{},[26,35421,8676],{},[11,35423,35425],{"id":35424},"nur-neuere-dateien-kopieren","Nur neuere Dateien kopieren",[3392,35427,35429],{"className":3394,"code":35428,"language":3396,"meta":225,"style":225},"cp -u dokument.txt \u002Fbackup\u002Fdokument.txt\n\n# Ganzes Verzeichnis aktualisierend synchronisieren\n\ncp -ru \u002Fhome\u002Fuser\u002Fprojekt\u002F \u002Fbackup\u002Fprojekt\u002F\n\n# Mit Ausgabe, welche Dateien wirklich kopiert wurden\n\ncp -ruv \u002Fhome\u002Fuser\u002Fdaten\u002F \u002Fmnt\u002Fbackup\u002Fdaten\u002F\n\n# Metadaten erhalten und nur Updates kopieren\n\ncp -uap \u002Fvar\u002Fwww\u002F \u002Fbackup\u002Fwww\u002F\n\n",[3398,35430,35431,35443,35447,35452,35456,35468,35472,35477,35481,35493,35497,35502,35506],{"__ignoreMap":225},[2915,35432,35433,35435,35437,35440],{"class":3402,"line":3403},[2915,35434,27586],{"class":3406},[2915,35436,22604],{"class":3410},[2915,35438,35439],{"class":3414}," dokument.txt",[2915,35441,35442],{"class":3414}," \u002Fbackup\u002Fdokument.txt\n",[2915,35444,35445],{"class":3402,"line":1117},[2915,35446,3506],{"emptyLinePlaceholder":3505},[2915,35448,35449],{"class":3402,"line":1125},[2915,35450,35451],{"class":3511},"# Ganzes Verzeichnis aktualisierend synchronisieren\n",[2915,35453,35454],{"class":3402,"line":3515},[2915,35455,3506],{"emptyLinePlaceholder":3505},[2915,35457,35458,35460,35463,35465],{"class":3402,"line":3520},[2915,35459,27586],{"class":3406},[2915,35461,35462],{"class":3410}," -ru",[2915,35464,26453],{"class":3414},[2915,35466,35467],{"class":3414}," \u002Fbackup\u002Fprojekt\u002F\n",[2915,35469,35470],{"class":3402,"line":5070},[2915,35471,3506],{"emptyLinePlaceholder":3505},[2915,35473,35474],{"class":3402,"line":5075},[2915,35475,35476],{"class":3511},"# Mit Ausgabe, welche Dateien wirklich kopiert wurden\n",[2915,35478,35479],{"class":3402,"line":5093},[2915,35480,3506],{"emptyLinePlaceholder":3505},[2915,35482,35483,35485,35488,35490],{"class":3402,"line":5098},[2915,35484,27586],{"class":3406},[2915,35486,35487],{"class":3410}," -ruv",[2915,35489,26312],{"class":3414},[2915,35491,35492],{"class":3414}," \u002Fmnt\u002Fbackup\u002Fdaten\u002F\n",[2915,35494,35495],{"class":3402,"line":5207},[2915,35496,3506],{"emptyLinePlaceholder":3505},[2915,35498,35499],{"class":3402,"line":5212},[2915,35500,35501],{"class":3511},"# Metadaten erhalten und nur Updates kopieren\n",[2915,35503,35504],{"class":3402,"line":5218},[2915,35505,3506],{"emptyLinePlaceholder":3505},[2915,35507,35508,35510,35513,35516],{"class":3402,"line":5223},[2915,35509,27586],{"class":3406},[2915,35511,35512],{"class":3410}," -uap",[2915,35514,35515],{"class":3414}," \u002Fvar\u002Fwww\u002F",[2915,35517,35518],{"class":3414}," \u002Fbackup\u002Fwww\u002F\n",[16,35520,35521],{},[26,35522,35523],{},"Wie entscheidet cp -u?",[3392,35525,35527],{"className":3394,"code":35526,"language":3396,"meta":225,"style":225},"cp -u vergleicht mtime (Modification Time) der Dateien:\n\nQuelldatei-mtime > Zieldatei-mtime  →  KOPIEREN\n",[3398,35528,35529,35537,35541],{"__ignoreMap":225},[2915,35530,35531,35534],{"class":3402,"line":3403},[2915,35532,35533],{"class":3406},"cp -u vergleicht mtime (Modification Time",[2915,35535,35536],{"class":3529},") der Dateien:\n",[2915,35538,35539],{"class":3402,"line":1117},[2915,35540,3506],{"emptyLinePlaceholder":3505},[2915,35542,35543,35546,35549,35552,35555],{"class":3402,"line":1125},[2915,35544,35545],{"class":3406},"Quelldatei-mtime ",[2915,35547,35548],{"class":3529},"> ",[2915,35550,35551],{"class":3414},"Zieldatei-mtime ",[2915,35553,35554],{"class":3414}," → ",[2915,35556,35557],{"class":3414}," KOPIEREN\n",[16,35559,35560,35561,35563],{},"    Quelldatei-mtime ≤ Zieldatei-mtime  →  ÜBERSPRINGEN     ",[5885,35562],{},"\n    Zieldatei existiert nicht           →  KOPIEREN",[54,35565,23559],{"id":23559},[16,35567,35568],{},[26,35569,8604],{},[16,35571,35572,35573,35576],{},"tac ist das Gegenteil von cat und gibt eine Datei ",[26,35574,35575],{},"zeilenweise in umgekehrter Reihenfolge"," aus. Der Name ist cat rückwärts gelesen.",[16,35578,23630],{},[16,35580,35581],{},"Enthält datei.txt:",[16,35583,15463],{},[16,35585,15466],{},[16,35587,15469],{},[16,35589,35590],{},"Gibt tac datei.txt aus:",[16,35592,15469],{},[16,35594,15466],{},[16,35596,15463],{},[16,35598,35599],{},[26,35600,26897],{},[645,35602,35603,35619],{},[648,35604,35605],{},[651,35606,35607,35611,35615],{},[654,35608,35609],{},[26,35610,7715],{},[654,35612,35613],{},[26,35614,11548],{},[654,35616,35617],{},[26,35618,5483],{},[670,35620,35621,35631,35641,35652,35660],{},[651,35622,35623,35625,35628],{},[675,35624,22331],{},[675,35626,35627],{},"--before",[675,35629,35630],{},"Trennzeichen vor statt nach dem Datensatz einfügen",[651,35632,35633,35635,35638],{},[675,35634,4853],{},[675,35636,35637],{},"--regex",[675,35639,35640],{},"Das Trennzeichen als regulären Ausdruck interpretieren",[651,35642,35643,35646,35649],{},[675,35644,35645],{},"-s TRENN",[675,35647,35648],{},"--separator=TRENN",[675,35650,35651],{},"Eigenes Trennzeichen statt Zeilenumbruch verwenden",[651,35653,35654,35656,35658],{},[675,35655,26942],{},[675,35657],{},[675,35659,26947],{},[651,35661,35662,35664,35666],{},[675,35663,26952],{},[675,35665],{},[675,35667,26957],{},[16,35669,35670],{},[26,35671,35672],{},"Standardverhalten",[16,35674,35675],{},"Ohne Optionen gilt \\n (Zeilenumbruch) als Trenner, und tac gibt die letzte Zeile zuerst aus.",[16,35677,35678],{},[26,35679,8676],{},[11,35681,23627],{"id":23626},[3392,35683,35685],{"className":3394,"code":35684,"language":3396,"meta":225,"style":225},"tac \u002Fvar\u002Flog\u002Fsyslog | less\n\n# Letzten Log-Eintrag zuerst sehen\n\ntac \u002Fvar\u002Flog\u002Fauth.log | head -20\n\n# Mit eigenem Trennzeichen (statt Zeilenumbruch)\n\necho \"a:b:c:d\" | tac -s \":\"\n\n# Ausgabe: d:c:b:a:\n\n# Trennzeichen wird VOR dem Datensatz gesetzt (-b)\n\necho -e \"---BLOCK1n---BLOCK2n---BLOCK3\" | tac -b -s \"---\"\n\n# Trennzeichen als Regex (-r), z.B. beliebige Zahl als Trenner\n\necho \"Wort1Wort2Wort3\" | tac -r -s \"[0-9]\"\n\n# Kombiniert mit grep: letzte Fehlerzeile im Log\n\ntac \u002Fvar\u002Flog\u002Fsyslog | grep -m1 \"error\"\n\n",[3398,35686,35687,35697,35701,35706,35710,35722,35726,35731,35735,35751,35755,35760,35764,35769,35773,35793,35797,35802,35806,35824,35828,35833,35837],{"__ignoreMap":225},[2915,35688,35689,35691,35693,35695],{"class":3402,"line":3403},[2915,35690,23559],{"class":3406},[2915,35692,15709],{"class":3414},[2915,35694,7679],{"class":3533},[2915,35696,23650],{"class":3406},[2915,35698,35699],{"class":3402,"line":1117},[2915,35700,3506],{"emptyLinePlaceholder":3505},[2915,35702,35703],{"class":3402,"line":1125},[2915,35704,35705],{"class":3511},"# Letzten Log-Eintrag zuerst sehen\n",[2915,35707,35708],{"class":3402,"line":3515},[2915,35709,3506],{"emptyLinePlaceholder":3505},[2915,35711,35712,35714,35716,35718,35720],{"class":3402,"line":3520},[2915,35713,23559],{"class":3406},[2915,35715,23670],{"class":3414},[2915,35717,7679],{"class":3533},[2915,35719,9197],{"class":3406},[2915,35721,23677],{"class":3410},[2915,35723,35724],{"class":3402,"line":5070},[2915,35725,3506],{"emptyLinePlaceholder":3505},[2915,35727,35728],{"class":3402,"line":5075},[2915,35729,35730],{"class":3511},"# Mit eigenem Trennzeichen (statt Zeilenumbruch)\n",[2915,35732,35733],{"class":3402,"line":5093},[2915,35734,3506],{"emptyLinePlaceholder":3505},[2915,35736,35737,35739,35742,35744,35746,35748],{"class":3402,"line":5098},[2915,35738,5059],{"class":3410},[2915,35740,35741],{"class":3414}," \"a:b:c:d\"",[2915,35743,7679],{"class":3533},[2915,35745,23730],{"class":3406},[2915,35747,23211],{"class":3410},[2915,35749,35750],{"class":3414}," \":\"\n",[2915,35752,35753],{"class":3402,"line":5207},[2915,35754,3506],{"emptyLinePlaceholder":3505},[2915,35756,35757],{"class":3402,"line":5212},[2915,35758,35759],{"class":3511},"# Ausgabe: d:c:b:a:\n",[2915,35761,35762],{"class":3402,"line":5218},[2915,35763,3506],{"emptyLinePlaceholder":3505},[2915,35765,35766],{"class":3402,"line":5223},[2915,35767,35768],{"class":3511},"# Trennzeichen wird VOR dem Datensatz gesetzt (-b)\n",[2915,35770,35771],{"class":3402,"line":5229},[2915,35772,3506],{"emptyLinePlaceholder":3505},[2915,35774,35775,35777,35779,35782,35784,35786,35788,35790],{"class":3402,"line":5253},[2915,35776,5059],{"class":3410},[2915,35778,19828],{"class":3410},[2915,35780,35781],{"class":3414}," \"---BLOCK1n---BLOCK2n---BLOCK3\"",[2915,35783,7679],{"class":3533},[2915,35785,23730],{"class":3406},[2915,35787,23167],{"class":3410},[2915,35789,23211],{"class":3410},[2915,35791,35792],{"class":3414}," \"---\"\n",[2915,35794,35795],{"class":3402,"line":5266},[2915,35796,3506],{"emptyLinePlaceholder":3505},[2915,35798,35799],{"class":3402,"line":5721},[2915,35800,35801],{"class":3511},"# Trennzeichen als Regex (-r), z.B. beliebige Zahl als Trenner\n",[2915,35803,35804],{"class":3402,"line":9401},[2915,35805,3506],{"emptyLinePlaceholder":3505},[2915,35807,35808,35810,35813,35815,35817,35819,35821],{"class":3402,"line":9406},[2915,35809,5059],{"class":3410},[2915,35811,35812],{"class":3414}," \"Wort1Wort2Wort3\"",[2915,35814,7679],{"class":3533},[2915,35816,23730],{"class":3406},[2915,35818,7846],{"class":3410},[2915,35820,23211],{"class":3410},[2915,35822,35823],{"class":3414}," \"[0-9]\"\n",[2915,35825,35826],{"class":3402,"line":9411},[2915,35827,3506],{"emptyLinePlaceholder":3505},[2915,35829,35830],{"class":3402,"line":9416},[2915,35831,35832],{"class":3511},"# Kombiniert mit grep: letzte Fehlerzeile im Log\n",[2915,35834,35835],{"class":3402,"line":9428},[2915,35836,3506],{"emptyLinePlaceholder":3505},[2915,35838,35839,35841,35843,35845,35847,35850],{"class":3402,"line":9433},[2915,35840,23559],{"class":3406},[2915,35842,15709],{"class":3414},[2915,35844,7679],{"class":3533},[2915,35846,7682],{"class":3406},[2915,35848,35849],{"class":3410}," -m1",[2915,35851,35852],{"class":3414}," \"error\"\n",[11,35854,35856],{"id":35855},"skript-rückwärts-lesen-für-debugging","Skript rückwärts \"lesen\" (für Debugging)",[16,35858,35859],{},"tac skript.sh",[16,35861,35862],{},[26,35863,35864],{},"Praktischer Nutzen",[20,35866,35867,35870,35873],{},[23,35868,35869],{},"Logs von hinten lesen (neueste Einträge zuerst)",[23,35871,35872],{},"In Kombination mit head die letzten N Einträge effizient filtern",[23,35874,35875],{},"Alternative zu tail, wenn man mehr Kontrolle braucht",[54,35877,26856],{"id":26856},[16,35879,8604],{},[16,35881,35882,35883,35885],{},"basename entfernt den Verzeichnisteil aus einem Dateipfad und gibt nur den ",[26,35884,26864],{}," zurück. Optional kann auch eine Dateiendung entfernt werden.",[16,35887,35888],{},[26,35889,35890],{},"Grundsyntax:",[16,35892,26872,35893],{},[2915,35894,19124],{},[16,35896,35897,35898],{},"basename OPTION... PFAD... ",[2915,35899,19124],{},[16,35901,26897],{},[645,35903,35904,35920],{},[648,35905,35906],{},[651,35907,35908,35912,35916],{},[654,35909,35910],{},[26,35911,7715],{},[654,35913,35914],{},[26,35915,11548],{},[654,35917,35918],{},[26,35919,5483],{},[670,35921,35922,35931,35940,35948],{},[651,35923,35924,35926,35928],{},[675,35925,21155],{},[675,35927,26924],{},[675,35929,35930],{},"Mehrere Pfade auf einmal verarbeiten",[651,35932,35933,35935,35937],{},[675,35934,26932],{},[675,35936,26050],{},[675,35938,35939],{},"Suffix vom Ergebnis entfernen",[651,35941,35942,35944,35946],{},[675,35943,26942],{},[675,35945],{},[675,35947,26947],{},[651,35949,35950,35952,35954],{},[675,35951,26952],{},[675,35953],{},[675,35955,26957],{},[16,35957,8676],{},[11,35959,35961],{"id":35960},"nur-dateiname-aus-pfad","Nur Dateiname aus Pfad",[3392,35963,35965],{"className":3394,"code":35964,"language":3396,"meta":225,"style":225},"basename \u002Fhome\u002Fuser\u002Fdokumente\u002Fbericht.pdf\n\n# → bericht.pdf\n\n# Nur Name ohne Endung (Suffix angeben)\n\nbasename \u002Fhome\u002Fuser\u002Fdokumente\u002Fbericht.pdf .pdf\n\n# → bericht\n\nbasename \u002Fusr\u002Fbin\u002Fpython3\n\n# → python3\n\n# In Skript: aktuellen Skriptnamen\n\nSKRIPTNAME=$(basename \"$0\")\n\necho \"Dieses Skript heißt: $SKRIPTNAME\"\n\n# Dateiendung dynamisch entfernen\n\nDATEI=\"\u002Fpfad\u002Fzur\u002Fdatei.tar.gz\"\n\nbasename \"$DATEI\" .tar.gz\n\n# → datei\n\n# Mehrere Pfade gleichzeitig (-a)\n\nbasename -a \u002Fetc\u002Fhosts \u002Fetc\u002Fpasswd \u002Fetc\u002Fshadow\n\n# → hosts\n\n# passwd\n\n# shadow\n\n# Mehrere Pfade Suffix entfernen (-a -s)\n\nbasename -a -s .txt \u002Fdaten\u002Fa.txt \u002Fdaten\u002Fb.txt \u002Fdaten\u002Fc.txt\n\n# → a\n\n# b\n\n# c\n\n# In Schleife: alle .sh-Dateien ohne Endung\n\nfor f in \u002Fskripte\u002F*.sh; do\n\nname=$(basename \"$f\" .sh)\n\necho \"Verarbeite: $name\"\n\ndone\n\n# Gegenstück: dirname gibt das Verzeichnis zurück\n\ndirname \u002Fhome\u002Fuser\u002Fdokumente\u002Fbericht.pdf\n\n# → \u002Fhome\u002Fuser\u002Fdokumente\n\n# Kombination basename dirname\n\nDATEI=\"\u002Fhome\u002Fuser\u002Fdaten\u002Freport.csv\"\n\nDIR=$(dirname \"$DATEI\")\n\nNAME=$(basename \"$DATEI\" .csv)\n\necho \"Verzeichnis: $DIR\"\n\necho \"Dateiname: $NAME\"\n\n# → Verzeichnis: \u002Fhome\u002Fuser\u002Fdaten\n\n# → Dateiname: report\n\n",[3398,35966,35967,35973,35977,35981,35985,35990,35994,36002,36006,36010,36014,36020,36024,36028,36032,36037,36041,36060,36064,36076,36080,36085,36089,36098,36102,36114,36118,36122,36126,36131,36135,36147,36151,36155,36159,36163,36167,36171,36175,36180,36184,36203,36207,36212,36216,36221,36225,36230,36234,36239,36243,36257,36261,36281,36285,36296,36300,36304,36308,36313,36317,36323,36327,36332,36336,36341,36345,36353,36357,36375,36379,36399,36403,36413,36417,36427,36431,36436,36440],{"__ignoreMap":225},[2915,35968,35969,35971],{"class":3402,"line":3403},[2915,35970,26856],{"class":3406},[2915,35972,26980],{"class":3414},[2915,35974,35975],{"class":3402,"line":1117},[2915,35976,3506],{"emptyLinePlaceholder":3505},[2915,35978,35979],{"class":3402,"line":1125},[2915,35980,26989],{"class":3511},[2915,35982,35983],{"class":3402,"line":3515},[2915,35984,3506],{"emptyLinePlaceholder":3505},[2915,35986,35987],{"class":3402,"line":3520},[2915,35988,35989],{"class":3511},"# Nur Name ohne Endung (Suffix angeben)\n",[2915,35991,35992],{"class":3402,"line":5070},[2915,35993,3506],{"emptyLinePlaceholder":3505},[2915,35995,35996,35998,36000],{"class":3402,"line":5075},[2915,35997,26856],{"class":3406},[2915,35999,27009],{"class":3414},[2915,36001,27012],{"class":3414},[2915,36003,36004],{"class":3402,"line":5093},[2915,36005,3506],{"emptyLinePlaceholder":3505},[2915,36007,36008],{"class":3402,"line":5098},[2915,36009,27021],{"class":3511},[2915,36011,36012],{"class":3402,"line":5207},[2915,36013,3506],{"emptyLinePlaceholder":3505},[2915,36015,36016,36018],{"class":3402,"line":5212},[2915,36017,26856],{"class":3406},[2915,36019,27041],{"class":3414},[2915,36021,36022],{"class":3402,"line":5218},[2915,36023,3506],{"emptyLinePlaceholder":3505},[2915,36025,36026],{"class":3402,"line":5223},[2915,36027,27050],{"class":3511},[2915,36029,36030],{"class":3402,"line":5229},[2915,36031,3506],{"emptyLinePlaceholder":3505},[2915,36033,36034],{"class":3402,"line":5253},[2915,36035,36036],{"class":3511},"# In Skript: aktuellen Skriptnamen\n",[2915,36038,36039],{"class":3402,"line":5266},[2915,36040,3506],{"emptyLinePlaceholder":3505},[2915,36042,36043,36046,36048,36050,36052,36054,36056,36058],{"class":3402,"line":5721},[2915,36044,36045],{"class":3529},"SKRIPTNAME",[2915,36047,5137],{"class":3533},[2915,36049,9001],{"class":3529},[2915,36051,26856],{"class":3406},[2915,36053,4968],{"class":3414},[2915,36055,4879],{"class":3410},[2915,36057,4957],{"class":3414},[2915,36059,5152],{"class":3529},[2915,36061,36062],{"class":3402,"line":9401},[2915,36063,3506],{"emptyLinePlaceholder":3505},[2915,36065,36066,36068,36071,36074],{"class":3402,"line":9406},[2915,36067,5059],{"class":3410},[2915,36069,36070],{"class":3414}," \"Dieses Skript heißt: ",[2915,36072,36073],{"class":3529},"$SKRIPTNAME",[2915,36075,5204],{"class":3414},[2915,36077,36078],{"class":3402,"line":9411},[2915,36079,3506],{"emptyLinePlaceholder":3505},[2915,36081,36082],{"class":3402,"line":9416},[2915,36083,36084],{"class":3511},"# Dateiendung dynamisch entfernen\n",[2915,36086,36087],{"class":3402,"line":9428},[2915,36088,3506],{"emptyLinePlaceholder":3505},[2915,36090,36091,36093,36095],{"class":3402,"line":9433},[2915,36092,5960],{"class":3529},[2915,36094,5137],{"class":3533},[2915,36096,36097],{"class":3414},"\"\u002Fpfad\u002Fzur\u002Fdatei.tar.gz\"\n",[2915,36099,36100],{"class":3402,"line":9454},[2915,36101,3506],{"emptyLinePlaceholder":3505},[2915,36103,36104,36106,36108,36110,36112],{"class":3402,"line":9459},[2915,36105,26856],{"class":3406},[2915,36107,4968],{"class":3414},[2915,36109,10602],{"class":3529},[2915,36111,4957],{"class":3414},[2915,36113,27135],{"class":3414},[2915,36115,36116],{"class":3402,"line":9464},[2915,36117,3506],{"emptyLinePlaceholder":3505},[2915,36119,36120],{"class":3402,"line":9469},[2915,36121,27112],{"class":3511},[2915,36123,36124],{"class":3402,"line":9479},[2915,36125,3506],{"emptyLinePlaceholder":3505},[2915,36127,36128],{"class":3402,"line":9484},[2915,36129,36130],{"class":3511},"# Mehrere Pfade gleichzeitig (-a)\n",[2915,36132,36133],{"class":3402,"line":9489},[2915,36134,3506],{"emptyLinePlaceholder":3505},[2915,36136,36137,36139,36141,36143,36145],{"class":3402,"line":9494},[2915,36138,26856],{"class":3406},[2915,36140,10056],{"class":3410},[2915,36142,27166],{"class":3414},[2915,36144,27169],{"class":3414},[2915,36146,27172],{"class":3414},[2915,36148,36149],{"class":3402,"line":9504},[2915,36150,3506],{"emptyLinePlaceholder":3505},[2915,36152,36153],{"class":3402,"line":9509},[2915,36154,27181],{"class":3511},[2915,36156,36157],{"class":3402,"line":9514},[2915,36158,3506],{"emptyLinePlaceholder":3505},[2915,36160,36161],{"class":3402,"line":9519},[2915,36162,27190],{"class":3511},[2915,36164,36165],{"class":3402,"line":9524},[2915,36166,3506],{"emptyLinePlaceholder":3505},[2915,36168,36169],{"class":3402,"line":9529},[2915,36170,27199],{"class":3511},[2915,36172,36173],{"class":3402,"line":9534},[2915,36174,3506],{"emptyLinePlaceholder":3505},[2915,36176,36177],{"class":3402,"line":9539},[2915,36178,36179],{"class":3511},"# Mehrere Pfade Suffix entfernen (-a -s)\n",[2915,36181,36182],{"class":3402,"line":9552},[2915,36183,3506],{"emptyLinePlaceholder":3505},[2915,36185,36186,36188,36190,36192,36194,36197,36200],{"class":3402,"line":9557},[2915,36187,26856],{"class":3406},[2915,36189,10056],{"class":3410},[2915,36191,23211],{"class":3410},[2915,36193,25152],{"class":3414},[2915,36195,36196],{"class":3414}," \u002Fdaten\u002Fa.txt",[2915,36198,36199],{"class":3414}," \u002Fdaten\u002Fb.txt",[2915,36201,36202],{"class":3414}," \u002Fdaten\u002Fc.txt\n",[2915,36204,36205],{"class":3402,"line":9570},[2915,36206,3506],{"emptyLinePlaceholder":3505},[2915,36208,36209],{"class":3402,"line":9575},[2915,36210,36211],{"class":3511},"# → a\n",[2915,36213,36214],{"class":3402,"line":9588},[2915,36215,3506],{"emptyLinePlaceholder":3505},[2915,36217,36218],{"class":3402,"line":9593},[2915,36219,36220],{"class":3511},"# b\n",[2915,36222,36223],{"class":3402,"line":9598},[2915,36224,3506],{"emptyLinePlaceholder":3505},[2915,36226,36227],{"class":3402,"line":9603},[2915,36228,36229],{"class":3511},"# c\n",[2915,36231,36232],{"class":3402,"line":9619},[2915,36233,3506],{"emptyLinePlaceholder":3505},[2915,36235,36236],{"class":3402,"line":9624},[2915,36237,36238],{"class":3511},"# In Schleife: alle .sh-Dateien ohne Endung\n",[2915,36240,36241],{"class":3402,"line":9629},[2915,36242,3506],{"emptyLinePlaceholder":3505},[2915,36244,36245,36247,36249,36251,36253,36255],{"class":3402,"line":9634},[2915,36246,5175],{"class":3533},[2915,36248,27469],{"class":3529},[2915,36250,5181],{"class":3533},[2915,36252,27474],{"class":3414},[2915,36254,5248],{"class":3529},[2915,36256,5187],{"class":3533},[2915,36258,36259],{"class":3402,"line":9642},[2915,36260,3506],{"emptyLinePlaceholder":3505},[2915,36262,36263,36265,36267,36269,36271,36273,36275,36277,36279],{"class":3402,"line":9647},[2915,36264,27487],{"class":3529},[2915,36266,5137],{"class":3533},[2915,36268,9001],{"class":3529},[2915,36270,26856],{"class":3406},[2915,36272,4968],{"class":3414},[2915,36274,5644],{"class":3529},[2915,36276,4957],{"class":3414},[2915,36278,27340],{"class":3414},[2915,36280,5152],{"class":3529},[2915,36282,36283],{"class":3402,"line":9656},[2915,36284,3506],{"emptyLinePlaceholder":3505},[2915,36286,36287,36289,36292,36294],{"class":3402,"line":9661},[2915,36288,5059],{"class":3410},[2915,36290,36291],{"class":3414}," \"Verarbeite: ",[2915,36293,27517],{"class":3529},[2915,36295,5204],{"class":3414},[2915,36297,36298],{"class":3402,"line":9666},[2915,36299,3506],{"emptyLinePlaceholder":3505},[2915,36301,36302],{"class":3402,"line":9671},[2915,36303,5269],{"class":3533},[2915,36305,36306],{"class":3402,"line":9685},[2915,36307,3506],{"emptyLinePlaceholder":3505},[2915,36309,36310],{"class":3402,"line":9690},[2915,36311,36312],{"class":3511},"# Gegenstück: dirname gibt das Verzeichnis zurück\n",[2915,36314,36315],{"class":3402,"line":9711},[2915,36316,3506],{"emptyLinePlaceholder":3505},[2915,36318,36319,36321],{"class":3402,"line":9716},[2915,36320,27652],{"class":3406},[2915,36322,26980],{"class":3414},[2915,36324,36325],{"class":3402,"line":9721},[2915,36326,3506],{"emptyLinePlaceholder":3505},[2915,36328,36329],{"class":3402,"line":9726},[2915,36330,36331],{"class":3511},"# → \u002Fhome\u002Fuser\u002Fdokumente\n",[2915,36333,36334],{"class":3402,"line":9734},[2915,36335,3506],{"emptyLinePlaceholder":3505},[2915,36337,36338],{"class":3402,"line":9739},[2915,36339,36340],{"class":3511},"# Kombination basename dirname\n",[2915,36342,36343],{"class":3402,"line":9747},[2915,36344,3506],{"emptyLinePlaceholder":3505},[2915,36346,36347,36349,36351],{"class":3402,"line":9752},[2915,36348,5960],{"class":3529},[2915,36350,5137],{"class":3533},[2915,36352,27636],{"class":3414},[2915,36354,36355],{"class":3402,"line":9760},[2915,36356,3506],{"emptyLinePlaceholder":3505},[2915,36358,36359,36361,36363,36365,36367,36369,36371,36373],{"class":3402,"line":9765},[2915,36360,27645],{"class":3529},[2915,36362,5137],{"class":3533},[2915,36364,9001],{"class":3529},[2915,36366,27652],{"class":3406},[2915,36368,4968],{"class":3414},[2915,36370,10602],{"class":3529},[2915,36372,4957],{"class":3414},[2915,36374,5152],{"class":3529},[2915,36376,36377],{"class":3402,"line":9773},[2915,36378,3506],{"emptyLinePlaceholder":3505},[2915,36380,36381,36383,36385,36387,36389,36391,36393,36395,36397],{"class":3402,"line":9778},[2915,36382,27672],{"class":3529},[2915,36384,5137],{"class":3533},[2915,36386,9001],{"class":3529},[2915,36388,26856],{"class":3406},[2915,36390,4968],{"class":3414},[2915,36392,10602],{"class":3529},[2915,36394,4957],{"class":3414},[2915,36396,27687],{"class":3414},[2915,36398,5152],{"class":3529},[2915,36400,36401],{"class":3402,"line":9786},[2915,36402,3506],{"emptyLinePlaceholder":3505},[2915,36404,36405,36407,36409,36411],{"class":3402,"line":9791},[2915,36406,5059],{"class":3410},[2915,36408,27703],{"class":3414},[2915,36410,27706],{"class":3529},[2915,36412,5204],{"class":3414},[2915,36414,36415],{"class":3402,"line":9800},[2915,36416,3506],{"emptyLinePlaceholder":3505},[2915,36418,36419,36421,36423,36425],{"class":3402,"line":9805},[2915,36420,5059],{"class":3410},[2915,36422,27719],{"class":3414},[2915,36424,27722],{"class":3529},[2915,36426,5204],{"class":3414},[2915,36428,36429],{"class":3402,"line":20122},[2915,36430,3506],{"emptyLinePlaceholder":3505},[2915,36432,36433],{"class":3402,"line":20127},[2915,36434,36435],{"class":3511},"# → Verzeichnis: \u002Fhome\u002Fuser\u002Fdaten\n",[2915,36437,36438],{"class":3402,"line":20133},[2915,36439,3506],{"emptyLinePlaceholder":3505},[2915,36441,36442],{"class":3402,"line":20138},[2915,36443,36444],{"class":3511},"# → Dateiname: report\n",[16,36446,36447],{},"Häufiger Einsatz in Skripten",[3392,36449,36451],{"className":3394,"code":36450,"language":3396,"meta":225,"style":225},"#!\u002Fbin\u002Fbash\n\n# Skript, das sich selbst benennt und Locks verwendet\n\nPROG=$(basename \"$0\")\n\nLOCKFILE=\"\u002Ftmp\u002F${PROG}.lock\"\n\nif [ -f \"$LOCKFILE\" ]; then\n\necho \"$PROG läuft bereits!\" >&2\n\nexit 1\n\nfi\n\ntouch \"$LOCKFILE\"\n\ntrap \"rm -f $LOCKFILE\" EXIT\n\necho \"$PROG wird ausgeführt...\"\n\n",[3398,36452,36453,36457,36461,36466,36470,36488,36492,36504,36508,36526,36530,36542,36546,36552,36556,36560,36564,36574,36578,36591,36595],{"__ignoreMap":225},[2915,36454,36455],{"class":3402,"line":3403},[2915,36456,5125],{"class":3511},[2915,36458,36459],{"class":3402,"line":1117},[2915,36460,3506],{"emptyLinePlaceholder":3505},[2915,36462,36463],{"class":3402,"line":1125},[2915,36464,36465],{"class":3511},"# Skript, das sich selbst benennt und Locks verwendet\n",[2915,36467,36468],{"class":3402,"line":3515},[2915,36469,3506],{"emptyLinePlaceholder":3505},[2915,36471,36472,36474,36476,36478,36480,36482,36484,36486],{"class":3402,"line":3520},[2915,36473,27274],{"class":3529},[2915,36475,5137],{"class":3533},[2915,36477,9001],{"class":3529},[2915,36479,26856],{"class":3406},[2915,36481,4968],{"class":3414},[2915,36483,4879],{"class":3410},[2915,36485,4957],{"class":3414},[2915,36487,5152],{"class":3529},[2915,36489,36490],{"class":3402,"line":5070},[2915,36491,3506],{"emptyLinePlaceholder":3505},[2915,36493,36494,36496,36498,36500,36502],{"class":3402,"line":5075},[2915,36495,9994],{"class":3529},[2915,36497,5137],{"class":3533},[2915,36499,27355],{"class":3414},[2915,36501,27274],{"class":3529},[2915,36503,27360],{"class":3414},[2915,36505,36506],{"class":3402,"line":5093},[2915,36507,3506],{"emptyLinePlaceholder":3505},[2915,36509,36510,36512,36514,36516,36518,36520,36522,36524],{"class":3402,"line":5098},[2915,36511,4951],{"class":3533},[2915,36513,4954],{"class":3529},[2915,36515,9329],{"class":3533},[2915,36517,4968],{"class":3414},[2915,36519,10094],{"class":3529},[2915,36521,4957],{"class":3414},[2915,36523,4976],{"class":3529},[2915,36525,4979],{"class":3533},[2915,36527,36528],{"class":3402,"line":5207},[2915,36529,3506],{"emptyLinePlaceholder":3505},[2915,36531,36532,36534,36536,36538,36540],{"class":3402,"line":5212},[2915,36533,5059],{"class":3410},[2915,36535,4968],{"class":3414},[2915,36537,27302],{"class":3529},[2915,36539,27397],{"class":3414},[2915,36541,27308],{"class":3533},[2915,36543,36544],{"class":3402,"line":5218},[2915,36545,3506],{"emptyLinePlaceholder":3505},[2915,36547,36548,36550],{"class":3402,"line":5223},[2915,36549,9650],{"class":3410},[2915,36551,9653],{"class":3410},[2915,36553,36554],{"class":3402,"line":5229},[2915,36555,3506],{"emptyLinePlaceholder":3505},[2915,36557,36558],{"class":3402,"line":5253},[2915,36559,4997],{"class":3533},[2915,36561,36562],{"class":3402,"line":5266},[2915,36563,3506],{"emptyLinePlaceholder":3505},[2915,36565,36566,36568,36570,36572],{"class":3402,"line":5721},[2915,36567,10189],{"class":3406},[2915,36569,4968],{"class":3414},[2915,36571,10094],{"class":3529},[2915,36573,5204],{"class":3414},[2915,36575,36576],{"class":3402,"line":9401},[2915,36577,3506],{"emptyLinePlaceholder":3505},[2915,36579,36580,36582,36585,36587,36589],{"class":3402,"line":9406},[2915,36581,10140],{"class":3410},[2915,36583,36584],{"class":3414}," \"rm -f ",[2915,36586,10094],{"class":3529},[2915,36588,4957],{"class":3414},[2915,36590,10146],{"class":3414},[2915,36592,36593],{"class":3402,"line":9411},[2915,36594,3506],{"emptyLinePlaceholder":3505},[2915,36596,36597,36599,36601,36603],{"class":3402,"line":9416},[2915,36598,5059],{"class":3410},[2915,36600,4968],{"class":3414},[2915,36602,27302],{"class":3529},[2915,36604,36605],{"class":3414}," wird ausgeführt...\"\n",[11,36607,36609],{"id":36608},"verzeichnisstruktur-fhs","Verzeichnisstruktur (FHS)",[54,36611,36613],{"id":36612},"filesystem-hierarchy-standard","Filesystem Hierarchy Standard",[16,36615,36616,36617,36619,36620,36622,36623,36625,36626,36628,36629,36631,36632,36634,36635,36637,36638,36640,36641,36643,36644,36646,36647,36649,36650,36652,36653,36655,36656,36658,36659,36661,36662,36664,36665,36667,36668,36670,36671,36673,36674,36676,36677,36679,36680,36683,36684,36686,36687,36689,36690,36692,36693,36695,36696,36698,36699,36701,36702,36704,36705,36707,36708,36710,36711,36713,36714,36716,36717,36719,36720,36722],{},"\u002F Wurzelverzeichnis (root)",[5885,36618],{},"\n├── \u002Fbin Essentielle Programme (ls, bash, echo, cp, mv, rm)",[5885,36621],{},"\n├── \u002Fsbin System-Programme (für root: fdisk, mkfs, init)",[5885,36624],{},"\n├── \u002Fboot Bootloader, Kernel (vmlinuz, initramfs, grub\u002F)",[5885,36627],{},"\n├── \u002Fdev Gerätedateien (sda, tty, null, zero)",[5885,36630],{},"\n├── \u002Fetc Globale Konfigurationsdateien",[5885,36633],{},"\n│ ├── fstab Dateisystem-Mountpoints",[5885,36636],{},"\n│ ├── passwd Benutzerdatenbank",[5885,36639],{},"\n│ ├── shadow Passwortdatenbank",[5885,36642],{},"\n│ ├── group Gruppendatenbank",[5885,36645],{},"\n│ ├── hostname Rechnername",[5885,36648],{},"\n│ ├── hosts DNS-Einträge lokal",[5885,36651],{},"\n│ └── sudoers Sudo-Regeln",[5885,36654],{},"\n├── \u002Fhome Benutzer-Homeverzeichnisse (\u002Fhome\u002Fusername)",[5885,36657],{},"\n├── \u002Flib Shared Libraries, Kernelmodule",[5885,36660],{},"\n├── \u002Fmedia Automatische Mountpoints (USB, CD)",[5885,36663],{},"\n├── \u002Fmnt Manuelle Mountpoints",[5885,36666],{},"\n├── \u002Fopt Optionale Software",[5885,36669],{},"\n├── \u002Fproc Virtuelles Dateisystem: Prozesse + Kernel-Info",[5885,36672],{},"\n│ ├── cpuinfo CPU-Informationen",[5885,36675],{},"\n│ ├── meminfo Speicherinformationen",[5885,36678],{},"\n│ └── ",[2915,36681,36682],{},"PID","\u002F Verzeichnis pro Prozess",[5885,36685],{},"\n├── \u002Froot Home-Verzeichnis von root",[5885,36688],{},"\n├── \u002Frun Runtime-Daten seit letztem Boot",[5885,36691],{},"\n├── \u002Fsrv Daten für Serverdienste",[5885,36694],{},"\n├── \u002Fsys Virtuelles Dateisystem: Hardware + Kernel",[5885,36697],{},"\n├── \u002Ftmp Temporäre Dateien (nach Neustart gelöscht)",[5885,36700],{},"\n├── \u002Fusr Bibliotheken, Systemtools, installierte Programme",[5885,36703],{},"\n│ ├── \u002Fusr\u002Fbin Benutzer-Programme",[5885,36706],{},"\n│ ├── \u002Fusr\u002Fsbin System-Programme",[5885,36709],{},"\n│ └── \u002Fusr\u002Flib Bibliotheken",[5885,36712],{},"\n└── \u002Fvar Variable Daten",[5885,36715],{},"\n├── \u002Fvar\u002Flog Logdateien (syslog, dmesg, auth.log)",[5885,36718],{},"\n├── \u002Fvar\u002Fspool Warteschlangen (Druckjobs, Cron, Mail)",[5885,36721],{},"\n└── \u002Fvar\u002Ftmp Persistente temporäre Dateien",[228,36724,36726],{"id":36725},"wichtige-merkmale","Wichtige Merkmale:",[20,36728,36729,36738,36745,36751,36754],{},[23,36730,36731,36734,36735],{},[26,36732,36733],{},"Keine Laufwerksbuchstaben"," – stattdessen ",[26,36736,36737],{},"Mountpoints",[23,36739,36740,36741,36744],{},"\u002Fproc und \u002Fsys sind ",[26,36742,36743],{},"virtuelle Dateisysteme"," → belegen keinen Speicherplatz",[23,36746,36747,36748],{},"\u002Fproc ändert sich ständig → ",[26,36749,36750],{},"keine Backups davon erstellen!",[23,36752,36753],{},"Logdateien: syslog = allgemein, dmesg = Kernel-Log",[23,36755,36756],{},"Ansehen: cat \u002Fvar\u002Flog\u002Fsyslog oder less \u002Fvar\u002Flog\u002Fsyslog",[11,36758,36760],{"id":36759},"zusammenfassung-die-etcsudoers-datei","Zusammenfassung: Die \u002Fetc\u002Fsudoers Datei",[20,36762,36763,36766,36769],{},[23,36764,36765],{},"Zentrale Konfigurationsdatei für sudo",[23,36767,36768],{},"Legt fest welche Benutzer welche Berechtigungen auf welchen Hosts haben",[23,36770,36771,36772],{},"Darf nicht mit normalem Texteditor geöffnet werden\n",[20,36773,36774],{},[23,36775,36776],{},"Immer visudo: Prüft Syntax auf Fehler",[54,36778,36780],{"id":36779},"struktur","Struktur",[20,36782,36783],{},[23,36784,36785,36786],{},"Festes Muster: User Host=(RunAsUser:RunAsGroup) Commands\n",[20,36787,36788,36791,36794,36797,36800],{},[23,36789,36790],{},"User: Der Benutzer oder die Gruppe (Gruppen werden mit % gekennzeichnet), der die Berechtigung erhält.",[23,36792,36793],{},"Host: Der Hostname, auf dem die Regel gilt (meist ALL für alle Rechner).",[23,36795,36796],{},"RunAsUser: Der Benutzer, als der der Befehl ausgeführt werden soll (meist root oder ALL).",[23,36798,36799],{},"RunAsGroup: Die Gruppe, als die der Befehl ausgeführt werden soll (meist ALL).",[23,36801,36802],{},"Commands: Die Liste der erlaubten Befehle (absolute Pfade verwenden!).",[54,36804,31764],{"id":31763},[228,36806,36808],{"id":36807},"a-vollzugriff-administrator-status","A. Vollzugriff (Administrator-Status)",[16,36810,36811],{},"Erlaubt einem Benutzer alle Befehle mit Root-Rechten (erfordert Passwort).",[11,36813,36815],{"id":36814},"benutzer-max-darf-alles","Benutzer 'max' darf alles",[3392,36817,36819],{"className":3394,"code":36818,"language":3396,"meta":225,"style":225},"max ALL=(ALL:ALL) ALL\n\n# Gruppe 'admin' darf alles (beachte das %)\n%admin ALL=(ALL:ALL) ALL\n\n",[3398,36820,36821,36839,36843,36848],{"__ignoreMap":225},[2915,36822,36823,36826,36829,36831,36834,36836],{"class":3402,"line":3403},[2915,36824,36825],{"class":3406},"max",[2915,36827,36828],{"class":3414}," ALL=",[2915,36830,5140],{"class":3529},[2915,36832,36833],{"class":3406},"ALL:ALL",[2915,36835,5056],{"class":3529},[2915,36837,36838],{"class":3414},"ALL\n",[2915,36840,36841],{"class":3402,"line":1117},[2915,36842,3506],{"emptyLinePlaceholder":3505},[2915,36844,36845],{"class":3402,"line":1125},[2915,36846,36847],{"class":3511},"# Gruppe 'admin' darf alles (beachte das %)\n",[2915,36849,36850,36853,36855,36857,36859,36861],{"class":3402,"line":3515},[2915,36851,36852],{"class":3406},"%admin",[2915,36854,36828],{"class":3414},[2915,36856,5140],{"class":3529},[2915,36858,36833],{"class":3406},[2915,36860,5056],{"class":3529},[2915,36862,36838],{"class":3414},[228,36864,36866],{"id":36865},"b-spezifische-befehle-erlauben","B. Spezifische Befehle erlauben",[16,36868,36869],{},"Einschränkung auf nur einen einzigen Befehl (sehr wichtig für Sicherheit!).",[11,36871,36873],{"id":36872},"devuser-darf-nur-den-apache-webserver-neu-starten","'devuser' darf nur den Apache-Webserver neu starten",[3392,36875,36877],{"className":3394,"code":36876,"language":3396,"meta":225,"style":225},"devuser ALL=(ALL) \u002Fusr\u002Fbin\u002Fsystemctl restart apache2\n\n",[3398,36878,36879],{"__ignoreMap":225},[2915,36880,36881,36884,36886,36888,36891,36893,36896,36898],{"class":3402,"line":3403},[2915,36882,36883],{"class":3406},"devuser",[2915,36885,36828],{"class":3414},[2915,36887,5140],{"class":3529},[2915,36889,36890],{"class":3406},"ALL",[2915,36892,5056],{"class":3529},[2915,36894,36895],{"class":3414},"\u002Fusr\u002Fbin\u002Fsystemctl",[2915,36897,32423],{"class":3414},[2915,36899,36900],{"class":3414}," apache2\n",[228,36902,36904],{"id":36903},"c-ausführung-ohne-passwort-nopasswd","C. Ausführung ohne Passwort (NOPASSWD)",[16,36906,36907],{},"Nützlich für Skripte oder Automatisierungen, aber ein Sicherheitsrisiko.",[11,36909,36911],{"id":36910},"automation-user-darf-updates-machen-ohne-nach-einem-passwort-gefragt-zu-werden","'automation-user' darf Updates machen, ohne nach einem Passwort gefragt zu werden",[3392,36913,36915],{"className":3394,"code":36914,"language":3396,"meta":225,"style":225},"automation-user ALL=(ALL) NOPASSWD: \u002Fusr\u002Fbin\u002Fapt-get update, \u002Fusr\u002Fbin\u002Fapt-get upgrade\n\n",[3398,36916,36917],{"__ignoreMap":225},[2915,36918,36919,36922,36924,36926,36928,36930,36933,36936,36939,36941],{"class":3402,"line":3403},[2915,36920,36921],{"class":3406},"automation-user",[2915,36923,36828],{"class":3414},[2915,36925,5140],{"class":3529},[2915,36927,36890],{"class":3406},[2915,36929,5056],{"class":3529},[2915,36931,36932],{"class":3414},"NOPASSWD:",[2915,36934,36935],{"class":3414}," \u002Fusr\u002Fbin\u002Fapt-get",[2915,36937,36938],{"class":3414}," update,",[2915,36940,36935],{"class":3414},[2915,36942,36943],{"class":3414}," upgrade\n",[228,36945,36947],{"id":36946},"d-verwendung-von-pfaden-und-wildcards","D. Verwendung von Pfaden und Wildcards",[11,36949,36951],{"id":36950},"erlaubt-das-ausführen-von-backup-skripten-im-verzeichnis-optscripts","Erlaubt das Ausführen von Backup-Skripten im Verzeichnis \u002Fopt\u002Fscripts\u002F",[3392,36953,36955],{"className":3394,"code":36954,"language":3396,"meta":225,"style":225},"backup-user ALL=(ALL) \u002Fopt\u002Fscripts\u002F*.sh\n\n",[3398,36956,36957],{"__ignoreMap":225},[2915,36958,36959,36962,36964,36966,36968,36970,36973,36975],{"class":3402,"line":3403},[2915,36960,36961],{"class":3406},"backup-user",[2915,36963,36828],{"class":3414},[2915,36965,5140],{"class":3529},[2915,36967,36890],{"class":3406},[2915,36969,5056],{"class":3529},[2915,36971,36972],{"class":3414},"\u002Fopt\u002Fscripts\u002F",[2915,36974,5078],{"class":3410},[2915,36976,36977],{"class":3414},".sh\n",[54,36979,36981],{"id":36980},"best-practices-sicherheit","Best Practices & Sicherheit",[16,36983,36984],{},"Principle of Least Privilege (Prinzip der geringsten Berechtigung): Erteile nur so viele Rechte, wie absolut notwendig sind. Vermeide ALL=(ALL) ALL für normale Benutzer.",[16,36986,36987],{},"Absolute Pfade nutzen: Gib Befehle immer mit ihrem vollständigen Pfad an (z. B. \u002Fusr\u002Fbin\u002Fapt statt nur apt), um \"Path Injection\" Angriffe zu verhindern.",[16,36989,36990],{},"Modularität nutzen (\u002Fetc\u002Fsudoers.d\u002F): Anstatt die Hauptdatei \u002Fetc\u002Fsudoers zu verändern, erstelle separate Dateien im Verzeichnis \u002Fetc\u002Fsudoers.d\u002F. Das ist sauberer und weniger fehleranfällig bei Systemupdates.",[16,36992,36993],{},"Beispiel: sudo visudo -f \u002Fetc\u002Fsudoers.d\u002Fmein-projekt",[16,36995,36996],{},"Gruppen statt Einzeluser: Nutze Gruppen (%gruppe), um die Verwaltung einfacher zu machen. Wenn ein neuer Admin dazukommt, musst du nur die Gruppe ändern, nicht die sudoers-Datei.",[54,36998,37000],{"id":36999},"kurzübersicht-der-platzhalter","Kurzübersicht der Platzhalter",[645,37002,37003,37016],{},[648,37004,37005],{},[651,37006,37007,37012],{},[654,37008,37009],{},[26,37010,37011],{},"Platzhalter",[654,37013,37014],{},[26,37015,5483],{},[670,37017,37018,37025,37033,37041],{},[651,37019,37020,37022],{},[675,37021,36890],{},[675,37023,37024],{},"Gilt für alle Benutzer, alle Hosts oder alle Befehle.",[651,37026,37027,37030],{},[675,37028,37029],{},"%group",[675,37031,37032],{},"Bezieht sich auf eine Benutzergruppe (z. B. %sudo).",[651,37034,37035,37038],{},[675,37036,37037],{},"(ALL:ALL)",[675,37039,37040],{},"Erlaubt das Ausführen als jeder beliebige User und jede beliebige Gruppe.",[651,37042,37043,37045],{},[675,37044,36932],{},[675,37046,37047],{},"Erfordert keine Passworteingabe für die nachfolgenden Befehle.",[54,37049,37051],{"id":37050},"prinizipien","Prinizipien",[228,37053,37055],{"id":37054},"das-letzte-gewinnt-the-last-match-wins","Das Letzte gewinnt. (The Last Match Wins)",[16,37057,37058],{},"Die sudoers-Datei wird von oben nach unten (sequenziell) eingelesen. Wenn eine Regel auf einen Benutzer zutrifft, werden die Berechtigungen geladen. Wenn eine weitere Regel weiter unten in der Datei ebenfalls auf denselben Benutzer zutrifft, wird diese neue Regel auf die bisherigen Regeln aufgeschlagen oder sie überschreibt spezifische Teile der vorherigen Regeln.",[16,37060,37061],{},"Hier ist die detaillierte Aufschlüsselung, wie sich das in verschiedenen Szenarien verhält:",[995,37063,37065],{"id":37064},"_1-das-prinzip-der-addition-kumulativ","1. Das Prinzip der Addition (Kumulativ)",[16,37067,37068],{},"Wenn zwei Regeln unterschiedliche Befehle erlauben, werden sie einfach kombiniert. Der Benutzer erhält die Summe aller erlaubten Befehle.",[16,37070,6940],{},[11,37072,37074],{"id":37073},"regel-1-oben","Regel 1 (oben)",[3392,37076,37078],{"className":3394,"code":37077,"language":3396,"meta":225,"style":225},"max ALL=(ALL) \u002Fusr\u002Fbin\u002Fapt-get\n\n# Regel 2 (weiter unten)\nmax ALL=(ALL) \u002Fusr\u002Fbin\u002Fsystemctl\n\n",[3398,37079,37080,37095,37099,37104],{"__ignoreMap":225},[2915,37081,37082,37084,37086,37088,37090,37092],{"class":3402,"line":3403},[2915,37083,36825],{"class":3406},[2915,37085,36828],{"class":3414},[2915,37087,5140],{"class":3529},[2915,37089,36890],{"class":3406},[2915,37091,5056],{"class":3529},[2915,37093,37094],{"class":3414},"\u002Fusr\u002Fbin\u002Fapt-get\n",[2915,37096,37097],{"class":3402,"line":1117},[2915,37098,3506],{"emptyLinePlaceholder":3505},[2915,37100,37101],{"class":3402,"line":1125},[2915,37102,37103],{"class":3511},"# Regel 2 (weiter unten)\n",[2915,37105,37106,37108,37110,37112,37114,37116],{"class":3402,"line":3515},[2915,37107,36825],{"class":3406},[2915,37109,36828],{"class":3414},[2915,37111,5140],{"class":3529},[2915,37113,36890],{"class":3406},[2915,37115,5056],{"class":3529},[2915,37117,37118],{"class":3414},"\u002Fusr\u002Fbin\u002Fsystemctl\n",[16,37120,37121],{},"Ergebnis: max darf sowohl apt-get als auch systemctl ausführen. Es gibt hier keinen \"Verlust\", sondern eine Erweiterung.",[995,37123,37125],{"id":37124},"_2-das-prinzip-der-überschreibung-override","2. Das Prinzip der Überschreibung (Override)",[16,37127,37128],{},"Ein Konflikt entsteht wirklich erst, wenn sich die Parameter (wie NOPASSWD oder der RunAsUser) für den gleichen Befehl widersprechen. In diesem Fall überschreibt die letzte gefundene Regel die vorherige.",[16,37130,37131],{},"Beispiel (Das Passwort-Dilemma):",[11,37133,37135],{"id":37134},"regel-1-erlaubt-alles-ohne-passwort","Regel 1: Erlaubt alles ohne Passwort",[3392,37137,37139],{"className":3394,"code":37138,"language":3396,"meta":225,"style":225},"max ALL=(ALL) NOPASSWD: ALL\n\n# Regel 2: Erlaubt spezifisch apt-get, aber ERZWINGT ein Passwort\nmax ALL=(ALL) \u002Fusr\u002Fbin\u002Fapt-get\n\n",[3398,37140,37141,37158,37162,37167],{"__ignoreMap":225},[2915,37142,37143,37145,37147,37149,37151,37153,37155],{"class":3402,"line":3403},[2915,37144,36825],{"class":3406},[2915,37146,36828],{"class":3414},[2915,37148,5140],{"class":3529},[2915,37150,36890],{"class":3406},[2915,37152,5056],{"class":3529},[2915,37154,36932],{"class":3414},[2915,37156,37157],{"class":3414}," ALL\n",[2915,37159,37160],{"class":3402,"line":1117},[2915,37161,3506],{"emptyLinePlaceholder":3505},[2915,37163,37164],{"class":3402,"line":1125},[2915,37165,37166],{"class":3511},"# Regel 2: Erlaubt spezifisch apt-get, aber ERZWINGT ein Passwort\n",[2915,37168,37169,37171,37173,37175,37177,37179],{"class":3402,"line":3515},[2915,37170,36825],{"class":3406},[2915,37172,36828],{"class":3414},[2915,37174,5140],{"class":3529},[2915,37176,36890],{"class":3406},[2915,37178,5056],{"class":3529},[2915,37180,37094],{"class":3414},[16,37182,37183],{},"Ergebnis: Wenn max versucht, apt-get auszuführen, wird er nach einem Passwort gefragt. Obwohl Regel 1 \"alles ohne Passwort\" erlaubt hat, hat die spätere Regel 2 die Anweisung für apt-arg mit der Passwort-Pflicht überschrieben.",[995,37185,37187],{"id":37186},"_3-konflikte-durch-gruppen-vs-benutzer-spezifisch-schlägt-generell","3. Konflikte durch Gruppen vs. Benutzer (Spezifisch schlägt Generell)",[16,37189,37190],{},"Oft ist ein Benutzer Mitglied einer Gruppe (z. B. %admin). Hier greifen zwei Regeln gleichzeitig: die Gruppenregel und die Benutzerregel.",[16,37192,6940],{},[11,37194,37196],{"id":37195},"regel-1-die-gruppe-admin-darf-alles-aber-mit-passwort","Regel 1: Die Gruppe 'admin' darf alles, aber MIT Passwort",[3392,37198,37200],{"className":3394,"code":37199,"language":3396,"meta":225,"style":225},"%admin ALL=(ALL) ALL\n\n# Regel 2: Der Benutzer 'max' (ist Mitglied von admin) darf alles OHNE Passwort\nmax ALL=(ALL) NOPASSWD: ALL\n\n",[3398,37201,37202,37216,37220,37225],{"__ignoreMap":225},[2915,37203,37204,37206,37208,37210,37212,37214],{"class":3402,"line":3403},[2915,37205,36852],{"class":3406},[2915,37207,36828],{"class":3414},[2915,37209,5140],{"class":3529},[2915,37211,36890],{"class":3406},[2915,37213,5056],{"class":3529},[2915,37215,36838],{"class":3414},[2915,37217,37218],{"class":3402,"line":1117},[2915,37219,3506],{"emptyLinePlaceholder":3505},[2915,37221,37222],{"class":3402,"line":1125},[2915,37223,37224],{"class":3511},"# Regel 2: Der Benutzer 'max' (ist Mitglied von admin) darf alles OHNE Passwort\n",[2915,37226,37227,37229,37231,37233,37235,37237,37239],{"class":3402,"line":3515},[2915,37228,36825],{"class":3406},[2915,37230,36828],{"class":3414},[2915,37232,5140],{"class":3529},[2915,37234,36890],{"class":3406},[2915,37236,5056],{"class":3529},[2915,37238,36932],{"class":3414},[2915,37240,37157],{"class":3414},[16,37242,37243],{},"Ergebnis: Da die Regel für max spezifischer ist und nach der Gruppenregel kommt, gewinnt die NOPASSWD-Einstellung für ihn. Er kann Befehle ohne Passwort ausführen, während andere Mitglieder der Gruppe admin weiterhin nach einem Passwort gefragt werden.",[995,37245,37247],{"id":37246},"_4-besonderheit-etcsudoersd","4. Besonderheit: \u002Fetc\u002Fsudoers.d\u002F",[16,37249,37250],{},"Das Verzeichnis \u002Fetc\u002Fsudoers.d\u002F wird am Ende der Haupt-sudoers-Datei per #includedir eingebunden.",[16,37252,37253],{},"Das bedeutet: Alles, was in den Dateien im sudoers.d-Ordner steht, hat Vorrang vor den Einträgen in der Haupt-sudoers-Datei, weil diese Dateien technisch gesehen \"ganz unten\" in der Konfigurationskette gelesen werden.",[16,37255,37256],{},"Pro-Tipp für die Praxis: Wenn du eine Berechtigung für einen Benutzer in der Hauptdatei einschränken willst, musst du diese Einschränkung in einer Datei innerhalb von \u002Fetc\u002Fsudoers.d\u002F platzieren, damit sie die (eventuell mächtigeren) Regeln aus der Hauptdatei überschreibt.",[228,37258,1168],{"id":37259},"zusammenfassung",[645,37261,37262,37275],{},[648,37263,37264],{},[651,37265,37266,37271],{},[654,37267,37268],{},[26,37269,37270],{},"Szenario",[654,37272,37273],{},[26,37274,705],{},[670,37276,37277,37285,37293,37301],{},[651,37278,37279,37282],{},[675,37280,37281],{},"Unterschiedliche Befehle",[675,37283,37284],{},"Befehle werden addiert (User bekommt mehr Rechte).",[651,37286,37287,37290],{},[675,37288,37289],{},"Gleiche Befehle, andere Parameter",[675,37291,37292],{},"Die letzte Regel überschreibt die vorherige.",[651,37294,37295,37298],{},[675,37296,37297],{},"Gruppe vs. Einzelner User",[675,37299,37300],{},"Die letzte zutreffende Regel (meist die spezifischere) gewinnt.",[651,37302,37303,37306],{},[675,37304,37305],{},"Hauptdatei vs. sudoers.d\u002F",[675,37307,37308],{},"Die Dateien in sudoers.d\u002F gewinnen (da sie zuletzt gelesen werden).",[11,37310,37312],{"id":37311},"dateien-suchen-find-grep-sed","Dateien suchen: find, grep, sed",[54,37314,37316],{"id":37315},"find-dateien-und-verzeichnisse-suchen","find – Dateien und Verzeichnisse suchen",[3392,37318,37320],{"className":3394,"code":37319,"language":3396,"meta":225,"style":225},"find START_PFAD OPTIONEN AUSDRUCK\n\n",[3398,37321,37322],{"__ignoreMap":225},[2915,37323,37324,37326,37329,37332],{"class":3402,"line":3403},[2915,37325,8210],{"class":3406},[2915,37327,37328],{"class":3414}," START_PFAD",[2915,37330,37331],{"class":3414}," OPTIONEN",[2915,37333,37334],{"class":3414}," AUSDRUCK\n",[228,37336,37337],{"id":7701},"Wichtige Optionen:",[645,37339,37340,37356],{},[648,37341,37342],{},[651,37343,37344,37348,37352],{},[654,37345,37346],{},[26,37347,7715],{},[654,37349,37350],{},[26,37351,4550],{},[654,37353,37354],{},[26,37355,730],{},[670,37357,37358,37368,37378,37388,37398,37407,37417,37428,37439,37450,37460,37470,37480,37490,37501],{},[651,37359,37360,37362,37365],{},[675,37361,8274],{},[675,37363,37364],{},"Nach Name suchen",[675,37366,37367],{},"find \u002F -name \"*.txt\"",[651,37369,37370,37372,37375],{},[675,37371,8282],{},[675,37373,37374],{},"Name (case-insensitive)",[675,37376,37377],{},"find . -iname \"readme*\"",[651,37379,37380,37382,37385],{},[675,37381,8366],{},[675,37383,37384],{},"Nur Dateien",[675,37386,37387],{},"find . -type f",[651,37389,37390,37392,37395],{},[675,37391,8374],{},[675,37393,37394],{},"Nur Verzeichnisse",[675,37396,37397],{},"find . -type d",[651,37399,37400,37402,37405],{},[675,37401,8382],{},[675,37403,37404],{},"Nur Symlinks",[675,37406],{},[651,37408,37409,37411,37414],{},[675,37410,8314],{},[675,37412,37413],{},"Nach Besitzer",[675,37415,37416],{},"find \u002F -user root",[651,37418,37419,37422,37425],{},[675,37420,37421],{},"-group",[675,37423,37424],{},"Nach Gruppe",[675,37426,37427],{},"find \u002F -group admin",[651,37429,37430,37433,37436],{},[675,37431,37432],{},"-size +2G",[675,37434,37435],{},"Größer als 2 GB",[675,37437,37438],{},"find \u002F -size +200M",[651,37440,37441,37444,37447],{},[675,37442,37443],{},"-size 0 \u002F -empty",[675,37445,37446],{},"Leere Dateien",[675,37448,37449],{},"find ~ -empty",[651,37451,37452,37455,37458],{},[675,37453,37454],{},"-mtime -7",[675,37456,37457],{},"Geändert in letzten 7 Tagen",[675,37459],{},[651,37461,37462,37465,37468],{},[675,37463,37464],{},"-mtime +30",[675,37466,37467],{},"Älter als 30 Tage",[675,37469],{},[651,37471,37472,37474,37477],{},[675,37473,17171],{},[675,37475,37476],{},"Max. Suchtiefe",[675,37478,37479],{},"find . -maxdepth 2 -name \"*.log\"",[651,37481,37482,37485,37487],{},[675,37483,37484],{},"-not",[675,37486,17299],{},[675,37488,37489],{},"find . -not -name \"*.bak\"",[651,37491,37492,37495,37498],{},[675,37493,37494],{},"-exec",[675,37496,37497],{},"Befehl auf Ergebnis ausführen",[675,37499,37500],{},"find . -name \"*.tmp\" -exec rm {} ;",[651,37502,37503,37505,37508],{},[675,37504,17245],{},[675,37506,37507],{},"Gefundene Dateien löschen",[675,37509,37510],{},"find . -name \"*.bak\" -delete",[228,37512,7653],{"id":8675},[11,37514,37516],{"id":37515},"alle-txt-dateien-im-aktuellen-verzeichnis","Alle .txt Dateien im aktuellen Verzeichnis",[3392,37518,37520],{"className":3394,"code":37519,"language":3396,"meta":225,"style":225},"find . -name \"*.txt\" -type f\n\n# Dateien mit Inhalt durchsuchen\n\nfind . -type f -exec grep \"suchbegriff\" '{}'\n\n",[3398,37521,37522,37537,37541,37546,37550],{"__ignoreMap":225},[2915,37523,37524,37526,37528,37530,37533,37535],{"class":3402,"line":3403},[2915,37525,8210],{"class":3406},[2915,37527,8232],{"class":3414},[2915,37529,8235],{"class":3410},[2915,37531,37532],{"class":3414}," \"*.txt\"",[2915,37534,8248],{"class":3410},[2915,37536,5622],{"class":3414},[2915,37538,37539],{"class":3402,"line":1117},[2915,37540,3506],{"emptyLinePlaceholder":3505},[2915,37542,37543],{"class":3402,"line":1125},[2915,37544,37545],{"class":3511},"# Dateien mit Inhalt durchsuchen\n",[2915,37547,37548],{"class":3402,"line":3515},[2915,37549,3506],{"emptyLinePlaceholder":3505},[2915,37551,37552,37554,37556,37558,37560,37562,37564,37567],{"class":3402,"line":3520},[2915,37553,8210],{"class":3406},[2915,37555,8232],{"class":3414},[2915,37557,8248],{"class":3410},[2915,37559,9021],{"class":3414},[2915,37561,8542],{"class":3410},[2915,37563,7682],{"class":3414},[2915,37565,37566],{"class":3414}," \"suchbegriff\"",[2915,37568,37569],{"class":3414}," '{}'\n",[16,37571,17221],{},[11,37573,37575],{"id":37574},"dateien-älter-als-30-tage-löschen","Dateien älter als 30 Tage löschen",[3392,37577,37579],{"className":3394,"code":37578,"language":3396,"meta":225,"style":225},"find \u002Fhome\u002Fuser\u002Flogs\u002F -type f -mtime 30 -exec rm {}\n\n# Leere Dateien im Home finden\n\nfind ~ -empty\n\n",[3398,37580,37581,37604,37608,37613,37617],{"__ignoreMap":225},[2915,37582,37583,37585,37588,37590,37592,37594,37597,37599,37601],{"class":3402,"line":3403},[2915,37584,8210],{"class":3406},[2915,37586,37587],{"class":3414}," \u002Fhome\u002Fuser\u002Flogs\u002F",[2915,37589,8248],{"class":3410},[2915,37591,9021],{"class":3414},[2915,37593,8488],{"class":3410},[2915,37595,37596],{"class":3410}," 30",[2915,37598,8542],{"class":3410},[2915,37600,8545],{"class":3414},[2915,37602,37603],{"class":3414}," {}\n",[2915,37605,37606],{"class":3402,"line":1117},[2915,37607,3506],{"emptyLinePlaceholder":3505},[2915,37609,37610],{"class":3402,"line":1125},[2915,37611,37612],{"class":3511},"# Leere Dateien im Home finden\n",[2915,37614,37615],{"class":3402,"line":3515},[2915,37616,3506],{"emptyLinePlaceholder":3505},[2915,37618,37619,37621,37624],{"class":3402,"line":3520},[2915,37620,8210],{"class":3406},[2915,37622,37623],{"class":3414}," ~",[2915,37625,17403],{"class":3410},[54,37627,37629],{"id":37628},"grep-in-textdateien-suchen","grep – In Textdateien suchen",[3392,37631,37633],{"className":3394,"code":37632,"language":3396,"meta":225,"style":225},"grep [OPTIONEN] ‘MUSTER‘ DATEI\n\n",[3398,37634,37635],{"__ignoreMap":225},[2915,37636,37637,37639],{"class":3402,"line":3403},[2915,37638,7645],{"class":3406},[2915,37640,37641],{"class":3529}," [OPTIONEN] ‘MUSTER‘ DATEI\n",[228,37643,37337],{"id":7946},[645,37645,37646,37658],{},[648,37647,37648],{},[651,37649,37650,37654],{},[654,37651,37652],{},[26,37653,7715],{},[654,37655,37656],{},[26,37657,4550],{},[670,37659,37660,37667,37674,37681,37688,37695,37703],{},[651,37661,37662,37664],{},[675,37663,7726],{},[675,37665,37666],{},"Case-insensitive",[651,37668,37669,37671],{},[675,37670,7742],{},[675,37672,37673],{},"Zeilennummern anzeigen",[651,37675,37676,37678],{},[675,37677,7734],{},[675,37679,37680],{},"Nur Zeilen die NICHT passen",[651,37682,37683,37685],{},[675,37684,7765],{},[675,37686,37687],{},"Anzahl der Treffer",[651,37689,37690,37692],{},[675,37691,4853],{},[675,37693,37694],{},"Rekursiv in Verzeichnissen",[651,37696,37697,37700],{},[675,37698,37699],{},"-A1",[675,37701,37702],{},"1 Zeile nach dem Treffer anzeigen",[651,37704,37705,37708],{},[675,37706,37707],{},"-B2",[675,37709,37710],{},"2 Zeilen vor dem Treffer anzeigen",[228,37712,37714],{"id":37713},"reguläre-ausdrücke-für-grep","Reguläre Ausdrücke für grep:",[645,37716,37717,37729],{},[648,37718,37719],{},[651,37720,37721,37725],{},[654,37722,37723],{},[26,37724,6348],{},[654,37726,37727],{},[26,37728,5483],{},[670,37730,37731,37737,37744,37750,37757,37764,37773,37782],{},[651,37732,37733,37735],{},[675,37734,6584],{},[675,37736,16253],{},[651,37738,37739,37741],{},[675,37740,5078],{},[675,37742,37743],{},"Vorheriges Zeichen beliebig oft",[651,37745,37746,37748],{},[675,37747,34764],{},[675,37749,34735],{},[651,37751,37752,37755],{},[675,37753,37754],{},"^text",[675,37756,16260],{},[651,37758,37759,37762],{},[675,37760,37761],{},"text$",[675,37763,16267],{},[651,37765,37766,37770],{},[675,37767,37768],{},[2915,37769,16296],{},[675,37771,37772],{},"Ein Zeichen aus der Menge",[651,37774,37775,37779],{},[675,37776,37777],{},[2915,37778,16306],{},[675,37780,37781],{},"Kein Zeichen aus der Menge",[651,37783,37784,37788],{},[675,37785,37786],{},[2915,37787,16316],{},[675,37789,34773],{},[228,37791,7653],{"id":12120},[11,37793,37795],{"id":37794},"zeilen-die-mit-könig-beginnen","Zeilen die mit \"König\" beginnen",[3392,37797,37799],{"className":3394,"code":37798,"language":3396,"meta":225,"style":225},"grep \"^König\" datei.txt\n\n# Zeilen die mit \"zz\" enden\n\ngrep \"zz$\" datei.txt\n\n# Case-insensitive Suche\n\ngrep -i \"suchbegriff\" datei.txt\n\n# In \u002Fetc\u002Fpasswd nach Bash-Benutzern suchen\n\ngrep \"\u002Fbin\u002Fbash\" \u002Fetc\u002Fpasswd\n\n",[3398,37800,37801,37810,37814,37819,37823,37832,37836,37841,37845,37855,37859,37864,37868],{"__ignoreMap":225},[2915,37802,37803,37805,37808],{"class":3402,"line":3403},[2915,37804,7645],{"class":3406},[2915,37806,37807],{"class":3414}," \"^König\"",[2915,37809,7698],{"class":3414},[2915,37811,37812],{"class":3402,"line":1117},[2915,37813,3506],{"emptyLinePlaceholder":3505},[2915,37815,37816],{"class":3402,"line":1125},[2915,37817,37818],{"class":3511},"# Zeilen die mit \"zz\" enden\n",[2915,37820,37821],{"class":3402,"line":3515},[2915,37822,3506],{"emptyLinePlaceholder":3505},[2915,37824,37825,37827,37830],{"class":3402,"line":3520},[2915,37826,7645],{"class":3406},[2915,37828,37829],{"class":3414}," \"zz$\"",[2915,37831,7698],{"class":3414},[2915,37833,37834],{"class":3402,"line":5070},[2915,37835,3506],{"emptyLinePlaceholder":3505},[2915,37837,37838],{"class":3402,"line":5075},[2915,37839,37840],{"class":3511},"# Case-insensitive Suche\n",[2915,37842,37843],{"class":3402,"line":5093},[2915,37844,3506],{"emptyLinePlaceholder":3505},[2915,37846,37847,37849,37851,37853],{"class":3402,"line":5098},[2915,37848,7645],{"class":3406},[2915,37850,7692],{"class":3410},[2915,37852,37566],{"class":3414},[2915,37854,7698],{"class":3414},[2915,37856,37857],{"class":3402,"line":5207},[2915,37858,3506],{"emptyLinePlaceholder":3505},[2915,37860,37861],{"class":3402,"line":5212},[2915,37862,37863],{"class":3511},"# In \u002Fetc\u002Fpasswd nach Bash-Benutzern suchen\n",[2915,37865,37866],{"class":3402,"line":5218},[2915,37867,3506],{"emptyLinePlaceholder":3505},[2915,37869,37870,37872,37875],{"class":3402,"line":5223},[2915,37871,7645],{"class":3406},[2915,37873,37874],{"class":3414}," \"\u002Fbin\u002Fbash\"",[2915,37876,8758],{"class":3414},[54,37878,37880],{"id":37879},"sed-stream-editor","sed – Stream Editor",[228,37882,8604],{"id":8603},[3392,37884,37886],{"className":3394,"code":37885,"language":3396,"meta":225,"style":225},"sed (Stream Editor) bearbeitet Text zeilenweise. Es liest stdin oder Dateien, wendet Transformationsregeln an und schreibt das Ergebnis nach stdout.\n\n",[3398,37887,37888],{"__ignoreMap":225},[2915,37889,37890,37892,37895,37898],{"class":3402,"line":3403},[2915,37891,7916],{"class":3406},[2915,37893,37894],{"class":3529}," (Stream ",[2915,37896,37897],{"class":3414},"Editor",[2915,37899,37900],{"class":3529},") bearbeitet Text zeilenweise. Es liest stdin oder Dateien, wendet Transformationsregeln an und schreibt das Ergebnis nach stdout.\n",[16,37902,37903],{},[26,37904,35890],{},[3392,37906,37908],{"className":3394,"code":37907,"language":3396,"meta":225,"style":225},"sed 'BEFEHL' datei\n\nsed -e 'BEFEHL1' -e 'BEFEHL2' datei\n\n",[3398,37909,37910,37920,37924],{"__ignoreMap":225},[2915,37911,37912,37914,37917],{"class":3402,"line":3403},[2915,37913,7916],{"class":3406},[2915,37915,37916],{"class":3414}," 'BEFEHL'",[2915,37918,37919],{"class":3414}," datei\n",[2915,37921,37922],{"class":3402,"line":1117},[2915,37923,3506],{"emptyLinePlaceholder":3505},[2915,37925,37926,37928,37930,37933,37935,37938],{"class":3402,"line":1125},[2915,37927,7916],{"class":3406},[2915,37929,19828],{"class":3410},[2915,37931,37932],{"class":3414}," 'BEFEHL1'",[2915,37934,19828],{"class":3410},[2915,37936,37937],{"class":3414}," 'BEFEHL2'",[2915,37939,37919],{"class":3414},[228,37941,19066],{"id":19065},[645,37943,37944,37960],{},[648,37945,37946],{},[651,37947,37948,37952,37956],{},[654,37949,37950],{},[26,37951,7715],{},[654,37953,37954],{},[26,37955,11548],{},[654,37957,37958],{},[26,37959,5483],{},[670,37961,37962,37971,37980,37989,38002,38011,38020,38029,38038],{},[651,37963,37964,37966,37968],{},[675,37965,7742],{},[675,37967,19093],{},[675,37969,37970],{},"Keine automatische Ausgabe; p-Befehl nötig",[651,37972,37973,37975,37977],{},[675,37974,19101],{},[675,37976,19104],{},[675,37978,37979],{},"Skript direkt in der Kommandozeile",[651,37981,37982,37984,37986],{},[675,37983,18176],{},[675,37985,19114],{},[675,37987,37988],{},"sed-Skript aus Datei lesen",[651,37990,37991,37995,37999],{},[675,37992,7726,37993],{},[2915,37994,19124],{},[675,37996,19127,37997],{},[2915,37998,19130],{},[675,38000,38001],{},"Datei direkt bearbeiten (optional Backup)",[651,38003,38004,38007,38009],{},[675,38005,38006],{},"-r \u002F -E",[675,38008,19141],{},[675,38010,16079],{},[651,38012,38013,38015,38017],{},[675,38014,4849],{},[675,38016,19151],{},[675,38018,38019],{},"Dateien separat behandeln (NR wird zurückgesetzt)",[651,38021,38022,38024,38026],{},[675,38023,19159],{},[675,38025,19162],{},[675,38027,38028],{},"NUL (\\0) als Zeilentrenner statt \\n",[651,38030,38031,38033,38035],{},[675,38032,19170],{},[675,38034],{},[675,38036,38037],{},"Sichere Ausführung (kein e\u002Fr\u002Fw)",[651,38039,38040,38042,38044],{},[675,38041,19180],{},[675,38043],{},[675,38045,38046],{},"POSIX-Striktmodus",[228,38048,19189],{"id":19188},[645,38050,38051,38063],{},[648,38052,38053],{},[651,38054,38055,38059],{},[654,38056,38057],{},[26,38058,6993],{},[654,38060,38061],{},[26,38062,5483],{},[670,38064,38065,38073,38080,38087,38095,38103,38109,38116,38124,38132,38139,38146,38153,38160,38167,38174,38181,38188],{},[651,38066,38067,38070],{},[675,38068,38069],{},"s\u002Falt\u002Fneu\u002F",[675,38071,38072],{},"Substituieren (ersetzen), erste Vorkommen",[651,38074,38075,38078],{},[675,38076,38077],{},"s\u002Falt\u002Fneu\u002Fg",[675,38079,8018],{},[651,38081,38082,38085],{},[675,38083,38084],{},"s\u002Falt\u002Fneu\u002Fi",[675,38086,15999],{},[651,38088,38089,38092],{},[675,38090,38091],{},"s\u002Falt\u002Fneu\u002F2",[675,38093,38094],{},"Nur das 2. Vorkommen ersetzen",[651,38096,38097,38100],{},[675,38098,38099],{},"s\u002Falt\u002Fneu\u002Fgp",[675,38101,38102],{},"Ersetzen und Zeile ausgeben (mit -n)",[651,38104,38105,38107],{},[675,38106,11221],{},[675,38108,8058],{},[651,38110,38111,38113],{},[675,38112,16],{},[675,38114,38115],{},"Zeile ausgeben (extra)",[651,38117,38118,38121],{},[675,38119,38120],{},"q",[675,38122,38123],{},"Verarbeitung beenden (quit)",[651,38125,38126,38129],{},[675,38127,38128],{},"Q",[675,38130,38131],{},"Sofort beenden ohne Ausgabe",[651,38133,38134,38136],{},[675,38135,19253],{},[675,38137,38138],{},"TEXT vor der Zeile einfügen",[651,38140,38141,38143],{},[675,38142,19261],{},[675,38144,38145],{},"TEXT nach der Zeile anhängen",[651,38147,38148,38150],{},[675,38149,19269],{},[675,38151,38152],{},"Zeile durch TEXT ersetzen",[651,38154,38155,38158],{},[675,38156,38157],{},"y\u002Fabc\u002Fxyz\u002F",[675,38159,19280],{},[651,38161,38162,38164],{},[675,38163,5137],{},[675,38165,38166],{},"Zeilennummer ausgeben",[651,38168,38169,38171],{},[675,38170,19292],{},[675,38172,38173],{},"Nächste Zeile lesen",[651,38175,38176,38178],{},[675,38177,19300],{},[675,38179,38180],{},"Nächste Zeile an Pattern Space anhängen",[651,38182,38183,38185],{},[675,38184,19324],{},[675,38186,38187],{},"Inhalt von DATEI nach der Zeile einfügen",[651,38189,38190,38192],{},[675,38191,19340],{},[675,38193,19343],{},[228,38195,38197],{"id":38196},"adressen-adressierung-von-zeilen","Adressen (Adressierung von Zeilen)",[3392,38199,38201],{"className":3394,"code":38200,"language":3396,"meta":225,"style":225},"sed '3 d' # Nur Zeile 3 löschen\n\nsed '3,7 d' # Zeilen 3-7 löschen\n\nsed '\u002Fmuster\u002F d' # Zeilen löschen, die Muster enthalten\n\nsed '3,\u002Fende\u002F d' # Ab Zeile 3 bis zur Zeile mit \"ende\"\n\nsed '$ d' # Letzte Zeile löschen\n\nsed '1~2 d' # Jede 2. Zeile löschen (ab Zeile 1): 1,3,5,...\n\nsed '0~2 d' # Gerade Zeilen löschen: 2,4,6,...\n\n",[3398,38202,38203,38213,38217,38227,38231,38241,38245,38255,38259,38269,38273,38283,38287],{"__ignoreMap":225},[2915,38204,38205,38207,38210],{"class":3402,"line":3403},[2915,38206,7916],{"class":3406},[2915,38208,38209],{"class":3414}," '3 d'",[2915,38211,38212],{"class":3511}," # Nur Zeile 3 löschen\n",[2915,38214,38215],{"class":3402,"line":1117},[2915,38216,3506],{"emptyLinePlaceholder":3505},[2915,38218,38219,38221,38224],{"class":3402,"line":1125},[2915,38220,7916],{"class":3406},[2915,38222,38223],{"class":3414}," '3,7 d'",[2915,38225,38226],{"class":3511}," # Zeilen 3-7 löschen\n",[2915,38228,38229],{"class":3402,"line":3515},[2915,38230,3506],{"emptyLinePlaceholder":3505},[2915,38232,38233,38235,38238],{"class":3402,"line":3520},[2915,38234,7916],{"class":3406},[2915,38236,38237],{"class":3414}," '\u002Fmuster\u002F d'",[2915,38239,38240],{"class":3511}," # Zeilen löschen, die Muster enthalten\n",[2915,38242,38243],{"class":3402,"line":5070},[2915,38244,3506],{"emptyLinePlaceholder":3505},[2915,38246,38247,38249,38252],{"class":3402,"line":5075},[2915,38248,7916],{"class":3406},[2915,38250,38251],{"class":3414}," '3,\u002Fende\u002F d'",[2915,38253,38254],{"class":3511}," # Ab Zeile 3 bis zur Zeile mit \"ende\"\n",[2915,38256,38257],{"class":3402,"line":5093},[2915,38258,3506],{"emptyLinePlaceholder":3505},[2915,38260,38261,38263,38266],{"class":3402,"line":5098},[2915,38262,7916],{"class":3406},[2915,38264,38265],{"class":3414}," '$ d'",[2915,38267,38268],{"class":3511}," # Letzte Zeile löschen\n",[2915,38270,38271],{"class":3402,"line":5207},[2915,38272,3506],{"emptyLinePlaceholder":3505},[2915,38274,38275,38277,38280],{"class":3402,"line":5212},[2915,38276,7916],{"class":3406},[2915,38278,38279],{"class":3414}," '1~2 d'",[2915,38281,38282],{"class":3511}," # Jede 2. Zeile löschen (ab Zeile 1): 1,3,5,...\n",[2915,38284,38285],{"class":3402,"line":5218},[2915,38286,3506],{"emptyLinePlaceholder":3505},[2915,38288,38289,38291,38294],{"class":3402,"line":5223},[2915,38290,7916],{"class":3406},[2915,38292,38293],{"class":3414}," '0~2 d'",[2915,38295,38296],{"class":3511}," # Gerade Zeilen löschen: 2,4,6,...\n",[228,38298,38300],{"id":38299},"reguläre-ausdrücke-in-sed","Reguläre Ausdrücke in sed",[645,38302,38303,38315],{},[648,38304,38305],{},[651,38306,38307,38311],{},[654,38308,38309],{},[26,38310,6348],{},[654,38312,38313],{},[26,38314,5483],{},[670,38316,38317,38324,38331,38338,38345,38351,38357,38366,38375,38382,38389,38397],{},[651,38318,38319,38321],{},[675,38320,6584],{},[675,38322,38323],{},"Beliebiges Zeichen",[651,38325,38326,38328],{},[675,38327,5078],{},[675,38329,38330],{},"0 oder mehr des vorherigen",[651,38332,38333,38335],{},[675,38334,13172],{},[675,38336,38337],{},"1 oder mehr (ERE mit -E)",[651,38339,38340,38342],{},[675,38341,16286],{},[675,38343,38344],{},"0 oder 1 (ERE mit -E)",[651,38346,38347,38349],{},[675,38348,13910],{},[675,38350,16260],{},[651,38352,38353,38355],{},[675,38354,4897],{},[675,38356,16267],{},[651,38358,38359,38363],{},[675,38360,38361],{},[2915,38362,16296],{},[675,38364,38365],{},"Zeichenklasse",[651,38367,38368,38372],{},[675,38369,38370],{},[2915,38371,16306],{},[675,38373,38374],{},"Negierte Zeichenklasse",[651,38376,38377,38379],{},[675,38378,19584],{},[675,38380,38381],{},"Gruppe (BRE)",[651,38383,38384,38386],{},[675,38385,19584],{},[675,38387,38388],{},"Gruppe (ERE mit -E)",[651,38390,38391,38394],{},[675,38392,38393],{},"\\1",[675,38395,38396],{},"Rückreferenz auf Gruppe 1",[651,38398,38399,38401],{},[675,38400,18382],{},[675,38402,38403],{},"Gesamter gefundener Text im Ersatz",[228,38405,8676],{"id":12610},[11,38407,38409],{"id":38408},"einfaches-ersetzen","Einfaches Ersetzen",[3392,38411,38413],{"className":3394,"code":38412,"language":3396,"meta":225,"style":225},"sed 's\u002Falt\u002Fneu\u002F' datei.txt\n\n# Alle Vorkommen ersetzen\n\nsed 's\u002Falt\u002Fneu\u002Fg' datei.txt\n\n# Groß-\u002FKleinschreibung ignorieren\n\nsed 's\u002Ffehler\u002FFEHLER\u002Fgi' datei.txt\n\n# Datei direkt bearbeiten (in-place)\n\nsed -i 's\u002Falt\u002Fneu\u002Fg' datei.txt\n\n# Backup erstellen und in-place bearbeiten\n\nsed -i.bak 's\u002Falt\u002Fneu\u002Fg' datei.txt\n\n# (erstellt datei.txt.bak als Sicherung)\n\n# Zeilen löschen, die \"kommentar\" enthalten\n\nsed '\u002Fkommentar\u002Fd' datei.txt\n\n# Leerzeilen löschen\n\nsed '\u002F^$\u002Fd' datei.txt\n\n# Leerzeilen und Zeilen mit nur Leerzeichen löschen\n\nsed '\u002F^s*$\u002Fd' datei.txt\n\n# Kommentarzeilen (# am Anfang) entfernen\n\nsed '\u002F^#\u002Fd' datei.txt\n\nsed '\u002F^[[:space:]]*#\u002Fd' datei.txt\n\n# Nur Zeilen ausgeben, die \"Muster\" enthalten (-n p)\n\nsed -n '\u002Fmuster\u002Fp' datei.txt\n\n# Leerzeichen am Zeilenende entfernen\n\nsed 's\u002F[[:space:]]*$\u002F\u002F' datei.txt\n\n# Führende Leerzeichen entfernen\n\nsed 's\u002F^[[:space:]]*\u002F\u002F' datei.txt\n\n# Beides (trim)\n\nsed 's\u002F^[[:space:]]\u002F\u002F; s\u002F[[:space:]]$\u002F\u002F' datei.txt\n\n# Zeilen 5-10 ausgeben\n\nsed -n '5,10p' datei.txt\n\n# Erste Zeile löschen (Header entfernen)\n\nsed '1d' datei.txt\n\n# Letzte Zeile löschen\n\nsed '$d' datei.txt\n\n# Zeilenumbruch nach \";\" einfügen (Erweiterter Regex)\n\nsed -E 's\u002F;\u002F;n\u002Fg' datei.txt\n\n# Rückreferenz: Wort in Anführungszeichen einschließen\n\nsed 's\u002F(Wort)\u002F\"1\"\u002F' datei.txt\n\nsed -E 's\u002F(Wort)\u002F\"1\"\u002F' datei.txt # ERE-Variante\n\n# Text nach Zeile 3 einfügen\n\nsed '3aDies ist eine neue Zeile' datei.txt\n\n# Text vor Zeile 3 einfügen\n\nsed '3iDies kommt davor' datei.txt\n\n# Zeile 3 ersetzen\n\nsed '3cDiese Zeile ersetzt die alte' datei.txt\n\n# Mehrere Befehle (mit -e oder Semikolon)\n\nsed -e 's\u002Ffoo\u002Fbar\u002Fg' -e 's\u002Fbaz\u002Fqux\u002Fg' datei.txt\n\nsed 's\u002Ffoo\u002Fbar\u002Fg; s\u002Fbaz\u002Fqux\u002Fg' datei.txt\n\n# Skript aus Datei\n\nsed -f mein_skript.sed datei.txt\n\n# Nur erste Zeile ausgeben (wie head -1)\n\nsed -n '1p' datei.txt\n\n# Zeilenanzahl begrenzen (wie head -5)\n\nsed '5q' datei.txt\n\n# Zeichenersatz (y-Befehl): Kleinbuchstaben → Großbuchstaben\n\nsed 'y\u002Fabcdefghijklmnopqrstuvwxyz\u002FABCDEFGHIJKLMNOPQRSTUVWXYZ\u002F' datei.txt\n\n# Zeilennummern anzeigen (= gibt Nummer aus, p gibt Zeile aus)\n\nsed '=' datei.txt | sed 'N; s\u002Fn\u002Ft\u002F'\n\n# HTML-Tags entfernen\n\nsed 's\u002F\u003C[^>]*>\u002F\u002Fg' seite.html\n\n# DOS-Zeilenenden (rn) in Unix (n) umwandeln\n\nsed 's\u002Fr\u002F\u002F' datei.txt\n\n",[3398,38414,38415,38423,38427,38432,38436,38444,38448,38452,38456,38464,38468,38473,38477,38487,38491,38496,38500,38510,38514,38519,38523,38528,38532,38541,38545,38549,38553,38561,38565,38569,38573,38581,38585,38590,38594,38602,38606,38614,38618,38623,38627,38637,38641,38646,38650,38658,38662,38667,38671,38679,38683,38687,38691,38699,38703,38708,38712,38722,38726,38731,38735,38743,38747,38751,38755,38763,38767,38772,38776,38787,38791,38796,38800,38809,38813,38826,38830,38835,38839,38848,38852,38856,38860,38869,38873,38878,38882,38891,38895,38900,38904,38918,38922,38930,38934,38939,38943,38954,38958,38963,38967,38977,38981,38986,38990,38998,39002,39007,39011,39019,39023,39028,39032,39046,39050,39054,39058,39066,39070,39075,39079],{"__ignoreMap":225},[2915,38416,38417,38419,38421],{"class":3402,"line":3403},[2915,38418,7916],{"class":3406},[2915,38420,7941],{"class":3414},[2915,38422,7698],{"class":3414},[2915,38424,38425],{"class":3402,"line":1117},[2915,38426,3506],{"emptyLinePlaceholder":3505},[2915,38428,38429],{"class":3402,"line":1125},[2915,38430,38431],{"class":3511},"# Alle Vorkommen ersetzen\n",[2915,38433,38434],{"class":3402,"line":3515},[2915,38435,3506],{"emptyLinePlaceholder":3505},[2915,38437,38438,38440,38442],{"class":3402,"line":3520},[2915,38439,7916],{"class":3406},[2915,38441,8030],{"class":3414},[2915,38443,7698],{"class":3414},[2915,38445,38446],{"class":3402,"line":5070},[2915,38447,3506],{"emptyLinePlaceholder":3505},[2915,38449,38450],{"class":3402,"line":5075},[2915,38451,16373],{"class":3511},[2915,38453,38454],{"class":3402,"line":5093},[2915,38455,3506],{"emptyLinePlaceholder":3505},[2915,38457,38458,38460,38462],{"class":3402,"line":5098},[2915,38459,7916],{"class":3406},[2915,38461,19759],{"class":3414},[2915,38463,7698],{"class":3414},[2915,38465,38466],{"class":3402,"line":5207},[2915,38467,3506],{"emptyLinePlaceholder":3505},[2915,38469,38470],{"class":3402,"line":5212},[2915,38471,38472],{"class":3511},"# Datei direkt bearbeiten (in-place)\n",[2915,38474,38475],{"class":3402,"line":5218},[2915,38476,3506],{"emptyLinePlaceholder":3505},[2915,38478,38479,38481,38483,38485],{"class":3402,"line":5223},[2915,38480,7916],{"class":3406},[2915,38482,7692],{"class":3410},[2915,38484,8030],{"class":3414},[2915,38486,7698],{"class":3414},[2915,38488,38489],{"class":3402,"line":5229},[2915,38490,3506],{"emptyLinePlaceholder":3505},[2915,38492,38493],{"class":3402,"line":5253},[2915,38494,38495],{"class":3511},"# Backup erstellen und in-place bearbeiten\n",[2915,38497,38498],{"class":3402,"line":5266},[2915,38499,3506],{"emptyLinePlaceholder":3505},[2915,38501,38502,38504,38506,38508],{"class":3402,"line":5721},[2915,38503,7916],{"class":3406},[2915,38505,19804],{"class":3410},[2915,38507,8030],{"class":3414},[2915,38509,7698],{"class":3414},[2915,38511,38512],{"class":3402,"line":9401},[2915,38513,3506],{"emptyLinePlaceholder":3505},[2915,38515,38516],{"class":3402,"line":9406},[2915,38517,38518],{"class":3511},"# (erstellt datei.txt.bak als Sicherung)\n",[2915,38520,38521],{"class":3402,"line":9411},[2915,38522,3506],{"emptyLinePlaceholder":3505},[2915,38524,38525],{"class":3402,"line":9416},[2915,38526,38527],{"class":3511},"# Zeilen löschen, die \"kommentar\" enthalten\n",[2915,38529,38530],{"class":3402,"line":9428},[2915,38531,3506],{"emptyLinePlaceholder":3505},[2915,38533,38534,38536,38539],{"class":3402,"line":9433},[2915,38535,7916],{"class":3406},[2915,38537,38538],{"class":3414}," '\u002Fkommentar\u002Fd'",[2915,38540,7698],{"class":3414},[2915,38542,38543],{"class":3402,"line":9454},[2915,38544,3506],{"emptyLinePlaceholder":3505},[2915,38546,38547],{"class":3402,"line":9459},[2915,38548,19963],{"class":3511},[2915,38550,38551],{"class":3402,"line":9464},[2915,38552,3506],{"emptyLinePlaceholder":3505},[2915,38554,38555,38557,38559],{"class":3402,"line":9469},[2915,38556,7916],{"class":3406},[2915,38558,19974],{"class":3414},[2915,38560,7698],{"class":3414},[2915,38562,38563],{"class":3402,"line":9479},[2915,38564,3506],{"emptyLinePlaceholder":3505},[2915,38566,38567],{"class":3402,"line":9484},[2915,38568,19985],{"class":3511},[2915,38570,38571],{"class":3402,"line":9489},[2915,38572,3506],{"emptyLinePlaceholder":3505},[2915,38574,38575,38577,38579],{"class":3402,"line":9494},[2915,38576,7916],{"class":3406},[2915,38578,19996],{"class":3414},[2915,38580,7698],{"class":3414},[2915,38582,38583],{"class":3402,"line":9504},[2915,38584,3506],{"emptyLinePlaceholder":3505},[2915,38586,38587],{"class":3402,"line":9509},[2915,38588,38589],{"class":3511},"# Kommentarzeilen (# am Anfang) entfernen\n",[2915,38591,38592],{"class":3402,"line":9514},[2915,38593,3506],{"emptyLinePlaceholder":3505},[2915,38595,38596,38598,38600],{"class":3402,"line":9519},[2915,38597,7916],{"class":3406},[2915,38599,19935],{"class":3414},[2915,38601,7698],{"class":3414},[2915,38603,38604],{"class":3402,"line":9524},[2915,38605,3506],{"emptyLinePlaceholder":3505},[2915,38607,38608,38610,38612],{"class":3402,"line":9529},[2915,38609,7916],{"class":3406},[2915,38611,19948],{"class":3414},[2915,38613,7698],{"class":3414},[2915,38615,38616],{"class":3402,"line":9534},[2915,38617,3506],{"emptyLinePlaceholder":3505},[2915,38619,38620],{"class":3402,"line":9539},[2915,38621,38622],{"class":3511},"# Nur Zeilen ausgeben, die \"Muster\" enthalten (-n p)\n",[2915,38624,38625],{"class":3402,"line":9552},[2915,38626,3506],{"emptyLinePlaceholder":3505},[2915,38628,38629,38631,38633,38635],{"class":3402,"line":9557},[2915,38630,7916],{"class":3406},[2915,38632,8127],{"class":3410},[2915,38634,20117],{"class":3414},[2915,38636,7698],{"class":3414},[2915,38638,38639],{"class":3402,"line":9570},[2915,38640,3506],{"emptyLinePlaceholder":3505},[2915,38642,38643],{"class":3402,"line":9575},[2915,38644,38645],{"class":3511},"# Leerzeichen am Zeilenende entfernen\n",[2915,38647,38648],{"class":3402,"line":9588},[2915,38649,3506],{"emptyLinePlaceholder":3505},[2915,38651,38652,38654,38656],{"class":3402,"line":9593},[2915,38653,7916],{"class":3406},[2915,38655,20407],{"class":3414},[2915,38657,7698],{"class":3414},[2915,38659,38660],{"class":3402,"line":9598},[2915,38661,3506],{"emptyLinePlaceholder":3505},[2915,38663,38664],{"class":3402,"line":9603},[2915,38665,38666],{"class":3511},"# Führende Leerzeichen entfernen\n",[2915,38668,38669],{"class":3402,"line":9619},[2915,38670,3506],{"emptyLinePlaceholder":3505},[2915,38672,38673,38675,38677],{"class":3402,"line":9624},[2915,38674,7916],{"class":3406},[2915,38676,20433],{"class":3414},[2915,38678,7698],{"class":3414},[2915,38680,38681],{"class":3402,"line":9629},[2915,38682,3506],{"emptyLinePlaceholder":3505},[2915,38684,38685],{"class":3402,"line":9634},[2915,38686,20446],{"class":3511},[2915,38688,38689],{"class":3402,"line":9642},[2915,38690,3506],{"emptyLinePlaceholder":3505},[2915,38692,38693,38695,38697],{"class":3402,"line":9647},[2915,38694,7916],{"class":3406},[2915,38696,20459],{"class":3414},[2915,38698,7698],{"class":3414},[2915,38700,38701],{"class":3402,"line":9656},[2915,38702,3506],{"emptyLinePlaceholder":3505},[2915,38704,38705],{"class":3402,"line":9661},[2915,38706,38707],{"class":3511},"# Zeilen 5-10 ausgeben\n",[2915,38709,38710],{"class":3402,"line":9666},[2915,38711,3506],{"emptyLinePlaceholder":3505},[2915,38713,38714,38716,38718,38720],{"class":3402,"line":9671},[2915,38715,7916],{"class":3406},[2915,38717,8127],{"class":3410},[2915,38719,20145],{"class":3414},[2915,38721,7698],{"class":3414},[2915,38723,38724],{"class":3402,"line":9685},[2915,38725,3506],{"emptyLinePlaceholder":3505},[2915,38727,38728],{"class":3402,"line":9690},[2915,38729,38730],{"class":3511},"# Erste Zeile löschen (Header entfernen)\n",[2915,38732,38733],{"class":3402,"line":9711},[2915,38734,3506],{"emptyLinePlaceholder":3505},[2915,38736,38737,38739,38741],{"class":3402,"line":9716},[2915,38738,7916],{"class":3406},[2915,38740,20018],{"class":3414},[2915,38742,7698],{"class":3414},[2915,38744,38745],{"class":3402,"line":9721},[2915,38746,3506],{"emptyLinePlaceholder":3505},[2915,38748,38749],{"class":3402,"line":9726},[2915,38750,20029],{"class":3511},[2915,38752,38753],{"class":3402,"line":9734},[2915,38754,3506],{"emptyLinePlaceholder":3505},[2915,38756,38757,38759,38761],{"class":3402,"line":9739},[2915,38758,7916],{"class":3406},[2915,38760,20040],{"class":3414},[2915,38762,7698],{"class":3414},[2915,38764,38765],{"class":3402,"line":9747},[2915,38766,3506],{"emptyLinePlaceholder":3505},[2915,38768,38769],{"class":3402,"line":9752},[2915,38770,38771],{"class":3511},"# Zeilenumbruch nach \";\" einfügen (Erweiterter Regex)\n",[2915,38773,38774],{"class":3402,"line":9760},[2915,38775,3506],{"emptyLinePlaceholder":3505},[2915,38777,38778,38780,38782,38785],{"class":3402,"line":9765},[2915,38779,7916],{"class":3406},[2915,38781,16541],{"class":3410},[2915,38783,38784],{"class":3414}," 's\u002F;\u002F;n\u002Fg'",[2915,38786,7698],{"class":3414},[2915,38788,38789],{"class":3402,"line":9773},[2915,38790,3506],{"emptyLinePlaceholder":3505},[2915,38792,38793],{"class":3402,"line":9778},[2915,38794,38795],{"class":3511},"# Rückreferenz: Wort in Anführungszeichen einschließen\n",[2915,38797,38798],{"class":3402,"line":9786},[2915,38799,3506],{"emptyLinePlaceholder":3505},[2915,38801,38802,38804,38807],{"class":3402,"line":9791},[2915,38803,7916],{"class":3406},[2915,38805,38806],{"class":3414}," 's\u002F(Wort)\u002F\"1\"\u002F'",[2915,38808,7698],{"class":3414},[2915,38810,38811],{"class":3402,"line":9800},[2915,38812,3506],{"emptyLinePlaceholder":3505},[2915,38814,38815,38817,38819,38821,38823],{"class":3402,"line":9805},[2915,38816,7916],{"class":3406},[2915,38818,16541],{"class":3410},[2915,38820,38806],{"class":3414},[2915,38822,19951],{"class":3414},[2915,38824,38825],{"class":3511}," # ERE-Variante\n",[2915,38827,38828],{"class":3402,"line":20122},[2915,38829,3506],{"emptyLinePlaceholder":3505},[2915,38831,38832],{"class":3402,"line":20127},[2915,38833,38834],{"class":3511},"# Text nach Zeile 3 einfügen\n",[2915,38836,38837],{"class":3402,"line":20133},[2915,38838,3506],{"emptyLinePlaceholder":3505},[2915,38840,38841,38843,38846],{"class":3402,"line":20138},[2915,38842,7916],{"class":3406},[2915,38844,38845],{"class":3414}," '3aDies ist eine neue Zeile'",[2915,38847,7698],{"class":3414},[2915,38849,38850],{"class":3402,"line":20150},[2915,38851,3506],{"emptyLinePlaceholder":3505},[2915,38853,38854],{"class":3402,"line":20155},[2915,38855,20253],{"class":3511},[2915,38857,38858],{"class":3402,"line":20161},[2915,38859,3506],{"emptyLinePlaceholder":3505},[2915,38861,38862,38864,38867],{"class":3402,"line":20166},[2915,38863,7916],{"class":3406},[2915,38865,38866],{"class":3414}," '3iDies kommt davor'",[2915,38868,7698],{"class":3414},[2915,38870,38871],{"class":3402,"line":20178},[2915,38872,3506],{"emptyLinePlaceholder":3505},[2915,38874,38875],{"class":3402,"line":20183},[2915,38876,38877],{"class":3511},"# Zeile 3 ersetzen\n",[2915,38879,38880],{"class":3402,"line":20189},[2915,38881,3506],{"emptyLinePlaceholder":3505},[2915,38883,38884,38886,38889],{"class":3402,"line":20194},[2915,38885,7916],{"class":3406},[2915,38887,38888],{"class":3414}," '3cDiese Zeile ersetzt die alte'",[2915,38890,7698],{"class":3414},[2915,38892,38893],{"class":3402,"line":20206},[2915,38894,3506],{"emptyLinePlaceholder":3505},[2915,38896,38897],{"class":3402,"line":20211},[2915,38898,38899],{"class":3511},"# Mehrere Befehle (mit -e oder Semikolon)\n",[2915,38901,38902],{"class":3402,"line":20217},[2915,38903,3506],{"emptyLinePlaceholder":3505},[2915,38905,38906,38908,38910,38912,38914,38916],{"class":3402,"line":20222},[2915,38907,7916],{"class":3406},[2915,38909,19828],{"class":3410},[2915,38911,19831],{"class":3414},[2915,38913,19828],{"class":3410},[2915,38915,19836],{"class":3414},[2915,38917,7698],{"class":3414},[2915,38919,38920],{"class":3402,"line":20234},[2915,38921,3506],{"emptyLinePlaceholder":3505},[2915,38923,38924,38926,38928],{"class":3402,"line":20239},[2915,38925,7916],{"class":3406},[2915,38927,19858],{"class":3414},[2915,38929,7698],{"class":3414},[2915,38931,38932],{"class":3402,"line":20245},[2915,38933,3506],{"emptyLinePlaceholder":3505},[2915,38935,38936],{"class":3402,"line":20250},[2915,38937,38938],{"class":3511},"# Skript aus Datei\n",[2915,38940,38941],{"class":3402,"line":20256},[2915,38942,3506],{"emptyLinePlaceholder":3505},[2915,38944,38945,38947,38949,38952],{"class":3402,"line":20261},[2915,38946,7916],{"class":3406},[2915,38948,10089],{"class":3410},[2915,38950,38951],{"class":3414}," mein_skript.sed",[2915,38953,7698],{"class":3414},[2915,38955,38956],{"class":3402,"line":20271},[2915,38957,3506],{"emptyLinePlaceholder":3505},[2915,38959,38960],{"class":3402,"line":20276},[2915,38961,38962],{"class":3511},"# Nur erste Zeile ausgeben (wie head -1)\n",[2915,38964,38965],{"class":3402,"line":20282},[2915,38966,3506],{"emptyLinePlaceholder":3505},[2915,38968,38969,38971,38973,38975],{"class":3402,"line":20287},[2915,38970,7916],{"class":3406},[2915,38972,8127],{"class":3410},[2915,38974,20173],{"class":3414},[2915,38976,7698],{"class":3414},[2915,38978,38979],{"class":3402,"line":20297},[2915,38980,3506],{"emptyLinePlaceholder":3505},[2915,38982,38983],{"class":3402,"line":20302},[2915,38984,38985],{"class":3511},"# Zeilenanzahl begrenzen (wie head -5)\n",[2915,38987,38988],{"class":3402,"line":20308},[2915,38989,3506],{"emptyLinePlaceholder":3505},[2915,38991,38992,38994,38996],{"class":3402,"line":20313},[2915,38993,7916],{"class":3406},[2915,38995,20584],{"class":3414},[2915,38997,7698],{"class":3414},[2915,38999,39000],{"class":3402,"line":20323},[2915,39001,3506],{"emptyLinePlaceholder":3505},[2915,39003,39004],{"class":3402,"line":20328},[2915,39005,39006],{"class":3511},"# Zeichenersatz (y-Befehl): Kleinbuchstaben → Großbuchstaben\n",[2915,39008,39009],{"class":3402,"line":20334},[2915,39010,3506],{"emptyLinePlaceholder":3505},[2915,39012,39013,39015,39017],{"class":3402,"line":20339},[2915,39014,7916],{"class":3406},[2915,39016,20794],{"class":3414},[2915,39018,7698],{"class":3414},[2915,39020,39021],{"class":3402,"line":20349},[2915,39022,3506],{"emptyLinePlaceholder":3505},[2915,39024,39025],{"class":3402,"line":20354},[2915,39026,39027],{"class":3511},"# Zeilennummern anzeigen (= gibt Nummer aus, p gibt Zeile aus)\n",[2915,39029,39030],{"class":3402,"line":20360},[2915,39031,3506],{"emptyLinePlaceholder":3505},[2915,39033,39034,39036,39038,39040,39042,39044],{"class":3402,"line":20365},[2915,39035,7916],{"class":3406},[2915,39037,20522],{"class":3414},[2915,39039,19951],{"class":3414},[2915,39041,7679],{"class":3533},[2915,39043,20529],{"class":3406},[2915,39045,20532],{"class":3414},[2915,39047,39048],{"class":3402,"line":20375},[2915,39049,3506],{"emptyLinePlaceholder":3505},[2915,39051,39052],{"class":3402,"line":20380},[2915,39053,20881],{"class":3511},[2915,39055,39056],{"class":3402,"line":20386},[2915,39057,3506],{"emptyLinePlaceholder":3505},[2915,39059,39060,39062,39064],{"class":3402,"line":20391},[2915,39061,7916],{"class":3406},[2915,39063,20894],{"class":3414},[2915,39065,20897],{"class":3414},[2915,39067,39068],{"class":3402,"line":20397},[2915,39069,3506],{"emptyLinePlaceholder":3505},[2915,39071,39072],{"class":3402,"line":20402},[2915,39073,39074],{"class":3511},"# DOS-Zeilenenden (rn) in Unix (n) umwandeln\n",[2915,39076,39077],{"class":3402,"line":20412},[2915,39078,3506],{"emptyLinePlaceholder":3505},[2915,39080,39081,39083,39085],{"class":3402,"line":20417},[2915,39082,7916],{"class":3406},[2915,39084,20921],{"class":3414},[2915,39086,7698],{"class":3414},[54,39088,39090],{"id":39089},"cut-spalten-extrahieren","cut – Spalten extrahieren",[11,39092,39094],{"id":39093},"_5-feld-aus-etcpasswd-delimiter-doppelpunkt","5. Feld aus \u002Fetc\u002Fpasswd (Delimiter: Doppelpunkt)",[3392,39096,39098],{"className":3394,"code":39097,"language":3396,"meta":225,"style":225},"cut -d: -f5 \u002Fetc\u002Fpasswd\n\n# 3. Spalte einer CSV-Datei\n\ncut -d, -f3 datei.csv\n\n",[3398,39099,39100,39113,39117,39122,39126],{"__ignoreMap":225},[2915,39101,39102,39105,39108,39111],{"class":3402,"line":3403},[2915,39103,39104],{"class":3406},"cut",[2915,39106,39107],{"class":3410}," -d:",[2915,39109,39110],{"class":3410}," -f5",[2915,39112,8758],{"class":3414},[2915,39114,39115],{"class":3402,"line":1117},[2915,39116,3506],{"emptyLinePlaceholder":3505},[2915,39118,39119],{"class":3402,"line":1125},[2915,39120,39121],{"class":3511},"# 3. Spalte einer CSV-Datei\n",[2915,39123,39124],{"class":3402,"line":3515},[2915,39125,3506],{"emptyLinePlaceholder":3505},[2915,39127,39128,39130,39133,39136],{"class":3402,"line":3520},[2915,39129,39104],{"class":3406},[2915,39131,39132],{"class":3410}," -d,",[2915,39134,39135],{"class":3410}," -f3",[2915,39137,39138],{"class":3414}," datei.csv\n",[54,39140,39142],{"id":39141},"awk-textverarbeitung","awk – Textverarbeitung",[228,39144,8604],{"id":39145},"grundprinzip-1",[3392,39147,39149],{"className":3394,"code":39148,"language":3396,"meta":225,"style":225},"awk ist eine vollständige Programmiersprache für Textverarbeitung. Es liest Dateien oder Streams zeilenweise, teilt jede Zeile in Felder auf und wendet ein Programm darauf an.\n\n",[3398,39150,39151],{"__ignoreMap":225},[2915,39152,39153,39155,39158,39161,39164,39167,39169,39172,39175,39178,39180,39182,39185,39188,39191,39194,39196,39198,39201,39203,39205,39208,39211,39214,39217],{"class":3402,"line":3403},[2915,39154,8595],{"class":3406},[2915,39156,39157],{"class":3414}," ist",[2915,39159,39160],{"class":3414}," eine",[2915,39162,39163],{"class":3414}," vollständige",[2915,39165,39166],{"class":3414}," Programmiersprache",[2915,39168,14365],{"class":3414},[2915,39170,39171],{"class":3414}," Textverarbeitung.",[2915,39173,39174],{"class":3414}," Es",[2915,39176,39177],{"class":3414}," liest",[2915,39179,35204],{"class":3414},[2915,39181,25701],{"class":3414},[2915,39183,39184],{"class":3414}," Streams",[2915,39186,39187],{"class":3414}," zeilenweise,",[2915,39189,39190],{"class":3414}," teilt",[2915,39192,39193],{"class":3414}," jede",[2915,39195,18039],{"class":3414},[2915,39197,15061],{"class":3414},[2915,39199,39200],{"class":3414}," Felder",[2915,39202,14117],{"class":3414},[2915,39204,35207],{"class":3414},[2915,39206,39207],{"class":3414}," wendet",[2915,39209,39210],{"class":3414}," ein",[2915,39212,39213],{"class":3414}," Programm",[2915,39215,39216],{"class":3414}," darauf",[2915,39218,39219],{"class":3414}," an.\n",[16,39221,39222],{},[26,39223,35890],{},[3392,39225,39227],{"className":3394,"code":39226,"language":3396,"meta":225,"style":225},"awk 'MUSTER { AKTION }' datei\n\n",[3398,39228,39229],{"__ignoreMap":225},[2915,39230,39231,39233,39236],{"class":3402,"line":3403},[2915,39232,8595],{"class":3406},[2915,39234,39235],{"class":3414}," 'MUSTER { AKTION }'",[2915,39237,37919],{"class":3414},[228,39239,39241],{"id":39240},"felder-und-variablen","Felder und Variablen",[645,39243,39244,39256],{},[648,39245,39246],{},[651,39247,39248,39252],{},[654,39249,39250],{},[26,39251,8627],{},[654,39253,39254],{},[26,39255,5483],{},[670,39257,39258,39265,39272,39279,39287,39295,39302,39308,39315,39322,39329,39336,39343,39350,39358],{},[651,39259,39260,39262],{},[675,39261,4879],{},[675,39263,39264],{},"Die gesamte aktuelle Zeile",[651,39266,39267,39269],{},[675,39268,8638],{},[675,39270,39271],{},"Erstes Feld",[651,39273,39274,39276],{},[675,39275,8646],{},[675,39277,39278],{},"Zweites Feld",[651,39280,39281,39284],{},[675,39282,39283],{},"$NF",[675,39285,39286],{},"Letztes Feld (Number of Fields)",[651,39288,39289,39292],{},[675,39290,39291],{},"$(NF-1)",[675,39293,39294],{},"Vorletztes Feld",[651,39296,39297,39299],{},[675,39298,8669],{},[675,39300,39301],{},"Aktuelle Zeilennummer (Number of Records)",[651,39303,39304,39306],{},[675,39305,8661],{},[675,39307,18081],{},[651,39309,39310,39312],{},[675,39311,18101],{},[675,39313,39314],{},"Feldtrenner (Field Separator, Standard: Leerzeichen\u002FTab)",[651,39316,39317,39319],{},[675,39318,18109],{},[675,39320,39321],{},"Ausgabe-Feldtrenner (Output Field Separator)",[651,39323,39324,39326],{},[675,39325,18117],{},[675,39327,39328],{},"Datensatztrenner (Record Separator, Standard: \\n)",[651,39330,39331,39333],{},[675,39332,18125],{},[675,39334,39335],{},"Ausgabe-Datensatztrenner",[651,39337,39338,39340],{},[675,39339,18133],{},[675,39341,39342],{},"Name der aktuellen Datei",[651,39344,39345,39347],{},[675,39346,18093],{},[675,39348,39349],{},"Zeilennummer in der aktuellen Datei (bei mehreren Dateien)",[651,39351,39352,39355],{},[675,39353,39354],{},"ARGC",[675,39356,39357],{},"Anzahl der Argumente",[651,39359,39360,39363],{},[675,39361,39362],{},"ARGV",[675,39364,39365],{},"Array der Argumente",[228,39367,39369],{"id":39368},"kommandozeilen-optionen","Kommandozeilen-Optionen",[645,39371,39372,39384],{},[648,39373,39374],{},[651,39375,39376,39380],{},[654,39377,39378],{},[26,39379,7715],{},[654,39381,39382],{},[26,39383,5483],{},[670,39385,39386,39394,39401,39408,39416,39423,39431],{},[651,39387,39388,39391],{},[675,39389,39390],{},"-F TRENN",[675,39392,39393],{},"Feldtrenner setzen (z.B. -F: für Doppelpunkt)",[651,39395,39396,39398],{},[675,39397,18168],{},[675,39399,39400],{},"Variable vor dem Start setzen",[651,39402,39403,39405],{},[675,39404,18176],{},[675,39406,39407],{},"awk-Programm aus Datei lesen",[651,39409,39410,39413],{},[675,39411,39412],{},"-W compat",[675,39414,39415],{},"POSIX-kompatiblen Modus aktivieren (gawk)",[651,39417,39418,39420],{},[675,39419,19180],{},[675,39421,39422],{},"Streng POSIX-konform (gawk)",[651,39424,39425,39428],{},[675,39426,39427],{},"--re-interval",[675,39429,39430],{},"Intervallausdrücke in Regex aktivieren (gawk)",[651,39432,39433,39435],{},[675,39434,19170],{},[675,39436,39437],{},"Sicherheitsmodus (kein system(), getline etc.) (gawk)",[228,39439,39441],{"id":39440},"besondere-blöcke","Besondere Blöcke",[16,39443,39444],{},"BEGIN { ... } # Wird einmal VOR dem Einlesen ausgeführt",[16,39446,39447],{},"END { ... } # Wird einmal NACH dem letzten Datensatz ausgeführt",[16,39449,39450],{},"\u002FMuster\u002F { ... } # Wird für jede Zeile ausgeführt, die Muster enthält",[228,39452,18184],{"id":39453},"vergleichsoperatoren",[645,39455,39456,39468],{},[648,39457,39458],{},[651,39459,39460,39464],{},[654,39461,39462],{},[26,39463,18195],{},[654,39465,39466],{},[26,39467,5483],{},[670,39469,39470,39476,39482,39490,39497],{},[651,39471,39472,39474],{},[675,39473,18206],{},[675,39475,18209],{},[651,39477,39478,39480],{},[675,39479,18214],{},[675,39481,18217],{},[651,39483,39484,39487],{},[675,39485,39486],{},"\u003C, >, \u003C=, >=",[675,39488,39489],{},"Vergleich",[651,39491,39492,39494],{},[675,39493,18238],{},[675,39495,39496],{},"Regex-Match",[651,39498,39499,39501],{},[675,39500,18246],{},[675,39502,39503],{},"Kein Regex-Match",[228,39505,39507],{"id":39506},"arithmetik-und-strings","Arithmetik und Strings",[11,39509,39511],{"id":39510},"arithmetik","Arithmetik",[16,39513,39514],{},"$3 + $4 # Addition",[16,39516,39517],{},"$3 * 1.19 # Multiplikation",[16,39519,39520],{},"int($1 \u002F 2) # Ganzzahldivision",[11,39522,18253],{"id":18252},[16,39524,39525],{},"length($0) # Länge der Zeile",[16,39527,39528],{},"substr($1, 2, 4) # Teilstring ab Position 2, Länge 4",[16,39530,39531],{},"split($1, arr, \":\") # Splitten in Array",[16,39533,39534],{},"gsub(\u002Falt\u002F, \"neu\") # Globale Ersetzung in $0",[16,39536,39537],{},"sub(\u002Falt\u002F, \"neu\") # Erste Ersetzung in $0",[16,39539,39540],{},"toupper($1) # Großbuchstaben",[16,39542,39543],{},"tolower($1) # Kleinbuchstaben",[16,39545,39546],{},"index($1, \"suche\") # Position des Teilstrings",[16,39548,39549],{},"match($0, \u002Fregex\u002F) # Regex-Match, setzt RSTART\u002FRLENGTH",[16,39551,39552],{},"sprintf(\"%.2f\", $3) # Formatierte Ausgabe",[228,39554,8676],{"id":13392},[11,39556,39558],{"id":39557},"alle-zeilen-ausgeben-wie-cat","Alle Zeilen ausgeben (wie cat)",[3392,39560,39562],{"className":3394,"code":39561,"language":3396,"meta":225,"style":225},"awk '{ print }' datei.txt\n\nawk '{ print $0 }' datei.txt\n\n# Nur das erste Feld ausgeben\n\nawk '{ print $1 }' datei.txt\n\n# Spalten 1 und 3, durch Tab getrennt\n\nawk '{ print $1, $3 }' datei.txt\n\n# Mit Doppelpunkt als Trennzeichen (\u002Fetc\u002Fpasswd)\n\nawk -F: '{ print $1 }' \u002Fetc\u002Fpasswd\n\n# Benutzernamen und Shell ausgeben\n\nawk -F: '{ print $1, $7 }' \u002Fetc\u002Fpasswd\n\n# Nur Zeilen mit mehr als 3 Feldern\n\nawk 'NF > 3' datei.txt\n\n# Zeilen die \"error\" enthalten\n\nawk '\u002Ferror\u002F { print }' \u002Fvar\u002Flog\u002Fsyslog\n\n# Zeilen die NICHT \"debug\" enthalten\n\nawk '!\u002Fdebug\u002F' \u002Fvar\u002Flog\u002Fsyslog\n\n# Zeilennummer mit ausgeben\n\nawk '{ print NR\": \"$0 }' datei.txt\n\n# Nur Zeile 5 bis 10\n\nawk 'NR>=5 && NR\u003C=10' datei.txt\n\n# Summe der dritten Spalte\n\nawk '{ sum += $3 } END { print \"Summe:\", sum }' zahlen.txt\n\n# Durchschnitt\n\nawk '{ sum += $3 } END { print \"Avg:\", sum\u002FNR }' zahlen.txt\n\n# Anzahl Zeilen zählen (wie wc -l)\n\nawk 'END { print NR }' datei.txt\n\n# Duplikate entfernen (wie uniq, aber nicht sortiert)\n\nawk '!seen[$0]++' datei.txt\n\n# Leerzeilen entfernen\n\nawk 'NF > 0' datei.txt\n\nawk '\u002F^.\u002F' datei.txt\n\n# Felder vertauschen (1. und 2. Spalte tauschen)\n\nawk '{ print $2, $1 }' datei.txt\n\n# Ausgabe-Feldtrenner setzen (Komma)\n\nawk 'BEGIN{OFS=\",\"} { print $1,$2,$3 }' datei.txt\n\n# Variablen von außen übergeben\n\nawk -v grenze=100 '$3 > grenze { print }' datei.txt\n\n# if\u002Felse in awk\n\nawk '{ if ($3 > 50) print \"groß:\", $1; else print \"klein:\", $1 }' datei.txt\n\n# for-Schleife\n\nawk '{ for(i=1; i\u003C=NF; i++) print $i }' datei.txt\n\n# Arrays verwenden\n\nawk '{ count[$1]++ } END { for(k in count) print k, count[k] }' log.txt\n\n# Nur die letzte Zeile\n\nawk 'END { print }' datei.txt\n\n# Mehrzeiliger awk-Code aus Datei ausführen\n\nawk -f programm.awk datei.txt\n\n# CSV-Datei auswerten (Komma als Trenner, Anführungszeichen ignorieren)\n\nawk -F'\",\"' '{ print $2 }' daten.csv\n\n# Zwischen zwei Mustern ausgeben (inkl.)\n\nawk '\u002FSTART\u002F,\u002FSTOP\u002F' datei.txt\n\n# BEGIN und END\n\nawk 'BEGIN { print \"=== Start ===\" } { print } END { print \"=== Ende ===\" }' datei.txt\n\n# Prozesse nach CPU-Nutzung filtern (ps aux)\n\nps aux | awk '$3 > 1.0 { print $1, $2, $3, $11 }'\n\n# IP-Adressen aus Logdatei extrahieren\n\nawk '{ match($0, \u002F[0-9]+.[0-9]+.[0-9]+.[0-9]+\u002F, arr); print arr[0] }' access.log\n\n# \u002Fetc\u002Fpasswd – UIDs über 1000 (normale User)\n\nawk -F: '$3 >= 1000 { print $1, $3 }' \u002Fetc\u002Fpasswd\n\n# Größe einer Datei (du-Ausgabe aufsummieren)\n\ndu -sh * | awk '{ sum += $1 } END { print sum }'\n\n",[3398,39563,39564,39573,39577,39586,39590,39595,39599,39608,39612,39617,39621,39630,39634,39639,39643,39653,39657,39662,39666,39677,39681,39686,39690,39699,39703,39708,39712,39721,39725,39730,39734,39743,39747,39752,39756,39765,39769,39774,39778,39787,39791,39796,39800,39809,39813,39818,39822,39831,39835,39840,39844,39853,39857,39862,39866,39874,39878,39883,39887,39896,39900,39909,39913,39918,39922,39931,39935,39940,39944,39953,39957,39962,39966,39981,39985,39990,39994,40003,40007,40012,40016,40025,40029,40034,40038,40048,40052,40057,40061,40070,40074,40079,40083,40094,40098,40103,40107,40121,40125,40130,40134,40143,40147,40152,40156,40165,40169,40174,40178,40191,40195,40200,40204,40213,40217,40222,40226,40237,40241,40246,40250],{"__ignoreMap":225},[2915,39565,39566,39568,39571],{"class":3402,"line":3403},[2915,39567,8595],{"class":3406},[2915,39569,39570],{"class":3414}," '{ print }'",[2915,39572,7698],{"class":3414},[2915,39574,39575],{"class":3402,"line":1117},[2915,39576,3506],{"emptyLinePlaceholder":3505},[2915,39578,39579,39581,39584],{"class":3402,"line":1125},[2915,39580,8595],{"class":3406},[2915,39582,39583],{"class":3414}," '{ print $0 }'",[2915,39585,7698],{"class":3414},[2915,39587,39588],{"class":3402,"line":3515},[2915,39589,3506],{"emptyLinePlaceholder":3505},[2915,39591,39592],{"class":3402,"line":3520},[2915,39593,39594],{"class":3511},"# Nur das erste Feld ausgeben\n",[2915,39596,39597],{"class":3402,"line":5070},[2915,39598,3506],{"emptyLinePlaceholder":3505},[2915,39600,39601,39603,39606],{"class":3402,"line":5075},[2915,39602,8595],{"class":3406},[2915,39604,39605],{"class":3414}," '{ print $1 }'",[2915,39607,7698],{"class":3414},[2915,39609,39610],{"class":3402,"line":5093},[2915,39611,3506],{"emptyLinePlaceholder":3505},[2915,39613,39614],{"class":3402,"line":5098},[2915,39615,39616],{"class":3511},"# Spalten 1 und 3, durch Tab getrennt\n",[2915,39618,39619],{"class":3402,"line":5207},[2915,39620,3506],{"emptyLinePlaceholder":3505},[2915,39622,39623,39625,39628],{"class":3402,"line":5212},[2915,39624,8595],{"class":3406},[2915,39626,39627],{"class":3414}," '{ print $1, $3 }'",[2915,39629,7698],{"class":3414},[2915,39631,39632],{"class":3402,"line":5218},[2915,39633,3506],{"emptyLinePlaceholder":3505},[2915,39635,39636],{"class":3402,"line":5223},[2915,39637,39638],{"class":3511},"# Mit Doppelpunkt als Trennzeichen (\u002Fetc\u002Fpasswd)\n",[2915,39640,39641],{"class":3402,"line":5229},[2915,39642,3506],{"emptyLinePlaceholder":3505},[2915,39644,39645,39647,39649,39651],{"class":3402,"line":5253},[2915,39646,8595],{"class":3406},[2915,39648,18643],{"class":3410},[2915,39650,39605],{"class":3414},[2915,39652,8758],{"class":3414},[2915,39654,39655],{"class":3402,"line":5266},[2915,39656,3506],{"emptyLinePlaceholder":3505},[2915,39658,39659],{"class":3402,"line":5721},[2915,39660,39661],{"class":3511},"# Benutzernamen und Shell ausgeben\n",[2915,39663,39664],{"class":3402,"line":9401},[2915,39665,3506],{"emptyLinePlaceholder":3505},[2915,39667,39668,39670,39672,39675],{"class":3402,"line":9406},[2915,39669,8595],{"class":3406},[2915,39671,18643],{"class":3410},[2915,39673,39674],{"class":3414}," '{ print $1, $7 }'",[2915,39676,8758],{"class":3414},[2915,39678,39679],{"class":3402,"line":9411},[2915,39680,3506],{"emptyLinePlaceholder":3505},[2915,39682,39683],{"class":3402,"line":9416},[2915,39684,39685],{"class":3511},"# Nur Zeilen mit mehr als 3 Feldern\n",[2915,39687,39688],{"class":3402,"line":9428},[2915,39689,3506],{"emptyLinePlaceholder":3505},[2915,39691,39692,39694,39697],{"class":3402,"line":9433},[2915,39693,8595],{"class":3406},[2915,39695,39696],{"class":3414}," 'NF > 3'",[2915,39698,7698],{"class":3414},[2915,39700,39701],{"class":3402,"line":9454},[2915,39702,3506],{"emptyLinePlaceholder":3505},[2915,39704,39705],{"class":3402,"line":9459},[2915,39706,39707],{"class":3511},"# Zeilen die \"error\" enthalten\n",[2915,39709,39710],{"class":3402,"line":9464},[2915,39711,3506],{"emptyLinePlaceholder":3505},[2915,39713,39714,39716,39719],{"class":3402,"line":9469},[2915,39715,8595],{"class":3406},[2915,39717,39718],{"class":3414}," '\u002Ferror\u002F { print }'",[2915,39720,15621],{"class":3414},[2915,39722,39723],{"class":3402,"line":9479},[2915,39724,3506],{"emptyLinePlaceholder":3505},[2915,39726,39727],{"class":3402,"line":9484},[2915,39728,39729],{"class":3511},"# Zeilen die NICHT \"debug\" enthalten\n",[2915,39731,39732],{"class":3402,"line":9489},[2915,39733,3506],{"emptyLinePlaceholder":3505},[2915,39735,39736,39738,39741],{"class":3402,"line":9494},[2915,39737,8595],{"class":3406},[2915,39739,39740],{"class":3414}," '!\u002Fdebug\u002F'",[2915,39742,15621],{"class":3414},[2915,39744,39745],{"class":3402,"line":9504},[2915,39746,3506],{"emptyLinePlaceholder":3505},[2915,39748,39749],{"class":3402,"line":9509},[2915,39750,39751],{"class":3511},"# Zeilennummer mit ausgeben\n",[2915,39753,39754],{"class":3402,"line":9514},[2915,39755,3506],{"emptyLinePlaceholder":3505},[2915,39757,39758,39760,39763],{"class":3402,"line":9519},[2915,39759,8595],{"class":3406},[2915,39761,39762],{"class":3414}," '{ print NR\": \"$0 }'",[2915,39764,7698],{"class":3414},[2915,39766,39767],{"class":3402,"line":9524},[2915,39768,3506],{"emptyLinePlaceholder":3505},[2915,39770,39771],{"class":3402,"line":9529},[2915,39772,39773],{"class":3511},"# Nur Zeile 5 bis 10\n",[2915,39775,39776],{"class":3402,"line":9534},[2915,39777,3506],{"emptyLinePlaceholder":3505},[2915,39779,39780,39782,39785],{"class":3402,"line":9539},[2915,39781,8595],{"class":3406},[2915,39783,39784],{"class":3414}," 'NR>=5 && NR\u003C=10'",[2915,39786,7698],{"class":3414},[2915,39788,39789],{"class":3402,"line":9552},[2915,39790,3506],{"emptyLinePlaceholder":3505},[2915,39792,39793],{"class":3402,"line":9557},[2915,39794,39795],{"class":3511},"# Summe der dritten Spalte\n",[2915,39797,39798],{"class":3402,"line":9570},[2915,39799,3506],{"emptyLinePlaceholder":3505},[2915,39801,39802,39804,39807],{"class":3402,"line":9575},[2915,39803,8595],{"class":3406},[2915,39805,39806],{"class":3414}," '{ sum += $3 } END { print \"Summe:\", sum }'",[2915,39808,8780],{"class":3414},[2915,39810,39811],{"class":3402,"line":9588},[2915,39812,3506],{"emptyLinePlaceholder":3505},[2915,39814,39815],{"class":3402,"line":9593},[2915,39816,39817],{"class":3511},"# Durchschnitt\n",[2915,39819,39820],{"class":3402,"line":9598},[2915,39821,3506],{"emptyLinePlaceholder":3505},[2915,39823,39824,39826,39829],{"class":3402,"line":9603},[2915,39825,8595],{"class":3406},[2915,39827,39828],{"class":3414}," '{ sum += $3 } END { print \"Avg:\", sum\u002FNR }'",[2915,39830,8780],{"class":3414},[2915,39832,39833],{"class":3402,"line":9619},[2915,39834,3506],{"emptyLinePlaceholder":3505},[2915,39836,39837],{"class":3402,"line":9624},[2915,39838,39839],{"class":3511},"# Anzahl Zeilen zählen (wie wc -l)\n",[2915,39841,39842],{"class":3402,"line":9629},[2915,39843,3506],{"emptyLinePlaceholder":3505},[2915,39845,39846,39848,39851],{"class":3402,"line":9634},[2915,39847,8595],{"class":3406},[2915,39849,39850],{"class":3414}," 'END { print NR }'",[2915,39852,7698],{"class":3414},[2915,39854,39855],{"class":3402,"line":9642},[2915,39856,3506],{"emptyLinePlaceholder":3505},[2915,39858,39859],{"class":3402,"line":9647},[2915,39860,39861],{"class":3511},"# Duplikate entfernen (wie uniq, aber nicht sortiert)\n",[2915,39863,39864],{"class":3402,"line":9656},[2915,39865,3506],{"emptyLinePlaceholder":3505},[2915,39867,39868,39870,39872],{"class":3402,"line":9661},[2915,39869,8595],{"class":3406},[2915,39871,18974],{"class":3414},[2915,39873,7698],{"class":3414},[2915,39875,39876],{"class":3402,"line":9666},[2915,39877,3506],{"emptyLinePlaceholder":3505},[2915,39879,39880],{"class":3402,"line":9671},[2915,39881,39882],{"class":3511},"# Leerzeilen entfernen\n",[2915,39884,39885],{"class":3402,"line":9685},[2915,39886,3506],{"emptyLinePlaceholder":3505},[2915,39888,39889,39891,39894],{"class":3402,"line":9690},[2915,39890,8595],{"class":3406},[2915,39892,39893],{"class":3414}," 'NF > 0'",[2915,39895,7698],{"class":3414},[2915,39897,39898],{"class":3402,"line":9711},[2915,39899,3506],{"emptyLinePlaceholder":3505},[2915,39901,39902,39904,39907],{"class":3402,"line":9716},[2915,39903,8595],{"class":3406},[2915,39905,39906],{"class":3414}," '\u002F^.\u002F'",[2915,39908,7698],{"class":3414},[2915,39910,39911],{"class":3402,"line":9721},[2915,39912,3506],{"emptyLinePlaceholder":3505},[2915,39914,39915],{"class":3402,"line":9726},[2915,39916,39917],{"class":3511},"# Felder vertauschen (1. und 2. Spalte tauschen)\n",[2915,39919,39920],{"class":3402,"line":9734},[2915,39921,3506],{"emptyLinePlaceholder":3505},[2915,39923,39924,39926,39929],{"class":3402,"line":9739},[2915,39925,8595],{"class":3406},[2915,39927,39928],{"class":3414}," '{ print $2, $1 }'",[2915,39930,7698],{"class":3414},[2915,39932,39933],{"class":3402,"line":9747},[2915,39934,3506],{"emptyLinePlaceholder":3505},[2915,39936,39937],{"class":3402,"line":9752},[2915,39938,39939],{"class":3511},"# Ausgabe-Feldtrenner setzen (Komma)\n",[2915,39941,39942],{"class":3402,"line":9760},[2915,39943,3506],{"emptyLinePlaceholder":3505},[2915,39945,39946,39948,39951],{"class":3402,"line":9765},[2915,39947,8595],{"class":3406},[2915,39949,39950],{"class":3414}," 'BEGIN{OFS=\",\"} { print $1,$2,$3 }'",[2915,39952,7698],{"class":3414},[2915,39954,39955],{"class":3402,"line":9773},[2915,39956,3506],{"emptyLinePlaceholder":3505},[2915,39958,39959],{"class":3402,"line":9778},[2915,39960,39961],{"class":3511},"# Variablen von außen übergeben\n",[2915,39963,39964],{"class":3402,"line":9786},[2915,39965,3506],{"emptyLinePlaceholder":3505},[2915,39967,39968,39970,39972,39974,39976,39979],{"class":3402,"line":9791},[2915,39969,8595],{"class":3406},[2915,39971,16455],{"class":3410},[2915,39973,18875],{"class":3414},[2915,39975,4711],{"class":3410},[2915,39977,39978],{"class":3414}," '$3 > grenze { print }'",[2915,39980,7698],{"class":3414},[2915,39982,39983],{"class":3402,"line":9800},[2915,39984,3506],{"emptyLinePlaceholder":3505},[2915,39986,39987],{"class":3402,"line":9805},[2915,39988,39989],{"class":3511},"# if\u002Felse in awk\n",[2915,39991,39992],{"class":3402,"line":20122},[2915,39993,3506],{"emptyLinePlaceholder":3505},[2915,39995,39996,39998,40001],{"class":3402,"line":20127},[2915,39997,8595],{"class":3406},[2915,39999,40000],{"class":3414}," '{ if ($3 > 50) print \"groß:\", $1; else print \"klein:\", $1 }'",[2915,40002,7698],{"class":3414},[2915,40004,40005],{"class":3402,"line":20133},[2915,40006,3506],{"emptyLinePlaceholder":3505},[2915,40008,40009],{"class":3402,"line":20138},[2915,40010,40011],{"class":3511},"# for-Schleife\n",[2915,40013,40014],{"class":3402,"line":20150},[2915,40015,3506],{"emptyLinePlaceholder":3505},[2915,40017,40018,40020,40023],{"class":3402,"line":20155},[2915,40019,8595],{"class":3406},[2915,40021,40022],{"class":3414}," '{ for(i=1; i\u003C=NF; i++) print $i }'",[2915,40024,7698],{"class":3414},[2915,40026,40027],{"class":3402,"line":20161},[2915,40028,3506],{"emptyLinePlaceholder":3505},[2915,40030,40031],{"class":3402,"line":20166},[2915,40032,40033],{"class":3511},"# Arrays verwenden\n",[2915,40035,40036],{"class":3402,"line":20178},[2915,40037,3506],{"emptyLinePlaceholder":3505},[2915,40039,40040,40042,40045],{"class":3402,"line":20183},[2915,40041,8595],{"class":3406},[2915,40043,40044],{"class":3414}," '{ count[$1]++ } END { for(k in count) print k, count[k] }'",[2915,40046,40047],{"class":3414}," log.txt\n",[2915,40049,40050],{"class":3402,"line":20189},[2915,40051,3506],{"emptyLinePlaceholder":3505},[2915,40053,40054],{"class":3402,"line":20194},[2915,40055,40056],{"class":3511},"# Nur die letzte Zeile\n",[2915,40058,40059],{"class":3402,"line":20206},[2915,40060,3506],{"emptyLinePlaceholder":3505},[2915,40062,40063,40065,40068],{"class":3402,"line":20211},[2915,40064,8595],{"class":3406},[2915,40066,40067],{"class":3414}," 'END { print }'",[2915,40069,7698],{"class":3414},[2915,40071,40072],{"class":3402,"line":20217},[2915,40073,3506],{"emptyLinePlaceholder":3505},[2915,40075,40076],{"class":3402,"line":20222},[2915,40077,40078],{"class":3511},"# Mehrzeiliger awk-Code aus Datei ausführen\n",[2915,40080,40081],{"class":3402,"line":20234},[2915,40082,3506],{"emptyLinePlaceholder":3505},[2915,40084,40085,40087,40089,40092],{"class":3402,"line":20239},[2915,40086,8595],{"class":3406},[2915,40088,10089],{"class":3410},[2915,40090,40091],{"class":3414}," programm.awk",[2915,40093,7698],{"class":3414},[2915,40095,40096],{"class":3402,"line":20245},[2915,40097,3506],{"emptyLinePlaceholder":3505},[2915,40099,40100],{"class":3402,"line":20250},[2915,40101,40102],{"class":3511},"# CSV-Datei auswerten (Komma als Trenner, Anführungszeichen ignorieren)\n",[2915,40104,40105],{"class":3402,"line":20256},[2915,40106,3506],{"emptyLinePlaceholder":3505},[2915,40108,40109,40111,40113,40116,40119],{"class":3402,"line":20261},[2915,40110,8595],{"class":3406},[2915,40112,8750],{"class":3410},[2915,40114,40115],{"class":3414},"'\",\"'",[2915,40117,40118],{"class":3414}," '{ print $2 }'",[2915,40120,15836],{"class":3414},[2915,40122,40123],{"class":3402,"line":20271},[2915,40124,3506],{"emptyLinePlaceholder":3505},[2915,40126,40127],{"class":3402,"line":20276},[2915,40128,40129],{"class":3511},"# Zwischen zwei Mustern ausgeben (inkl.)\n",[2915,40131,40132],{"class":3402,"line":20282},[2915,40133,3506],{"emptyLinePlaceholder":3505},[2915,40135,40136,40138,40141],{"class":3402,"line":20287},[2915,40137,8595],{"class":3406},[2915,40139,40140],{"class":3414}," '\u002FSTART\u002F,\u002FSTOP\u002F'",[2915,40142,7698],{"class":3414},[2915,40144,40145],{"class":3402,"line":20297},[2915,40146,3506],{"emptyLinePlaceholder":3505},[2915,40148,40149],{"class":3402,"line":20302},[2915,40150,40151],{"class":3511},"# BEGIN und END\n",[2915,40153,40154],{"class":3402,"line":20308},[2915,40155,3506],{"emptyLinePlaceholder":3505},[2915,40157,40158,40160,40163],{"class":3402,"line":20313},[2915,40159,8595],{"class":3406},[2915,40161,40162],{"class":3414}," 'BEGIN { print \"=== Start ===\" } { print } END { print \"=== Ende ===\" }'",[2915,40164,7698],{"class":3414},[2915,40166,40167],{"class":3402,"line":20323},[2915,40168,3506],{"emptyLinePlaceholder":3505},[2915,40170,40171],{"class":3402,"line":20328},[2915,40172,40173],{"class":3511},"# Prozesse nach CPU-Nutzung filtern (ps aux)\n",[2915,40175,40176],{"class":3402,"line":20334},[2915,40177,3506],{"emptyLinePlaceholder":3505},[2915,40179,40180,40182,40184,40186,40188],{"class":3402,"line":20339},[2915,40181,7673],{"class":3406},[2915,40183,7676],{"class":3414},[2915,40185,7679],{"class":3533},[2915,40187,33037],{"class":3406},[2915,40189,40190],{"class":3414}," '$3 > 1.0 { print $1, $2, $3, $11 }'\n",[2915,40192,40193],{"class":3402,"line":20349},[2915,40194,3506],{"emptyLinePlaceholder":3505},[2915,40196,40197],{"class":3402,"line":20354},[2915,40198,40199],{"class":3511},"# IP-Adressen aus Logdatei extrahieren\n",[2915,40201,40202],{"class":3402,"line":20360},[2915,40203,3506],{"emptyLinePlaceholder":3505},[2915,40205,40206,40208,40211],{"class":3402,"line":20365},[2915,40207,8595],{"class":3406},[2915,40209,40210],{"class":3414}," '{ match($0, \u002F[0-9]+.[0-9]+.[0-9]+.[0-9]+\u002F, arr); print arr[0] }'",[2915,40212,16599],{"class":3414},[2915,40214,40215],{"class":3402,"line":20375},[2915,40216,3506],{"emptyLinePlaceholder":3505},[2915,40218,40219],{"class":3402,"line":20380},[2915,40220,40221],{"class":3511},"# \u002Fetc\u002Fpasswd – UIDs über 1000 (normale User)\n",[2915,40223,40224],{"class":3402,"line":20386},[2915,40225,3506],{"emptyLinePlaceholder":3505},[2915,40227,40228,40230,40232,40235],{"class":3402,"line":20391},[2915,40229,8595],{"class":3406},[2915,40231,18643],{"class":3410},[2915,40233,40234],{"class":3414}," '$3 >= 1000 { print $1, $3 }'",[2915,40236,8758],{"class":3414},[2915,40238,40239],{"class":3402,"line":20397},[2915,40240,3506],{"emptyLinePlaceholder":3505},[2915,40242,40243],{"class":3402,"line":20402},[2915,40244,40245],{"class":3511},"# Größe einer Datei (du-Ausgabe aufsummieren)\n",[2915,40247,40248],{"class":3402,"line":20412},[2915,40249,3506],{"emptyLinePlaceholder":3505},[2915,40251,40252,40254,40256,40258,40260,40262],{"class":3402,"line":20417},[2915,40253,22649],{"class":3406},[2915,40255,22652],{"class":3410},[2915,40257,5828],{"class":3410},[2915,40259,7679],{"class":3533},[2915,40261,33037],{"class":3406},[2915,40263,40264],{"class":3414}," '{ sum += $1 } END { print sum }'\n",[54,40266,40268],{"id":40267},"apt-high-level-empfohlen","apt (High-Level – empfohlen!)",[645,40270,40271,40283],{},[648,40272,40273],{},[651,40274,40275,40279],{},[654,40276,40277],{},[26,40278,6993],{},[654,40280,40281],{},[26,40282,4550],{},[670,40284,40285,40293,40301,40309,40317,40325,40333,40341,40349,40357],{},[651,40286,40287,40290],{},[675,40288,40289],{},"sudo apt update",[675,40291,40292],{},"Paketlisten aktualisieren",[651,40294,40295,40298],{},[675,40296,40297],{},"sudo apt upgrade",[675,40299,40300],{},"Installierte Pakete aktualisieren",[651,40302,40303,40306],{},[675,40304,40305],{},"sudo apt install paket",[675,40307,40308],{},"Paket installieren",[651,40310,40311,40314],{},[675,40312,40313],{},"sudo apt remove paket",[675,40315,40316],{},"Paket deinstallieren (Konfig bleibt)",[651,40318,40319,40322],{},[675,40320,40321],{},"sudo apt purge paket",[675,40323,40324],{},"Paket + Konfig entfernen",[651,40326,40327,40330],{},[675,40328,40329],{},"apt search begriff",[675,40331,40332],{},"Nach Paketen suchen",[651,40334,40335,40338],{},[675,40336,40337],{},"apt list --installed",[675,40339,40340],{},"Installierte Pakete anzeigen",[651,40342,40343,40346],{},[675,40344,40345],{},"sudo apt autoremove",[675,40347,40348],{},"Nicht benötigte Pakete entfernen",[651,40350,40351,40354],{},[675,40352,40353],{},"apt source paket",[675,40355,40356],{},"Quellcode herunterladen",[651,40358,40359,40362],{},[675,40360,40361],{},"apt clean",[675,40363,40364],{},"Apt cache leeren",[54,40366,40368],{"id":40367},"paketquellen-etcaptsourceslist","Paketquellen: \u002Fetc\u002Fapt\u002Fsources.list",[3392,40370,40372],{"className":3394,"code":40371,"language":3396,"meta":225,"style":225},"deb http:\u002F\u002Fserver.example.com\u002Fdebian distribution component1 component2\n\ndeb-src http:\u002F\u002Fserver.example.com\u002Fdebian distribution component1 component2\n\n- deb = vorcompilierte Binary-Pakete\n",[3398,40373,40374,40391,40395,40408,40412],{"__ignoreMap":225},[2915,40375,40376,40379,40382,40385,40388],{"class":3402,"line":3403},[2915,40377,40378],{"class":3406},"deb",[2915,40380,40381],{"class":3414}," http:\u002F\u002Fserver.example.com\u002Fdebian",[2915,40383,40384],{"class":3414}," distribution",[2915,40386,40387],{"class":3414}," component1",[2915,40389,40390],{"class":3414}," component2\n",[2915,40392,40393],{"class":3402,"line":1117},[2915,40394,3506],{"emptyLinePlaceholder":3505},[2915,40396,40397,40400,40402,40404,40406],{"class":3402,"line":1125},[2915,40398,40399],{"class":3406},"deb-src",[2915,40401,40381],{"class":3414},[2915,40403,40384],{"class":3414},[2915,40405,40387],{"class":3414},[2915,40407,40390],{"class":3414},[2915,40409,40410],{"class":3402,"line":3515},[2915,40411,3506],{"emptyLinePlaceholder":3505},[2915,40413,40414,40416,40419,40421,40424],{"class":3402,"line":3520},[2915,40415,3523],{"class":3406},[2915,40417,40418],{"class":3414}," deb",[2915,40420,13922],{"class":3414},[2915,40422,40423],{"class":3414}," vorcompilierte",[2915,40425,40426],{"class":3414}," Binary-Pakete\n",[20,40428,40429,40432,40435],{},[23,40430,40431],{},"deb = vorcompilierte Binary-Pakete",[23,40433,40434],{},"deb-src = Source-Pakete",[23,40436,40437],{},"Weitere Quellen in: \u002Fetc\u002Fapt\u002Fsources.list.d\u002F*.list",[11,40439,40441],{"id":40440},"benutzer-und-gruppenverwaltung","Benutzer- und Gruppenverwaltung",[54,40443,40445],{"id":40444},"arten-von-benutzern","Arten von Benutzern",[645,40447,40448,40465],{},[648,40449,40450],{},[651,40451,40452,40456,40460],{},[654,40453,40454],{},[26,40455,5473],{},[654,40457,40458],{},[26,40459,4550],{},[654,40461,40462],{},[26,40463,40464],{},"UID",[670,40466,40467,40477,40487],{},[651,40468,40469,40472,40475],{},[675,40470,40471],{},"Root",[675,40473,40474],{},"Superuser, uneingeschränkter Zugriff",[675,40476,11501],{},[651,40478,40479,40481,40484],{},[675,40480,11520],{},[675,40482,40483],{},"Begrenzte Rechte",[675,40485,40486],{},"> 1000",[651,40488,40489,40492,40495],{},[675,40490,40491],{},"Systembenutzer",[675,40493,40494],{},"Für Dienste (z.B. www-data)",[675,40496,40497],{},"1-999",[54,40499,40501],{"id":40500},"wichtige-konfigurationsdateien","Wichtige Konfigurationsdateien",[228,40503,40505],{"id":40504},"etcpasswd-benutzerdatenbank","\u002Fetc\u002Fpasswd – Benutzerdatenbank",[228,40507,40509],{"id":40508},"usernamepassworduidgidinfohomeshell","Username:Password:UID:GID:Info:Home:Shell",[20,40511,40512,40515],{},[23,40513,40514],{},"Password = x bedeutet: Passwort steht in \u002Fetc\u002Fshadow",[23,40516,40517],{},"Beispiel: bob❌1001:1001:Bob Miller:\u002Fhome\u002Fbob:\u002Fbin\u002Fbash",[228,40519,40521],{"id":40520},"etcshadow-passwortdatenbank","\u002Fetc\u002Fshadow – Passwortdatenbank",[16,40523,40524],{},"Username:Password:DOC:MinD:MaxD:Warn:Exp:Dis",[20,40526,40527,40530],{},[23,40528,40529],{},"DOC = Tag der letzten Passwortänderung (ab 1.1.1970)",[23,40531,40532],{},"Editieren mit: vipw -s",[228,40534,40536],{"id":40535},"etcgroup-gruppendatenbank","\u002Fetc\u002Fgroup – Gruppendatenbank",[16,40538,40539],{},"Gruppenname:Passwort:GID:Mitgliederliste",[228,40541,40543],{"id":40542},"etcskel-vorlage-für-neue-benutzer","\u002Fetc\u002Fskel – Vorlage für neue Benutzer",[20,40545,40546],{},[23,40547,40548],{},"Dateien aus diesem Verzeichnis werden bei useradd -m ins neue Home kopiert",[54,40550,40552],{"id":40551},"befehle-zur-gruppenverwaltung","Befehle zur Gruppenverwaltung",[645,40554,40555,40567],{},[648,40556,40557],{},[651,40558,40559,40563],{},[654,40560,40561],{},[26,40562,6993],{},[654,40564,40565],{},[26,40566,4550],{},[670,40568,40569,40577,40585,40592,40599,40607,40614],{},[651,40570,40571,40574],{},[675,40572,40573],{},"groupadd gruppenname",[675,40575,40576],{},"Neue Gruppe anlegen",[651,40578,40579,40582],{},[675,40580,40581],{},"groupadd -g 1007 verkauf",[675,40583,40584],{},"Gruppe mit bestimmter GID",[651,40586,40587,40590],{},[675,40588,40589],{},"groupdel gruppenname",[675,40591,33431],{},[651,40593,40594,40597],{},[675,40595,40596],{},"groupmod -n neuer_name alter_name",[675,40598,33424],{},[651,40600,40601,40604],{},[675,40602,40603],{},"gpasswd -a benutzer gruppe",[675,40605,40606],{},"Mitglied hinzufügen",[651,40608,40609,40612],{},[675,40610,40611],{},"gpasswd -d benutzer gruppe",[675,40613,33692],{},[651,40615,40616,40619],{},[675,40617,40618],{},"newgrp gruppenname",[675,40620,40621],{},"Primäre Gruppe wechseln",[54,40623,40625],{"id":40624},"befehle-zur-benutzerverwaltung","Befehle zur Benutzerverwaltung",[645,40627,40628,40640],{},[648,40629,40630],{},[651,40631,40632,40636],{},[654,40633,40634],{},[26,40635,6993],{},[654,40637,40638],{},[26,40639,4550],{},[670,40641,40642,40650,40658,40666,40674,40682,40690,40698,40706,40714,40722,40730,40737],{},[651,40643,40644,40647],{},[675,40645,40646],{},"useradd benutzername",[675,40648,40649],{},"Neuen Benutzer anlegen",[651,40651,40652,40655],{},[675,40653,40654],{},"useradd -m benutzername",[675,40656,40657],{},"Mit Home-Verzeichnis anlegen",[651,40659,40660,40663],{},[675,40661,40662],{},"useradd -m -u 502 -c \"Info\" name",[675,40664,40665],{},"Mit UID und Kommentar",[651,40667,40668,40671],{},[675,40669,40670],{},"userdel benutzername",[675,40672,40673],{},"Benutzer löschen",[651,40675,40676,40679],{},[675,40677,40678],{},"userdel -r benutzername",[675,40680,40681],{},"Benutzer + Home löschen",[651,40683,40684,40687],{},[675,40685,40686],{},"usermod -aG gruppe benutzer",[675,40688,40689],{},"Benutzer zur Gruppe hinzufügen",[651,40691,40692,40695],{},[675,40693,40694],{},"passwd benutzername",[675,40696,40697],{},"Passwort setzen\u002Fändern",[651,40699,40700,40703],{},[675,40701,40702],{},"passwd -l benutzername",[675,40704,40705],{},"Account sperren",[651,40707,40708,40711],{},[675,40709,40710],{},"passwd -u benutzername",[675,40712,40713],{},"Account freigeben",[651,40715,40716,40719],{},[675,40717,40718],{},"id benutzername",[675,40720,40721],{},"UID, GID und Gruppen anzeigen",[651,40723,40724,40727],{},[675,40725,40726],{},"groups benutzername",[675,40728,40729],{},"Gruppenmitgliedschaften anzeigen",[651,40731,40732,40735],{},[675,40733,40734],{},"su benutzername",[675,40736,34609],{},[651,40738,40739,40742],{},[675,40740,40741],{},"su -",[675,40743,40744],{},"Zu root wechseln mit Umgebungswechsel",[11,40746,40748],{"id":40747},"zugriffsrechte-und-dateiberechtigungen","Zugriffsrechte und Dateiberechtigungen",[54,40750,40752],{"id":40751},"aufbau-der-berechtigungen","Aufbau der Berechtigungen",[16,40754,40755,40756,40758,40759,40761,40762,40764,40765,40767,40768,40770],{},"-rwxr-xr-- 1 besitzer gruppe größe datum dateiname",[5885,40757],{},"\n│├─┤├─┤├─┤",[5885,40760],{},"\n│ │ │ └── Andere (Others): r--",[5885,40763],{},"\n│ │ └────── Gruppe (Group): r-x",[5885,40766],{},"\n│ └────────── Besitzer (User): rwx",[5885,40769],{},"\n└──────────── Dateityp: - = Datei, d = Verzeichnis",[54,40772,12899],{"id":12898},[645,40774,40775,40791],{},[648,40776,40777],{},[651,40778,40779,40783,40787],{},[654,40780,40781],{},[26,40782,12910],{},[654,40784,40785],{},[26,40786,34071],{},[654,40788,40789],{},[26,40790,8377],{},[670,40792,40793,40803,40814],{},[651,40794,40795,40798,40800],{},[675,40796,40797],{},"r (read=4)",[675,40799,12945],{},[675,40801,40802],{},"Verzeichnisinhalt auflisten",[651,40804,40805,40808,40811],{},[675,40806,40807],{},"w (write=2)",[675,40809,40810],{},"Dateiinhalt ändern",[675,40812,40813],{},"Dateien erstellen\u002Flöschen\u002Fumbenennen",[651,40815,40816,40819,40822],{},[675,40817,40818],{},"x (execute=1)",[675,40820,40821],{},"Programm\u002FSkript ausführen",[675,40823,40824],{},"Verzeichnis betreten (cd)",[54,40826,40828],{"id":40827},"chmod-rechte-ändern","chmod – Rechte ändern",[228,40830,40832],{"id":40831},"symbolische-methode","Symbolische Methode:",[3392,40834,40836],{"className":3394,"code":40835,"language":3396,"meta":225,"style":225},"chmod u+x datei.sh # User: Ausführen hinzufügen\n\nchmod g-w datei.txt # Gruppe: Schreiben entfernen\n\nchmod o=r datei.txt # Andere: Nur Lesen\n\nchmod a+x skript.sh # Alle: Ausführen hinzufügen\n\nchmod u=rwx,g=rx,o= datei # Explizit setzen\n\n",[3398,40837,40838,40851,40855,40867,40871,40883,40887,40899,40903],{"__ignoreMap":225},[2915,40839,40840,40842,40845,40848],{"class":3402,"line":3403},[2915,40841,12871],{"class":3406},[2915,40843,40844],{"class":3414}," u+x",[2915,40846,40847],{"class":3414}," datei.sh",[2915,40849,40850],{"class":3511}," # User: Ausführen hinzufügen\n",[2915,40852,40853],{"class":3402,"line":1117},[2915,40854,3506],{"emptyLinePlaceholder":3505},[2915,40856,40857,40859,40862,40864],{"class":3402,"line":1125},[2915,40858,12871],{"class":3406},[2915,40860,40861],{"class":3414}," g-w",[2915,40863,19951],{"class":3414},[2915,40865,40866],{"class":3511}," # Gruppe: Schreiben entfernen\n",[2915,40868,40869],{"class":3402,"line":3515},[2915,40870,3506],{"emptyLinePlaceholder":3505},[2915,40872,40873,40875,40878,40880],{"class":3402,"line":3520},[2915,40874,12871],{"class":3406},[2915,40876,40877],{"class":3414}," o=r",[2915,40879,19951],{"class":3414},[2915,40881,40882],{"class":3511}," # Andere: Nur Lesen\n",[2915,40884,40885],{"class":3402,"line":5070},[2915,40886,3506],{"emptyLinePlaceholder":3505},[2915,40888,40889,40891,40893,40896],{"class":3402,"line":5075},[2915,40890,12871],{"class":3406},[2915,40892,13477],{"class":3414},[2915,40894,40895],{"class":3414}," skript.sh",[2915,40897,40898],{"class":3511}," # Alle: Ausführen hinzufügen\n",[2915,40900,40901],{"class":3402,"line":5093},[2915,40902,3506],{"emptyLinePlaceholder":3505},[2915,40904,40905,40907,40909,40911],{"class":3402,"line":5098},[2915,40906,12871],{"class":3406},[2915,40908,13521],{"class":3414},[2915,40910,12508],{"class":3414},[2915,40912,40913],{"class":3511}," # Explizit setzen\n",[228,40915,40917],{"id":40916},"oktalnotation","Oktalnotation:",[3392,40919,40921],{"className":3394,"code":40920,"language":3396,"meta":225,"style":225},"chmod 755 datei # rwxr-xr-x\n\nchmod 644 datei # rw-r--r--\n\nchmod 700 datei # rwx------\n\nchmod 000 datei # ---------\n\n",[3398,40922,40923,40934,40938,40949,40953,40965,40969],{"__ignoreMap":225},[2915,40924,40925,40927,40929,40931],{"class":3402,"line":3403},[2915,40926,12871],{"class":3406},[2915,40928,13408],{"class":3410},[2915,40930,12508],{"class":3414},[2915,40932,40933],{"class":3511}," # rwxr-xr-x\n",[2915,40935,40936],{"class":3402,"line":1117},[2915,40937,3506],{"emptyLinePlaceholder":3505},[2915,40939,40940,40942,40944,40946],{"class":3402,"line":1125},[2915,40941,12871],{"class":3406},[2915,40943,13431],{"class":3410},[2915,40945,12508],{"class":3414},[2915,40947,40948],{"class":3511}," # rw-r--r--\n",[2915,40950,40951],{"class":3402,"line":3515},[2915,40952,3506],{"emptyLinePlaceholder":3505},[2915,40954,40955,40957,40960,40962],{"class":3402,"line":3520},[2915,40956,12871],{"class":3406},[2915,40958,40959],{"class":3410}," 700",[2915,40961,12508],{"class":3414},[2915,40963,40964],{"class":3511}," # rwx------\n",[2915,40966,40967],{"class":3402,"line":5070},[2915,40968,3506],{"emptyLinePlaceholder":3505},[2915,40970,40971,40973,40976,40978],{"class":3402,"line":5075},[2915,40972,12871],{"class":3406},[2915,40974,40975],{"class":3410}," 000",[2915,40977,12508],{"class":3414},[2915,40979,40980],{"class":3511}," # ---------\n",[228,40982,40984],{"id":40983},"häufige-berechtigungssätze","Häufige Berechtigungssätze:",[645,40986,40987,41003],{},[648,40988,40989],{},[651,40990,40991,40995,40999],{},[654,40992,40993],{},[26,40994,12920],{},[654,40996,40997],{},[26,40998,13006],{},[654,41000,41001],{},[26,41002,8817],{},[670,41004,41005,41014,41023,41032,41041],{},[651,41006,41007,41009,41011],{},[675,41008,13328],{},[675,41010,13331],{},[675,41012,41013],{},"Programme, Verzeichnisse",[651,41015,41016,41018,41020],{},[675,41017,13317],{},[675,41019,13320],{},[675,41021,41022],{},"Normale Dateien",[651,41024,41025,41027,41029],{},[675,41026,13350],{},[675,41028,13353],{},[675,41030,41031],{},"Private Verzeichnisse, .ssh\u002F",[651,41033,41034,41036,41038],{},[675,41035,13339],{},[675,41037,13342],{},[675,41039,41040],{},"Private Dateien, SSH-Keys",[651,41042,41043,41045,41047],{},[675,41044,13372],{},[675,41046,13375],{},[675,41048,41049],{},"Unsicher! Alle Rechte",[54,41051,41053],{"id":41052},"chown-chgrp-besitzergruppe-ändern","chown \u002F chgrp – Besitzer\u002FGruppe ändern",[3392,41055,41057],{"className":3394,"code":41056,"language":3396,"meta":225,"style":225},"chown benutzer:gruppe datei # Besitzer und Gruppe ändern\n\nchown benutzer datei # Nur Besitzer ändern\n\nchgrp gruppe datei # Nur Gruppe ändern\n\n",[3398,41058,41059,41071,41075,41087,41091],{"__ignoreMap":225},[2915,41060,41061,41063,41066,41068],{"class":3402,"line":3403},[2915,41062,12421],{"class":3406},[2915,41064,41065],{"class":3414}," benutzer:gruppe",[2915,41067,12508],{"class":3414},[2915,41069,41070],{"class":3511}," # Besitzer und Gruppe ändern\n",[2915,41072,41073],{"class":3402,"line":1117},[2915,41074,3506],{"emptyLinePlaceholder":3505},[2915,41076,41077,41079,41082,41084],{"class":3402,"line":1125},[2915,41078,12421],{"class":3406},[2915,41080,41081],{"class":3414}," benutzer",[2915,41083,12508],{"class":3414},[2915,41085,41086],{"class":3511}," # Nur Besitzer ändern\n",[2915,41088,41089],{"class":3402,"line":3515},[2915,41090,3506],{"emptyLinePlaceholder":3505},[2915,41092,41093,41096,41099,41101],{"class":3402,"line":3520},[2915,41094,41095],{"class":3406},"chgrp",[2915,41097,41098],{"class":3414}," gruppe",[2915,41100,12508],{"class":3414},[2915,41102,41103],{"class":3511}," # Nur Gruppe ändern\n",[54,41105,41107],{"id":41106},"spezialberechtigungen","Spezialberechtigungen",[645,41109,41110,41132],{},[648,41111,41112],{},[651,41113,41114,41119,41123,41128],{},[654,41115,41116],{},[26,41117,41118],{},"Spezialbit",[654,41120,41121],{},[26,41122,12920],{},[654,41124,41125],{},[26,41126,41127],{},"Setzen",[654,41129,41130],{},[26,41131,4550],{},[670,41133,41134,41147,41159],{},[651,41135,41136,41139,41141,41144],{},[675,41137,41138],{},"SetUID",[675,41140,14416],{},[675,41142,41143],{},"chmod u+s datei",[675,41145,41146],{},"Programm läuft mit Rechten des Dateieigentümers (z.B. \u002Fusr\u002Fbin\u002Fpasswd)",[651,41148,41149,41152,41154,41157],{},[675,41150,41151],{},"SetGID",[675,41153,14435],{},[675,41155,41156],{},"chmod g+s verz",[675,41158,14444],{},[651,41160,41161,41163,41165,41168],{},[675,41162,13697],{},[675,41164,11767],{},[675,41166,41167],{},"chmod +t verz",[675,41169,41170],{},"Nur Eigentümer darf eigene Dateien löschen (z.B. \u002Ftmp)",[228,41172,41174],{"id":41173},"setuid-detailbeschreibung","SetUID – Detailbeschreibung",[20,41176,41177,41188,41196,41205],{},[23,41178,41179,41180,41183,41184,41187],{},"Gesetzt auf eine ",[26,41181,41182],{},"ausführbare Datei",": Programm läuft immer mit der UID des ",[26,41185,41186],{},"Datei-Eigentümers",", egal welcher Benutzer es startet",[23,41189,14182,41190,41192,41193,41195],{},[26,41191,13722],{}," → muss ",[26,41194,13729],{}," (Besitzer: root) schreiben, darf aber von jedem Benutzer aufgerufen werden",[23,41197,41198,41199,41201,41202],{},"Auf ",[26,41200,12054],{},": In den meisten Linux-Distros ",[26,41203,41204],{},"keine Wirkung",[23,41206,41207,41210],{},[26,41208,41209],{},"Sicherheitsrisiko:"," SetUID-root-Programme sind ein beliebtes Angriffsziel (Privilege Escalation)",[3392,41212,41214],{"className":3394,"code":41213,"language":3396,"meta":225,"style":225},"chmod u+s \u002Fusr\u002Fbin\u002Fmeinprog # SetUID setzen\n\nchmod 4755 \u002Fusr\u002Fbin\u002Fmeinprog # Oktal: 4 + 755\n\n",[3398,41215,41216,41228,41232],{"__ignoreMap":225},[2915,41217,41218,41220,41222,41225],{"class":3402,"line":3403},[2915,41219,12871],{"class":3406},[2915,41221,13777],{"class":3414},[2915,41223,41224],{"class":3414}," \u002Fusr\u002Fbin\u002Fmeinprog",[2915,41226,41227],{"class":3511}," # SetUID setzen\n",[2915,41229,41230],{"class":3402,"line":1117},[2915,41231,3506],{"emptyLinePlaceholder":3505},[2915,41233,41234,41236,41238,41240],{"class":3402,"line":1125},[2915,41235,12871],{"class":3406},[2915,41237,13800],{"class":3410},[2915,41239,41224],{"class":3414},[2915,41241,41242],{"class":3511}," # Oktal: 4 + 755\n",[228,41244,41246],{"id":41245},"setgid-detailbeschreibung","SetGID – Detailbeschreibung",[20,41248,41249,41256],{},[23,41250,41179,41251,41253,41254],{},[26,41252,41182],{},": Programm läuft mit der GID des ",[26,41255,41186],{},[23,41257,41258,41259,41261,41262,41265],{},"Gesetzt auf ein ",[26,41260,8377],{},": Alle neu erstellten Dateien und Unterverzeichnisse erben automatisch die ",[26,41263,41264],{},"Gruppe des Verzeichnisses"," (sehr nützlich für Team-Ordner!)",[3392,41267,41269],{"className":3394,"code":41268,"language":3396,"meta":225,"style":225},"chmod g+s \u002Fsrv\u002Fteam\u002F # SetGID auf Verzeichnis\n\nchmod 2755 \u002Fsrv\u002Fteam\u002F # Oktal: 2 + 755\n\n",[3398,41270,41271,41283,41287],{"__ignoreMap":225},[2915,41272,41273,41275,41277,41280],{"class":3402,"line":3403},[2915,41274,12871],{"class":3406},[2915,41276,14004],{"class":3414},[2915,41278,41279],{"class":3414}," \u002Fsrv\u002Fteam\u002F",[2915,41281,41282],{"class":3511}," # SetGID auf Verzeichnis\n",[2915,41284,41285],{"class":3402,"line":1117},[2915,41286,3506],{"emptyLinePlaceholder":3505},[2915,41288,41289,41291,41294,41296],{"class":3402,"line":1125},[2915,41290,12871],{"class":3406},[2915,41292,41293],{"class":3410}," 2755",[2915,41295,41279],{"class":3414},[2915,41297,41298],{"class":3511}," # Oktal: 2 + 755\n",[228,41300,41302],{"id":41301},"sticky-bit-detailbeschreibung","Sticky Bit – Detailbeschreibung",[20,41304,41305,41314,41320],{},[23,41306,41258,41307,41309,41310,41313],{},[26,41308,8377],{},": Jeder kann Dateien erstellen, aber nur der ",[26,41311,41312],{},"Eigentümer der Datei"," (oder root) darf diese löschen\u002Fumbenennen",[23,41315,41316,41317,41319],{},"Wichtigstes Beispiel: ",[26,41318,14185],{}," – alle Benutzer können dort Dateien anlegen, aber niemand darf fremde Dateien löschen",[23,41321,41198,41322,41324,41325],{},[26,41323,5547],{},": Historisch bedeutete es „Programm im Swap behalten\" – heute in Linux ",[26,41326,41327],{},"keine Funktion mehr",[3392,41329,41331],{"className":3394,"code":41330,"language":3396,"meta":225,"style":225},"chmod +t \u002Ftmp\u002Fgemeinsam\u002F # Sticky Bit setzen\n\nchmod 1777 \u002Ftmp\u002F # Oktal: 1 + 777 ← Typisch für \u002Ftmp\n\n",[3398,41332,41333,41345,41349],{"__ignoreMap":225},[2915,41334,41335,41337,41339,41342],{"class":3402,"line":3403},[2915,41336,12871],{"class":3406},[2915,41338,14226],{"class":3414},[2915,41340,41341],{"class":3414}," \u002Ftmp\u002Fgemeinsam\u002F",[2915,41343,41344],{"class":3511}," # Sticky Bit setzen\n",[2915,41346,41347],{"class":3402,"line":1117},[2915,41348,3506],{"emptyLinePlaceholder":3505},[2915,41350,41351,41353,41355,41358],{"class":3402,"line":1125},[2915,41352,12871],{"class":3406},[2915,41354,14240],{"class":3410},[2915,41356,41357],{"class":3414}," \u002Ftmp\u002F",[2915,41359,41360],{"class":3511}," # Oktal: 1 + 777 ← Typisch für \u002Ftmp\n",[16,41362,41363],{},"Verifizieren:",[3392,41365,41367],{"className":3394,"code":41366,"language":3396,"meta":225,"style":225},"ls -ld \u002Ftmp\n\n# drwxrwxrwt → das 't' am Ende = Sticky Bit gesetzt\n\nstat \u002Ftmp\n\n",[3398,41368,41369,41377,41381,41386,41390],{"__ignoreMap":225},[2915,41370,41371,41373,41375],{"class":3402,"line":3403},[2915,41372,12214],{"class":3406},[2915,41374,14040],{"class":3410},[2915,41376,14286],{"class":3414},[2915,41378,41379],{"class":3402,"line":1117},[2915,41380,3506],{"emptyLinePlaceholder":3505},[2915,41382,41383],{"class":3402,"line":1125},[2915,41384,41385],{"class":3511},"# drwxrwxrwt → das 't' am Ende = Sticky Bit gesetzt\n",[2915,41387,41388],{"class":3402,"line":3515},[2915,41389,3506],{"emptyLinePlaceholder":3505},[2915,41391,41392,41394],{"class":3402,"line":3520},[2915,41393,9139],{"class":3410},[2915,41395,14286],{"class":3414},[54,41397,41399],{"id":41398},"vollständige-übersicht-was-ls-l-bei-berechtigungen-anzeigt","Vollständige Übersicht: Was ls -l bei Berechtigungen anzeigt",[16,41401,41402,41403,41406],{},"Das Berechtigungsfeld hat ",[26,41404,41405],{},"10 Zeichen",": 1 Dateityp + 3×3 Rechte (user\u002Fgroup\u002Fothers)",[16,41408,41409,41410,41412,41413,41415,41416,41418,41419,41421,41422,41424,41425,41427,41428,41430],{},"Position: 1 234 567 890",[5885,41411],{},"\n│ ├─┤ ├─┤ ├─┤",[5885,41414],{},"\nBeispiel: d rwx r-s r-t",[5885,41417],{},"\n│ │ │ │",[5885,41420],{},"\n│ │ │ └── Others",[5885,41423],{},"\n│ │ └──────── Group",[5885,41426],{},"\n│ └────────────── User",[5885,41429],{},"\n└─────────────────── Dateityp",[228,41432,41434],{"id":41433},"position-1-dateityp","Position 1: Dateityp",[645,41436,41437,41449],{},[648,41438,41439],{},[651,41440,41441,41445],{},[654,41442,41443],{},[26,41444,12915],{},[654,41446,41447],{},[26,41448,8293],{},[670,41450,41451,41457,41463,41470,41477,41484,41490],{},[651,41452,41453,41455],{},[675,41454,3523],{},[675,41456,11208],{},[651,41458,41459,41461],{},[675,41460,11221],{},[675,41462,33959],{},[651,41464,41465,41467],{},[675,41466,11263],{},[675,41468,41469],{},"Symbolischer Link (symlink)",[651,41471,41472,41474],{},[675,41473,5053],{},[675,41475,41476],{},"Block-Gerätedatei (z.B. Festplatte)",[651,41478,41479,41481],{},[675,41480,11242],{},[675,41482,41483],{},"Zeichen-Gerätedatei (z.B. Terminal)",[651,41485,41486,41488],{},[675,41487,16],{},[675,41489,33986],{},[651,41491,41492,41494],{},[675,41493,11274],{},[675,41495,41496],{},"Socket",[228,41498,41500],{"id":41499},"positionen-24-user-57-group-810-others-basisrechte","Positionen 2–4 (User), 5–7 (Group), 8–10 (Others): Basisrechte",[645,41502,41503,41519],{},[648,41504,41505],{},[651,41506,41507,41511,41515],{},[654,41508,41509],{},[26,41510,12915],{},[654,41512,41513],{},[26,41514,2816],{},[654,41516,41517],{},[26,41518,5483],{},[670,41520,41521,41531,41540,41550,41559,41569],{},[651,41522,41523,41525,41528],{},[675,41524,12940],{},[675,41526,41527],{},"1. Stelle",[675,41529,41530],{},"Lesen erlaubt",[651,41532,41533,41535,41537],{},[675,41534,3523],{},[675,41536,41527],{},[675,41538,41539],{},"Lesen verboten",[651,41541,41542,41544,41547],{},[675,41543,12956],{},[675,41545,41546],{},"2. Stelle",[675,41548,41549],{},"Schreiben erlaubt",[651,41551,41552,41554,41556],{},[675,41553,3523],{},[675,41555,41546],{},[675,41557,41558],{},"Schreiben verboten",[651,41560,41561,41563,41566],{},[675,41562,12973],{},[675,41564,41565],{},"3. Stelle",[675,41567,41568],{},"Ausführen erlaubt",[651,41570,41571,41573,41575],{},[675,41572,3523],{},[675,41574,41565],{},[675,41576,41577],{},"Ausführen verboten",[228,41579,41581],{"id":41580},"position-4-user-7-group-10-others-spezialbit-überlagerung","Position 4 (User), 7 (Group), 10 (Others): Spezialbit-Überlagerung",[645,41583,41584,41600],{},[648,41585,41586],{},[651,41587,41588,41592,41596],{},[654,41589,41590],{},[26,41591,12915],{},[654,41593,41594],{},[26,41595,2816],{},[654,41597,41598],{},[26,41599,5483],{},[670,41601,41602,41612,41621,41631,41640,41650],{},[651,41603,41604,41606,41609],{},[675,41605,11274],{},[675,41607,41608],{},"User (Pos. 4)",[675,41610,41611],{},"SetUID gesetzt und x vorhanden",[651,41613,41614,41616,41618],{},[675,41615,13753],{},[675,41617,41608],{},[675,41619,41620],{},"SetUID gesetzt, aber kein x (unüblich!)",[651,41622,41623,41625,41628],{},[675,41624,11274],{},[675,41626,41627],{},"Group (Pos. 7)",[675,41629,41630],{},"SetGID gesetzt und x vorhanden",[651,41632,41633,41635,41637],{},[675,41634,13753],{},[675,41636,41627],{},[675,41638,41639],{},"SetGID gesetzt, aber kein x",[651,41641,41642,41644,41647],{},[675,41643,13230],{},[675,41645,41646],{},"Others (Pos. 10)",[675,41648,41649],{},"Sticky Bit gesetzt und x vorhanden",[651,41651,41652,41654,41656],{},[675,41653,14206],{},[675,41655,41646],{},[675,41657,41658],{},"Sticky Bit gesetzt, aber kein x (selten)",[16,41660,41661,4850,41666,4850,41674,41678,41679,41684,4850,41693,41678,41697,41702],{},[257,41662,41663],{},[26,41664,41665],{},"Merkregel:",[257,41667,41668,41669,41673],{},"Kleinbuchstabe (",[26,41670,41671],{},[26,41672,11274],{},",",[257,41675,41676],{},[26,41677,13230],{},"*) = Spezialbit* ",[257,41680,41681],{},[26,41682,41683],{},"UND",[257,41685,41686,41688,41689,41673],{},[26,41687,12973],{},"**. Großbuchstabe (",[26,41690,41691],{},[26,41692,13753],{},[257,41694,41695],{},[26,41696,14206],{},[257,41698,41699],{},[26,41700,41701],{},"OHNE",[257,41703,41704,41706],{},[26,41705,12973],{},"**.",[228,41708,41710],{"id":41709},"alle-möglichen-zeichen-auf-einen-blick","Alle möglichen Zeichen auf einen Blick",[16,41712,41713],{},"Dateityp: - d l b c p s",[16,41715,41716,41717,41719,41720,41722,41723,41725],{},"User: r w x s S",[5885,41718],{},"\nGroup: r w x s S",[5885,41721],{},"\nOthers: r w x t T",[5885,41724],{},"\n(- für jeweils \"nicht gesetzt\")",[228,41727,41729],{"id":41728},"praxisbeispiele-mit-ls-l","Praxisbeispiele mit ls -l",[645,41731,41732,41745],{},[648,41733,41734],{},[651,41735,41736,41741],{},[654,41737,41738],{},[26,41739,41740],{},"Ausgabe von ls -l",[654,41742,41743],{},[26,41744,5483],{},[670,41746,41747,41755,41763,41771,41779,41786,41793,41801,41808],{},[651,41748,41749,41752],{},[675,41750,41751],{},"-rw-r--r--",[675,41753,41754],{},"Normale Datei: User lesen+schreiben, Group+Others nur lesen",[651,41756,41757,41760],{},[675,41758,41759],{},"-rwxr-xr-x",[675,41761,41762],{},"Programm: User alle Rechte, Group+Others lesen+ausführen",[651,41764,41765,41768],{},[675,41766,41767],{},"-rwx------",[675,41769,41770],{},"Private Datei: nur Owner alle Rechte",[651,41772,41773,41776],{},[675,41774,41775],{},"drwxr-xr-x",[675,41777,41778],{},"Verzeichnis: Standard (755)",[651,41780,41781,41783],{},[675,41782,14201],{},[675,41784,41785],{},"\u002Ftmp: Alle Rechte + Sticky Bit (1777)",[651,41787,41788,41790],{},[675,41789,13748],{},[675,41791,41792],{},"SetUID gesetzt (z.B. \u002Fusr\u002Fbin\u002Fpasswd)",[651,41794,41795,41798],{},[675,41796,41797],{},"drwxr-sr-x",[675,41799,41800],{},"SetGID auf Verzeichnis (Gruppe wird vererbt)",[651,41802,41803,41805],{},[675,41804,13761],{},[675,41806,41807],{},"SetUID, aber kein execute-Bit → sinnlos\u002FFehler!",[651,41809,41810,41813],{},[675,41811,41812],{},"lrwxrwxrwx",[675,41814,41815],{},"Symbolischer Link (Rechte immer 777)",[228,41817,41819],{"id":41818},"oktalwerte-der-spezialbits","Oktalwerte der Spezialbits",[645,41821,41822,41838],{},[648,41823,41824],{},[651,41825,41826,41830,41834],{},[654,41827,41828],{},[26,41829,12920],{},[654,41831,41832],{},[26,41833,5483],{},[654,41835,41836],{},[26,41837,730],{},[670,41839,41840,41850,41860,41870,41881,41892],{},[651,41841,41842,41845,41847],{},[675,41843,41844],{},"4xxx",[675,41846,41138],{},[675,41848,41849],{},"chmod 4755 datei → -rwsr-xr-x",[651,41851,41852,41855,41857],{},[675,41853,41854],{},"2xxx",[675,41856,41151],{},[675,41858,41859],{},"chmod 2755 verz\u002F → drwxr-sr-x",[651,41861,41862,41865,41867],{},[675,41863,41864],{},"1xxx",[675,41866,13697],{},[675,41868,41869],{},"chmod 1777 \u002Ftmp → drwxrwxrwt",[651,41871,41872,41875,41878],{},[675,41873,41874],{},"6xxx",[675,41876,41877],{},"SetUID + SetGID",[675,41879,41880],{},"chmod 6755 datei",[651,41882,41883,41886,41889],{},[675,41884,41885],{},"7xxx",[675,41887,41888],{},"Alle drei",[675,41890,41891],{},"chmod 7777 datei (sehr selten)",[651,41893,41894,41897,41900],{},[675,41895,41896],{},"0xxx",[675,41898,41899],{},"Keine Spezialbits",[675,41901,41902],{},"chmod 0755 datei (normales 755)",[228,41904,41906],{"id":41905},"spezialberechtigungen-prüfen","Spezialberechtigungen prüfen:",[11,41908,41910],{"id":41909},"alle-setuid-dateien-auf-dem-system-finden","Alle SetUID-Dateien auf dem System finden:",[3392,41912,41914],{"className":3394,"code":41913,"language":3396,"meta":225,"style":225},"find \u002F -perm -4000 -type f 2>\u002Fdev\u002Fnull\n\n# Alle SetGID-Dateien finden:\n\nfind \u002F -perm -2000 -type f 2>\u002Fdev\u002Fnull\n\n# Alle Verzeichnisse mit Sticky Bit:\n\nfind \u002F -perm -1000 -type d 2>\u002Fdev\u002Fnull\n\n# Detailansicht mit stat:\n\nstat \u002Ftmp\n\nstat \u002Fusr\u002Fbin\u002Fpasswd\n\n",[3398,41915,41916,41934,41938,41943,41947,41965,41969,41974,41978,41996,42000,42005,42009,42015,42019],{"__ignoreMap":225},[2915,41917,41918,41920,41922,41924,41926,41928,41930,41932],{"class":3402,"line":3403},[2915,41919,8210],{"class":3406},[2915,41921,13844],{"class":3414},[2915,41923,13851],{"class":3410},[2915,41925,13854],{"class":3410},[2915,41927,8248],{"class":3410},[2915,41929,9021],{"class":3414},[2915,41931,13860],{"class":3533},[2915,41933,13863],{"class":3414},[2915,41935,41936],{"class":3402,"line":1117},[2915,41937,3506],{"emptyLinePlaceholder":3505},[2915,41939,41940],{"class":3402,"line":1125},[2915,41941,41942],{"class":3511},"# Alle SetGID-Dateien finden:\n",[2915,41944,41945],{"class":3402,"line":3515},[2915,41946,3506],{"emptyLinePlaceholder":3505},[2915,41948,41949,41951,41953,41955,41957,41959,41961,41963],{"class":3402,"line":3520},[2915,41950,8210],{"class":3406},[2915,41952,13844],{"class":3414},[2915,41954,13851],{"class":3410},[2915,41956,14070],{"class":3410},[2915,41958,8248],{"class":3410},[2915,41960,9021],{"class":3414},[2915,41962,13860],{"class":3533},[2915,41964,13863],{"class":3414},[2915,41966,41967],{"class":3402,"line":5070},[2915,41968,3506],{"emptyLinePlaceholder":3505},[2915,41970,41971],{"class":3402,"line":5075},[2915,41972,41973],{"class":3511},"# Alle Verzeichnisse mit Sticky Bit:\n",[2915,41975,41976],{"class":3402,"line":5093},[2915,41977,3506],{"emptyLinePlaceholder":3505},[2915,41979,41980,41982,41984,41986,41988,41990,41992,41994],{"class":3402,"line":5098},[2915,41981,8210],{"class":3406},[2915,41983,13844],{"class":3414},[2915,41985,13851],{"class":3410},[2915,41987,14314],{"class":3410},[2915,41989,8248],{"class":3410},[2915,41991,9061],{"class":3414},[2915,41993,13860],{"class":3533},[2915,41995,13863],{"class":3414},[2915,41997,41998],{"class":3402,"line":5207},[2915,41999,3506],{"emptyLinePlaceholder":3505},[2915,42001,42002],{"class":3402,"line":5212},[2915,42003,42004],{"class":3511},"# Detailansicht mit stat:\n",[2915,42006,42007],{"class":3402,"line":5218},[2915,42008,3506],{"emptyLinePlaceholder":3505},[2915,42010,42011,42013],{"class":3402,"line":5223},[2915,42012,9139],{"class":3410},[2915,42014,14286],{"class":3414},[2915,42016,42017],{"class":3402,"line":5229},[2915,42018,3506],{"emptyLinePlaceholder":3505},[2915,42020,42021,42023],{"class":3402,"line":5253},[2915,42022,9139],{"class":3410},[2915,42024,13907],{"class":3414},[54,42026,42028],{"id":42027},"umask-standard-berechtigungen","umask – Standard-Berechtigungen",[16,42030,42031,42033,42034,42037,42038,42041],{},[26,42032,11937],{}," (user file creation mask) legt fest, welche Rechte beim Erstellen neuer Dateien und Verzeichnisse ",[26,42035,42036],{},"weggenommen"," werden. Es ist eine ",[26,42039,42040],{},"Maske",", keine direkte Rechtevergabe.",[228,42043,42045],{"id":42044},"berechnung","Berechnung",[16,42047,42048],{},"Neue Rechte = Maximalrechte - umask",[645,42050,42051,42065],{},[648,42052,42053],{},[651,42054,42055,42057,42061],{},[654,42056],{},[654,42058,42059],{},[26,42060,34071],{},[654,42062,42063],{},[26,42064,8377],{},[670,42066,42067,42083,42097],{},[651,42068,42069,42072,42078],{},[675,42070,42071],{},"Maximalrechte",[675,42073,42074,42077],{},[26,42075,42076],{},"666"," (rw-rw-rw-)",[675,42079,42080,42082],{},[26,42081,13372],{}," (rwxrwxrwx)",[651,42084,42085,42088,42093],{},[675,42086,42087],{},"umask (Standard)",[675,42089,42090],{},[26,42091,42092],{},"022",[675,42094,42095],{},[26,42096,42092],{},[651,42098,42099,42104,42109],{},[675,42100,42101],{},[26,42102,42103],{},"Ergebnis",[675,42105,42106,42108],{},[26,42107,13317],{}," (rw-r--r--)",[675,42110,42111,42113],{},[26,42112,13328],{}," (rwxr-xr-x)",[16,42115,42116,42121,42123,4850,42126,4850,42131,4850,42139,4850,42143,4850,42146,42150],{},[257,42117,42118],{},[26,42119,42120],{},"Warum haben Dateien maximal 666?",[5885,42122],{},[257,42124,42125],{},"Linux vergibt",[257,42127,42128],{},[26,42129,42130],{},"niemals",[257,42132,42133,42134,42138],{},"automatisch das execute-Bit (",[26,42135,42136],{},[26,42137,12973],{},") auf neue Dateien, da eine normale Datei kein Programm ist. Verzeichnisse brauchen",[257,42140,42141],{},[26,42142,12973],{},[257,42144,42145],{},"um betreten werden zu können, daher Maximal",[257,42147,42148],{},[26,42149,13372],{},"*.*",[228,42152,42154],{"id":42153},"wichtiger-hinweis-zur-berechnung","Wichtiger Hinweis zur Berechnung",[16,42156,42157,42158,42161],{},"Die Subtraktion ist ",[26,42159,42160],{},"bitweise"," (nicht arithmetisch):",[16,42163,42164,42165],{},"Beispiel: ",[26,42166,42167],{},"umask 027",[16,42169,42170],{},"Datei: 666 (rw-rw-rw-)",[3392,42172,42174],{"className":3394,"code":42173,"language":3396,"meta":225,"style":225},"umask: 027 (----w-rwx) → wird weggenommen\n",[3398,42175,42176],{"__ignoreMap":225},[2915,42177,42178,42180,42182,42185],{"class":3402,"line":3403},[2915,42179,11937],{"class":3410},[2915,42181,6908],{"class":3414},[2915,42183,42184],{"class":3410}," 027",[2915,42186,42187],{"class":3529}," (----w-rwx) → wird weggenommen\n",[16,42189,42190],{},"Ergebnis: 640 (rw-r-----)",[16,42192,42193],{},"Verzeichnis:",[16,42195,42196],{},"Verzeichnis: 777 (rwxrwxrwx)",[3392,42198,42199],{"className":3394,"code":42173,"language":3396,"meta":225,"style":225},[3398,42200,42201],{"__ignoreMap":225},[2915,42202,42203,42205,42207,42209],{"class":3402,"line":3403},[2915,42204,11937],{"class":3410},[2915,42206,6908],{"class":3414},[2915,42208,42184],{"class":3410},[2915,42210,42187],{"class":3529},[16,42212,42213],{},"Ergebnis: 750 (rwxr-x---)",[228,42215,42217],{"id":42216},"alle-wichtigen-umask-werte","Alle wichtigen umask-Werte",[645,42219,42220,42240],{},[648,42221,42222],{},[651,42223,42224,42228,42232,42236],{},[654,42225,42226],{},[26,42227,11937],{},[654,42229,42230],{},[26,42231,34071],{},[654,42233,42234],{},[26,42235,8377],{},[654,42237,42238],{},[26,42239,8817],{},[670,42241,42242,42255,42269,42282,42296,42310],{},[651,42243,42244,42246,42249,42252],{},[675,42245,13113],{},[675,42247,42248],{},"666 (rw-rw-rw-)",[675,42250,42251],{},"777 (rwxrwxrwx)",[675,42253,42254],{},"Alle Rechte (unsicher!)",[651,42256,42257,42260,42263,42266],{},[675,42258,42259],{},"002",[675,42261,42262],{},"664 (rw-rw-r--)",[675,42264,42265],{},"775 (rwxrwxr-x)",[675,42267,42268],{},"Gruppenarbeit",[651,42270,42271,42273,42276,42279],{},[675,42272,42092],{},[675,42274,42275],{},"644 (rw-r--r--)",[675,42277,42278],{},"755 (rwxr-xr-x)",[675,42280,42281],{},"Standard für normale Benutzer",[651,42283,42284,42287,42290,42293],{},[675,42285,42286],{},"027",[675,42288,42289],{},"640 (rw-r-----)",[675,42291,42292],{},"750 (rwxr-x---)",[675,42294,42295],{},"Erhöhte Sicherheit (Other kein Zugriff)",[651,42297,42298,42301,42304,42307],{},[675,42299,42300],{},"077",[675,42302,42303],{},"600 (rw-------)",[675,42305,42306],{},"700 (rwx------)",[675,42308,42309],{},"Private Dateien (nur Eigentümer)",[651,42311,42312,42315,42318,42320],{},[675,42313,42314],{},"177",[675,42316,42317],{},"400 (r--------)",[675,42319,42303],{},[675,42321,42322],{},"Schreibgeschützte private Dateien",[228,42324,42326],{"id":42325},"befehle","Befehle",[3392,42328,42330],{"className":3394,"code":42329,"language":3396,"meta":225,"style":225},"umask # Aktuelle umask anzeigen (oktal)\numask -S # Symbolische Anzeige (z.B. u=rwx,g=rx,o=rx)\numask 022 # umask für aktuelle Shell-Sitzung setzen\numask 027 # Strengere umask setzen\n\n",[3398,42331,42332,42339,42348,42358],{"__ignoreMap":225},[2915,42333,42334,42336],{"class":3402,"line":3403},[2915,42335,11937],{"class":3410},[2915,42337,42338],{"class":3511}," # Aktuelle umask anzeigen (oktal)\n",[2915,42340,42341,42343,42345],{"class":3402,"line":1117},[2915,42342,11937],{"class":3410},[2915,42344,24224],{"class":3410},[2915,42346,42347],{"class":3511}," # Symbolische Anzeige (z.B. u=rwx,g=rx,o=rx)\n",[2915,42349,42350,42352,42355],{"class":3402,"line":1125},[2915,42351,11937],{"class":3410},[2915,42353,42354],{"class":3410}," 022",[2915,42356,42357],{"class":3511}," # umask für aktuelle Shell-Sitzung setzen\n",[2915,42359,42360,42362,42364],{"class":3402,"line":3515},[2915,42361,11937],{"class":3410},[2915,42363,42184],{"class":3410},[2915,42365,42366],{"class":3511}," # Strengere umask setzen\n",[228,42368,42370],{"id":42369},"umask-dauerhaft-setzen","umask dauerhaft setzen",[645,42372,42373,42386],{},[648,42374,42375],{},[651,42376,42377,42381],{},[654,42378,42379],{},[26,42380,34071],{},[654,42382,42383],{},[26,42384,42385],{},"Gültig für",[670,42387,42388,42395,42402,42409],{},[651,42389,42390,42392],{},[675,42391,12407],{},[675,42393,42394],{},"Normaler Benutzer (interaktive Shell)",[651,42396,42397,42399],{},[675,42398,12415],{},[675,42400,42401],{},"Normaler Benutzer (Login-Shell)",[651,42403,42404,42406],{},[675,42405,12399],{},[675,42407,42408],{},"Alle Benutzer (System-weit)",[651,42410,42411,42414],{},[675,42412,42413],{},"\u002Fetc\u002Flogin.defs",[675,42415,42416],{},"System-Standard (UMASK-Eintrag)",[11,42418,42420],{"id":42419},"in-bashrc-eintragen","In ~\u002F.bashrc eintragen:",[16,42422,42423],{},"umask 022",[228,42425,42427],{"id":42426},"praxisbeispiel-warum-umask-wichtig-ist","Praxisbeispiel: Warum umask wichtig ist",[11,42429,42431],{"id":42430},"ohne-umask-022-standard","Ohne umask 022 (Standard):",[3392,42433,42435],{"className":3394,"code":42434,"language":3396,"meta":225,"style":225},"touch neue_datei.txt → -rw-r--r-- (644)\n\nmkdir neuer_ordner\u002F → drwxr-xr-x (755)\n\n# Mit umask 077 (privat):\n\numask 077\n\ntouch geheime_datei.txt → -rw------- (600)\n\nmkdir privater_ordner\u002F → drwx------ (700)\n\n",[3398,42436,42437,42453,42457,42472,42476,42481,42485,42492,42496,42511,42515],{"__ignoreMap":225},[2915,42438,42439,42441,42444,42447,42450],{"class":3402,"line":3403},[2915,42440,10189],{"class":3406},[2915,42442,42443],{"class":3414}," neue_datei.txt",[2915,42445,42446],{"class":3414}," →",[2915,42448,42449],{"class":3410}," -rw-r--r--",[2915,42451,42452],{"class":3529}," (644)\n",[2915,42454,42455],{"class":3402,"line":1117},[2915,42456,3506],{"emptyLinePlaceholder":3505},[2915,42458,42459,42461,42464,42466,42469],{"class":3402,"line":1125},[2915,42460,5690],{"class":3406},[2915,42462,42463],{"class":3414}," neuer_ordner\u002F",[2915,42465,42446],{"class":3414},[2915,42467,42468],{"class":3414}," drwxr-xr-x",[2915,42470,42471],{"class":3529}," (755)\n",[2915,42473,42474],{"class":3402,"line":3515},[2915,42475,3506],{"emptyLinePlaceholder":3505},[2915,42477,42478],{"class":3402,"line":3520},[2915,42479,42480],{"class":3511},"# Mit umask 077 (privat):\n",[2915,42482,42483],{"class":3402,"line":5070},[2915,42484,3506],{"emptyLinePlaceholder":3505},[2915,42486,42487,42489],{"class":3402,"line":5075},[2915,42488,11937],{"class":3410},[2915,42490,42491],{"class":3410}," 077\n",[2915,42493,42494],{"class":3402,"line":5093},[2915,42495,3506],{"emptyLinePlaceholder":3505},[2915,42497,42498,42500,42503,42505,42508],{"class":3402,"line":5098},[2915,42499,10189],{"class":3406},[2915,42501,42502],{"class":3414}," geheime_datei.txt",[2915,42504,42446],{"class":3414},[2915,42506,42507],{"class":3410}," -rw-------",[2915,42509,42510],{"class":3529}," (600)\n",[2915,42512,42513],{"class":3402,"line":5207},[2915,42514,3506],{"emptyLinePlaceholder":3505},[2915,42516,42517,42519,42522,42524,42527],{"class":3402,"line":5212},[2915,42518,5690],{"class":3406},[2915,42520,42521],{"class":3414}," privater_ordner\u002F",[2915,42523,42446],{"class":3414},[2915,42525,42526],{"class":3414}," drwx------",[2915,42528,42529],{"class":3529}," (700)\n",[11,42531,4659],{"id":42532},"umgebungsvariablen",[54,42534,42536],{"id":42535},"wichtige-standard-variablen","Wichtige Standard-Variablen",[645,42538,42539,42551],{},[648,42540,42541],{},[651,42542,42543,42547],{},[654,42544,42545],{},[26,42546,8627],{},[654,42548,42549],{},[26,42550,4550],{},[670,42552,42553,42560,42568,42574,42582,42590,42597],{},[651,42554,42555,42557],{},[675,42556,10714],{},[675,42558,42559],{},"Home-Verzeichnis",[651,42561,42562,42565],{},[675,42563,42564],{},"$PATH",[675,42566,42567],{},"Suchpfade für Programme",[651,42569,42570,42572],{},[675,42571,10698],{},[675,42573,35066],{},[651,42575,42576,42579],{},[675,42577,42578],{},"$SHELL",[675,42580,42581],{},"Aktuelle Shell",[651,42583,42584,42587],{},[675,42585,42586],{},"$PWD",[675,42588,42589],{},"Aktuelles Verzeichnis",[651,42591,42592,42594],{},[675,42593,4903],{},[675,42595,42596],{},"Exit-Code des letzten Befehls",[651,42598,42599,42601],{},[675,42600,4909],{},[675,42602,42603],{},"PID des aktuellen Prozesses",[54,42605,42607],{"id":42606},"variablen-anzeigensetzen","Variablen anzeigen\u002Fsetzen",[3392,42609,42611],{"className":3394,"code":42610,"language":3396,"meta":225,"style":225},"echo $HOME # Variable ausgeben\n\nenv # Alle Umgebungsvariablen anzeigen\n\nprintenv # Alternative\n\nset # Alle Variablen Funktionen\n\n# Variable setzen (nur lokal\u002Faktuelle Shell)\n\nmyvar=\"Hallo\"\n\n# Variable exportieren (für Kindprozesse)\n\nexport myvar=\"Hallo\"\n\n# Variable löschen\n\nunset myvar\n\n# PATH erweitern\n\nexport PATH=\"\u002Fhome\u002Fuser\u002Fbin:$PATH\"\n\n",[3398,42612,42613,42623,42627,42635,42639,42647,42651,42658,42662,42667,42671,42681,42685,42690,42694,42706,42710,42715,42719,42727,42731,42736,42740],{"__ignoreMap":225},[2915,42614,42615,42617,42620],{"class":3402,"line":3403},[2915,42616,5059],{"class":3410},[2915,42618,42619],{"class":3529}," $HOME ",[2915,42621,42622],{"class":3511},"# Variable ausgeben\n",[2915,42624,42625],{"class":3402,"line":1117},[2915,42626,3506],{"emptyLinePlaceholder":3505},[2915,42628,42629,42632],{"class":3402,"line":1125},[2915,42630,42631],{"class":3406},"env",[2915,42633,42634],{"class":3511}," # Alle Umgebungsvariablen anzeigen\n",[2915,42636,42637],{"class":3402,"line":3515},[2915,42638,3506],{"emptyLinePlaceholder":3505},[2915,42640,42641,42644],{"class":3402,"line":3520},[2915,42642,42643],{"class":3406},"printenv",[2915,42645,42646],{"class":3511}," # Alternative\n",[2915,42648,42649],{"class":3402,"line":5070},[2915,42650,3506],{"emptyLinePlaceholder":3505},[2915,42652,42653,42655],{"class":3402,"line":5075},[2915,42654,9916],{"class":3410},[2915,42656,42657],{"class":3511}," # Alle Variablen Funktionen\n",[2915,42659,42660],{"class":3402,"line":5093},[2915,42661,3506],{"emptyLinePlaceholder":3505},[2915,42663,42664],{"class":3402,"line":5098},[2915,42665,42666],{"class":3511},"# Variable setzen (nur lokal\u002Faktuelle Shell)\n",[2915,42668,42669],{"class":3402,"line":5207},[2915,42670,3506],{"emptyLinePlaceholder":3505},[2915,42672,42673,42676,42678],{"class":3402,"line":5212},[2915,42674,42675],{"class":3529},"myvar",[2915,42677,5137],{"class":3533},[2915,42679,42680],{"class":3414},"\"Hallo\"\n",[2915,42682,42683],{"class":3402,"line":5218},[2915,42684,3506],{"emptyLinePlaceholder":3505},[2915,42686,42687],{"class":3402,"line":5223},[2915,42688,42689],{"class":3511},"# Variable exportieren (für Kindprozesse)\n",[2915,42691,42692],{"class":3402,"line":5229},[2915,42693,3506],{"emptyLinePlaceholder":3505},[2915,42695,42696,42699,42702,42704],{"class":3402,"line":5253},[2915,42697,42698],{"class":3533},"export",[2915,42700,42701],{"class":3529}," myvar",[2915,42703,5137],{"class":3533},[2915,42705,42680],{"class":3414},[2915,42707,42708],{"class":3402,"line":5266},[2915,42709,3506],{"emptyLinePlaceholder":3505},[2915,42711,42712],{"class":3402,"line":5721},[2915,42713,42714],{"class":3511},"# Variable löschen\n",[2915,42716,42717],{"class":3402,"line":9401},[2915,42718,3506],{"emptyLinePlaceholder":3505},[2915,42720,42721,42724],{"class":3402,"line":9406},[2915,42722,42723],{"class":3410},"unset",[2915,42725,42726],{"class":3414}," myvar\n",[2915,42728,42729],{"class":3402,"line":9411},[2915,42730,3506],{"emptyLinePlaceholder":3505},[2915,42732,42733],{"class":3402,"line":9416},[2915,42734,42735],{"class":3511},"# PATH erweitern\n",[2915,42737,42738],{"class":3402,"line":9428},[2915,42739,3506],{"emptyLinePlaceholder":3505},[2915,42741,42742,42744,42747,42749,42752,42754],{"class":3402,"line":9433},[2915,42743,42698],{"class":3533},[2915,42745,42746],{"class":3529}," PATH",[2915,42748,5137],{"class":3533},[2915,42750,42751],{"class":3414},"\"\u002Fhome\u002Fuser\u002Fbin:",[2915,42753,42564],{"class":3529},[2915,42755,5204],{"class":3414},[54,42757,42759],{"id":42758},"quoting-regeln","Quoting-Regeln",[645,42761,42762,42778],{},[648,42763,42764],{},[651,42765,42766,42770,42774],{},[654,42767,42768],{},[26,42769,5473],{},[654,42771,42772],{},[26,42773,4550],{},[654,42775,42776],{},[26,42777,730],{},[670,42779,42780,42791,42802],{},[651,42781,42782,42785,42788],{},[675,42783,42784],{},"Doppelte Anführungszeichen \"",[675,42786,42787],{},"Variablen werden aufgelöst",[675,42789,42790],{},"echo \"$HOME\" → \u002Fhome\u002Fuser",[651,42792,42793,42796,42799],{},[675,42794,42795],{},"Einfache Anführungszeichen '",[675,42797,42798],{},"Alles wird wörtlich genommen",[675,42800,42801],{},"echo '$HOME' → $HOME",[651,42803,42804,42807,42810],{},[675,42805,42806],{},"Backslash \\",[675,42808,42809],{},"Nächstes Zeichen literal",[675,42811,42812],{},"echo $HOME → $HOME",[11,42814,42816],{"id":42815},"prozessmanagement-und-systemüberwachung","Prozessmanagement und Systemüberwachung",[54,42818,42820],{"id":42819},"prozess-grundlagen","Prozess-Grundlagen",[20,42822,42823,42829,42839],{},[23,42824,42825,42826,42828],{},"Ein ",[26,42827,69],{}," = ein Programm in Ausführung",[23,42830,42831,42832,42834,42835,42838],{},"Jeder Prozess hat: ",[26,42833,36682],{}," (Prozessnummer), ",[26,42836,42837],{},"PPID"," (Elternprozess-ID), Benutzer",[23,42840,42841,42844],{},[26,42842,42843],{},"PID 1"," = erster Prozess (\u002Fsbin\u002Finit bzw. systemd)",[228,42846,42848],{"id":42847},"prozesszustände","Prozesszustände",[645,42850,42851,42868],{},[648,42852,42853],{},[651,42854,42855,42860,42864],{},[654,42856,42857],{},[26,42858,42859],{},"Status",[654,42861,42862],{},[26,42863,12915],{},[654,42865,42866],{},[26,42867,4550],{},[670,42869,42870,42881,42891,42901,42911],{},[651,42871,42872,42875,42878],{},[675,42873,42874],{},"Running",[675,42876,42877],{},"R",[675,42879,42880],{},"Prozess läuft\u002Fkann Rechenzeit erhalten",[651,42882,42883,42886,42888],{},[675,42884,42885],{},"Sleeping",[675,42887,13753],{},[675,42889,42890],{},"Wartet auf Ereignis",[651,42892,42893,42896,42898],{},[675,42894,42895],{},"Uninterruptible Sleep",[675,42897,19308],{},[675,42899,42900],{},"Wartet, kann nicht gestoppt werden",[651,42902,42903,42906,42908],{},[675,42904,42905],{},"Stopped",[675,42907,14206],{},[675,42909,42910],{},"Angehalten, kann fortgesetzt werden",[651,42912,42913,42916,42919],{},[675,42914,42915],{},"Zombie",[675,42917,42918],{},"Z",[675,42920,42921],{},"Beendet, Rückgabewert nicht abgeholt",[54,42923,42925],{"id":42924},"befehle-zur-prozessverwaltung","Befehle zur Prozessverwaltung",[645,42927,42928,42940],{},[648,42929,42930],{},[651,42931,42932,42936],{},[654,42933,42934],{},[26,42935,6993],{},[654,42937,42938],{},[26,42939,4550],{},[670,42941,42942,42949,42957,42965,42973,42981,42989,42996,43004,43012,43020,43028],{},[651,42943,42944,42946],{},[675,42945,7673],{},[675,42947,42948],{},"Prozesse des aktuellen Terminals",[651,42950,42951,42954],{},[675,42952,42953],{},"ps aux",[675,42955,42956],{},"Alle Prozesse anzeigen",[651,42958,42959,42962],{},[675,42960,42961],{},"ps -ef",[675,42963,42964],{},"Alle Prozesse mit PPID",[651,42966,42967,42970],{},[675,42968,42969],{},"ps -l",[675,42971,42972],{},"Langes Listing (mit Nice-Wert)",[651,42974,42975,42978],{},[675,42976,42977],{},"pstree",[675,42979,42980],{},"Baumstruktur",[651,42982,42983,42986],{},[675,42984,42985],{},"pstree -p",[675,42987,42988],{},"Baumstruktur mit PIDs",[651,42990,42991,42993],{},[675,42992,3185],{},[675,42994,42995],{},"Dynamische Prozesstabelle",[651,42997,42998,43001],{},[675,42999,43000],{},"htop",[675,43002,43003],{},"Farbige Prozesstabelle",[651,43005,43006,43009],{},[675,43007,43008],{},"kill PID",[675,43010,43011],{},"Prozess beenden (SIGTERM)",[651,43013,43014,43017],{},[675,43015,43016],{},"kill -9 PID",[675,43018,43019],{},"Prozess erzwungen beenden (SIGKILL)",[651,43021,43022,43025],{},[675,43023,43024],{},"kill %jobnr",[675,43026,43027],{},"Job beenden",[651,43029,43030,43033],{},[675,43031,43032],{},"killall programmname",[675,43034,43035],{},"Alle Prozesse mit dem Namen beenden",[54,43037,43039],{"id":43038},"vorder-und-hintergrundprozesse","Vorder- und Hintergrundprozesse",[645,43041,43042,43054],{},[648,43043,43044],{},[651,43045,43046,43050],{},[654,43047,43048],{},[26,43049,6993],{},[654,43051,43052],{},[26,43053,4550],{},[670,43055,43056,43064,43072,43080,43088,43096],{},[651,43057,43058,43061],{},[675,43059,43060],{},"kommando &",[675,43062,43063],{},"Im Hintergrund ausführen",[651,43065,43066,43069],{},[675,43067,43068],{},"Strg+Z",[675,43070,43071],{},"Aktuellen Prozess in Hintergrund + stoppen",[651,43073,43074,43077],{},[675,43075,43076],{},"bg",[675,43078,43079],{},"Gestoppten Prozess im Hintergrund weiterlaufen lassen",[651,43081,43082,43085],{},[675,43083,43084],{},"fg",[675,43086,43087],{},"Prozess in den Vordergrund holen",[651,43089,43090,43093],{},[675,43091,43092],{},"fg %1",[675,43094,43095],{},"Job 1 in den Vordergrund",[651,43097,43098,43101],{},[675,43099,43100],{},"jobs",[675,43102,43103],{},"Hintergrundjobs anzeigen",[54,43105,43107],{"id":43106},"prozesspriorität-nice-wert","Prozesspriorität (nice-Wert)",[645,43109,43110,43127],{},[648,43111,43112],{},[651,43113,43114,43118,43122],{},[654,43115,43116],{},[26,43117,31531],{},[654,43119,43120],{},[26,43121,585],{},[654,43123,43124],{},[26,43125,43126],{},"Wer darf?",[670,43128,43129,43140,43150,43160,43171],{},[651,43130,43131,43134,43137],{},[675,43132,43133],{},"-20",[675,43135,43136],{},"Höchste Priorität",[675,43138,43139],{},"Nur root",[651,43141,43142,43145,43148],{},[675,43143,43144],{},"-20 bis -1",[675,43146,43147],{},"Hoch",[675,43149,43139],{},[651,43151,43152,43154,43157],{},[675,43153,11501],{},[675,43155,43156],{},"Standard",[675,43158,43159],{},"Alle",[651,43161,43162,43165,43168],{},[675,43163,43164],{},"1 bis 19",[675,43166,43167],{},"Niedrig",[675,43169,43170],{},"Alle Benutzer",[651,43172,43173,43176,43179],{},[675,43174,43175],{},"19",[675,43177,43178],{},"Niedrigste Priorität",[675,43180,43159],{},[3392,43182,43184],{"className":3394,"code":43183,"language":3396,"meta":225,"style":225},"nice -n 10 kommando # Programm mit niedrigerer Priorität starten\n\nnice -n -10 kommando # Höhere Priorität (nur root)\n\nrenice 5 -p PID # Priorität eines laufenden Prozesses ändern\n\n",[3398,43185,43186,43201,43205,43219,43223],{"__ignoreMap":225},[2915,43187,43188,43191,43193,43195,43198],{"class":3402,"line":3403},[2915,43189,43190],{"class":3406},"nice",[2915,43192,8127],{"class":3410},[2915,43194,14324],{"class":3410},[2915,43196,43197],{"class":3414}," kommando",[2915,43199,43200],{"class":3511}," # Programm mit niedrigerer Priorität starten\n",[2915,43202,43203],{"class":3402,"line":1117},[2915,43204,3506],{"emptyLinePlaceholder":3505},[2915,43206,43207,43209,43211,43214,43216],{"class":3402,"line":1125},[2915,43208,43190],{"class":3406},[2915,43210,8127],{"class":3410},[2915,43212,43213],{"class":3410}," -10",[2915,43215,43197],{"class":3414},[2915,43217,43218],{"class":3511}," # Höhere Priorität (nur root)\n",[2915,43220,43221],{"class":3402,"line":3515},[2915,43222,3506],{"emptyLinePlaceholder":3505},[2915,43224,43225,43228,43230,43232,43235],{"class":3402,"line":3520},[2915,43226,43227],{"class":3406},"renice",[2915,43229,15203],{"class":3410},[2915,43231,6956],{"class":3410},[2915,43233,43234],{"class":3414}," PID",[2915,43236,43237],{"class":3511}," # Priorität eines laufenden Prozesses ändern\n",[54,43239,43241],{"id":43240},"systemüberwachung","Systemüberwachung",[645,43243,43244,43256],{},[648,43245,43246],{},[651,43247,43248,43252],{},[654,43249,43250],{},[26,43251,6993],{},[654,43253,43254],{},[26,43255,4550],{},[670,43257,43258,43265,43272,43278,43284,43292],{},[651,43259,43260,43262],{},[675,43261,35101],{},[675,43263,43264],{},"Arbeitsspeicher-Auslastung",[651,43266,43267,43269],{},[675,43268,35093],{},[675,43270,43271],{},"Laufzeit und Lastdurchschnitt",[651,43273,43274,43276],{},[675,43275,35109],{},[675,43277,35112],{},[651,43279,43280,43282],{},[675,43281,35117],{},[675,43283,35120],{},[651,43285,43286,43289],{},[675,43287,43288],{},"top \u002F htop",[675,43290,43291],{},"CPU und RAM live",[651,43293,43294,43296],{},[675,43295,28115],{},[675,43297,43298],{},"Docker-Container-Ressourcen",[54,43300,43302],{"id":43301},"das-proc-verzeichnis","Das \u002Fproc-Verzeichnis",[16,43304,43305],{},"Jeder Prozess hat ein Verzeichnis \u002Fproc\u002FPID\u002F:",[16,43307,43308,43309,43311,43312,43314,43315,43317,43318,43320,43321,43323,43324,43326,43327,43329],{},"\u002Fproc\u002F",[5885,43310],{},"\n├── PID\u002F",[5885,43313],{},"\n│ ├── cmdline → Befehl",[5885,43316],{},"\n│ ├── cwd → Link zum Arbeitsverzeichnis",[5885,43319],{},"\n│ ├── exe → Link zum Programm",[5885,43322],{},"\n│ └── status → Statusinformationen",[5885,43325],{},"\n├── meminfo → Speicherinfo",[5885,43328],{},"\n└── cpuinfo → CPU-Info",[11,43331,43333],{"id":43332},"systemstart-init-systeme","Systemstart: Init-Systeme",[54,43335,43337],{"id":43336},"bootvorgang-überblick","Bootvorgang (Überblick)",[16,43339,43340,43341,43343,43344,43346],{},"BIOS\u002FUEFI → GRUB Bootloader → Kernel + initramfs laden",[5885,43342],{},"\n→ Root-Dateisystem mounten → init\u002Fsystemd starten",[5885,43345],{},"\n→ Systemdienste laden → Benutzeranmeldung",[228,43348,403],{"id":402},[966,43350,43351,43353,43355,43357,43359,43361,43363],{},[23,43352,11001],{},[23,43354,11004],{},[23,43356,11007],{},[23,43358,11010],{},[23,43360,11013],{},[23,43362,11016],{},[23,43364,11019],{},[54,43366,43368],{"id":43367},"sysinit-vs-systemd-vergleich","sysinit vs. systemd – Vergleich",[645,43370,43371,43390],{},[648,43372,43373],{},[651,43374,43375,43380,43385],{},[654,43376,43377],{},[26,43378,43379],{},"Eigenschaft",[654,43381,43382],{},[26,43383,43384],{},"sysvinit",[654,43386,43387],{},[26,43388,43389],{},"systemd",[670,43391,43392,43403,43412,43423,43433,43443,43453,43464,43474],{},[651,43393,43394,43397,43400],{},[675,43395,43396],{},"Konzept",[675,43398,43399],{},"Skriptbasiert, Runlevels",[675,43401,43402],{},"Units (services, sockets, timers, targets)",[651,43404,43405,43407,43410],{},[675,43406,42843],{},[675,43408,43409],{},"\u002Fsbin\u002Finit",[675,43411,43389],{},[651,43413,43414,43417,43420],{},[675,43415,43416],{},"Start",[675,43418,43419],{},"Seriell (nacheinander)",[675,43421,43422],{},"Parallel (schneller!)",[651,43424,43425,43427,43430],{},[675,43426,3025],{},[675,43428,43429],{},"\u002Fetc\u002Finit.d\u002F, \u002Fetc\u002Frc*.d\u002F",[675,43431,43432],{},"Unit-Dateien in \u002Fetc\u002Fsystemd\u002Fsystem\u002F",[651,43434,43435,43437,43440],{},[675,43436,11087],{},[675,43438,43439],{},"Wenig, manuell",[675,43441,43442],{},"Umfassend (Wants, Requires, After, Before)",[651,43444,43445,43447,43450],{},[675,43446,11100],{},[675,43448,43449],{},"Syslog-basiert",[675,43451,43452],{},"journald + journalctl",[651,43454,43455,43458,43461],{},[675,43456,43457],{},"Prozessverwaltung",[675,43459,43460],{},"Skripte nacheinander",[675,43462,43463],{},"Units, Restarts, cgroups",[651,43465,43466,43468,43471],{},[675,43467,1643],{},[675,43469,43470],{},"Wenig eingebettet",[675,43472,43473],{},"Sandbox: PrivateTmp, ProtectSystem, NoNewPrivileges",[651,43475,43476,43478,43481],{},[675,43477,42859],{},[675,43479,43480],{},"Veraltet",[675,43482,43483],{},"Standard in modernen Distros",[11,43485,43487],{"id":43486},"systemd-dienstverwaltung","systemd-Dienstverwaltung",[54,43489,43491],{"id":43490},"systemctl-dienste-verwalten","systemctl – Dienste verwalten",[645,43493,43494,43506],{},[648,43495,43496],{},[651,43497,43498,43502],{},[654,43499,43500],{},[26,43501,6993],{},[654,43503,43504],{},[26,43505,4550],{},[670,43507,43508,43516,43524,43532,43540,43548,43556,43564,43572,43580,43588,43596,43604],{},[651,43509,43510,43513],{},[675,43511,43512],{},"systemctl start dienst",[675,43514,43515],{},"Dienst starten",[651,43517,43518,43521],{},[675,43519,43520],{},"systemctl stop dienst",[675,43522,43523],{},"Dienst stoppen",[651,43525,43526,43529],{},[675,43527,43528],{},"systemctl restart dienst",[675,43530,43531],{},"Dienst neustarten",[651,43533,43534,43537],{},[675,43535,43536],{},"systemctl reload dienst",[675,43538,43539],{},"Konfiguration neu laden (ohne Neustart)",[651,43541,43542,43545],{},[675,43543,43544],{},"systemctl status dienst",[675,43546,43547],{},"Status anzeigen",[651,43549,43550,43553],{},[675,43551,43552],{},"systemctl enable dienst",[675,43554,43555],{},"Beim Boot automatisch starten",[651,43557,43558,43561],{},[675,43559,43560],{},"systemctl disable dienst",[675,43562,43563],{},"Autostart deaktivieren",[651,43565,43566,43569],{},[675,43567,43568],{},"systemctl is-enabled dienst",[675,43570,43571],{},"Prüfen ob Autostart aktiv",[651,43573,43574,43577],{},[675,43575,43576],{},"systemctl is-active dienst",[675,43578,43579],{},"Prüfen ob Dienst läuft",[651,43581,43582,43585],{},[675,43583,43584],{},"systemctl list-units --type service",[675,43586,43587],{},"Alle laufenden Dienste",[651,43589,43590,43593],{},[675,43591,43592],{},"systemctl list-unit-files --type=service",[675,43594,43595],{},"Alle Dienste (auch inaktive)",[651,43597,43598,43601],{},[675,43599,43600],{},"systemctl --failed",[675,43602,43603],{},"Fehlgeschlagene Dienste",[651,43605,43606,43609],{},[675,43607,43608],{},"systemctl daemon-reload",[675,43610,43611],{},"Unit-Dateien neu einlesen",[54,43613,43615],{"id":43614},"journalctl-logging","journalctl – Logging",[645,43617,43618,43630],{},[648,43619,43620],{},[651,43621,43622,43626],{},[654,43623,43624],{},[26,43625,6993],{},[654,43627,43628],{},[26,43629,4550],{},[670,43631,43632,43640,43648,43656,43664,43672,43680],{},[651,43633,43634,43637],{},[675,43635,43636],{},"journalctl",[675,43638,43639],{},"Alle Logs anzeigen",[651,43641,43642,43645],{},[675,43643,43644],{},"journalctl -u nginx",[675,43646,43647],{},"Logs eines bestimmten Dienstes",[651,43649,43650,43653],{},[675,43651,43652],{},"journalctl -b",[675,43654,43655],{},"Logs seit letztem Boot",[651,43657,43658,43661],{},[675,43659,43660],{},"journalctl -f",[675,43662,43663],{},"Live-Logs (wie tail -f)",[651,43665,43666,43669],{},[675,43667,43668],{},"journalctl -p err",[675,43670,43671],{},"Nur Fehler anzeigen",[651,43673,43674,43677],{},[675,43675,43676],{},"journalctl --since \"1 hour ago\"",[675,43678,43679],{},"Zeitgefiltert",[651,43681,43682,43685],{},[675,43683,43684],{},"journalctl -xe",[675,43686,43687],{},"Letzte Fehler mit Erklärung",[54,43689,43691],{"id":43690},"systemd-unit-dateien","systemd Unit-Dateien",[228,43693,43695],{"id":43694},"speicherorte","Speicherorte:",[20,43697,43698,43701],{},[23,43699,43700],{},"\u002Fusr\u002Flib\u002Fsystemd\u002Fsystem\u002F – Standard-Units (vom Paketmanager)",[23,43702,43703],{},"\u002Fetc\u002Fsystemd\u002Fsystem\u002F – Eigene\u002Füberschriebene Units (höhere Priorität)",[228,43705,43707],{"id":43706},"aufbau-einer-service-unit","Aufbau einer Service-Unit:",[16,43709,43710],{},[2915,43711,43712],{},"Unit",[3392,43714,43716],{"className":3394,"code":43715,"language":3396,"meta":225,"style":225},"Description=Mein Beispielservice\n\nRequires=network.target # Harte Abhängigkeit\n\nAfter=network.target # Startreihenfolge\n\nWants=redis.service # Weiche Abhängigkeit\n\n",[3398,43717,43718,43731,43735,43748,43752,43764,43768],{"__ignoreMap":225},[2915,43719,43720,43723,43725,43728],{"class":3402,"line":3403},[2915,43721,43722],{"class":3529},"Description",[2915,43724,5137],{"class":3533},[2915,43726,43727],{"class":3414},"Mein",[2915,43729,43730],{"class":3406}," Beispielservice\n",[2915,43732,43733],{"class":3402,"line":1117},[2915,43734,3506],{"emptyLinePlaceholder":3505},[2915,43736,43737,43740,43742,43745],{"class":3402,"line":1125},[2915,43738,43739],{"class":3529},"Requires",[2915,43741,5137],{"class":3533},[2915,43743,43744],{"class":3414},"network.target",[2915,43746,43747],{"class":3511}," # Harte Abhängigkeit\n",[2915,43749,43750],{"class":3402,"line":3515},[2915,43751,3506],{"emptyLinePlaceholder":3505},[2915,43753,43754,43757,43759,43761],{"class":3402,"line":3520},[2915,43755,43756],{"class":3529},"After",[2915,43758,5137],{"class":3533},[2915,43760,43744],{"class":3414},[2915,43762,43763],{"class":3511}," # Startreihenfolge\n",[2915,43765,43766],{"class":3402,"line":5070},[2915,43767,3506],{"emptyLinePlaceholder":3505},[2915,43769,43770,43773,43775,43778],{"class":3402,"line":5075},[2915,43771,43772],{"class":3529},"Wants",[2915,43774,5137],{"class":3533},[2915,43776,43777],{"class":3414},"redis.service",[2915,43779,43780],{"class":3511}," # Weiche Abhängigkeit\n",[16,43782,43783],{},[2915,43784,43785],{},"Service",[3392,43787,43789],{"className":3394,"code":43788,"language":3396,"meta":225,"style":225},"Type=simple\n\nExecStart=\u002Fusr\u002Fbin\u002Fpython3 \u002Fopt\u002Fapp\u002Fserver.py\n\nExecStop=\u002Fbin\u002Fkill -SIGTERM $MAINPID\n\nUser=nobody\n\nRestart=on-failure\n\nRestartSec=3\n\nStartLimitBurst=4\n\nStartLimitIntervalSec=30\n\nWorkingDirectory=\u002Fopt\u002Fapp\u002F\n\n# Sicherheitshärtung:\n\nPrivateTmp=true # Isoliertes \u002Ftmp\n\nProtectSystem=full # System read-only\n\nProtectHome=true # Kein Zugriff auf \u002Fhome\n\nNoNewPrivileges=true # Keine Privileg-Eskalation\n\n# Ressourcenlimits:\n\nMemoryMax=200M\n\nCPUQuota=20%\n\nTasksMax=100\n\n",[3398,43790,43791,43801,43805,43818,43822,43838,43842,43852,43856,43866,43870,43879,43883,43893,43897,43907,43911,43921,43925,43930,43934,43947,43951,43964,43968,43980,43984,43996,44000,44005,44009,44019,44023,44033,44037],{"__ignoreMap":225},[2915,43792,43793,43796,43798],{"class":3402,"line":3403},[2915,43794,43795],{"class":3529},"Type",[2915,43797,5137],{"class":3533},[2915,43799,43800],{"class":3414},"simple\n",[2915,43802,43803],{"class":3402,"line":1117},[2915,43804,3506],{"emptyLinePlaceholder":3505},[2915,43806,43807,43810,43812,43815],{"class":3402,"line":1125},[2915,43808,43809],{"class":3529},"ExecStart",[2915,43811,5137],{"class":3533},[2915,43813,43814],{"class":3414},"\u002Fusr\u002Fbin\u002Fpython3",[2915,43816,43817],{"class":3406}," \u002Fopt\u002Fapp\u002Fserver.py\n",[2915,43819,43820],{"class":3402,"line":3515},[2915,43821,3506],{"emptyLinePlaceholder":3505},[2915,43823,43824,43827,43829,43832,43835],{"class":3402,"line":3520},[2915,43825,43826],{"class":3529},"ExecStop",[2915,43828,5137],{"class":3533},[2915,43830,43831],{"class":3414},"\u002Fbin\u002Fkill",[2915,43833,43834],{"class":3406}," -SIGTERM",[2915,43836,43837],{"class":3529}," $MAINPID\n",[2915,43839,43840],{"class":3402,"line":5070},[2915,43841,3506],{"emptyLinePlaceholder":3505},[2915,43843,43844,43847,43849],{"class":3402,"line":5075},[2915,43845,43846],{"class":3529},"User",[2915,43848,5137],{"class":3533},[2915,43850,43851],{"class":3414},"nobody\n",[2915,43853,43854],{"class":3402,"line":5093},[2915,43855,3506],{"emptyLinePlaceholder":3505},[2915,43857,43858,43861,43863],{"class":3402,"line":5098},[2915,43859,43860],{"class":3529},"Restart",[2915,43862,5137],{"class":3533},[2915,43864,43865],{"class":3414},"on-failure\n",[2915,43867,43868],{"class":3402,"line":5207},[2915,43869,3506],{"emptyLinePlaceholder":3505},[2915,43871,43872,43875,43877],{"class":3402,"line":5212},[2915,43873,43874],{"class":3529},"RestartSec",[2915,43876,5137],{"class":3533},[2915,43878,30405],{"class":3414},[2915,43880,43881],{"class":3402,"line":5218},[2915,43882,3506],{"emptyLinePlaceholder":3505},[2915,43884,43885,43888,43890],{"class":3402,"line":5223},[2915,43886,43887],{"class":3529},"StartLimitBurst",[2915,43889,5137],{"class":3533},[2915,43891,43892],{"class":3414},"4\n",[2915,43894,43895],{"class":3402,"line":5229},[2915,43896,3506],{"emptyLinePlaceholder":3505},[2915,43898,43899,43902,43904],{"class":3402,"line":5253},[2915,43900,43901],{"class":3529},"StartLimitIntervalSec",[2915,43903,5137],{"class":3533},[2915,43905,43906],{"class":3414},"30\n",[2915,43908,43909],{"class":3402,"line":5266},[2915,43910,3506],{"emptyLinePlaceholder":3505},[2915,43912,43913,43916,43918],{"class":3402,"line":5721},[2915,43914,43915],{"class":3529},"WorkingDirectory",[2915,43917,5137],{"class":3533},[2915,43919,43920],{"class":3414},"\u002Fopt\u002Fapp\u002F\n",[2915,43922,43923],{"class":3402,"line":9401},[2915,43924,3506],{"emptyLinePlaceholder":3505},[2915,43926,43927],{"class":3402,"line":9406},[2915,43928,43929],{"class":3511},"# Sicherheitshärtung:\n",[2915,43931,43932],{"class":3402,"line":9411},[2915,43933,3506],{"emptyLinePlaceholder":3505},[2915,43935,43936,43939,43941,43944],{"class":3402,"line":9416},[2915,43937,43938],{"class":3529},"PrivateTmp",[2915,43940,5137],{"class":3533},[2915,43942,43943],{"class":3414},"true",[2915,43945,43946],{"class":3511}," # Isoliertes \u002Ftmp\n",[2915,43948,43949],{"class":3402,"line":9428},[2915,43950,3506],{"emptyLinePlaceholder":3505},[2915,43952,43953,43956,43958,43961],{"class":3402,"line":9433},[2915,43954,43955],{"class":3529},"ProtectSystem",[2915,43957,5137],{"class":3533},[2915,43959,43960],{"class":3414},"full",[2915,43962,43963],{"class":3511}," # System read-only\n",[2915,43965,43966],{"class":3402,"line":9454},[2915,43967,3506],{"emptyLinePlaceholder":3505},[2915,43969,43970,43973,43975,43977],{"class":3402,"line":9459},[2915,43971,43972],{"class":3529},"ProtectHome",[2915,43974,5137],{"class":3533},[2915,43976,43943],{"class":3414},[2915,43978,43979],{"class":3511}," # Kein Zugriff auf \u002Fhome\n",[2915,43981,43982],{"class":3402,"line":9464},[2915,43983,3506],{"emptyLinePlaceholder":3505},[2915,43985,43986,43989,43991,43993],{"class":3402,"line":9469},[2915,43987,43988],{"class":3529},"NoNewPrivileges",[2915,43990,5137],{"class":3533},[2915,43992,43943],{"class":3414},[2915,43994,43995],{"class":3511}," # Keine Privileg-Eskalation\n",[2915,43997,43998],{"class":3402,"line":9479},[2915,43999,3506],{"emptyLinePlaceholder":3505},[2915,44001,44002],{"class":3402,"line":9484},[2915,44003,44004],{"class":3511},"# Ressourcenlimits:\n",[2915,44006,44007],{"class":3402,"line":9489},[2915,44008,3506],{"emptyLinePlaceholder":3505},[2915,44010,44011,44014,44016],{"class":3402,"line":9494},[2915,44012,44013],{"class":3529},"MemoryMax",[2915,44015,5137],{"class":3533},[2915,44017,44018],{"class":3414},"200M\n",[2915,44020,44021],{"class":3402,"line":9504},[2915,44022,3506],{"emptyLinePlaceholder":3505},[2915,44024,44025,44028,44030],{"class":3402,"line":9509},[2915,44026,44027],{"class":3529},"CPUQuota",[2915,44029,5137],{"class":3533},[2915,44031,44032],{"class":3414},"20%\n",[2915,44034,44035],{"class":3402,"line":9514},[2915,44036,3506],{"emptyLinePlaceholder":3505},[2915,44038,44039,44042,44044],{"class":3402,"line":9519},[2915,44040,44041],{"class":3529},"TasksMax",[2915,44043,5137],{"class":3533},[2915,44045,44046],{"class":3414},"100\n",[16,44048,44049],{},[2915,44050,44051],{},"Install",[3392,44053,44055],{"className":3394,"code":44054,"language":3396,"meta":225,"style":225},"WantedBy=multi-user.target # Beim Boot starten\n\n",[3398,44056,44057],{"__ignoreMap":225},[2915,44058,44059,44062,44064,44067],{"class":3402,"line":3403},[2915,44060,44061],{"class":3529},"WantedBy",[2915,44063,5137],{"class":3533},[2915,44065,44066],{"class":3414},"multi-user.target",[2915,44068,44069],{"class":3511}," # Beim Boot starten\n",[228,44071,44073],{"id":44072},"unit-aktivieren-und-starten","Unit aktivieren und starten:",[3392,44075,44077],{"className":3394,"code":44076,"language":3396,"meta":225,"style":225},"sudo systemctl daemon-reload\n\nsudo systemctl enable mein.service\n\nsudo systemctl start mein.service\n\n",[3398,44078,44079,44089,44093,44105,44109],{"__ignoreMap":225},[2915,44080,44081,44083,44086],{"class":3402,"line":3403},[2915,44082,11814],{"class":3406},[2915,44084,44085],{"class":3414}," systemctl",[2915,44087,44088],{"class":3414}," daemon-reload\n",[2915,44090,44091],{"class":3402,"line":1117},[2915,44092,3506],{"emptyLinePlaceholder":3505},[2915,44094,44095,44097,44099,44102],{"class":3402,"line":1125},[2915,44096,11814],{"class":3406},[2915,44098,44085],{"class":3414},[2915,44100,44101],{"class":3414}," enable",[2915,44103,44104],{"class":3414}," mein.service\n",[2915,44106,44107],{"class":3402,"line":3515},[2915,44108,3506],{"emptyLinePlaceholder":3505},[2915,44110,44111,44113,44115,44118],{"class":3402,"line":3520},[2915,44112,11814],{"class":3406},[2915,44114,44085],{"class":3414},[2915,44116,44117],{"class":3414}," start",[2915,44119,44104],{"class":3414},[228,44121,44123],{"id":44122},"systemanalyse","Systemanalyse",[16,44125,44126],{},"systemd-analyze blame # Bootzeit pro Dienst",[16,44128,44129],{},"systemd-analyze critical-chain # Kritischer Pfad",[16,44131,44132],{},"systemd-analyze plot >boot.svg # Visualisierung",[16,44134,44135],{},"systemd-analyze verify dienst.service # Syntax prüfen",[11,44137,44138],{"id":44138},"cron",[54,44140,8604],{"id":44141},"grundprinzip-2",[16,44143,44144,44145,44148,44149,44152],{},"cron ist ein Dienst (Daemon) zum ",[26,44146,44147],{},"zeitgesteuerten Ausführen von Befehlen",". Die Aufgaben werden in der ",[26,44150,44151],{},"crontab"," (cron table) definiert.",[3392,44154,44156],{"className":3394,"code":44155,"language":3396,"meta":225,"style":225},"crontab -e # Eigene crontab bearbeiten\n\ncrontab -l # Eigene crontab anzeigen\n\ncrontab -r # Eigene crontab löschen\n\ncrontab -u user -e # crontab eines bestimmten Benutzers bearbeiten (root)\n\n",[3398,44157,44158,44167,44171,44180,44184,44193,44197],{"__ignoreMap":225},[2915,44159,44160,44162,44164],{"class":3402,"line":3403},[2915,44161,44151],{"class":3406},[2915,44163,19828],{"class":3410},[2915,44165,44166],{"class":3511}," # Eigene crontab bearbeiten\n",[2915,44168,44169],{"class":3402,"line":1117},[2915,44170,3506],{"emptyLinePlaceholder":3505},[2915,44172,44173,44175,44177],{"class":3402,"line":1125},[2915,44174,44151],{"class":3406},[2915,44176,9029],{"class":3410},[2915,44178,44179],{"class":3511}," # Eigene crontab anzeigen\n",[2915,44181,44182],{"class":3402,"line":3515},[2915,44183,3506],{"emptyLinePlaceholder":3505},[2915,44185,44186,44188,44190],{"class":3402,"line":3520},[2915,44187,44151],{"class":3406},[2915,44189,7846],{"class":3410},[2915,44191,44192],{"class":3511}," # Eigene crontab löschen\n",[2915,44194,44195],{"class":3402,"line":5070},[2915,44196,3506],{"emptyLinePlaceholder":3505},[2915,44198,44199,44201,44203,44206,44208],{"class":3402,"line":5075},[2915,44200,44151],{"class":3406},[2915,44202,22604],{"class":3410},[2915,44204,44205],{"class":3414}," user",[2915,44207,19828],{"class":3410},[2915,44209,44210],{"class":3511}," # crontab eines bestimmten Benutzers bearbeiten (root)\n",[54,44212,44214],{"id":44213},"das-zeitformat-5-felder-cron","Das Zeitformat (5-Felder-Cron)",[16,44216,44217,44218,44220,44221,44223,44224,44226,44227,44229,44230,44232],{},"┌──────────── Minute (0 - 59)",[5885,44219],{},"\n│ ┌────────── Stunde (0 - 23)",[5885,44222],{},"\n│ │ ┌──────── Tag (Monat) (1 - 31)",[5885,44225],{},"\n│ │ │ ┌────── Monat (1 - 12 oder jan,feb,...)",[5885,44228],{},"\n│ │ │ │ ┌──── Wochentag (0 - 7, 0 und 7 = Sonntag, oder sun,mon,...)",[5885,44231],{},"\n│ │ │ │ │",[20,44234,44235],{},[23,44236,44237],{},[20,44238,44239],{},[23,44240,44241],{},[20,44242,44243],{},[23,44244,44245],{},[20,44246,44247],{},[23,44248,44249],{},[20,44250,44251],{},[23,44252,6993],{},[54,44254,44256],{"id":44255},"sonderzeichen-in-cron","Sonderzeichen in cron",[645,44258,44259,44275],{},[648,44260,44261],{},[651,44262,44263,44267,44271],{},[654,44264,44265],{},[26,44266,12915],{},[654,44268,44269],{},[26,44270,5483],{},[654,44272,44273],{},[26,44274,730],{},[670,44276,44277,44287,44297,44306],{},[651,44278,44279,44281,44284],{},[675,44280,5078],{},[675,44282,44283],{},"Jeden möglichen Wert",[675,44285,44286],{},"* in Stunde = jede Stunde",[651,44288,44289,44291,44294],{},[675,44290,41673],{},[675,44292,44293],{},"Liste von Werten",[675,44295,44296],{},"1,3,5 = Minute 1, 3 und 5",[651,44298,44299,44301,44303],{},[675,44300,3523],{},[675,44302,11490],{},[675,44304,44305],{},"9-17 = von 9 bis 17 Uhr",[651,44307,44308,44310,44313],{},[675,44309,12410],{},[675,44311,44312],{},"Schrittweite (Step)",[675,44314,44315],{},"*\u002F5 = alle 5 Minuten",[54,44317,44319],{"id":44318},"das-slash-schrittweite-ausführlich-erklärt","Das \u002F (Slash \u002F Schrittweite) – ausführlich erklärt",[16,44321,44322],{},[26,44323,44324],{},"Der Slash definiert eine Schrittweite innerhalb eines Wertebereichs.",[16,44326,44327],{},"BEREICH\u002FSCHRITT",[20,44329,44330,44338,44346,44354],{},[23,44331,44332,44337],{},[26,44333,44334],{},[3398,44335,44336],{},"*\u002F4"," im Minutenfeld: „Von 0 bis 59, jeden 4. Wert\" → Minute 0, 4, 8, 12, 16, 20, ...56",[23,44339,44340,44345],{},[26,44341,44342],{},[3398,44343,44344],{},"0\u002F4"," im Minutenfeld: „Starte bei 0, dann alle 4\" → Minute 0, 4, 8, 12, ...56 (identisch zu *\u002F4)",[23,44347,44348,44353],{},[26,44349,44350],{},[3398,44351,44352],{},"2\u002F4"," im Minutenfeld: „Starte bei 2, dann alle 4\" → Minute 2, 6, 10, 14, ...58",[23,44355,44356,44361],{},[26,44357,44358],{},[3398,44359,44360],{},"10-30\u002F5"," im Minutenfeld: „Von 10 bis 30, alle 5\" → Minute 10, 15, 20, 25, 30",[16,44363,44364,44372],{},[26,44365,44366,44367,6195,44369,44371],{},"Fazit: ",[3398,44368,44344],{},[3398,44370,44336],{}," sind im Minutenfeld identisch",", da * für 0-59 steht und 0\u002F4 explizit bei 0 startet.",[54,44374,44376],{"id":44375},"das-6-felder-format-quartzspring","Das 6-Felder-Format (Quartz\u002FSpring)",[16,44378,44379,44380,6908],{},"Manche Systeme (Java Quartz Scheduler, Spring Boot Cron, manche DevOps-Tools) verwenden ein ",[26,44381,44382],{},"6-Felder-Format mit Sekunden",[16,44384,44385,44386,44388,44389,44391,44392,44394,44395,44397,44398,44400,44401,44403],{},"┌────────────── Sekunde (0 - 59)",[5885,44387],{},"\n│ ┌──────────── Minute (0 - 59)",[5885,44390],{},"\n│ │ ┌────────── Stunde (0 - 23)",[5885,44393],{},"\n│ │ │ ┌──────── Tag (Monat) (1 - 31)",[5885,44396],{},"\n│ │ │ │ ┌────── Monat (1 - 12)",[5885,44399],{},"\n│ │ │ │ │ ┌──── Wochentag (0 - 7)",[5885,44402],{},"\n│ │ │ │ │ │",[20,44405,44406],{},[23,44407,44408],{},[20,44409,44410],{},[23,44411,44412],{},[20,44413,44414],{},[23,44415,44416],{},[20,44417,44418],{},[23,44419,44420],{},[20,44421,44422],{},[23,44423,44424],{},[20,44425,44426],{},[23,44427,6993],{},[16,44429,44430,44435],{},[26,44431,44432],{},[3398,44433,44434],{},"0\u002F4 * * * * *"," (6 Felder, Quartz-Format):",[20,44437,44438,44441,44444],{},[23,44439,44440],{},"Sekunden-Feld: 0\u002F4 → Starte bei Sekunde 0, alle 4 Sekunden → 0, 4, 8, 12, ...56",[23,44442,44443],{},"Alle anderen Felder: * → immer",[23,44445,44446],{},[26,44447,44448],{},"Bedeutung: Alle 4 Sekunden, jede Minute, jede Stunde, jeden Tag...",[16,44450,44451,44453,44454,44457],{},[26,44452,11993],{}," Standard-Linux-cron (Vixie Cron, cronie) verwendet ",[26,44455,44456],{},"5 Felder"," ohne Sekunden. Die 6-Felder-Variante ist bei systemd-Timer oder Spring @Scheduled üblich.",[54,44459,44461],{"id":44460},"vordefinierte-makros-nur-5-felder-cron","Vordefinierte Makros (nur 5-Felder-cron)",[645,44463,44464,44482],{},[648,44465,44466],{},[651,44467,44468,44473,44477],{},[654,44469,44470],{},[26,44471,44472],{},"Makro",[654,44474,44475],{},[26,44476,5483],{},[654,44478,44479],{},[26,44480,44481],{},"Äquivalent",[670,44483,44484,44495,44506,44517,44528,44539],{},[651,44485,44486,44489,44492],{},[675,44487,44488],{},"@reboot",[675,44490,44491],{},"Bei jedem Start",[675,44493,44494],{},"—",[651,44496,44497,44500,44503],{},[675,44498,44499],{},"@yearly \u002F @annually",[675,44501,44502],{},"Einmal jährlich",[675,44504,44505],{},"0 0 1 1 *",[651,44507,44508,44511,44514],{},[675,44509,44510],{},"@monthly",[675,44512,44513],{},"Einmal monatlich",[675,44515,44516],{},"0 0 1 * *",[651,44518,44519,44522,44525],{},[675,44520,44521],{},"@weekly",[675,44523,44524],{},"Einmal wöchentlich",[675,44526,44527],{},"0 0 * * 0",[651,44529,44530,44533,44536],{},[675,44531,44532],{},"@daily \u002F @midnight",[675,44534,44535],{},"Täglich um Mitternacht",[675,44537,44538],{},"0 0 * * *",[651,44540,44541,44544,44547],{},[675,44542,44543],{},"@hourly",[675,44545,44546],{},"Jede Stunde",[675,44548,44549],{},"0 * * * *",[54,44551,8676],{"id":14694},[11,44553,44555],{"id":44554},"jede-minute","Jede Minute",[20,44557,44558],{},[23,44559,44560],{},[20,44561,44562],{},[23,44563,44564],{},[20,44565,44566],{},[23,44567,44568],{},[20,44569,44570],{},[23,44571,44572],{},[20,44573,44574],{},[23,44575,44576],{},"\u002Fskript.sh",[11,44578,44580],{"id":44579},"alle-5-minuten","Alle 5 Minuten",[16,44582,44583],{},"*\u002F5 * * * * \u002Fskript.sh",[11,44585,44587],{"id":44586},"alle-4-minuten-ab-minute-0","Alle 4 Minuten (ab Minute 0)",[16,44589,44590],{},"0\u002F4 * * * * \u002Fskript.sh",[11,44592,44594],{"id":44593},"oder-äquivalent","oder äquivalent:",[16,44596,44597],{},"*\u002F4 * * * * \u002Fskript.sh",[11,44599,44601],{"id":44600},"alle-4-minuten-aber-startend-bei-minute-2","Alle 4 Minuten, aber STARTEND bei Minute 2",[16,44603,44604],{},"2\u002F4 * * * * \u002Fskript.sh # → 2, 6, 10, 14, ...",[11,44606,44608],{"id":44607},"täglich-um-330-uhr","Täglich um 3:30 Uhr",[16,44610,44611],{},"30 3 * * * \u002Fbackup.sh",[11,44613,44615],{"id":44614},"montag-bis-freitag-um-800-uhr","Montag bis Freitag um 8:00 Uhr",[16,44617,44618],{},"0 8 * * 1-5 \u002Fbenutzer_check.sh",[11,44620,44622],{"id":44621},"jeden-1-des-monats-um-mitternacht","Jeden 1. des Monats um Mitternacht",[16,44624,44625],{},"0 0 1 * * \u002Fmonatsabschluss.sh",[11,44627,44629],{"id":44628},"stündlich-in-der-geschäftszeit-9-17-uhr-mo-fr","Stündlich in der Geschäftszeit (9-17 Uhr, Mo-Fr)",[16,44631,44632],{},"0 9-17 * * 1-5 \u002Fpruefe_server.sh",[11,44634,44636],{"id":44635},"um-600-und-1800-uhr-täglich","Um 6:00 und 18:00 Uhr täglich",[16,44638,44639],{},"0 6,18 * * * \u002Fcheck.sh",[11,44641,44643],{"id":44642},"alle-15-minuten-zwischen-8-und-20-uhr","Alle 15 Minuten zwischen 8 und 20 Uhr",[16,44645,44646],{},"*\u002F15 8-20 * * * \u002Fcheck.sh",[11,44648,44650],{"id":44649},"beim-systemstart","Beim Systemstart",[16,44652,44653],{},"@reboot \u002Fhome\u002Fuser\u002Fstart_dienst.sh",[11,44655,44657],{"id":44656},"wöchentlich-sonntag-000-uhr","Wöchentlich (Sonntag 0:00 Uhr)",[16,44659,44660],{},"@weekly \u002Fbackup_woche.sh",[11,44662,44664],{"id":44663},"ausgabe-in-logdatei-umleiten","Ausgabe in Logdatei umleiten",[16,44666,44667],{},"0 2 * * * \u002Fbackup.sh >>\u002Fvar\u002Flog\u002Fbackup.log 2>&1",[11,44669,44671],{"id":44670},"ausgabe-unterdrücken","Ausgabe unterdrücken",[16,44673,44674],{},"0 * * * * \u002Fcheck.sh >\u002Fdev\u002Fnull 2>&1",[11,44676,44678],{"id":44677},"mit-benutzerumgebung-path-explizit-setzen","Mit Benutzerumgebung (PATH explizit setzen)",[3392,44680,44682],{"className":3394,"code":44681,"language":3396,"meta":225,"style":225},"PATH=\u002Fusr\u002Flocal\u002Fsbin:\u002Fusr\u002Flocal\u002Fbin:\u002Fsbin:\u002Fbin:\u002Fusr\u002Fsbin:\u002Fusr\u002Fbin\n\n",[3398,44683,44684],{"__ignoreMap":225},[2915,44685,44686,44689,44691],{"class":3402,"line":3403},[2915,44687,44688],{"class":3529},"PATH",[2915,44690,5137],{"class":3533},[2915,44692,44693],{"class":3414},"\u002Fusr\u002Flocal\u002Fsbin:\u002Fusr\u002Flocal\u002Fbin:\u002Fsbin:\u002Fbin:\u002Fusr\u002Fsbin:\u002Fusr\u002Fbin\n",[16,44695,44696],{},"0 3 * * * \u002Feigenes\u002Fbackup.sh",[54,44698,44700],{"id":44699},"cron-umgebungsvariablen","cron-Umgebungsvariablen",[3392,44702,44704],{"className":7163,"code":44703,"language":7165,"meta":225,"style":225},"# Am Anfang der crontab-Datei setzbar:\n\nSHELL=\u002Fbin\u002Fbash\n\n",[3398,44705,44706,44711,44715],{"__ignoreMap":225},[2915,44707,44708],{"class":3402,"line":3403},[2915,44709,44710],{"class":3511},"# Am Anfang der crontab-Datei setzbar:\n",[2915,44712,44713],{"class":3402,"line":1117},[2915,44714,3506],{"emptyLinePlaceholder":3505},[2915,44716,44717],{"class":3402,"line":1125},[2915,44718,44719],{"class":3529},"SHELL=\u002Fbin\u002Fbash\n",[3392,44721,44723],{"className":3394,"code":44722,"language":3396,"meta":225,"style":225},"PATH=\u002Fusr\u002Flocal\u002Fsbin:\u002Fusr\u002Flocal\u002Fbin:\u002Fusr\u002Fsbin:\u002Fusr\u002Fbin\n\nMAILTO=admin@example.com # Ausgabe per Mail senden (leer = kein Mail)\n\nHOME=\u002Froot\n\n",[3398,44724,44725,44734,44738,44751,44755],{"__ignoreMap":225},[2915,44726,44727,44729,44731],{"class":3402,"line":3403},[2915,44728,44688],{"class":3529},[2915,44730,5137],{"class":3533},[2915,44732,44733],{"class":3414},"\u002Fusr\u002Flocal\u002Fsbin:\u002Fusr\u002Flocal\u002Fbin:\u002Fusr\u002Fsbin:\u002Fusr\u002Fbin\n",[2915,44735,44736],{"class":3402,"line":1117},[2915,44737,3506],{"emptyLinePlaceholder":3505},[2915,44739,44740,44743,44745,44748],{"class":3402,"line":1125},[2915,44741,44742],{"class":3529},"MAILTO",[2915,44744,5137],{"class":3533},[2915,44746,44747],{"class":3414},"admin@example.com",[2915,44749,44750],{"class":3511}," # Ausgabe per Mail senden (leer = kein Mail)\n",[2915,44752,44753],{"class":3402,"line":3515},[2915,44754,3506],{"emptyLinePlaceholder":3505},[2915,44756,44757,44760,44762],{"class":3402,"line":3520},[2915,44758,44759],{"class":3529},"HOME",[2915,44761,5137],{"class":3533},[2915,44763,44764],{"class":3414},"\u002Froot\n",[54,44766,44768],{"id":44767},"systemweite-cron-verzeichnisse","Systemweite cron-Verzeichnisse",[16,44770,44771],{},"\u002Fetc\u002Fcrontab # Systemweite crontab (hat Benutzer-Spalte!)",[16,44773,44774],{},"\u002Fetc\u002Fcron.d\u002F # Weitere systemweite Cron-Dateien",[16,44776,44777],{},"\u002Fetc\u002Fcron.hourly\u002F # Skripte die stündlich laufen",[16,44779,44780],{},"\u002Fetc\u002Fcron.daily\u002F # Skripte die täglich laufen",[16,44782,44783],{},"\u002Fetc\u002Fcron.weekly\u002F # Skripte die wöchentlich laufen",[16,44785,44786],{},"\u002Fetc\u002Fcron.monthly\u002F # Skripte die monatlich laufen",[54,44788,44790],{"id":44789},"ausgabe-umleiten","Ausgabe umleiten:",[11,44792,44794],{"id":44793},"in-datei-umleiten","In Datei umleiten",[20,44796,44797],{},[23,44798,44799],{},[20,44800,44801],{},[23,44802,44803],{},[20,44804,44805],{},[23,44806,44807],{},[20,44808,44809],{},[23,44810,44811],{},[20,44812,44813],{},[23,44814,44815],{},"echo \"test\" >\u002Fhome\u002Fuser\u002Foutput.txt 2>&1",[11,44817,44819],{"id":44818},"an-terminal-senden","An Terminal senden",[20,44821,44822],{},[23,44823,44824],{},[20,44825,44826],{},[23,44827,44828],{},[20,44829,44830],{},[23,44831,44832],{},[20,44833,44834],{},[23,44835,44836],{},[20,44837,44838],{},[23,44839,44840],{},"echo \"test\" >\u002Fdev\u002Fpts\u002F1",[11,44842,26238],{"id":26238},[54,44844,8604],{"id":44845},"grundprinzip-3",[16,44847,44848,44849,44852,44853,44855],{},"rsync (Remote Sync) ist ein Werkzeug zum ",[26,44850,44851],{},"effizienten Synchronisieren von Dateien und Verzeichnissen",", lokal oder über Netzwerk (SSH). Es überträgt nur geänderte Teile von Dateien (",[26,44854,25729],{},"), was es sehr schnell macht.",[16,44857,44858],{},[26,44859,35890],{},[16,44861,44862,44863,25738],{},"rsync ",[2915,44864,11472],{},[54,44866,44868],{"id":44867},"wie-rsync-intern-funktioniert-delta-algorithmus","Wie rsync intern funktioniert (Delta-Algorithmus)",[966,44870,44871,44874,44885,44888,44891,44898],{},[23,44872,44873],{},"Zieldatei wird in Blöcke (Chunks) aufgeteilt",[23,44875,44876,44877,44880,44881,44884],{},"Von jedem Block wird eine ",[26,44878,44879],{},"schwache Prüfsumme"," (rolling checksum) und eine ",[26,44882,44883],{},"starke Prüfsumme"," (MD4\u002FMD5) berechnet",[23,44886,44887],{},"Die Prüfsummen werden an den Sender geschickt",[23,44889,44890],{},"Der Sender findet passende Blöcke in der Quelldatei",[23,44892,44893,44894,44897],{},"Nur ",[26,44895,44896],{},"neue\u002Fgeänderte Blöcke"," werden übertragen",[23,44899,44900],{},"Das Ziel wird aus der Kombination alter und neuer Blöcke rekonstruiert",[16,44902,44903,44906],{},[26,44904,44905],{},"Ergebnis:"," Statt einer 100 MB Datei werden vielleicht nur 2 KB Unterschied übertragen.",[54,44908,25769],{"id":25768},[645,44910,44911,44927],{},[648,44912,44913],{},[651,44914,44915,44919,44923],{},[654,44916,44917],{},[26,44918,7715],{},[654,44920,44921],{},[26,44922,11548],{},[654,44924,44925],{},[26,44926,5483],{},[670,44928,44929,44938,44946,44955,44964,44973,44982,44991,45000,45008,45016,45024,45033,45042,45051,45060,45069,45078,45087,45096,45105,45113,45122,45131,45140,45149,45158,45166,45174,45183,45192,45201,45209,45218,45228,45237,45246,45255,45265,45274,45283,45292,45301],{},[651,44930,44931,44933,44935],{},[675,44932,21155],{},[675,44934,25796],{},[675,44936,44937],{},"Archivmodus: -rlptgoD zusammengefasst",[651,44939,44940,44942,44944],{},[675,44941,4853],{},[675,44943,16016],{},[675,44945,25808],{},[651,44947,44948,44950,44952],{},[675,44949,7757],{},[675,44951,25815],{},[675,44953,44954],{},"Symlinks als Symlinks kopieren",[651,44956,44957,44959,44961],{},[675,44958,12028],{},[675,44960,25825],{},[675,44962,44963],{},"Berechtigungen übertragen",[651,44965,44966,44968,44970],{},[675,44967,21196],{},[675,44969,25835],{},[675,44971,44972],{},"Zeitstempel übertragen",[651,44974,44975,44977,44979],{},[675,44976,11570],{},[675,44978,11573],{},[675,44980,44981],{},"Gruppeninfo übertragen",[651,44983,44984,44986,44988],{},[675,44985,7797],{},[675,44987,25854],{},[675,44989,44990],{},"Eigentümer übertragen (root nötig)",[651,44992,44993,44995,44997],{},[675,44994,25862],{},[675,44996],{},[675,44998,44999],{},"Gerätedateien + Sonderdateien",[651,45001,45002,45004,45006],{},[675,45003,7734],{},[675,45005,25874],{},[675,45007,25877],{},[651,45009,45010,45012,45014],{},[675,45011,25882],{},[675,45013],{},[675,45015,25887],{},[651,45017,45018,45020,45022],{},[675,45019,15165],{},[675,45021,16192],{},[675,45023,25896],{},[651,45025,45026,45028,45030],{},[675,45027,7742],{},[675,45029,25903],{},[675,45031,45032],{},"Simulation: Zeigt was passieren würde, ohne etwas zu tun",[651,45034,45035,45037,45039],{},[675,45036,19159],{},[675,45038,25913],{},[675,45040,45041],{},"Daten komprimieren (bei langsamen Verbindungen)",[651,45043,45044,45046,45048],{},[675,45045,12604],{},[675,45047],{},[675,45049,45050],{},"--partial --progress zusammen: Fortschritt und Wiederaufnahme",[651,45052,45053,45055,45057],{},[675,45054,25930],{},[675,45056],{},[675,45058,45059],{},"Fortschrittsanzeige",[651,45061,45062,45064,45066],{},[675,45063,25940],{},[675,45065],{},[675,45067,45068],{},"Teilübertragungen behalten (für Wiederaufnahme)",[651,45070,45071,45073,45075],{},[675,45072,7967],{},[675,45074,25953],{},[675,45076,45077],{},"Remote Shell angeben (z.B. -e ssh)",[651,45079,45080,45082,45084],{},[675,45081,23908],{},[675,45083],{},[675,45085,45086],{},"Dateien im Ziel löschen, die in der Quelle fehlen",[651,45088,45089,45091,45093],{},[675,45090,25970],{},[675,45092],{},[675,45094,45095],{},"Löschen vor dem Übertragen",[651,45097,45098,45100,45102],{},[675,45099,25980],{},[675,45101],{},[675,45103,45104],{},"Löschen nach dem Übertragen",[651,45106,45107,45109,45111],{},[675,45108,25990],{},[675,45110],{},[675,45112,25995],{},[651,45114,45115,45117,45119],{},[675,45116,26000],{},[675,45118],{},[675,45120,45121],{},"Ausschlussliste aus Datei",[651,45123,45124,45126,45128],{},[675,45125,26010],{},[675,45127],{},[675,45129,45130],{},"Ausschluss aufheben",[651,45132,45133,45135,45137],{},[675,45134,26020],{},[675,45136],{},[675,45138,45139],{},"Flexible Filterregel",[651,45141,45142,45144,45146],{},[675,45143,26030],{},[675,45145],{},[675,45147,45148],{},"Sicherungskopien erstellen",[651,45150,45151,45153,45155],{},[675,45152,26040],{},[675,45154],{},[675,45156,45157],{},"Backup-Verzeichnis für geänderte Dateien",[651,45159,45160,45162,45164],{},[675,45161,26050],{},[675,45163],{},[675,45165,26055],{},[651,45167,45168,45170,45172],{},[675,45169,11559],{},[675,45171,26062],{},[675,45173,26065],{},[651,45175,45176,45178,45180],{},[675,45177,7765],{},[675,45179,26072],{},[675,45181,45182],{},"Vergleich per Prüfsumme statt Größe+Zeit",[651,45184,45185,45187,45189],{},[675,45186,16219],{},[675,45188,26082],{},[675,45190,45191],{},"Hardlinks erhalten",[651,45193,45194,45196,45198],{},[675,45195,21166],{},[675,45197,26092],{},[675,45199,45200],{},"ACLs übertragen",[651,45202,45203,45205,45207],{},[675,45204,21226],{},[675,45206,26102],{},[675,45208,26105],{},[651,45210,45211,45213,45215],{},[675,45212,26110],{},[675,45214],{},[675,45216,45217],{},"Berechtigungen beim Ziel setzen",[651,45219,45220,45223,45225],{},[675,45221,45222],{},"--chown=USER:GRUPPE",[675,45224],{},[675,45226,45227],{},"Eigentümer beim Ziel setzen",[651,45229,45230,45232,45234],{},[675,45231,26130],{},[675,45233],{},[675,45235,45236],{},"Maximale Dateigröße (z.B. --max-size=100M)",[651,45238,45239,45241,45243],{},[675,45240,26140],{},[675,45242],{},[675,45244,45245],{},"Mindestdateigröße",[651,45247,45248,45250,45252],{},[675,45249,26150],{},[675,45251],{},[675,45253,45254],{},"Bandbreite begrenzen (KB\u002Fs)",[651,45256,45257,45260,45262],{},[675,45258,45259],{},"--timeout=SEKS",[675,45261],{},[675,45263,45264],{},"Verbindungs-Timeout setzen",[651,45266,45267,45269,45271],{},[675,45268,26170],{},[675,45270],{},[675,45272,45273],{},"Übertragungsstatistik anzeigen",[651,45275,45276,45278,45280],{},[675,45277,12572],{},[675,45279,21179],{},[675,45281,45282],{},"Größen leserlich darstellen",[651,45284,45285,45287,45289],{},[675,45286,26189],{},[675,45288],{},[675,45290,45291],{},"Log in Datei schreiben",[651,45293,45294,45296,45298],{},[675,45295,26199],{},[675,45297],{},[675,45299,45300],{},"Passwort aus Datei lesen",[651,45302,45303,45305,45307],{},[675,45304,26209],{},[675,45306],{},[675,45308,45309],{},"Alternativen Port verwenden",[54,45311,26228],{"id":26227},[3392,45313,45315],{"className":3394,"code":45314,"language":3396,"meta":225,"style":225},"rsync -av \u002Fquelle \u002Fziel # Kopiert den Ordner \"quelle\" IN \"ziel\" → \u002Fziel\u002Fquelle\u002F...\n\nrsync -av \u002Fquelle\u002F \u002Fziel # Kopiert den INHALT von \"quelle\" → \u002Fziel\u002F...\n\n",[3398,45316,45317,45330,45334],{"__ignoreMap":225},[2915,45318,45319,45321,45323,45325,45327],{"class":3402,"line":3403},[2915,45320,26238],{"class":3406},[2915,45322,26241],{"class":3410},[2915,45324,26244],{"class":3414},[2915,45326,26247],{"class":3414},[2915,45328,45329],{"class":3511}," # Kopiert den Ordner \"quelle\" IN \"ziel\" → \u002Fziel\u002Fquelle\u002F...\n",[2915,45331,45332],{"class":3402,"line":1117},[2915,45333,3506],{"emptyLinePlaceholder":3505},[2915,45335,45336,45338,45340,45342,45344],{"class":3402,"line":1125},[2915,45337,26238],{"class":3406},[2915,45339,26241],{"class":3410},[2915,45341,26263],{"class":3414},[2915,45343,26247],{"class":3414},[2915,45345,45346],{"class":3511}," # Kopiert den INHALT von \"quelle\" → \u002Fziel\u002F...\n",[16,45348,45349],{},"Der abschließende \u002F an der Quelle macht den Unterschied!",[54,45351,8676],{"id":15178},[11,45353,45355],{"id":45354},"lokale-synchronisation-einfach","Lokale Synchronisation (einfach)",[3392,45357,45359],{"className":3394,"code":45358,"language":3396,"meta":225,"style":225},"rsync -av \u002Fhome\u002Fuser\u002Fdaten\u002F \u002Fbackup\u002Fdaten\u002F\n\n# Mit Simulation zuerst überprüfen (-n = dry run)\n\nrsync -avn \u002Fhome\u002Fuser\u002Fdaten\u002F \u002Fbackup\u002Fdaten\u002F\n\n# Remote-Backup über SSH\n\nrsync -avz \u002Fhome\u002Fuser\u002Fdokumente\u002F benutzer@server:\u002Fbackup\u002Fdokumente\u002F\n\n# Remote → Lokal (pull)\n\nrsync -avz benutzer@server:\u002Fvar\u002Fwww\u002Fhtml\u002F \u002Flokal\u002Fwebseite\u002F\n\n# Backup mit --delete (spiegelt exakt)\n\nrsync -av --delete \u002Fhome\u002Fuser\u002F \u002Fbackup\u002Fuser\u002F\n\n# SSH-Port 2222 verwenden\n\nrsync -avz -e \"ssh -p 2222\" \u002Fdaten\u002F user@server:\u002Fbackup\u002F\n\n# SSH-Key angeben\n\nrsync -avz -e \"ssh -i ~\u002F.ssh\u002Fmein_key\" \u002Fdaten\u002F user@server:\u002Fbackup\u002F\n\n# Bestimmte Typen ausschließen\n\nrsync -av --exclude=\".tmp\" --exclude=\".log\" \u002Fdaten\u002F \u002Fbackup\u002Fdaten\u002F\n\n# Ausschlussliste aus Datei (eine Regel pro Zeile)\n\nrsync -av --exclude-from=\u002Fhome\u002Fuser\u002F.rsync-exclude \u002Fdaten\u002F \u002Fbackup\u002F\n\n# Nur .jpg Dateien übertragen\n\nrsync -av --include=\".jpg\" --exclude=\"\" \u002Ffotos\u002F \u002Fbackup\u002Ffotos\u002F\n\n# Bandbreite begrenzen (500 KB\u002Fs)\n\nrsync -avz --bwlimit=500 \u002Fdaten\u002F user@server:\u002Fbackup\u002F\n\n# Große Dateien ausschließen\n\nrsync -av --max-size=50M \u002Fdaten\u002F \u002Fbackup\u002F\n\n# Vollständiges Backup mit Versionierung\n\nrsync -av --backup --backup-dir=\u002Fbackup\u002F$(date %Y-%m-%d) \u002Fhome\u002F \u002Fbackup\u002Faktuell\u002F\n\n# Fortschritt anzeigen\n\nrsync -av --progress \u002Fquelle\u002F \u002Fziel\u002F\n\n# Oder kürzer:\n\nrsync -avP \u002Fquelle\u002F \u002Fziel\u002F\n\n# Übertragungsstatistiken\n\nrsync -av --stats \u002Fquelle\u002F \u002Fziel\u002F\n\n# Dateien nur nach Prüfsumme vergleichen (langsamer aber genauer)\n\nrsync -avc \u002Fquelle\u002F \u002Fziel\u002F\n\n",[3398,45360,45361,45371,45375,45380,45384,45394,45398,45403,45407,45419,45423,45427,45431,45441,45445,45450,45454,45466,45470,45475,45479,45493,45497,45502,45506,45521,45525,45530,45534,45552,45556,45561,45565,45577,45581,45586,45590,45609,45613,45617,45621,45633,45637,45642,45646,45659,45663,45668,45672,45692,45696,45701,45705,45717,45721,45726,45730,45740,45744,45749,45753,45765,45769,45774,45778],{"__ignoreMap":225},[2915,45362,45363,45365,45367,45369],{"class":3402,"line":3403},[2915,45364,26238],{"class":3406},[2915,45366,26241],{"class":3410},[2915,45368,26312],{"class":3414},[2915,45370,26315],{"class":3414},[2915,45372,45373],{"class":3402,"line":1117},[2915,45374,3506],{"emptyLinePlaceholder":3505},[2915,45376,45377],{"class":3402,"line":1125},[2915,45378,45379],{"class":3511},"# Mit Simulation zuerst überprüfen (-n = dry run)\n",[2915,45381,45382],{"class":3402,"line":3515},[2915,45383,3506],{"emptyLinePlaceholder":3505},[2915,45385,45386,45388,45390,45392],{"class":3402,"line":3520},[2915,45387,26238],{"class":3406},[2915,45389,26335],{"class":3410},[2915,45391,26312],{"class":3414},[2915,45393,26315],{"class":3414},[2915,45395,45396],{"class":3402,"line":5070},[2915,45397,3506],{"emptyLinePlaceholder":3505},[2915,45399,45400],{"class":3402,"line":5075},[2915,45401,45402],{"class":3511},"# Remote-Backup über SSH\n",[2915,45404,45405],{"class":3402,"line":5093},[2915,45406,3506],{"emptyLinePlaceholder":3505},[2915,45408,45409,45411,45413,45416],{"class":3402,"line":5098},[2915,45410,26238],{"class":3406},[2915,45412,26450],{"class":3410},[2915,45414,45415],{"class":3414}," \u002Fhome\u002Fuser\u002Fdokumente\u002F",[2915,45417,45418],{"class":3414}," benutzer@server:\u002Fbackup\u002Fdokumente\u002F\n",[2915,45420,45421],{"class":3402,"line":5207},[2915,45422,3506],{"emptyLinePlaceholder":3505},[2915,45424,45425],{"class":3402,"line":5212},[2915,45426,26465],{"class":3511},[2915,45428,45429],{"class":3402,"line":5218},[2915,45430,3506],{"emptyLinePlaceholder":3505},[2915,45432,45433,45435,45437,45439],{"class":3402,"line":5223},[2915,45434,26238],{"class":3406},[2915,45436,26450],{"class":3410},[2915,45438,26478],{"class":3414},[2915,45440,26481],{"class":3414},[2915,45442,45443],{"class":3402,"line":5229},[2915,45444,3506],{"emptyLinePlaceholder":3505},[2915,45446,45447],{"class":3402,"line":5253},[2915,45448,45449],{"class":3511},"# Backup mit --delete (spiegelt exakt)\n",[2915,45451,45452],{"class":3402,"line":5266},[2915,45453,3506],{"emptyLinePlaceholder":3505},[2915,45455,45456,45458,45460,45462,45464],{"class":3402,"line":5721},[2915,45457,26238],{"class":3406},[2915,45459,26241],{"class":3410},[2915,45461,26361],{"class":3410},[2915,45463,26364],{"class":3414},[2915,45465,26367],{"class":3414},[2915,45467,45468],{"class":3402,"line":9401},[2915,45469,3506],{"emptyLinePlaceholder":3505},[2915,45471,45472],{"class":3402,"line":9406},[2915,45473,45474],{"class":3511},"# SSH-Port 2222 verwenden\n",[2915,45476,45477],{"class":3402,"line":9411},[2915,45478,3506],{"emptyLinePlaceholder":3505},[2915,45480,45481,45483,45485,45487,45489,45491],{"class":3402,"line":9416},[2915,45482,26238],{"class":3406},[2915,45484,26450],{"class":3410},[2915,45486,19828],{"class":3410},[2915,45488,26505],{"class":3414},[2915,45490,26508],{"class":3414},[2915,45492,26511],{"class":3414},[2915,45494,45495],{"class":3402,"line":9428},[2915,45496,3506],{"emptyLinePlaceholder":3505},[2915,45498,45499],{"class":3402,"line":9433},[2915,45500,45501],{"class":3511},"# SSH-Key angeben\n",[2915,45503,45504],{"class":3402,"line":9454},[2915,45505,3506],{"emptyLinePlaceholder":3505},[2915,45507,45508,45510,45512,45514,45517,45519],{"class":3402,"line":9459},[2915,45509,26238],{"class":3406},[2915,45511,26450],{"class":3410},[2915,45513,19828],{"class":3410},[2915,45515,45516],{"class":3414}," \"ssh -i ~\u002F.ssh\u002Fmein_key\"",[2915,45518,26508],{"class":3414},[2915,45520,26511],{"class":3414},[2915,45522,45523],{"class":3402,"line":9464},[2915,45524,3506],{"emptyLinePlaceholder":3505},[2915,45526,45527],{"class":3402,"line":9469},[2915,45528,45529],{"class":3511},"# Bestimmte Typen ausschließen\n",[2915,45531,45532],{"class":3402,"line":9479},[2915,45533,3506],{"emptyLinePlaceholder":3505},[2915,45535,45536,45538,45540,45542,45544,45546,45548,45550],{"class":3402,"line":9484},[2915,45537,26238],{"class":3406},[2915,45539,26241],{"class":3410},[2915,45541,26570],{"class":3410},[2915,45543,26573],{"class":3414},[2915,45545,26570],{"class":3410},[2915,45547,26578],{"class":3414},[2915,45549,26508],{"class":3414},[2915,45551,26315],{"class":3414},[2915,45553,45554],{"class":3402,"line":9489},[2915,45555,3506],{"emptyLinePlaceholder":3505},[2915,45557,45558],{"class":3402,"line":9494},[2915,45559,45560],{"class":3511},"# Ausschlussliste aus Datei (eine Regel pro Zeile)\n",[2915,45562,45563],{"class":3402,"line":9504},[2915,45564,3506],{"emptyLinePlaceholder":3505},[2915,45566,45567,45569,45571,45573,45575],{"class":3402,"line":9509},[2915,45568,26238],{"class":3406},[2915,45570,26241],{"class":3410},[2915,45572,26613],{"class":3410},[2915,45574,26508],{"class":3414},[2915,45576,26618],{"class":3414},[2915,45578,45579],{"class":3402,"line":9514},[2915,45580,3506],{"emptyLinePlaceholder":3505},[2915,45582,45583],{"class":3402,"line":9519},[2915,45584,45585],{"class":3511},"# Nur .jpg Dateien übertragen\n",[2915,45587,45588],{"class":3402,"line":9524},[2915,45589,3506],{"emptyLinePlaceholder":3505},[2915,45591,45592,45594,45596,45598,45600,45602,45605,45607],{"class":3402,"line":9529},[2915,45593,26238],{"class":3406},[2915,45595,26241],{"class":3410},[2915,45597,26640],{"class":3410},[2915,45599,26643],{"class":3414},[2915,45601,26570],{"class":3410},[2915,45603,45604],{"class":3414},"\"\"",[2915,45606,26656],{"class":3414},[2915,45608,26659],{"class":3414},[2915,45610,45611],{"class":3402,"line":9534},[2915,45612,3506],{"emptyLinePlaceholder":3505},[2915,45614,45615],{"class":3402,"line":9539},[2915,45616,26745],{"class":3511},[2915,45618,45619],{"class":3402,"line":9552},[2915,45620,3506],{"emptyLinePlaceholder":3505},[2915,45622,45623,45625,45627,45629,45631],{"class":3402,"line":9557},[2915,45624,26238],{"class":3406},[2915,45626,26450],{"class":3410},[2915,45628,26758],{"class":3410},[2915,45630,26508],{"class":3414},[2915,45632,26511],{"class":3414},[2915,45634,45635],{"class":3402,"line":9570},[2915,45636,3506],{"emptyLinePlaceholder":3505},[2915,45638,45639],{"class":3402,"line":9575},[2915,45640,45641],{"class":3511},"# Große Dateien ausschließen\n",[2915,45643,45644],{"class":3402,"line":9588},[2915,45645,3506],{"emptyLinePlaceholder":3505},[2915,45647,45648,45650,45652,45655,45657],{"class":3402,"line":9593},[2915,45649,26238],{"class":3406},[2915,45651,26241],{"class":3410},[2915,45653,45654],{"class":3410}," --max-size=50M",[2915,45656,26508],{"class":3414},[2915,45658,26618],{"class":3414},[2915,45660,45661],{"class":3402,"line":9598},[2915,45662,3506],{"emptyLinePlaceholder":3505},[2915,45664,45665],{"class":3402,"line":9603},[2915,45666,45667],{"class":3511},"# Vollständiges Backup mit Versionierung\n",[2915,45669,45670],{"class":3402,"line":9619},[2915,45671,3506],{"emptyLinePlaceholder":3505},[2915,45673,45674,45676,45678,45680,45682,45684,45686,45688,45690],{"class":3402,"line":9624},[2915,45675,26238],{"class":3406},[2915,45677,26241],{"class":3410},[2915,45679,26720],{"class":3410},[2915,45681,26723],{"class":3410},[2915,45683,10041],{"class":3406},[2915,45685,26728],{"class":3414},[2915,45687,5032],{"class":3410},[2915,45689,26733],{"class":3414},[2915,45691,26736],{"class":3414},[2915,45693,45694],{"class":3402,"line":9629},[2915,45695,3506],{"emptyLinePlaceholder":3505},[2915,45697,45698],{"class":3402,"line":9634},[2915,45699,45700],{"class":3511},"# Fortschritt anzeigen\n",[2915,45702,45703],{"class":3402,"line":9642},[2915,45704,3506],{"emptyLinePlaceholder":3505},[2915,45706,45707,45709,45711,45713,45715],{"class":3402,"line":9647},[2915,45708,26238],{"class":3406},[2915,45710,26241],{"class":3410},[2915,45712,26414],{"class":3410},[2915,45714,26263],{"class":3414},[2915,45716,26392],{"class":3414},[2915,45718,45719],{"class":3402,"line":9656},[2915,45720,3506],{"emptyLinePlaceholder":3505},[2915,45722,45723],{"class":3402,"line":9661},[2915,45724,45725],{"class":3511},"# Oder kürzer:\n",[2915,45727,45728],{"class":3402,"line":9666},[2915,45729,3506],{"emptyLinePlaceholder":3505},[2915,45731,45732,45734,45736,45738],{"class":3402,"line":9671},[2915,45733,26238],{"class":3406},[2915,45735,26387],{"class":3410},[2915,45737,26263],{"class":3414},[2915,45739,26392],{"class":3414},[2915,45741,45742],{"class":3402,"line":9685},[2915,45743,3506],{"emptyLinePlaceholder":3505},[2915,45745,45746],{"class":3402,"line":9690},[2915,45747,45748],{"class":3511},"# Übertragungsstatistiken\n",[2915,45750,45751],{"class":3402,"line":9711},[2915,45752,3506],{"emptyLinePlaceholder":3505},[2915,45754,45755,45757,45759,45761,45763],{"class":3402,"line":9716},[2915,45756,26238],{"class":3406},[2915,45758,26241],{"class":3410},[2915,45760,26784],{"class":3410},[2915,45762,26263],{"class":3414},[2915,45764,26392],{"class":3414},[2915,45766,45767],{"class":3402,"line":9721},[2915,45768,3506],{"emptyLinePlaceholder":3505},[2915,45770,45771],{"class":3402,"line":9726},[2915,45772,45773],{"class":3511},"# Dateien nur nach Prüfsumme vergleichen (langsamer aber genauer)\n",[2915,45775,45776],{"class":3402,"line":9734},[2915,45777,3506],{"emptyLinePlaceholder":3505},[2915,45779,45780,45782,45784,45786],{"class":3402,"line":9739},[2915,45781,26238],{"class":3406},[2915,45783,26808],{"class":3410},[2915,45785,26263],{"class":3414},[2915,45787,26392],{"class":3414},[54,45789,45791],{"id":45790},"rsync-in-cron-jobs","rsync in cron-Jobs",[11,45793,45795],{"id":45794},"tägliches-backup-um-230-uhr","Tägliches Backup um 2:30 Uhr",[16,45797,45798],{},"30 2 * * * rsync -az --delete \u002Fhome\u002F \u002Fbackup\u002Fhome\u002F >>\u002Fvar\u002Flog\u002Fbackup.log 2>&1",[11,45800,45802],{"id":45801},"backup-mit-tar","Backup mit tar",[54,45804,45806],{"id":45805},"tar-archivierung","tar – Archivierung",[11,45808,45810],{"id":45809},"archiv-erstellen","Archiv erstellen",[3392,45812,45814],{"className":3394,"code":45813,"language":3396,"meta":225,"style":225},"tar cvf archiv.tar datei1 datei2 verzeichnis\u002F\n\n# Archiv mit Komprimierung (gzip)\n\ntar czf archiv.tar.gz \u002Fverzeichnis\n\n# Archiv entpacken\n\ntar xvf archiv.tar\n\n# Komprimiertes Archiv entpacken\n\ntar xzf archiv.tar.gz\n\n# Inhalt anzeigen\n\ntar tf archiv.tar\n\n",[3398,45815,45816,45834,45838,45843,45847,45859,45863,45868,45872,45882,45886,45891,45895,45904,45908,45913,45917],{"__ignoreMap":225},[2915,45817,45818,45820,45823,45826,45829,45832],{"class":3402,"line":3403},[2915,45819,10346],{"class":3406},[2915,45821,45822],{"class":3414}," cvf",[2915,45824,45825],{"class":3414}," archiv.tar",[2915,45827,45828],{"class":3414}," datei1",[2915,45830,45831],{"class":3414}," datei2",[2915,45833,13595],{"class":3414},[2915,45835,45836],{"class":3402,"line":1117},[2915,45837,3506],{"emptyLinePlaceholder":3505},[2915,45839,45840],{"class":3402,"line":1125},[2915,45841,45842],{"class":3511},"# Archiv mit Komprimierung (gzip)\n",[2915,45844,45845],{"class":3402,"line":3515},[2915,45846,3506],{"emptyLinePlaceholder":3505},[2915,45848,45849,45851,45853,45856],{"class":3402,"line":3520},[2915,45850,10346],{"class":3406},[2915,45852,25622],{"class":3414},[2915,45854,45855],{"class":3414}," archiv.tar.gz",[2915,45857,45858],{"class":3414}," \u002Fverzeichnis\n",[2915,45860,45861],{"class":3402,"line":5070},[2915,45862,3506],{"emptyLinePlaceholder":3505},[2915,45864,45865],{"class":3402,"line":5075},[2915,45866,45867],{"class":3511},"# Archiv entpacken\n",[2915,45869,45870],{"class":3402,"line":5093},[2915,45871,3506],{"emptyLinePlaceholder":3505},[2915,45873,45874,45876,45879],{"class":3402,"line":5098},[2915,45875,10346],{"class":3406},[2915,45877,45878],{"class":3414}," xvf",[2915,45880,45881],{"class":3414}," archiv.tar\n",[2915,45883,45884],{"class":3402,"line":5207},[2915,45885,3506],{"emptyLinePlaceholder":3505},[2915,45887,45888],{"class":3402,"line":5212},[2915,45889,45890],{"class":3511},"# Komprimiertes Archiv entpacken\n",[2915,45892,45893],{"class":3402,"line":5218},[2915,45894,3506],{"emptyLinePlaceholder":3505},[2915,45896,45897,45899,45902],{"class":3402,"line":5223},[2915,45898,10346],{"class":3406},[2915,45900,45901],{"class":3414}," xzf",[2915,45903,23433],{"class":3414},[2915,45905,45906],{"class":3402,"line":5229},[2915,45907,3506],{"emptyLinePlaceholder":3505},[2915,45909,45910],{"class":3402,"line":5253},[2915,45911,45912],{"class":3511},"# Inhalt anzeigen\n",[2915,45914,45915],{"class":3402,"line":5266},[2915,45916,3506],{"emptyLinePlaceholder":3505},[2915,45918,45919,45921,45924],{"class":3402,"line":5721},[2915,45920,10346],{"class":3406},[2915,45922,45923],{"class":3414}," tf",[2915,45925,45881],{"class":3414},[228,45927,45929],{"id":45928},"optionen","Optionen:",[645,45931,45932,45944],{},[648,45933,45934],{},[651,45935,45936,45940],{},[654,45937,45938],{},[26,45939,7715],{},[654,45941,45942],{},[26,45943,4550],{},[670,45945,45946,45953,45960,45968,45976,45984,45992],{},[651,45947,45948,45950],{},[675,45949,11242],{},[675,45951,45952],{},"Create (Archiv erstellen)",[651,45954,45955,45957],{},[675,45956,12973],{},[675,45958,45959],{},"Extract (Entpacken)",[651,45961,45962,45965],{},[675,45963,45964],{},"v",[675,45966,45967],{},"Verbose (Dateiliste anzeigen)",[651,45969,45970,45973],{},[675,45971,45972],{},"f",[675,45974,45975],{},"File (Archivdatei angeben)",[651,45977,45978,45981],{},[675,45979,45980],{},"z",[675,45982,45983],{},"gzip-Komprimierung",[651,45985,45986,45989],{},[675,45987,45988],{},"j",[675,45990,45991],{},"bzip2-Komprimierung",[651,45993,45994,45996],{},[675,45995,13230],{},[675,45997,45998],{},"Inhalt auflisten",[54,46000,46002],{"id":46001},"backup-skript-beispiel","Backup-Skript (Beispiel):",[3392,46004,46006],{"className":3394,"code":46005,"language":3396,"meta":225,"style":225},"#!\u002Fusr\u002Fbin\u002Fenv bash\n\nset -euo pipefail\n\nBACKUP_SRC=(\"\u002Fetc\" \"\u002Fvar\u002Fwww\")\n\nBACKUP_DEST=\"\u002Fbackup\"\n\nRETENTION_DAYS=7\n\nLOGFILE=\"\u002Fvar\u002Flog\u002Fbackup.log\"\n\nLOCKFILE=\"\u002Ftmp\u002Fbackup.lock\"\n\nlog() {\n\necho \"$(date ' %F %T') $1\" | tee -a \"$LOGFILE\"\n\n}\n\ncleanup() {\n\nrm -f \"$LOCKFILE\"\n\n}\n\ntrap cleanup EXIT\n\n[[ -f \"$LOCKFILE\" ]] && {\n\necho \"Already running\"\n\nexit 1\n\n}\n\ntouch \"$LOCKFILE\"\n\nTIMESTAMP=$(date %F_%H-%M-%S)\n\nTARGET=\"$BACKUP_DEST\u002Fbackup_$TIMESTAMP.tar.gz\"\n\nlog \"Starting backup...\"\n\ntar -czf \"$TARGET\" \"${BACKUP_SRC[@]}\"\n\nlog \"Cleaning old backups...\"\n\nfind \"$BACKUP_DEST\" -type f -mtime $RETENTION_DAYS -name \"*.tar.gz\" -delete\n\nlog \"Backup finished.\"\n\n",[3398,46007,46008,46012,46016,46024,46028,46044,46048,46057,46061,46069,46073,46082,46086,46094,46098,46104,46108,46135,46139,46143,46147,46153,46157,46169,46173,46177,46181,46189,46193,46208,46212,46219,46223,46229,46233,46237,46241,46251,46255,46270,46274,46290,46294,46300,46304,46326,46330,46336,46340,46365,46369],{"__ignoreMap":225},[2915,46009,46010],{"class":3402,"line":3403},[2915,46011,9907],{"class":3511},[2915,46013,46014],{"class":3402,"line":1117},[2915,46015,3506],{"emptyLinePlaceholder":3505},[2915,46017,46018,46020,46022],{"class":3402,"line":1125},[2915,46019,9916],{"class":3410},[2915,46021,9919],{"class":3410},[2915,46023,9922],{"class":3414},[2915,46025,46026],{"class":3402,"line":3515},[2915,46027,3506],{"emptyLinePlaceholder":3505},[2915,46029,46030,46032,46034,46036,46039,46042],{"class":3402,"line":3520},[2915,46031,9931],{"class":3529},[2915,46033,5137],{"class":3533},[2915,46035,5140],{"class":3529},[2915,46037,46038],{"class":3414},"\"\u002Fetc\"",[2915,46040,46041],{"class":3414}," \"\u002Fvar\u002Fwww\"",[2915,46043,5152],{"class":3529},[2915,46045,46046],{"class":3402,"line":5070},[2915,46047,3506],{"emptyLinePlaceholder":3505},[2915,46049,46050,46052,46054],{"class":3402,"line":5075},[2915,46051,9952],{"class":3529},[2915,46053,5137],{"class":3533},[2915,46055,46056],{"class":3414},"\"\u002Fbackup\"\n",[2915,46058,46059],{"class":3402,"line":5093},[2915,46060,3506],{"emptyLinePlaceholder":3505},[2915,46062,46063,46065,46067],{"class":3402,"line":5098},[2915,46064,9966],{"class":3529},[2915,46066,5137],{"class":3533},[2915,46068,9971],{"class":3414},[2915,46070,46071],{"class":3402,"line":5207},[2915,46072,3506],{"emptyLinePlaceholder":3505},[2915,46074,46075,46077,46079],{"class":3402,"line":5212},[2915,46076,9980],{"class":3529},[2915,46078,5137],{"class":3533},[2915,46080,46081],{"class":3414},"\"\u002Fvar\u002Flog\u002Fbackup.log\"\n",[2915,46083,46084],{"class":3402,"line":5218},[2915,46085,3506],{"emptyLinePlaceholder":3505},[2915,46087,46088,46090,46092],{"class":3402,"line":5223},[2915,46089,9994],{"class":3529},[2915,46091,5137],{"class":3533},[2915,46093,9999],{"class":3414},[2915,46095,46096],{"class":3402,"line":5229},[2915,46097,3506],{"emptyLinePlaceholder":3505},[2915,46099,46100,46102],{"class":3402,"line":5253},[2915,46101,10018],{"class":3406},[2915,46103,5812],{"class":3529},[2915,46105,46106],{"class":3402,"line":5266},[2915,46107,3506],{"emptyLinePlaceholder":3505},[2915,46109,46110,46112,46114,46116,46119,46121,46123,46125,46127,46129,46131,46133],{"class":3402,"line":5721},[2915,46111,5059],{"class":3410},[2915,46113,10038],{"class":3414},[2915,46115,10041],{"class":3406},[2915,46117,46118],{"class":3414}," ' %F %T') ",[2915,46120,8638],{"class":3410},[2915,46122,4957],{"class":3414},[2915,46124,7679],{"class":3533},[2915,46126,10053],{"class":3406},[2915,46128,10056],{"class":3410},[2915,46130,4968],{"class":3414},[2915,46132,10061],{"class":3529},[2915,46134,5204],{"class":3414},[2915,46136,46137],{"class":3402,"line":9401},[2915,46138,3506],{"emptyLinePlaceholder":3505},[2915,46140,46141],{"class":3402,"line":9406},[2915,46142,5840],{"class":3529},[2915,46144,46145],{"class":3402,"line":9411},[2915,46146,3506],{"emptyLinePlaceholder":3505},[2915,46148,46149,46151],{"class":3402,"line":9416},[2915,46150,10076],{"class":3406},[2915,46152,5812],{"class":3529},[2915,46154,46155],{"class":3402,"line":9428},[2915,46156,3506],{"emptyLinePlaceholder":3505},[2915,46158,46159,46161,46163,46165,46167],{"class":3402,"line":9433},[2915,46160,10086],{"class":3406},[2915,46162,10089],{"class":3410},[2915,46164,4968],{"class":3414},[2915,46166,10094],{"class":3529},[2915,46168,5204],{"class":3414},[2915,46170,46171],{"class":3402,"line":9454},[2915,46172,3506],{"emptyLinePlaceholder":3505},[2915,46174,46175],{"class":3402,"line":9459},[2915,46176,5840],{"class":3529},[2915,46178,46179],{"class":3402,"line":9464},[2915,46180,3506],{"emptyLinePlaceholder":3505},[2915,46182,46183,46185,46187],{"class":3402,"line":9469},[2915,46184,10140],{"class":3410},[2915,46186,10143],{"class":3414},[2915,46188,10146],{"class":3414},[2915,46190,46191],{"class":3402,"line":9479},[2915,46192,3506],{"emptyLinePlaceholder":3505},[2915,46194,46195,46197,46199,46201,46203,46205],{"class":3402,"line":9484},[2915,46196,10155],{"class":3529},[2915,46198,9329],{"class":3533},[2915,46200,4968],{"class":3414},[2915,46202,10094],{"class":3529},[2915,46204,4957],{"class":3414},[2915,46206,46207],{"class":3529}," ]] && {\n",[2915,46209,46210],{"class":3402,"line":9489},[2915,46211,3506],{"emptyLinePlaceholder":3505},[2915,46213,46214,46216],{"class":3402,"line":9494},[2915,46215,5059],{"class":3410},[2915,46217,46218],{"class":3414}," \"Already running\"\n",[2915,46220,46221],{"class":3402,"line":9504},[2915,46222,3506],{"emptyLinePlaceholder":3505},[2915,46224,46225,46227],{"class":3402,"line":9509},[2915,46226,9650],{"class":3410},[2915,46228,9653],{"class":3410},[2915,46230,46231],{"class":3402,"line":9514},[2915,46232,3506],{"emptyLinePlaceholder":3505},[2915,46234,46235],{"class":3402,"line":9519},[2915,46236,5840],{"class":3529},[2915,46238,46239],{"class":3402,"line":9524},[2915,46240,3506],{"emptyLinePlaceholder":3505},[2915,46242,46243,46245,46247,46249],{"class":3402,"line":9529},[2915,46244,10189],{"class":3406},[2915,46246,4968],{"class":3414},[2915,46248,10094],{"class":3529},[2915,46250,5204],{"class":3414},[2915,46252,46253],{"class":3402,"line":9534},[2915,46254,3506],{"emptyLinePlaceholder":3505},[2915,46256,46257,46259,46261,46263,46265,46268],{"class":3402,"line":9539},[2915,46258,10274],{"class":3529},[2915,46260,5137],{"class":3533},[2915,46262,9001],{"class":3529},[2915,46264,10041],{"class":3406},[2915,46266,46267],{"class":3414}," %F_%H-%M-%S",[2915,46269,5152],{"class":3529},[2915,46271,46272],{"class":3402,"line":9552},[2915,46273,3506],{"emptyLinePlaceholder":3505},[2915,46275,46276,46278,46280,46282,46284,46286,46288],{"class":3402,"line":9557},[2915,46277,10294],{"class":3529},[2915,46279,5137],{"class":3533},[2915,46281,4957],{"class":3414},[2915,46283,10301],{"class":3529},[2915,46285,10304],{"class":3414},[2915,46287,10307],{"class":3529},[2915,46289,10310],{"class":3414},[2915,46291,46292],{"class":3402,"line":9570},[2915,46293,3506],{"emptyLinePlaceholder":3505},[2915,46295,46296,46298],{"class":3402,"line":9575},[2915,46297,10018],{"class":3406},[2915,46299,10321],{"class":3414},[2915,46301,46302],{"class":3402,"line":9588},[2915,46303,3506],{"emptyLinePlaceholder":3505},[2915,46305,46306,46308,46310,46312,46314,46316,46318,46320,46322,46324],{"class":3402,"line":9593},[2915,46307,10346],{"class":3406},[2915,46309,10349],{"class":3410},[2915,46311,4968],{"class":3414},[2915,46313,10354],{"class":3529},[2915,46315,4957],{"class":3414},[2915,46317,10359],{"class":3414},[2915,46319,9931],{"class":3529},[2915,46321,10364],{"class":3414},[2915,46323,10367],{"class":3533},[2915,46325,10370],{"class":3414},[2915,46327,46328],{"class":3402,"line":9598},[2915,46329,3506],{"emptyLinePlaceholder":3505},[2915,46331,46332,46334],{"class":3402,"line":9603},[2915,46333,10018],{"class":3406},[2915,46335,10421],{"class":3414},[2915,46337,46338],{"class":3402,"line":9619},[2915,46339,3506],{"emptyLinePlaceholder":3505},[2915,46341,46342,46344,46346,46348,46350,46352,46354,46356,46359,46361,46363],{"class":3402,"line":9624},[2915,46343,8210],{"class":3406},[2915,46345,4968],{"class":3414},[2915,46347,10301],{"class":3529},[2915,46349,4957],{"class":3414},[2915,46351,8248],{"class":3410},[2915,46353,9021],{"class":3414},[2915,46355,8488],{"class":3410},[2915,46357,46358],{"class":3529}," $RETENTION_DAYS ",[2915,46360,8274],{"class":3410},[2915,46362,10479],{"class":3414},[2915,46364,8520],{"class":3410},[2915,46366,46367],{"class":3402,"line":9629},[2915,46368,3506],{"emptyLinePlaceholder":3505},[2915,46370,46371,46373],{"class":3402,"line":9634},[2915,46372,10018],{"class":3406},[2915,46374,10492],{"class":3414},[11,46376,46378],{"id":46377},"bash-skripting","Bash-Skripting",[16,46380,46381],{},[223,46382],{"alt":225,"src":46383},"\u002Fdownloads\u002FBSA\u002Fimages\u002Fap-zsmf_img_1.png",[54,46385,46387],{"id":46386},"skript-grundlagen-datenfluss","Skript-Grundlagen & Datenfluss",[20,46389,46390,46394,46398,46402,46406,46410,46414,46418,46422,46426,46434,46440],{},[23,46391,46392,4772],{},[26,46393,4771],{},[23,46395,46396,4778],{},[26,46397,4777],{},[23,46399,46400,4784],{},[26,46401,4783],{},[23,46403,46404,4790],{},[26,46405,4789],{},[23,46407,46408,4796],{},[26,46409,4795],{},[23,46411,46412,4802],{},[26,46413,4801],{},[23,46415,46416,4808],{},[26,46417,4807],{},[23,46419,46420,4814],{},[26,46421,4813],{},[23,46423,46424,4820],{},[26,46425,4819],{},[23,46427,46428,4826,46430],{},[26,46429,4825],{},[20,46431,46432],{},[23,46433,4831],{},[23,46435,46436,4837,46438],{},[26,46437,4836],{},[2915,46439,4840],{},[23,46441,46442,4846,46444,4850,46446,4850,46448,4857,46450],{},[26,46443,4845],{},[2915,46445,4849],{},[2915,46447,4853],{},[2915,46449,4856],{},[20,46451,46452,46454,46456],{},[23,46453,4862],{},[23,46455,4865],{},[23,46457,4868],{},[54,46459,46461],{"id":46460},"wichtige-variablen","Wichtige Variablen",[20,46463,46464,46468,46472,46476,46480,46484,46488],{},[23,46465,46466,4880],{},[26,46467,4879],{},[23,46469,46470,4886],{},[26,46471,4885],{},[23,46473,46474,4892],{},[26,46475,4891],{},[23,46477,46478,4898],{},[26,46479,4897],{},[23,46481,46482,4904],{},[26,46483,4903],{},[23,46485,46486,4910],{},[26,46487,4909],{},[23,46489,46490,4916],{},[26,46491,4915],{},[54,46493,46495],{"id":46494},"rechnen-mit-variablen","Rechnen mit Variablen",[16,46497,46498],{},"In Bash sind Variablen standardmäßig Text. Wenn mit Zahlen gerechnet werden soll, muss Bash ausdrücklich gesagt werden, dass eine arithmetische Berechnung gemeint ist.",[228,46500,46502],{"id":46501},"variable-setzen-und-ausgeben","Variable setzen und ausgeben",[3392,46504,46506],{"className":3394,"code":46505,"language":3396,"meta":225,"style":225},"zahl=5\n\necho \"$zahl\"\n\n",[3398,46507,46508,46517,46521],{"__ignoreMap":225},[2915,46509,46510,46513,46515],{"class":3402,"line":3403},[2915,46511,46512],{"class":3529},"zahl",[2915,46514,5137],{"class":3533},[2915,46516,30877],{"class":3414},[2915,46518,46519],{"class":3402,"line":1117},[2915,46520,3506],{"emptyLinePlaceholder":3505},[2915,46522,46523,46525,46527,46530],{"class":3402,"line":1125},[2915,46524,5059],{"class":3410},[2915,46526,4968],{"class":3414},[2915,46528,46529],{"class":3529},"$zahl",[2915,46531,5204],{"class":3414},[16,46533,11993],{},[3392,46535,46537],{"className":3394,"code":46536,"language":3396,"meta":225,"style":225},"zahl=5 # richtig\n\nzahl = 5 # falsch!\n\nBei Variablenzuweisungen dürfen keine Leerzeichen um das = stehen.\n\n",[3398,46538,46539,46550,46554,46565,46569],{"__ignoreMap":225},[2915,46540,46541,46543,46545,46547],{"class":3402,"line":3403},[2915,46542,46512],{"class":3529},[2915,46544,5137],{"class":3533},[2915,46546,13045],{"class":3414},[2915,46548,46549],{"class":3511}," # richtig\n",[2915,46551,46552],{"class":3402,"line":1117},[2915,46553,3506],{"emptyLinePlaceholder":3505},[2915,46555,46556,46558,46560,46562],{"class":3402,"line":1125},[2915,46557,46512],{"class":3406},[2915,46559,13922],{"class":3414},[2915,46561,15203],{"class":3410},[2915,46563,46564],{"class":3511}," # falsch!\n",[2915,46566,46567],{"class":3402,"line":3515},[2915,46568,3506],{"emptyLinePlaceholder":3505},[2915,46570,46571,46574,46577,46580,46583,46586,46589,46591,46593],{"class":3402,"line":3520},[2915,46572,46573],{"class":3406},"Bei",[2915,46575,46576],{"class":3414}," Variablenzuweisungen",[2915,46578,46579],{"class":3414}," dürfen",[2915,46581,46582],{"class":3414}," keine",[2915,46584,46585],{"class":3414}," Leerzeichen",[2915,46587,46588],{"class":3414}," um",[2915,46590,35225],{"class":3414},[2915,46592,13922],{"class":3414},[2915,46594,46595],{"class":3414}," stehen.\n",[228,46597,46599],{"id":46598},"rechnen-mit","Rechnen mit $(( ... ))",[16,46601,46602],{},"Die empfohlene Schreibweise für Ganzzahlrechnung ist:",[3392,46604,46606],{"className":3394,"code":46605,"language":3396,"meta":225,"style":225},"a=10\n\nb=3\n\necho $((a + b)) # 13\n\necho $((a - b)) # 7\n\necho $((a * b)) # 30\n\necho $((a \u002F b)) # 3\n\necho $((a % b)) # 1\n\n| Operator | Bedeutung | Beispiel |\n| --- | --- | --- |\n| + | Addition | $((a + b)) |\n| - | Subtraktion | $((a - b)) |\n|  | Multiplikation | $((a  b)) |\n| \u002F | Division | $((a \u002F b)) |\n| % | Modulo \u002F Rest | $((a % b)) |\n\n",[3398,46607,46608,46617,46621,46629,46633,46653,46657,46674,46678,46695,46699,46716,46720,46738,46742,46763,46780,46805,46828,46849,46872],{"__ignoreMap":225},[2915,46609,46610,46612,46614],{"class":3402,"line":3403},[2915,46611,3432],{"class":3529},[2915,46613,5137],{"class":3533},[2915,46615,46616],{"class":3414},"10\n",[2915,46618,46619],{"class":3402,"line":1117},[2915,46620,3506],{"emptyLinePlaceholder":3505},[2915,46622,46623,46625,46627],{"class":3402,"line":1125},[2915,46624,5053],{"class":3529},[2915,46626,5137],{"class":3533},[2915,46628,30405],{"class":3414},[2915,46630,46631],{"class":3402,"line":3515},[2915,46632,3506],{"emptyLinePlaceholder":3505},[2915,46634,46635,46637,46640,46642,46644,46647,46650],{"class":3402,"line":3520},[2915,46636,5059],{"class":3410},[2915,46638,46639],{"class":3529}," $((",[2915,46641,3432],{"class":3406},[2915,46643,10471],{"class":3414},[2915,46645,46646],{"class":3414}," b",[2915,46648,46649],{"class":3529},")) ",[2915,46651,46652],{"class":3511},"# 13\n",[2915,46654,46655],{"class":3402,"line":5070},[2915,46656,3506],{"emptyLinePlaceholder":3505},[2915,46658,46659,46661,46663,46665,46667,46669,46671],{"class":3402,"line":5075},[2915,46660,5059],{"class":3410},[2915,46662,46639],{"class":3529},[2915,46664,3432],{"class":3406},[2915,46666,3530],{"class":3414},[2915,46668,46646],{"class":3414},[2915,46670,46649],{"class":3529},[2915,46672,46673],{"class":3511},"# 7\n",[2915,46675,46676],{"class":3402,"line":5093},[2915,46677,3506],{"emptyLinePlaceholder":3505},[2915,46679,46680,46682,46684,46686,46688,46690,46692],{"class":3402,"line":5098},[2915,46681,5059],{"class":3410},[2915,46683,46639],{"class":3529},[2915,46685,3432],{"class":3406},[2915,46687,5828],{"class":3410},[2915,46689,46646],{"class":3414},[2915,46691,46649],{"class":3529},[2915,46693,46694],{"class":3511},"# 30\n",[2915,46696,46697],{"class":3402,"line":5207},[2915,46698,3506],{"emptyLinePlaceholder":3505},[2915,46700,46701,46703,46705,46707,46709,46711,46713],{"class":3402,"line":5212},[2915,46702,5059],{"class":3410},[2915,46704,46639],{"class":3529},[2915,46706,3432],{"class":3406},[2915,46708,13844],{"class":3414},[2915,46710,46646],{"class":3414},[2915,46712,46649],{"class":3529},[2915,46714,46715],{"class":3511},"# 3\n",[2915,46717,46718],{"class":3402,"line":5218},[2915,46719,3506],{"emptyLinePlaceholder":3505},[2915,46721,46722,46724,46726,46728,46731,46733,46735],{"class":3402,"line":5223},[2915,46723,5059],{"class":3410},[2915,46725,46639],{"class":3529},[2915,46727,3432],{"class":3406},[2915,46729,46730],{"class":3414}," %",[2915,46732,46646],{"class":3414},[2915,46734,46649],{"class":3529},[2915,46736,46737],{"class":3511},"# 1\n",[2915,46739,46740],{"class":3402,"line":5229},[2915,46741,3506],{"emptyLinePlaceholder":3505},[2915,46743,46744,46747,46750,46752,46755,46757,46760],{"class":3402,"line":5253},[2915,46745,46746],{"class":3533},"|",[2915,46748,46749],{"class":3406}," Operator",[2915,46751,7679],{"class":3533},[2915,46753,46754],{"class":3406}," Bedeutung",[2915,46756,7679],{"class":3533},[2915,46758,46759],{"class":3406}," Beispiel",[2915,46761,46762],{"class":3533}," |\n",[2915,46764,46765,46767,46770,46772,46774,46776,46778],{"class":3402,"line":5266},[2915,46766,46746],{"class":3533},[2915,46768,46769],{"class":3406}," ---",[2915,46771,7679],{"class":3533},[2915,46773,46769],{"class":3406},[2915,46775,7679],{"class":3533},[2915,46777,46769],{"class":3406},[2915,46779,46762],{"class":3533},[2915,46781,46782,46784,46786,46788,46791,46793,46796,46798,46800,46802],{"class":3402,"line":5721},[2915,46783,46746],{"class":3533},[2915,46785,10471],{"class":3406},[2915,46787,7679],{"class":3533},[2915,46789,46790],{"class":3406}," Addition",[2915,46792,7679],{"class":3533},[2915,46794,46795],{"class":3406}," $((a",[2915,46797,10471],{"class":3414},[2915,46799,46646],{"class":3414},[2915,46801,46649],{"class":3529},[2915,46803,46804],{"class":3533},"|\n",[2915,46806,46807,46809,46811,46813,46816,46818,46820,46822,46824,46826],{"class":3402,"line":9401},[2915,46808,46746],{"class":3533},[2915,46810,3530],{"class":3406},[2915,46812,7679],{"class":3533},[2915,46814,46815],{"class":3406}," Subtraktion",[2915,46817,7679],{"class":3533},[2915,46819,46795],{"class":3406},[2915,46821,3530],{"class":3414},[2915,46823,46646],{"class":3414},[2915,46825,46649],{"class":3529},[2915,46827,46804],{"class":3533},[2915,46829,46830,46832,46835,46838,46840,46842,46845,46847],{"class":3402,"line":9406},[2915,46831,46746],{"class":3533},[2915,46833,46834],{"class":3533},"  |",[2915,46836,46837],{"class":3406}," Multiplikation",[2915,46839,7679],{"class":3533},[2915,46841,46795],{"class":3406},[2915,46843,46844],{"class":3414},"  b",[2915,46846,46649],{"class":3529},[2915,46848,46804],{"class":3533},[2915,46850,46851,46853,46855,46857,46860,46862,46864,46866,46868,46870],{"class":3402,"line":9411},[2915,46852,46746],{"class":3533},[2915,46854,13844],{"class":3406},[2915,46856,7679],{"class":3533},[2915,46858,46859],{"class":3406}," Division",[2915,46861,7679],{"class":3533},[2915,46863,46795],{"class":3406},[2915,46865,13844],{"class":3414},[2915,46867,46646],{"class":3414},[2915,46869,46649],{"class":3529},[2915,46871,46804],{"class":3533},[2915,46873,46874,46876,46878,46880,46883,46885,46888,46890,46892,46894,46896,46898],{"class":3402,"line":9416},[2915,46875,46746],{"class":3533},[2915,46877,46730],{"class":3406},[2915,46879,7679],{"class":3533},[2915,46881,46882],{"class":3406}," Modulo",[2915,46884,13844],{"class":3414},[2915,46886,46887],{"class":3414}," Rest",[2915,46889,7679],{"class":3533},[2915,46891,46795],{"class":3406},[2915,46893,46730],{"class":3414},[2915,46895,46646],{"class":3414},[2915,46897,46649],{"class":3529},[2915,46899,46804],{"class":3533},[228,46901,46903],{"id":46902},"ergebnis-in-variable-speichern","Ergebnis in Variable speichern",[3392,46905,46907],{"className":3394,"code":46906,"language":3396,"meta":225,"style":225},"a=7\n\nb=4\n\nergebnis=$((a + b))\n\necho \"Das Ergebnis ist: $ergebnis\"\n\n",[3398,46908,46909,46917,46921,46929,46933,46951,46955],{"__ignoreMap":225},[2915,46910,46911,46913,46915],{"class":3402,"line":3403},[2915,46912,3432],{"class":3529},[2915,46914,5137],{"class":3533},[2915,46916,9971],{"class":3414},[2915,46918,46919],{"class":3402,"line":1117},[2915,46920,3506],{"emptyLinePlaceholder":3505},[2915,46922,46923,46925,46927],{"class":3402,"line":1125},[2915,46924,5053],{"class":3529},[2915,46926,5137],{"class":3533},[2915,46928,43892],{"class":3414},[2915,46930,46931],{"class":3402,"line":3515},[2915,46932,3506],{"emptyLinePlaceholder":3505},[2915,46934,46935,46938,46940,46943,46945,46947,46949],{"class":3402,"line":3520},[2915,46936,46937],{"class":3529},"ergebnis",[2915,46939,5137],{"class":3533},[2915,46941,46942],{"class":3529},"$((",[2915,46944,3432],{"class":3406},[2915,46946,10471],{"class":3414},[2915,46948,46646],{"class":3414},[2915,46950,9425],{"class":3529},[2915,46952,46953],{"class":3402,"line":5070},[2915,46954,3506],{"emptyLinePlaceholder":3505},[2915,46956,46957,46959,46962,46965],{"class":3402,"line":5075},[2915,46958,5059],{"class":3410},[2915,46960,46961],{"class":3414}," \"Das Ergebnis ist: ",[2915,46963,46964],{"class":3529},"$ergebnis",[2915,46966,5204],{"class":3414},[16,46968,46969],{},"Ausgabe:",[16,46971,46972],{},"Das Ergebnis ist: 11",[228,46974,46976],{"id":46975},"variable-hochzählen","Variable hochzählen",[3392,46978,46980],{"className":3394,"code":46979,"language":3396,"meta":225,"style":225},"zahl=1\n\nzahl=$((zahl + 1))\n\necho \"$zahl\"\n\n",[3398,46981,46982,46991,46995,47011,47015],{"__ignoreMap":225},[2915,46983,46984,46986,46988],{"class":3402,"line":3403},[2915,46985,46512],{"class":3529},[2915,46987,5137],{"class":3533},[2915,46989,46990],{"class":3414},"1\n",[2915,46992,46993],{"class":3402,"line":1117},[2915,46994,3506],{"emptyLinePlaceholder":3505},[2915,46996,46997,46999,47001,47003,47005,47007,47009],{"class":3402,"line":1125},[2915,46998,46512],{"class":3529},[2915,47000,5137],{"class":3533},[2915,47002,46942],{"class":3529},[2915,47004,46512],{"class":3406},[2915,47006,10471],{"class":3414},[2915,47008,9016],{"class":3410},[2915,47010,9425],{"class":3529},[2915,47012,47013],{"class":3402,"line":3515},[2915,47014,3506],{"emptyLinePlaceholder":3505},[2915,47016,47017,47019,47021,47023],{"class":3402,"line":3520},[2915,47018,5059],{"class":3410},[2915,47020,4968],{"class":3414},[2915,47022,46529],{"class":3529},[2915,47024,5204],{"class":3414},[16,47026,47027],{},"Kurzformen:",[16,47029,47030],{},"((zahl++)) # um 1 erhöhen",[16,47032,47033],{},"((zahl--)) # um 1 verringern",[16,47035,47036],{},"((zahl += 5)) # 5 addieren",[16,47038,47039],{},"((zahl -= 2)) # 2 abziehen",[16,47041,6940],{},[3392,47043,47045],{"className":3394,"code":47044,"language":3396,"meta":225,"style":225},"counter=0\n\n((counter++))\n\n((counter++))\n\necho \"$counter\"\n\n",[3398,47046,47047,47056,47060,47069,47073,47081,47085],{"__ignoreMap":225},[2915,47048,47049,47052,47054],{"class":3402,"line":3403},[2915,47050,47051],{"class":3529},"counter",[2915,47053,5137],{"class":3533},[2915,47055,9263],{"class":3414},[2915,47057,47058],{"class":3402,"line":1117},[2915,47059,3506],{"emptyLinePlaceholder":3505},[2915,47061,47062,47065,47067],{"class":3402,"line":1125},[2915,47063,47064],{"class":3529},"((counter",[2915,47066,9422],{"class":3533},[2915,47068,9425],{"class":3529},[2915,47070,47071],{"class":3402,"line":3515},[2915,47072,3506],{"emptyLinePlaceholder":3505},[2915,47074,47075,47077,47079],{"class":3402,"line":3520},[2915,47076,47064],{"class":3529},[2915,47078,9422],{"class":3533},[2915,47080,9425],{"class":3529},[2915,47082,47083],{"class":3402,"line":5070},[2915,47084,3506],{"emptyLinePlaceholder":3505},[2915,47086,47087,47089,47091,47094],{"class":3402,"line":5075},[2915,47088,5059],{"class":3410},[2915,47090,4968],{"class":3414},[2915,47092,47093],{"class":3529},"$counter",[2915,47095,5204],{"class":3414},[16,47097,46969],{},[16,47099,12959],{},[228,47101,47103],{"id":47102},"rechnen-in-bedingungen","Rechnen in Bedingungen",[3392,47105,47107],{"className":3394,"code":47106,"language":3396,"meta":225,"style":225},"alter=20\n\nif ((alter >= 18)); then\n\necho \"Volljährig\"\n\nelse\n\necho \"Minderjährig\"\n\nfi\n\n",[3398,47108,47109,47119,47123,47141,47145,47152,47156,47160,47164,47171,47175],{"__ignoreMap":225},[2915,47110,47111,47114,47116],{"class":3402,"line":3403},[2915,47112,47113],{"class":3529},"alter",[2915,47115,5137],{"class":3533},[2915,47117,47118],{"class":3414},"20\n",[2915,47120,47121],{"class":3402,"line":1117},[2915,47122,3506],{"emptyLinePlaceholder":3505},[2915,47124,47125,47127,47130,47133,47136,47139],{"class":3402,"line":1125},[2915,47126,4951],{"class":3533},[2915,47128,47129],{"class":3529}," ((alter ",[2915,47131,47132],{"class":3533},">=",[2915,47134,47135],{"class":3410}," 18",[2915,47137,47138],{"class":3529},")); ",[2915,47140,4979],{"class":3533},[2915,47142,47143],{"class":3402,"line":3515},[2915,47144,3506],{"emptyLinePlaceholder":3505},[2915,47146,47147,47149],{"class":3402,"line":3520},[2915,47148,5059],{"class":3410},[2915,47150,47151],{"class":3414}," \"Volljährig\"\n",[2915,47153,47154],{"class":3402,"line":5070},[2915,47155,3506],{"emptyLinePlaceholder":3505},[2915,47157,47158],{"class":3402,"line":5075},[2915,47159,6407],{"class":3533},[2915,47161,47162],{"class":3402,"line":5093},[2915,47163,3506],{"emptyLinePlaceholder":3505},[2915,47165,47166,47168],{"class":3402,"line":5098},[2915,47167,5059],{"class":3410},[2915,47169,47170],{"class":3414}," \"Minderjährig\"\n",[2915,47172,47173],{"class":3402,"line":5207},[2915,47174,3506],{"emptyLinePlaceholder":3505},[2915,47176,47177],{"class":3402,"line":5212},[2915,47178,4997],{"class":3533},[16,47180,47181],{},"Bei Zahlenvergleichen ist diese Schreibweise oft lesbarer als:",[3392,47183,47185],{"className":3394,"code":47184,"language":3396,"meta":225,"style":225},"if [ \"$alter\" -ge 18 ]; then\n\necho \"Volljährig\"\n\nfi\n\n",[3398,47186,47187,47209,47213,47219,47223],{"__ignoreMap":225},[2915,47188,47189,47191,47193,47195,47198,47200,47203,47205,47207],{"class":3402,"line":3403},[2915,47190,4951],{"class":3533},[2915,47192,4954],{"class":3529},[2915,47194,4957],{"class":3414},[2915,47196,47197],{"class":3529},"$alter",[2915,47199,4957],{"class":3414},[2915,47201,47202],{"class":3533}," -ge",[2915,47204,47135],{"class":3410},[2915,47206,4976],{"class":3529},[2915,47208,4979],{"class":3533},[2915,47210,47211],{"class":3402,"line":1117},[2915,47212,3506],{"emptyLinePlaceholder":3505},[2915,47214,47215,47217],{"class":3402,"line":1125},[2915,47216,5059],{"class":3410},[2915,47218,47151],{"class":3414},[2915,47220,47221],{"class":3402,"line":3515},[2915,47222,3506],{"emptyLinePlaceholder":3505},[2915,47224,47225],{"class":3402,"line":3520},[2915,47226,4997],{"class":3533},[228,47228,47230],{"id":47229},"achtung-bash-rechnet-nur-mit-ganzzahlen","Achtung: Bash rechnet nur mit Ganzzahlen",[3392,47232,47234],{"className":3394,"code":47233,"language":3396,"meta":225,"style":225},"echo $((5 \u002F 2))\n\n",[3398,47235,47236],{"__ignoreMap":225},[2915,47237,47238,47240,47242,47244,47246,47248],{"class":3402,"line":3403},[2915,47239,5059],{"class":3410},[2915,47241,46639],{"class":3529},[2915,47243,13045],{"class":3406},[2915,47245,13844],{"class":3414},[2915,47247,14080],{"class":3410},[2915,47249,9425],{"class":3529},[16,47251,46969],{},[16,47253,12959],{},[16,47255,47256],{},"Bash rundet nicht mathematisch, sondern schneidet Nachkommastellen ab. Für Kommazahlen nutzt man z. B. bc:",[3392,47258,47260],{"className":3394,"code":47259,"language":3396,"meta":225,"style":225},"echo \"scale=2; 5 \u002F 2\" | bc\n\n",[3398,47261,47262],{"__ignoreMap":225},[2915,47263,47264,47266,47269,47271],{"class":3402,"line":3403},[2915,47265,5059],{"class":3410},[2915,47267,47268],{"class":3414}," \"scale=2; 5 \u002F 2\"",[2915,47270,7679],{"class":3533},[2915,47272,47273],{"class":3406}," bc\n",[16,47275,46969],{},[16,47277,47278],{},"2.50",[228,47280,47282],{"id":47281},"falsch-gesetzte-klammern-beim-rechnen","Falsch gesetzte Klammern beim Rechnen",[16,47284,47285],{},"Beim Rechnen mit Variablen müssen die Klammern exakt zusammenpassen. Bash unterscheidet zwischen arithmetischer Expansion $(( ... )), normaler Kommando-Ersetzung $( ... ) und Bedingungen mit (( ... )). Eine falsch gesetzte oder vergessene Klammer führt meistens zu einem Syntaxfehler oder zu einem ganz anderen Verhalten.",[16,47287,47288],{},[26,47289,47290],{},"Richtig: arithmetische Expansion",[3392,47292,47294],{"className":3394,"code":47293,"language":3396,"meta":225,"style":225},"a=5\n\nb=2\n\necho $((a + b)) # 7\n\necho $((a * (b + 3))) # 25\n\nDie äußeren doppelten Klammern $(( ... )) bedeuten: Bash soll den Inhalt als Rechnung auswerten. Innere Klammern können wie in der Mathematik verwendet werden, um die Reihenfolge festzulegen.\n\n",[3398,47295,47296,47304,47308,47317,47321,47337,47341,47364,47368],{"__ignoreMap":225},[2915,47297,47298,47300,47302],{"class":3402,"line":3403},[2915,47299,3432],{"class":3529},[2915,47301,5137],{"class":3533},[2915,47303,30877],{"class":3414},[2915,47305,47306],{"class":3402,"line":1117},[2915,47307,3506],{"emptyLinePlaceholder":3505},[2915,47309,47310,47312,47314],{"class":3402,"line":1125},[2915,47311,5053],{"class":3529},[2915,47313,5137],{"class":3533},[2915,47315,47316],{"class":3414},"2\n",[2915,47318,47319],{"class":3402,"line":3515},[2915,47320,3506],{"emptyLinePlaceholder":3505},[2915,47322,47323,47325,47327,47329,47331,47333,47335],{"class":3402,"line":3520},[2915,47324,5059],{"class":3410},[2915,47326,46639],{"class":3529},[2915,47328,3432],{"class":3406},[2915,47330,10471],{"class":3414},[2915,47332,46646],{"class":3414},[2915,47334,46649],{"class":3529},[2915,47336,46673],{"class":3511},[2915,47338,47339],{"class":3402,"line":5070},[2915,47340,3506],{"emptyLinePlaceholder":3505},[2915,47342,47343,47345,47347,47349,47351,47354,47356,47358,47361],{"class":3402,"line":5075},[2915,47344,5059],{"class":3410},[2915,47346,46639],{"class":3529},[2915,47348,3432],{"class":3406},[2915,47350,5828],{"class":3410},[2915,47352,47353],{"class":3529}," (b ",[2915,47355,13172],{"class":3414},[2915,47357,15346],{"class":3410},[2915,47359,47360],{"class":3529},"))) ",[2915,47362,47363],{"class":3511},"# 25\n",[2915,47365,47366],{"class":3402,"line":5093},[2915,47367,3506],{"emptyLinePlaceholder":3505},[2915,47369,47370,47373,47376,47379,47382,47385,47387,47390,47393,47396,47399,47402,47405,47408,47411,47414,47417,47419,47422,47425,47427,47430,47433,47436,47439,47441,47444,47447],{"class":3402,"line":5098},[2915,47371,47372],{"class":3406},"Die",[2915,47374,47375],{"class":3414}," äußeren",[2915,47377,47378],{"class":3414}," doppelten",[2915,47380,47381],{"class":3414}," Klammern",[2915,47383,47384],{"class":3529}," $(( ",[2915,47386,6528],{"class":3410},[2915,47388,47389],{"class":3529}," )) ",[2915,47391,47392],{"class":3414},"bedeuten:",[2915,47394,47395],{"class":3414}," Bash",[2915,47397,47398],{"class":3414}," soll",[2915,47400,47401],{"class":3414}," den",[2915,47403,47404],{"class":3414}," Inhalt",[2915,47406,47407],{"class":3414}," als",[2915,47409,47410],{"class":3414}," Rechnung",[2915,47412,47413],{"class":3414}," auswerten.",[2915,47415,47416],{"class":3414}," Innere",[2915,47418,47381],{"class":3414},[2915,47420,47421],{"class":3414}," können",[2915,47423,47424],{"class":3414}," wie",[2915,47426,15061],{"class":3414},[2915,47428,47429],{"class":3414}," der",[2915,47431,47432],{"class":3414}," Mathematik",[2915,47434,47435],{"class":3414}," verwendet",[2915,47437,47438],{"class":3414}," werden,",[2915,47440,46588],{"class":3414},[2915,47442,47443],{"class":3414}," die",[2915,47445,47446],{"class":3414}," Reihenfolge",[2915,47448,47449],{"class":3414}," festzulegen.\n",[16,47451,47452],{},[26,47453,47454],{},"Falsch: schließende Klammer fehlt",[3392,47456,47458],{"className":3394,"code":47457,"language":3396,"meta":225,"style":225},"a=5\n\nb=2\n\necho $((a + b)\n\n",[3398,47459,47460,47468,47472,47480,47484],{"__ignoreMap":225},[2915,47461,47462,47464,47466],{"class":3402,"line":3403},[2915,47463,3432],{"class":3529},[2915,47465,5137],{"class":3533},[2915,47467,30877],{"class":3414},[2915,47469,47470],{"class":3402,"line":1117},[2915,47471,3506],{"emptyLinePlaceholder":3505},[2915,47473,47474,47476,47478],{"class":3402,"line":1125},[2915,47475,5053],{"class":3529},[2915,47477,5137],{"class":3533},[2915,47479,47316],{"class":3414},[2915,47481,47482],{"class":3402,"line":3515},[2915,47483,3506],{"emptyLinePlaceholder":3505},[2915,47485,47486,47488,47490,47492,47494,47496],{"class":3402,"line":3520},[2915,47487,5059],{"class":3410},[2915,47489,46639],{"class":3529},[2915,47491,3432],{"class":3406},[2915,47493,10471],{"class":3414},[2915,47495,46646],{"class":3414},[2915,47497,5152],{"class":3529},[16,47499,47500],{},"Typische Folge: Bash meldet einen Syntaxfehler, weil die arithmetische Expansion nicht korrekt abgeschlossen wurde, z. B. \"unexpected EOF\" oder \"syntax error\".",[16,47502,47503],{},[26,47504,47505],{},"Falsch: $() statt $(( )) verwendet",[3392,47507,47509],{"className":3394,"code":47508,"language":3396,"meta":225,"style":225},"a=5\n\nb=2\n\necho $(a + b)\n\nDas ist keine Rechnung. $( ... ) bedeutet Kommando-Ersetzung. Bash versucht also, den Inhalt als Befehl auszuführen. Dadurch entstehen Fehler wie \"command not found\".\n\n",[3398,47510,47511,47519,47523,47531,47535,47549,47553],{"__ignoreMap":225},[2915,47512,47513,47515,47517],{"class":3402,"line":3403},[2915,47514,3432],{"class":3529},[2915,47516,5137],{"class":3533},[2915,47518,30877],{"class":3414},[2915,47520,47521],{"class":3402,"line":1117},[2915,47522,3506],{"emptyLinePlaceholder":3505},[2915,47524,47525,47527,47529],{"class":3402,"line":1125},[2915,47526,5053],{"class":3529},[2915,47528,5137],{"class":3533},[2915,47530,47316],{"class":3414},[2915,47532,47533],{"class":3402,"line":3515},[2915,47534,3506],{"emptyLinePlaceholder":3505},[2915,47536,47537,47539,47541,47543,47545,47547],{"class":3402,"line":3520},[2915,47538,5059],{"class":3410},[2915,47540,32242],{"class":3529},[2915,47542,3432],{"class":3406},[2915,47544,10471],{"class":3414},[2915,47546,46646],{"class":3414},[2915,47548,5152],{"class":3529},[2915,47550,47551],{"class":3402,"line":5070},[2915,47552,3506],{"emptyLinePlaceholder":3505},[2915,47554,47555,47558,47560,47562,47565,47568,47570,47573,47576,47579,47581,47584,47587,47589,47591,47593,47596,47599,47602,47605,47608,47610],{"class":3402,"line":5075},[2915,47556,47557],{"class":3406},"Das",[2915,47559,39157],{"class":3414},[2915,47561,46582],{"class":3414},[2915,47563,47564],{"class":3414}," Rechnung.",[2915,47566,47567],{"class":3529}," $( ",[2915,47569,6528],{"class":3410},[2915,47571,47572],{"class":3529}," ) ",[2915,47574,47575],{"class":3414},"bedeutet",[2915,47577,47578],{"class":3414}," Kommando-Ersetzung.",[2915,47580,47395],{"class":3414},[2915,47582,47583],{"class":3414}," versucht",[2915,47585,47586],{"class":3414}," also,",[2915,47588,47401],{"class":3414},[2915,47590,47404],{"class":3414},[2915,47592,47407],{"class":3414},[2915,47594,47595],{"class":3414}," Befehl",[2915,47597,47598],{"class":3414}," auszuführen.",[2915,47600,47601],{"class":3414}," Dadurch",[2915,47603,47604],{"class":3414}," entstehen",[2915,47606,47607],{"class":3414}," Fehler",[2915,47609,47424],{"class":3414},[2915,47611,47612],{"class":3414}," \"command not found\".\n",[16,47614,47615],{},[26,47616,47617],{},"Falsch: Klammern verändern die Rechenreihenfolge",[3392,47619,47621],{"className":3394,"code":47620,"language":3396,"meta":225,"style":225},"a=10\n\nb=2\n\nc=3\n\necho $((a + b * c)) # 16, weil Multiplikation vor Addition gilt\n\necho $(((a + b) * c)) # 36, weil zuerst a + b gerechnet wird\n\n",[3398,47622,47623,47631,47635,47643,47647,47655,47659,47681,47685],{"__ignoreMap":225},[2915,47624,47625,47627,47629],{"class":3402,"line":3403},[2915,47626,3432],{"class":3529},[2915,47628,5137],{"class":3533},[2915,47630,46616],{"class":3414},[2915,47632,47633],{"class":3402,"line":1117},[2915,47634,3506],{"emptyLinePlaceholder":3505},[2915,47636,47637,47639,47641],{"class":3402,"line":1125},[2915,47638,5053],{"class":3529},[2915,47640,5137],{"class":3533},[2915,47642,47316],{"class":3414},[2915,47644,47645],{"class":3402,"line":3515},[2915,47646,3506],{"emptyLinePlaceholder":3505},[2915,47648,47649,47651,47653],{"class":3402,"line":3520},[2915,47650,11242],{"class":3529},[2915,47652,5137],{"class":3533},[2915,47654,30405],{"class":3414},[2915,47656,47657],{"class":3402,"line":5070},[2915,47658,3506],{"emptyLinePlaceholder":3505},[2915,47660,47661,47663,47665,47667,47669,47671,47673,47676,47678],{"class":3402,"line":5075},[2915,47662,5059],{"class":3410},[2915,47664,46639],{"class":3529},[2915,47666,3432],{"class":3406},[2915,47668,10471],{"class":3414},[2915,47670,46646],{"class":3414},[2915,47672,5828],{"class":3410},[2915,47674,47675],{"class":3414}," c",[2915,47677,46649],{"class":3529},[2915,47679,47680],{"class":3511},"# 16, weil Multiplikation vor Addition gilt\n",[2915,47682,47683],{"class":3402,"line":5093},[2915,47684,3506],{"emptyLinePlaceholder":3505},[2915,47686,47687,47689,47692,47694,47696,47698,47700,47702,47704,47706],{"class":3402,"line":5098},[2915,47688,5059],{"class":3410},[2915,47690,47691],{"class":3529}," $(((",[2915,47693,3432],{"class":3406},[2915,47695,10471],{"class":3414},[2915,47697,46646],{"class":3414},[2915,47699,5056],{"class":3529},[2915,47701,5078],{"class":3406},[2915,47703,47675],{"class":3414},[2915,47705,46649],{"class":3529},[2915,47707,47708],{"class":3511},"# 36, weil zuerst a + b gerechnet wird\n",[16,47710,47711],{},"Klammern sind also nicht nur für die Syntax wichtig, sondern verändern auch das Ergebnis. Wie in der Mathematik wird das berechnet, was in Klammern steht, zuerst.",[16,47713,47714],{},[26,47715,47716],{},"Falsch: einfache eckige Klammern für Rechnungen erwarten",[3392,47718,47720],{"className":3394,"code":47719,"language":3396,"meta":225,"style":225},"a=5\n\nb=2\n\nif [ a + b -gt 6 ]; then\n\necho \"größer\"\n\nfi\n\n",[3398,47721,47722,47730,47734,47742,47746,47763,47767,47774,47778],{"__ignoreMap":225},[2915,47723,47724,47726,47728],{"class":3402,"line":3403},[2915,47725,3432],{"class":3529},[2915,47727,5137],{"class":3533},[2915,47729,30877],{"class":3414},[2915,47731,47732],{"class":3402,"line":1117},[2915,47733,3506],{"emptyLinePlaceholder":3505},[2915,47735,47736,47738,47740],{"class":3402,"line":1125},[2915,47737,5053],{"class":3529},[2915,47739,5137],{"class":3533},[2915,47741,47316],{"class":3414},[2915,47743,47744],{"class":3402,"line":3515},[2915,47745,3506],{"emptyLinePlaceholder":3505},[2915,47747,47748,47750,47753,47756,47759,47761],{"class":3402,"line":3520},[2915,47749,4951],{"class":3533},[2915,47751,47752],{"class":3529}," [ a + b ",[2915,47754,47755],{"class":3533},"-gt",[2915,47757,47758],{"class":3410}," 6",[2915,47760,4976],{"class":3529},[2915,47762,4979],{"class":3533},[2915,47764,47765],{"class":3402,"line":5070},[2915,47766,3506],{"emptyLinePlaceholder":3505},[2915,47768,47769,47771],{"class":3402,"line":5075},[2915,47770,5059],{"class":3410},[2915,47772,47773],{"class":3414}," \"größer\"\n",[2915,47775,47776],{"class":3402,"line":5093},[2915,47777,3506],{"emptyLinePlaceholder":3505},[2915,47779,47780],{"class":3402,"line":5098},[2915,47781,4997],{"class":3533},[16,47783,47784,47785,47788],{},"Die einfache eckige Klammer ",[2915,47786,47787],{}," ..."," ist ein Test-Befehl, aber keine Rechenumgebung. Für Rechnungen in Bedingungen ist (( ... )) besser geeignet:",[3392,47790,47792],{"className":3394,"code":47791,"language":3396,"meta":225,"style":225},"if ((a + b > 6)); then\n\necho \"größer\"\n\nfi\n\n",[3398,47793,47794,47814,47818,47824,47828],{"__ignoreMap":225},[2915,47795,47796,47798,47801,47803,47806,47808,47810,47812],{"class":3402,"line":3403},[2915,47797,4951],{"class":3533},[2915,47799,47800],{"class":3529}," ((a ",[2915,47802,13172],{"class":3533},[2915,47804,47805],{"class":3529}," b ",[2915,47807,3534],{"class":3533},[2915,47809,47758],{"class":3410},[2915,47811,47138],{"class":3529},[2915,47813,4979],{"class":3533},[2915,47815,47816],{"class":3402,"line":1117},[2915,47817,3506],{"emptyLinePlaceholder":3505},[2915,47819,47820,47822],{"class":3402,"line":1125},[2915,47821,5059],{"class":3410},[2915,47823,47773],{"class":3414},[2915,47825,47826],{"class":3402,"line":3515},[2915,47827,3506],{"emptyLinePlaceholder":3505},[2915,47829,47830],{"class":3402,"line":3520},[2915,47831,4997],{"class":3533},[16,47833,47834],{},[26,47835,47836],{},"Merksatz zu Klammern beim Rechnen",[16,47838,47839,47840,47842,47843,47845,47846,47848,47850],{},"$(( ... )) = Rechnung ausführen",[5885,47841],{},"\n$( ... ) = Befehl ausführen und Ausgabe einsetzen",[5885,47844],{},"\n(( ... )) = Rechnung\u002FBedingung auswerten, oft bei if oder Schleifen",[5885,47847],{},[2915,47849,6528],{}," = Test-Befehl, z. B. für Dateien, Strings oder klassische Zahlenvergleiche",[54,47852,47854],{"id":47853},"listen-strings-und-arrays","Listen, Strings und Arrays",[16,47856,47857],{},"In Bash ist wichtig zu unterscheiden, ob etwas als ein zusammenhängender Text, als mehrere Wörter oder als Array mit mehreren Elementen behandelt wird.",[16,47859,47860],{},[26,47861,47862],{},"\"123\" ist ein String",[3392,47864,47866],{"className":3394,"code":47865,"language":3396,"meta":225,"style":225},"wert=\"123\"\n\necho \"$wert\"\n\n",[3398,47867,47868,47878,47882],{"__ignoreMap":225},[2915,47869,47870,47873,47875],{"class":3402,"line":3403},[2915,47871,47872],{"class":3529},"wert",[2915,47874,5137],{"class":3533},[2915,47876,47877],{"class":3414},"\"123\"\n",[2915,47879,47880],{"class":3402,"line":1117},[2915,47881,3506],{"emptyLinePlaceholder":3505},[2915,47883,47884,47886,47888,47891],{"class":3402,"line":1125},[2915,47885,5059],{"class":3410},[2915,47887,4968],{"class":3414},[2915,47889,47890],{"class":3529},"$wert",[2915,47892,5204],{"class":3414},[16,47894,47895],{},"Hier ist 123 ein String, also Text. Trotzdem kann Bash damit rechnen, wenn der Inhalt nur aus Zahlen besteht:",[3392,47897,47899],{"className":3394,"code":47898,"language":3396,"meta":225,"style":225},"wert=\"123\"\n\necho $((wert + 1))\n\n",[3398,47900,47901,47909,47913],{"__ignoreMap":225},[2915,47902,47903,47905,47907],{"class":3402,"line":3403},[2915,47904,47872],{"class":3529},[2915,47906,5137],{"class":3533},[2915,47908,47877],{"class":3414},[2915,47910,47911],{"class":3402,"line":1117},[2915,47912,3506],{"emptyLinePlaceholder":3505},[2915,47914,47915,47917,47919,47921,47923,47925],{"class":3402,"line":1125},[2915,47916,5059],{"class":3410},[2915,47918,46639],{"class":3529},[2915,47920,47872],{"class":3406},[2915,47922,10471],{"class":3414},[2915,47924,9016],{"class":3410},[2915,47926,9425],{"class":3529},[16,47928,46969],{},[16,47930,4689],{},[16,47932,24514],{},[16,47934,47935],{},"\"123\" # ein Text\u002FString mit drei Zeichen",[16,47937,47938],{},"123 # kann in Rechnungen als Zahl verwendet werden",[16,47940,47941],{},[26,47942,47943],{},"\"1 2 3\" ist ein String mit Leerzeichen",[3392,47945,47947],{"className":3394,"code":47946,"language":3396,"meta":225,"style":225},"werte=\"1 2 3\"\n\necho \"$werte\"\n\n",[3398,47948,47949,47959,47963],{"__ignoreMap":225},[2915,47950,47951,47954,47956],{"class":3402,"line":3403},[2915,47952,47953],{"class":3529},"werte",[2915,47955,5137],{"class":3533},[2915,47957,47958],{"class":3414},"\"1 2 3\"\n",[2915,47960,47961],{"class":3402,"line":1117},[2915,47962,3506],{"emptyLinePlaceholder":3505},[2915,47964,47965,47967,47969,47972],{"class":3402,"line":1125},[2915,47966,5059],{"class":3410},[2915,47968,4968],{"class":3414},[2915,47970,47971],{"class":3529},"$werte",[2915,47973,5204],{"class":3414},[16,47975,46969],{},[16,47977,47978],{},"1 2 3",[16,47980,47981],{},"Mit Anführungszeichen bleibt es ein einziger Wert:",[3392,47983,47985],{"className":3394,"code":47984,"language":3396,"meta":225,"style":225},"for x in \"$werte\"; do\n\necho \"$x\"\n\ndone\n\n",[3398,47986,47987,48006,48010,48020,48024],{"__ignoreMap":225},[2915,47988,47989,47991,47994,47996,47998,48000,48002,48004],{"class":3402,"line":3403},[2915,47990,5175],{"class":3533},[2915,47992,47993],{"class":3529}," x ",[2915,47995,5181],{"class":3533},[2915,47997,4968],{"class":3414},[2915,47999,47971],{"class":3529},[2915,48001,4957],{"class":3414},[2915,48003,5248],{"class":3529},[2915,48005,5187],{"class":3533},[2915,48007,48008],{"class":3402,"line":1117},[2915,48009,3506],{"emptyLinePlaceholder":3505},[2915,48011,48012,48014,48016,48018],{"class":3402,"line":1125},[2915,48013,5059],{"class":3410},[2915,48015,4968],{"class":3414},[2915,48017,4960],{"class":3529},[2915,48019,5204],{"class":3414},[2915,48021,48022],{"class":3402,"line":3515},[2915,48023,3506],{"emptyLinePlaceholder":3505},[2915,48025,48026],{"class":3402,"line":3520},[2915,48027,5269],{"class":3533},[16,48029,46969],{},[16,48031,47978],{},[16,48033,48034],{},"Die Schleife läuft hier nur einmal, weil \"$werte\" als ein kompletter String behandelt wird.",[16,48036,48037],{},[26,48038,48039],{},"Ohne Anführungszeichen wird daraus eine Liste",[3392,48041,48043],{"className":3394,"code":48042,"language":3396,"meta":225,"style":225},"werte=\"1 2 3\"\n\nfor x in $werte; do\n\necho \"$x\"\n\ndone\n\n",[3398,48044,48045,48053,48057,48070,48074,48084,48088],{"__ignoreMap":225},[2915,48046,48047,48049,48051],{"class":3402,"line":3403},[2915,48048,47953],{"class":3529},[2915,48050,5137],{"class":3533},[2915,48052,47958],{"class":3414},[2915,48054,48055],{"class":3402,"line":1117},[2915,48056,3506],{"emptyLinePlaceholder":3505},[2915,48058,48059,48061,48063,48065,48068],{"class":3402,"line":1125},[2915,48060,5175],{"class":3533},[2915,48062,47993],{"class":3529},[2915,48064,5181],{"class":3533},[2915,48066,48067],{"class":3529}," $werte; ",[2915,48069,5187],{"class":3533},[2915,48071,48072],{"class":3402,"line":3515},[2915,48073,3506],{"emptyLinePlaceholder":3505},[2915,48075,48076,48078,48080,48082],{"class":3402,"line":3520},[2915,48077,5059],{"class":3410},[2915,48079,4968],{"class":3414},[2915,48081,4960],{"class":3529},[2915,48083,5204],{"class":3414},[2915,48085,48086],{"class":3402,"line":5070},[2915,48087,3506],{"emptyLinePlaceholder":3505},[2915,48089,48090],{"class":3402,"line":5075},[2915,48091,5269],{"class":3533},[16,48093,46969],{},[16,48095,12976],{},[16,48097,12959],{},[16,48099,13071],{},[16,48101,48102],{},"Ohne Anführungszeichen wird der Inhalt an Leerzeichen getrennt. Aus \"1 2 3\" werden also drei einzelne Werte.",[16,48104,48105],{},[26,48106,48107],{},"Unterschied: \"123\" und \"1 2 3\"",[3392,48109,48111],{"className":3394,"code":48110,"language":3396,"meta":225,"style":225},"a=\"123\"\n\nb=\"1 2 3\"\n\nfor x in $a; do\n\necho \"$x\"\n\ndone\n\n",[3398,48112,48113,48121,48125,48133,48137,48150,48154,48164,48168],{"__ignoreMap":225},[2915,48114,48115,48117,48119],{"class":3402,"line":3403},[2915,48116,3432],{"class":3529},[2915,48118,5137],{"class":3533},[2915,48120,47877],{"class":3414},[2915,48122,48123],{"class":3402,"line":1117},[2915,48124,3506],{"emptyLinePlaceholder":3505},[2915,48126,48127,48129,48131],{"class":3402,"line":1125},[2915,48128,5053],{"class":3529},[2915,48130,5137],{"class":3533},[2915,48132,47958],{"class":3414},[2915,48134,48135],{"class":3402,"line":3515},[2915,48136,3506],{"emptyLinePlaceholder":3505},[2915,48138,48139,48141,48143,48145,48148],{"class":3402,"line":3520},[2915,48140,5175],{"class":3533},[2915,48142,47993],{"class":3529},[2915,48144,5181],{"class":3533},[2915,48146,48147],{"class":3529}," $a; ",[2915,48149,5187],{"class":3533},[2915,48151,48152],{"class":3402,"line":5070},[2915,48153,3506],{"emptyLinePlaceholder":3505},[2915,48155,48156,48158,48160,48162],{"class":3402,"line":5075},[2915,48157,5059],{"class":3410},[2915,48159,4968],{"class":3414},[2915,48161,4960],{"class":3529},[2915,48163,5204],{"class":3414},[2915,48165,48166],{"class":3402,"line":5093},[2915,48167,3506],{"emptyLinePlaceholder":3505},[2915,48169,48170],{"class":3402,"line":5098},[2915,48171,5269],{"class":3533},[16,48173,46969],{},[16,48175,16784],{},[16,48177,48178],{},"123 enthält keine Leerzeichen, also bleibt es ein Wert.",[3392,48180,48182],{"className":3394,"code":48181,"language":3396,"meta":225,"style":225},"for x in $b; do\n\necho \"$x\"\n\ndone\n\n",[3398,48183,48184,48197,48201,48211,48215],{"__ignoreMap":225},[2915,48185,48186,48188,48190,48192,48195],{"class":3402,"line":3403},[2915,48187,5175],{"class":3533},[2915,48189,47993],{"class":3529},[2915,48191,5181],{"class":3533},[2915,48193,48194],{"class":3529}," $b; ",[2915,48196,5187],{"class":3533},[2915,48198,48199],{"class":3402,"line":1117},[2915,48200,3506],{"emptyLinePlaceholder":3505},[2915,48202,48203,48205,48207,48209],{"class":3402,"line":1125},[2915,48204,5059],{"class":3410},[2915,48206,4968],{"class":3414},[2915,48208,4960],{"class":3529},[2915,48210,5204],{"class":3414},[2915,48212,48213],{"class":3402,"line":3515},[2915,48214,3506],{"emptyLinePlaceholder":3505},[2915,48216,48217],{"class":3402,"line":3520},[2915,48218,5269],{"class":3533},[16,48220,46969],{},[16,48222,12976],{},[16,48224,12959],{},[16,48226,13071],{},[16,48228,48229],{},"1 2 3 enthält Leerzeichen, also wird es in mehrere Werte aufgeteilt.",[54,48231,48233],{"id":48232},"arrays-in-bash","Arrays in Bash",[16,48235,48236],{},"Ein Array ist eine echte Liste mit mehreren Elementen.",[3392,48238,48240],{"className":3394,"code":48239,"language":3396,"meta":225,"style":225},"zahlen=(1 2 3)\n\necho \"${zahlen[0]}\"\n\necho \"${zahlen[1]}\"\n\necho \"${zahlen[2]}\"\n\n",[3398,48241,48242,48259,48263,48274,48278,48289,48293],{"__ignoreMap":225},[2915,48243,48244,48247,48249,48251,48253,48255,48257],{"class":3402,"line":3403},[2915,48245,48246],{"class":3529},"zahlen",[2915,48248,5137],{"class":3533},[2915,48250,5140],{"class":3529},[2915,48252,12976],{"class":3410},[2915,48254,14080],{"class":3410},[2915,48256,15346],{"class":3410},[2915,48258,5152],{"class":3529},[2915,48260,48261],{"class":3402,"line":1117},[2915,48262,3506],{"emptyLinePlaceholder":3505},[2915,48264,48265,48267,48269,48271],{"class":3402,"line":1125},[2915,48266,5059],{"class":3410},[2915,48268,10359],{"class":3414},[2915,48270,48246],{"class":3529},[2915,48272,48273],{"class":3414},"[0]}\"\n",[2915,48275,48276],{"class":3402,"line":3515},[2915,48277,3506],{"emptyLinePlaceholder":3505},[2915,48279,48280,48282,48284,48286],{"class":3402,"line":3520},[2915,48281,5059],{"class":3410},[2915,48283,10359],{"class":3414},[2915,48285,48246],{"class":3529},[2915,48287,48288],{"class":3414},"[1]}\"\n",[2915,48290,48291],{"class":3402,"line":5070},[2915,48292,3506],{"emptyLinePlaceholder":3505},[2915,48294,48295,48297,48299,48301],{"class":3402,"line":5075},[2915,48296,5059],{"class":3410},[2915,48298,10359],{"class":3414},[2915,48300,48246],{"class":3529},[2915,48302,48303],{"class":3414},"[2]}\"\n",[16,48305,46969],{},[16,48307,12976],{},[16,48309,12959],{},[16,48311,13071],{},[16,48313,48314],{},"Wichtig: Bash-Arrays beginnen bei Index 0.",[645,48316,48317,48330],{},[648,48318,48319],{},[651,48320,48321,48326],{},[654,48322,48323],{},[26,48324,48325],{},"Zugriff",[654,48327,48328],{},[26,48329,31531],{},[670,48331,48332,48342,48351],{},[651,48333,48334,48339],{},[675,48335,48336,48337,18515],{},"${zahlen",[2915,48338,11501],{},[675,48340,48341],{},"erstes Element",[651,48343,48344,48348],{},[675,48345,48336,48346,18515],{},[2915,48347,12976],{},[675,48349,48350],{},"zweites Element",[651,48352,48353,48357],{},[675,48354,48336,48355,18515],{},[2915,48356,12959],{},[675,48358,48359],{},"drittes Element",[228,48361,48363],{"id":48362},"alle-array-elemente-ausgeben","Alle Array-Elemente ausgeben",[3392,48365,48367],{"className":3394,"code":48366,"language":3396,"meta":225,"style":225},"zahlen=(1 2 3)\n\necho \"${zahlen[@]}\"\n\n",[3398,48368,48369,48385,48389],{"__ignoreMap":225},[2915,48370,48371,48373,48375,48377,48379,48381,48383],{"class":3402,"line":3403},[2915,48372,48246],{"class":3529},[2915,48374,5137],{"class":3533},[2915,48376,5140],{"class":3529},[2915,48378,12976],{"class":3410},[2915,48380,14080],{"class":3410},[2915,48382,15346],{"class":3410},[2915,48384,5152],{"class":3529},[2915,48386,48387],{"class":3402,"line":1117},[2915,48388,3506],{"emptyLinePlaceholder":3505},[2915,48390,48391,48393,48395,48397,48399,48401],{"class":3402,"line":1125},[2915,48392,5059],{"class":3410},[2915,48394,10359],{"class":3414},[2915,48396,48246],{"class":3529},[2915,48398,10364],{"class":3414},[2915,48400,10367],{"class":3533},[2915,48402,10370],{"class":3414},[16,48404,46969],{},[16,48406,47978],{},[228,48408,48410],{"id":48409},"über-array-iterieren","Über Array iterieren",[3392,48412,48414],{"className":3394,"code":48413,"language":3396,"meta":225,"style":225},"zahlen=(1 2 3)\n\nfor zahl in \"${zahlen[@]}\"; do\n\necho \"$zahl\"\n\ndone\n\n",[3398,48415,48416,48432,48436,48460,48464,48474,48478],{"__ignoreMap":225},[2915,48417,48418,48420,48422,48424,48426,48428,48430],{"class":3402,"line":3403},[2915,48419,48246],{"class":3529},[2915,48421,5137],{"class":3533},[2915,48423,5140],{"class":3529},[2915,48425,12976],{"class":3410},[2915,48427,14080],{"class":3410},[2915,48429,15346],{"class":3410},[2915,48431,5152],{"class":3529},[2915,48433,48434],{"class":3402,"line":1117},[2915,48435,3506],{"emptyLinePlaceholder":3505},[2915,48437,48438,48440,48443,48445,48447,48449,48451,48453,48456,48458],{"class":3402,"line":1125},[2915,48439,5175],{"class":3533},[2915,48441,48442],{"class":3529}," zahl ",[2915,48444,5181],{"class":3533},[2915,48446,10359],{"class":3414},[2915,48448,48246],{"class":3529},[2915,48450,10364],{"class":3414},[2915,48452,10367],{"class":3533},[2915,48454,48455],{"class":3414},"]}\"",[2915,48457,5248],{"class":3529},[2915,48459,5187],{"class":3533},[2915,48461,48462],{"class":3402,"line":3515},[2915,48463,3506],{"emptyLinePlaceholder":3505},[2915,48465,48466,48468,48470,48472],{"class":3402,"line":3520},[2915,48467,5059],{"class":3410},[2915,48469,4968],{"class":3414},[2915,48471,46529],{"class":3529},[2915,48473,5204],{"class":3414},[2915,48475,48476],{"class":3402,"line":5070},[2915,48477,3506],{"emptyLinePlaceholder":3505},[2915,48479,48480],{"class":3402,"line":5075},[2915,48481,5269],{"class":3533},[16,48483,46969],{},[16,48485,12976],{},[16,48487,12959],{},[16,48489,13071],{},[16,48491,48492],{},"Diese Schreibweise ist sicher und empfohlen:",[16,48494,48495,48496,48498],{},"\"${array",[2915,48497,10367],{},"}\"",[228,48500,48502,48503,48498],{"id":48501},"unterschied-zwischen-array-und-array","Unterschied zwischen \"$array\" und \"${array",[2915,48504,10367],{},[3392,48506,48508],{"className":3394,"code":48507,"language":3396,"meta":225,"style":225},"werte=(\"Apfel Birne\" \"Banane\" \"Kirsche\")\n\n",[3398,48509,48510],{"__ignoreMap":225},[2915,48511,48512,48514,48516,48518,48520,48522,48524],{"class":3402,"line":3403},[2915,48513,47953],{"class":3529},[2915,48515,5137],{"class":3533},[2915,48517,5140],{"class":3529},[2915,48519,5143],{"class":3414},[2915,48521,5146],{"class":3414},[2915,48523,5149],{"class":3414},[2915,48525,5152],{"class":3529},[16,48527,48528],{},"Richtig:",[3392,48530,48532],{"className":3394,"code":48531,"language":3396,"meta":225,"style":225},"for wert in \"${werte[@]}\"; do\n\necho \"$wert\"\n\ndone\n\n",[3398,48533,48534,48557,48561,48571,48575],{"__ignoreMap":225},[2915,48535,48536,48538,48541,48543,48545,48547,48549,48551,48553,48555],{"class":3402,"line":3403},[2915,48537,5175],{"class":3533},[2915,48539,48540],{"class":3529}," wert ",[2915,48542,5181],{"class":3533},[2915,48544,10359],{"class":3414},[2915,48546,47953],{"class":3529},[2915,48548,10364],{"class":3414},[2915,48550,10367],{"class":3533},[2915,48552,48455],{"class":3414},[2915,48554,5248],{"class":3529},[2915,48556,5187],{"class":3533},[2915,48558,48559],{"class":3402,"line":1117},[2915,48560,3506],{"emptyLinePlaceholder":3505},[2915,48562,48563,48565,48567,48569],{"class":3402,"line":1125},[2915,48564,5059],{"class":3410},[2915,48566,4968],{"class":3414},[2915,48568,47890],{"class":3529},[2915,48570,5204],{"class":3414},[2915,48572,48573],{"class":3402,"line":3515},[2915,48574,3506],{"emptyLinePlaceholder":3505},[2915,48576,48577],{"class":3402,"line":3520},[2915,48578,5269],{"class":3533},[16,48580,46969],{},[16,48582,48583],{},"Apfel Birne",[16,48585,48586],{},"Banane",[16,48588,48589],{},"Kirsche",[16,48591,48592],{},"Falsch bzw. oft problematisch:",[3392,48594,48596],{"className":3394,"code":48595,"language":3396,"meta":225,"style":225},"for wert in ${werte[@]}; do\n\necho \"$wert\"\n\ndone\n\n",[3398,48597,48598,48616,48620,48630,48634],{"__ignoreMap":225},[2915,48599,48600,48602,48604,48606,48609,48611,48614],{"class":3402,"line":3403},[2915,48601,5175],{"class":3533},[2915,48603,48540],{"class":3529},[2915,48605,5181],{"class":3533},[2915,48607,48608],{"class":3529}," ${werte[",[2915,48610,10367],{"class":3533},[2915,48612,48613],{"class":3529},"]}; ",[2915,48615,5187],{"class":3533},[2915,48617,48618],{"class":3402,"line":1117},[2915,48619,3506],{"emptyLinePlaceholder":3505},[2915,48621,48622,48624,48626,48628],{"class":3402,"line":1125},[2915,48623,5059],{"class":3410},[2915,48625,4968],{"class":3414},[2915,48627,47890],{"class":3529},[2915,48629,5204],{"class":3414},[2915,48631,48632],{"class":3402,"line":3515},[2915,48633,3506],{"emptyLinePlaceholder":3505},[2915,48635,48636],{"class":3402,"line":3520},[2915,48637,5269],{"class":3533},[16,48639,46969],{},[16,48641,48642],{},"Apfel",[16,48644,48645],{},"Birne",[16,48647,48586],{},[16,48649,48589],{},[16,48651,48652,48653,48655],{},"Ohne Anführungszeichen wird \"Apfel Birne\" in zwei Wörter zerlegt. Deshalb sollten Arrays fast immer mit \"${array",[2915,48654,10367],{},"}\" durchlaufen werden.",[228,48657,48659],{"id":48658},"merksätze","Merksätze",[20,48661,48662,48665,48668,48671,48674,48677],{},[23,48663,48664],{},"\"123\" ist ein String, kann aber als Zahl verwendet werden, wenn nur Ziffern enthalten sind.",[23,48666,48667],{},"\"1 2 3\" ist ein String mit Leerzeichen.",[23,48669,48670],{},"Ohne Anführungszeichen wird an Leerzeichen getrennt.",[23,48672,48673],{},"Mit Anführungszeichen bleibt der Inhalt ein zusammenhängender Wert.",[23,48675,48676],{},"Arrays sind echte Listen und werden mit Klammern geschrieben: array=(wert1 wert2 wert3).",[23,48678,48679,48680,48682],{},"Beim Durchlaufen von Arrays ist \"${array",[2915,48681,10367],{},"}\" die sichere Standardform.",[54,48684,4921],{"id":48685},"logik-bedingungen",[16,48687,48688],{},[26,48689,4926],{},[20,48691,48692,48694],{},[23,48693,4931],{},[23,48695,4934],{},[54,48697,48699],{"id":48698},"if-abfrage","If-Abfrage:",[16,48701,4941],{},[3392,48703,48704],{"className":3394,"code":4944,"language":3396,"meta":225,"style":225},[3398,48705,48706,48730,48734,48738,48742],{"__ignoreMap":225},[2915,48707,48708,48710,48712,48714,48716,48718,48720,48722,48724,48726,48728],{"class":3402,"line":3403},[2915,48709,4951],{"class":3533},[2915,48711,4954],{"class":3529},[2915,48713,4957],{"class":3414},[2915,48715,4960],{"class":3529},[2915,48717,4957],{"class":3414},[2915,48719,4965],{"class":3533},[2915,48721,4968],{"class":3414},[2915,48723,4971],{"class":3529},[2915,48725,4957],{"class":3414},[2915,48727,4976],{"class":3529},[2915,48729,4979],{"class":3533},[2915,48731,48732],{"class":3402,"line":1117},[2915,48733,3506],{"emptyLinePlaceholder":3505},[2915,48735,48736],{"class":3402,"line":1125},[2915,48737,4988],{"class":3511},[2915,48739,48740],{"class":3402,"line":3515},[2915,48741,3506],{"emptyLinePlaceholder":3505},[2915,48743,48744],{"class":3402,"line":3520},[2915,48745,4997],{"class":3533},[54,48747,5002],{"id":48748},"die-case-anweisung-mehrfach-auswahl",[16,48750,4941],{},[3392,48752,48754],{"className":3394,"code":48753,"language":3396,"meta":225,"style":225},"case $foo in\n\na) echo \"foo is A\" ;; #(foo = a)\n\nb) echo \"foo is B\" ;; #(foo = b)\n\n*) echo \"foo is not A or B\" ;; #(alles anderes)\n\nEsac\n\n",[3398,48755,48756,48764,48768,48782,48786,48800,48804,48818,48822],{"__ignoreMap":225},[2915,48757,48758,48760,48762],{"class":3402,"line":3403},[2915,48759,5014],{"class":3533},[2915,48761,5017],{"class":3529},[2915,48763,5020],{"class":3533},[2915,48765,48766],{"class":3402,"line":1117},[2915,48767,3506],{"emptyLinePlaceholder":3505},[2915,48769,48770,48772,48774,48776,48778,48780],{"class":3402,"line":1125},[2915,48771,3432],{"class":5029},[2915,48773,5032],{"class":3533},[2915,48775,5035],{"class":3410},[2915,48777,5038],{"class":3414},[2915,48779,5041],{"class":3529},[2915,48781,5044],{"class":3511},[2915,48783,48784],{"class":3402,"line":3515},[2915,48785,3506],{"emptyLinePlaceholder":3505},[2915,48787,48788,48790,48792,48794,48796,48798],{"class":3402,"line":3520},[2915,48789,5053],{"class":3406},[2915,48791,5056],{"class":3529},[2915,48793,5059],{"class":3410},[2915,48795,5062],{"class":3414},[2915,48797,5041],{"class":3529},[2915,48799,5067],{"class":3511},[2915,48801,48802],{"class":3402,"line":5070},[2915,48803,3506],{"emptyLinePlaceholder":3505},[2915,48805,48806,48808,48810,48812,48814,48816],{"class":3402,"line":5075},[2915,48807,5078],{"class":3406},[2915,48809,5056],{"class":3529},[2915,48811,5059],{"class":3410},[2915,48813,5085],{"class":3414},[2915,48815,5041],{"class":3529},[2915,48817,5090],{"class":3511},[2915,48819,48820],{"class":3402,"line":5093},[2915,48821,3506],{"emptyLinePlaceholder":3505},[2915,48823,48824],{"class":3402,"line":5098},[2915,48825,48826],{"class":3406},"Esac\n",[16,48828,5104],{},[54,48830,48832],{"id":48831},"for-loop-beispiel-über-eine-liste-iterieren","for – loop Beispiel: Über eine Liste iterieren",[16,48834,5113],{},[16,48836,4941],{},[3392,48838,48840],{"className":3394,"code":48839,"language":3396,"meta":225,"style":225},"#!\u002Fbin\u002Fbash\n\nMEIN_ARRAY=(\"Apfel Birne\" \"Banane\" \"Kirsche\")\n\nMEINE_LISTE=\"Apfel Birne Banane\"\n\nfor obst in $MEINE_LISTE; do\n\necho \"Ich mag $obst\"\n\ndone\n\n# Liste von Werten durchgehen\n\nfor tier in Hund Katze Maus; do\n\necho \"Das ist ein(e): $tier\"\n\ndone\n\n",[3398,48841,48842,48846,48850,48866,48870,48878,48882,48894,48898,48908,48912,48916,48920,48924,48928,48946,48950,48960,48964],{"__ignoreMap":225},[2915,48843,48844],{"class":3402,"line":3403},[2915,48845,5125],{"class":3511},[2915,48847,48848],{"class":3402,"line":1117},[2915,48849,3506],{"emptyLinePlaceholder":3505},[2915,48851,48852,48854,48856,48858,48860,48862,48864],{"class":3402,"line":1125},[2915,48853,5134],{"class":3529},[2915,48855,5137],{"class":3533},[2915,48857,5140],{"class":3529},[2915,48859,5143],{"class":3414},[2915,48861,5146],{"class":3414},[2915,48863,5149],{"class":3414},[2915,48865,5152],{"class":3529},[2915,48867,48868],{"class":3402,"line":3515},[2915,48869,3506],{"emptyLinePlaceholder":3505},[2915,48871,48872,48874,48876],{"class":3402,"line":3520},[2915,48873,5161],{"class":3529},[2915,48875,5137],{"class":3533},[2915,48877,5166],{"class":3414},[2915,48879,48880],{"class":3402,"line":5070},[2915,48881,3506],{"emptyLinePlaceholder":3505},[2915,48883,48884,48886,48888,48890,48892],{"class":3402,"line":5075},[2915,48885,5175],{"class":3533},[2915,48887,5178],{"class":3529},[2915,48889,5181],{"class":3533},[2915,48891,5184],{"class":3529},[2915,48893,5187],{"class":3533},[2915,48895,48896],{"class":3402,"line":5093},[2915,48897,3506],{"emptyLinePlaceholder":3505},[2915,48899,48900,48902,48904,48906],{"class":3402,"line":5098},[2915,48901,5059],{"class":3410},[2915,48903,5198],{"class":3414},[2915,48905,5201],{"class":3529},[2915,48907,5204],{"class":3414},[2915,48909,48910],{"class":3402,"line":5207},[2915,48911,3506],{"emptyLinePlaceholder":3505},[2915,48913,48914],{"class":3402,"line":5212},[2915,48915,5269],{"class":3533},[2915,48917,48918],{"class":3402,"line":5218},[2915,48919,3506],{"emptyLinePlaceholder":3505},[2915,48921,48922],{"class":3402,"line":5223},[2915,48923,5226],{"class":3511},[2915,48925,48926],{"class":3402,"line":5229},[2915,48927,3506],{"emptyLinePlaceholder":3505},[2915,48929,48930,48932,48934,48936,48938,48940,48942,48944],{"class":3402,"line":5253},[2915,48931,5175],{"class":3533},[2915,48933,5234],{"class":3529},[2915,48935,5181],{"class":3533},[2915,48937,5239],{"class":3414},[2915,48939,5242],{"class":3414},[2915,48941,5245],{"class":3414},[2915,48943,5248],{"class":3529},[2915,48945,5187],{"class":3533},[2915,48947,48948],{"class":3402,"line":5266},[2915,48949,3506],{"emptyLinePlaceholder":3505},[2915,48951,48952,48954,48956,48958],{"class":3402,"line":5721},[2915,48953,5059],{"class":3410},[2915,48955,5258],{"class":3414},[2915,48957,5261],{"class":3529},[2915,48959,5204],{"class":3414},[2915,48961,48962],{"class":3402,"line":9401},[2915,48963,3506],{"emptyLinePlaceholder":3505},[2915,48965,48966],{"class":3402,"line":9406},[2915,48967,5269],{"class":3533},[228,48969,48971],{"id":48970},"beispiel-über-einen-zahlenbereich-iterieren","Beispiel: Über einen Zahlenbereich iterieren",[16,48973,5278],{},[16,48975,4941],{},[3392,48977,48979],{"className":3394,"code":48978,"language":3396,"meta":225,"style":225},"#!\u002Fbin\u002Fbash\n\n# Zählen von 1 bis 5\n\nfor i in {1..5}; do\n\necho \"Durchlauf Nummer: $i\"\n\ndone\n\n",[3398,48980,48981,48985,48989,48993,48997,49013,49017,49027,49031],{"__ignoreMap":225},[2915,48982,48983],{"class":3402,"line":3403},[2915,48984,5125],{"class":3511},[2915,48986,48987],{"class":3402,"line":1117},[2915,48988,3506],{"emptyLinePlaceholder":3505},[2915,48990,48991],{"class":3402,"line":1125},[2915,48992,5298],{"class":3511},[2915,48994,48995],{"class":3402,"line":3515},[2915,48996,3506],{"emptyLinePlaceholder":3505},[2915,48998,48999,49001,49003,49005,49007,49009,49011],{"class":3402,"line":3520},[2915,49000,5175],{"class":3533},[2915,49002,5305],{"class":3529},[2915,49004,5181],{"class":3533},[2915,49006,5310],{"class":3529},[2915,49008,5313],{"class":3406},[2915,49010,5248],{"class":3529},[2915,49012,5187],{"class":3533},[2915,49014,49015],{"class":3402,"line":5070},[2915,49016,3506],{"emptyLinePlaceholder":3505},[2915,49018,49019,49021,49023,49025],{"class":3402,"line":5075},[2915,49020,5059],{"class":3410},[2915,49022,5324],{"class":3414},[2915,49024,5327],{"class":3529},[2915,49026,5204],{"class":3414},[2915,49028,49029],{"class":3402,"line":5093},[2915,49030,3506],{"emptyLinePlaceholder":3505},[2915,49032,49033],{"class":3402,"line":5098},[2915,49034,5269],{"class":3533},[228,49036,49038],{"id":49037},"profi-tipp-dateien-im-verzeichnis-verarbeiten","Profi-Tipp: Dateien im Verzeichnis verarbeiten",[16,49040,5342],{},[16,49042,4941],{},[3392,49044,49046],{"className":3394,"code":49045,"language":3396,"meta":225,"style":225},"#!\u002Fbin\u002Fbash\n\n# Alle .txt Dateien im aktuellen Verzeichnis finden und ausgeben\n\nfor datei in *.txt; do\n\necho \"Verarbeite Datei: $datei\"\n\n# Hier könnte z.B. ein grep oder cat Befehl folgen\n\ndone\n\n",[3398,49047,49048,49052,49056,49060,49064,49078,49082,49092,49096,49100,49104],{"__ignoreMap":225},[2915,49049,49050],{"class":3402,"line":3403},[2915,49051,5125],{"class":3511},[2915,49053,49054],{"class":3402,"line":1117},[2915,49055,3506],{"emptyLinePlaceholder":3505},[2915,49057,49058],{"class":3402,"line":1125},[2915,49059,5362],{"class":3511},[2915,49061,49062],{"class":3402,"line":3515},[2915,49063,3506],{"emptyLinePlaceholder":3505},[2915,49065,49066,49068,49070,49072,49074,49076],{"class":3402,"line":3520},[2915,49067,5175],{"class":3533},[2915,49069,5369],{"class":3529},[2915,49071,5181],{"class":3533},[2915,49073,5374],{"class":3414},[2915,49075,5248],{"class":3529},[2915,49077,5187],{"class":3533},[2915,49079,49080],{"class":3402,"line":5070},[2915,49081,3506],{"emptyLinePlaceholder":3505},[2915,49083,49084,49086,49088,49090],{"class":3402,"line":5075},[2915,49085,5059],{"class":3410},[2915,49087,5385],{"class":3414},[2915,49089,5388],{"class":3529},[2915,49091,5204],{"class":3414},[2915,49093,49094],{"class":3402,"line":5093},[2915,49095,3506],{"emptyLinePlaceholder":3505},[2915,49097,49098],{"class":3402,"line":5098},[2915,49099,5395],{"class":3511},[2915,49101,49102],{"class":3402,"line":5207},[2915,49103,3506],{"emptyLinePlaceholder":3505},[2915,49105,49106],{"class":3402,"line":5212},[2915,49107,5269],{"class":3533},[228,49109,5404],{"id":49110},"zusammenfassung-der-struktur",[20,49112,49113,49117,49121,49125,49129],{},[23,49114,49115,5411],{},[26,49116,5175],{},[23,49118,49119,5417],{},[26,49120,5416],{},[23,49122,49123,5422],{},[26,49124,5181],{},[23,49126,49127,5428],{},[26,49128,5427],{},[23,49130,49131,5434],{},[26,49132,5433],{},[16,49134,49135,5439],{},[26,49136,5175],{},[16,49138,49139,5445],{},[26,49140,49141],{},"While",[16,49143,49144,5451],{},[26,49145,49146],{},"Continue",[16,49148,49149,5457],{},[26,49150,49151],{},"Break",[54,49153,5462],{"id":49154},"test-operatoren-bedingungen-prüfen",[645,49156,49157,49173],{},[648,49158,49159],{},[651,49160,49161,49165,49169],{},[654,49162,49163],{},[26,49164,5473],{},[654,49166,49167],{},[26,49168,5478],{},[654,49170,49171],{},[26,49172,5483],{},[670,49174,49175,49185,49193,49201,49211,49219,49229,49237,49245,49255],{},[651,49176,49177,49181,49183],{},[675,49178,49179],{},[26,49180,5492],{},[675,49182,5495],{},[675,49184,5498],{},[651,49186,49187,49189,49191],{},[675,49188],{},[675,49190,5505],{},[675,49192,5508],{},[651,49194,49195,49197,49199],{},[675,49196],{},[675,49198,5515],{},[675,49200,5518],{},[651,49202,49203,49207,49209],{},[675,49204,49205],{},[26,49206,5525],{},[675,49208,5137],{},[675,49210,5530],{},[651,49212,49213,49215,49217],{},[675,49214],{},[675,49216,5537],{},[675,49218,5540],{},[651,49220,49221,49225,49227],{},[675,49222,49223],{},[26,49224,5547],{},[675,49226,5550],{},[675,49228,5553],{},[651,49230,49231,49233,49235],{},[675,49232],{},[675,49234,5560],{},[675,49236,5563],{},[651,49238,49239,49241,49243],{},[675,49240],{},[675,49242,5570],{},[675,49244,5573],{},[651,49246,49247,49251,49253],{},[675,49248,49249],{},[26,49250,5580],{},[675,49252,5583],{},[675,49254],{},[651,49256,49257,49259,49261],{},[675,49258],{},[675,49260,5592],{},[675,49262,5595],{},[16,49264,49265],{},[26,49266,5600],{},[54,49268,5605],{"id":49269},"while-schleife-datei-zeilenweise-einlesen",[16,49271,4941],{},[3392,49273,49275],{"className":3394,"code":49274,"language":3396,"meta":225,"style":225},"while read f; do\n\necho \"Line is $f\"\n\ndone \u003Cdateiname.txt\n\nwhile read benutzer; do\n\nmkdir \"\u002Fhome\u002F$benutzer\"\n\necho \"Ordner für $benutzer wurde erstellt.\"\n\ndone \u003Cbenutzerliste.txt #Datei einlesen wird als 1. Ausgeführt\n\n",[3398,49276,49277,49289,49293,49303,49307,49316,49320,49332,49336,49346,49350,49360,49364],{"__ignoreMap":225},[2915,49278,49279,49281,49283,49285,49287],{"class":3402,"line":3403},[2915,49280,5444],{"class":3533},[2915,49282,5619],{"class":3410},[2915,49284,9021],{"class":3414},[2915,49286,5248],{"class":3529},[2915,49288,5187],{"class":3533},[2915,49290,49291],{"class":3402,"line":1117},[2915,49292,3506],{"emptyLinePlaceholder":3505},[2915,49294,49295,49297,49299,49301],{"class":3402,"line":1125},[2915,49296,5059],{"class":3410},[2915,49298,5641],{"class":3414},[2915,49300,5644],{"class":3529},[2915,49302,5204],{"class":3414},[2915,49304,49305],{"class":3402,"line":3515},[2915,49306,3506],{"emptyLinePlaceholder":3505},[2915,49308,49309,49311,49313],{"class":3402,"line":3520},[2915,49310,5433],{"class":3533},[2915,49312,5657],{"class":3533},[2915,49314,49315],{"class":3529},"dateiname.txt\n",[2915,49317,49318],{"class":3402,"line":5070},[2915,49319,3506],{"emptyLinePlaceholder":3505},[2915,49321,49322,49324,49326,49328,49330],{"class":3402,"line":5075},[2915,49323,5444],{"class":3533},[2915,49325,5619],{"class":3410},[2915,49327,41081],{"class":3414},[2915,49329,5248],{"class":3529},[2915,49331,5187],{"class":3533},[2915,49333,49334],{"class":3402,"line":5093},[2915,49335,3506],{"emptyLinePlaceholder":3505},[2915,49337,49338,49340,49342,49344],{"class":3402,"line":5098},[2915,49339,5690],{"class":3406},[2915,49341,5693],{"class":3414},[2915,49343,5696],{"class":3529},[2915,49345,5204],{"class":3414},[2915,49347,49348],{"class":3402,"line":5207},[2915,49349,3506],{"emptyLinePlaceholder":3505},[2915,49351,49352,49354,49356,49358],{"class":3402,"line":5212},[2915,49353,5059],{"class":3410},[2915,49355,5709],{"class":3414},[2915,49357,5696],{"class":3529},[2915,49359,5714],{"class":3414},[2915,49361,49362],{"class":3402,"line":5218},[2915,49363,3506],{"emptyLinePlaceholder":3505},[2915,49365,49366,49368,49370,49373],{"class":3402,"line":5223},[2915,49367,5433],{"class":3533},[2915,49369,5657],{"class":3533},[2915,49371,49372],{"class":3529},"benutzerliste.txt ",[2915,49374,49375],{"class":3511},"#Datei einlesen wird als 1. Ausgeführt\n",[54,49377,49379],{"id":49378},"if-abfrage-ausführlich","IF-Abfrage (ausführlich)",[228,49381,49383],{"id":49382},"die-einfache-if-anweisung","Die einfache if-Anweisung",[16,49385,5862],{},[3392,49387,49388],{"className":3394,"code":5865,"language":3396,"meta":225,"style":225},[3398,49389,49390,49396],{"__ignoreMap":225},[2915,49391,49392,49394],{"class":3402,"line":3403},[2915,49393,4951],{"class":3533},[2915,49395,5874],{"class":3406},[2915,49397,49398],{"class":3402,"line":1117},[2915,49399,4979],{"class":3533},[16,49401,49402,49404,49406,49408,5891],{},[257,49403,5883],{},[5885,49405],{},[257,49407,5883],{},[5885,49409],{},[3392,49411,49412],{"className":3394,"code":5894,"language":3396,"meta":225,"style":225},[3398,49413,49414],{"__ignoreMap":225},[2915,49415,49416],{"class":3402,"line":3403},[2915,49417,4997],{"class":3533},[16,49419,5903],{},[228,49421,49423],{"id":49422},"das-programm-test","Das Programm test",[16,49425,5910,49426,5914],{},[257,49427,5913],{},[16,49429,5917],{},[3392,49431,49432],{"className":3394,"code":5920,"language":3396,"meta":225,"style":225},[3398,49433,49434],{"__ignoreMap":225},[2915,49435,49436,49438,49440],{"class":3402,"line":3403},[2915,49437,4951],{"class":3533},[2915,49439,5929],{"class":3410},[2915,49441,5932],{"class":3414},[16,49443,5935],{},[3392,49445,49446],{"className":3394,"code":5938,"language":3396,"meta":225,"style":225},[3398,49447,49448],{"__ignoreMap":225},[2915,49449,49450,49452],{"class":3402,"line":3403},[2915,49451,4951],{"class":3533},[2915,49453,5947],{"class":3529},[16,49455,5950],{},[3392,49457,49458],{"className":3394,"code":5953,"language":3396,"meta":225,"style":225},[3398,49459,49460],{"__ignoreMap":225},[2915,49461,49462,49464,49466,49468],{"class":3402,"line":3403},[2915,49463,5960],{"class":3529},[2915,49465,5137],{"class":3533},[2915,49467,5965],{"class":3414},[2915,49469,5968],{"class":3511},[228,49471,49473],{"id":49472},"die-verschiedenen-bedingungsüberprüfungen-mit-test-bzw-buch-seite-312","Die verschiedenen Bedingungsüberprüfungen mit test bzw. [ (Buch Seite 312)",[16,49475,49476,5985,49482,5989],{},[26,49477,5977,49478],{},[257,49479,5980,49480,5984],{},[2915,49481,5983],{},[257,49483,5988],{},[16,49485,49486,5997,49490,6000],{},[26,49487,5994,49488],{},[257,49489,5988],{},[257,49491,5988],{},[16,49493,49494,5997,49498,6010],{},[26,49495,6005,49496],{},[257,49497,5988],{},[257,49499,5988],{},[16,49501,49502,5997,49506,6020],{},[26,49503,6015,49504],{},[257,49505,5988],{},[257,49507,5988],{},[16,49509,49510,5997,49514,6030],{},[26,49511,6025,49512],{},[257,49513,5988],{},[257,49515,5988],{},[16,49517,49518,5997,49522,6040],{},[26,49519,6035,49520],{},[257,49521,5988],{},[257,49523,5988],{},[16,49525,49526,5997,49530,6050],{},[26,49527,6045,49528],{},[257,49529,5988],{},[257,49531,5988],{},[16,49533,49534,5997,49538,6060],{},[26,49535,6055,49536],{},[257,49537,5988],{},[257,49539,5988],{},[16,49541,49542,5997,49546,6070],{},[26,49543,6065,49544],{},[257,49545,5988],{},[257,49547,5988],{},[16,49549,49550,5997,49554,6080],{},[26,49551,6075,49552],{},[257,49553,5988],{},[257,49555,5988],{},[16,49557,49558,5997,49562,6090],{},[26,49559,6085,49560],{},[257,49561,5988],{},[257,49563,5988],{},[16,49565,49566,5997,49570,6100],{},[26,49567,6095,49568],{},[257,49569,5988],{},[257,49571,5988],{},[16,49573,49574,5997,49578,6110],{},[26,49575,6105,49576],{},[257,49577,5988],{},[257,49579,5988],{},[16,49581,49582,5997,49586,6120],{},[26,49583,6115,49584],{},[257,49585,5988],{},[257,49587,5988],{},[16,49589,49590,5997,49594,6130],{},[26,49591,6125,49592],{},[257,49593,5988],{},[257,49595,5988],{},[16,49597,49598,5997,49602,6140],{},[26,49599,6135,49600],{},[257,49601,5988],{},[257,49603,5988],{},[16,49605,49606,5997,49610,6150],{},[26,49607,6145,49608],{},[257,49609,5988],{},[257,49611,5988],{},[16,49613,49614,6162,49620,6165,49622,6168],{},[26,49615,49616,6158,49618],{},[257,49617,6157],{},[257,49619,6161],{},[257,49621,6157],{},[257,49623,6161],{},[16,49625,49626,6162,49632,6180,49634,6183],{},[26,49627,49628,6175,49630],{},[257,49629,6157],{},[257,49631,6161],{},[257,49633,6157],{},[257,49635,6161],{},[16,49637,49638,6162,49644,6195,49646,6198],{},[26,49639,49640,6190,49642],{},[257,49641,6157],{},[257,49643,6161],{},[257,49645,6157],{},[257,49647,6161],{},[16,49649,49650,6207,49654,6210],{},[26,49651,6203,49652],{},[257,49653,6206],{},[257,49655,6206],{},[16,49657,49658,6207,49662,6220],{},[26,49659,6215,49660],{},[257,49661,6206],{},[257,49663,6206],{},[16,49665,49666,6207,49672,6234,49674],{},[26,49667,49668,6228,49670],{},[257,49669,6227],{},[257,49671,6231],{},[257,49673,6227],{},[257,49675,6231],{},[16,49677,49678,6207,49684,6248,49686],{},[26,49679,49680,6243,49682],{},[257,49681,6227],{},[257,49683,6231],{},[257,49685,6227],{},[257,49687,6231],{},[16,49689,49690,6262,49696,6234,49698,6267],{},[26,49691,49692,6258,49694],{},[257,49693,6257],{},[257,49695,6261],{},[257,49697,6257],{},[257,49699,6261],{},[16,49701,49702,6262,49708,6248,49710,6281],{},[26,49703,49704,6274,49706],{},[257,49705,6257],{},[257,49707,6261],{},[257,49709,6257],{},[257,49711,6261],{},[16,49713,49714,6262,49720,6293,49722,6296],{},[26,49715,49716,6288,49718],{},[257,49717,6257],{},[257,49719,6261],{},[257,49721,6257],{},[257,49723,6261],{},[16,49725,49726,6262,49732,6308,49734,6311],{},[26,49727,49728,6303,49730],{},[257,49729,6257],{},[257,49731,6261],{},[257,49733,6257],{},[257,49735,6261],{},[16,49737,49738,6262,49744,6323,49746,6326],{},[26,49739,49740,6318,49742],{},[257,49741,6257],{},[257,49743,6261],{},[257,49745,6257],{},[257,49747,6261],{},[16,49749,49750,6262,49756,6338,49758,6341],{},[26,49751,49752,6333,49754],{},[257,49753,6257],{},[257,49755,6261],{},[257,49757,6257],{},[257,49759,6261],{},[16,49761,49762,6349,49766],{},[26,49763,5592,49764],{},[257,49765,6348],{},[257,49767,6348],{},[16,49769,49770,6361],{},[26,49771,49772,6358,49774],{},[257,49773,6348],{},[257,49775,6348],{},[16,49777,49778,6371],{},[26,49779,49780,6368,49782],{},[257,49781,6348],{},[257,49783,6348],{},[16,49785,6374],{},[228,49787,49789],{"id":49788},"die-erweiterte-if-else-anweisung","Die erweiterte if-else Anweisung",[16,49791,6381],{},[3392,49793,49794],{"className":3394,"code":6384,"language":3396,"meta":225,"style":225},[3398,49795,49796,49802,49806,49810,49814,49818],{"__ignoreMap":225},[2915,49797,49798,49800],{"class":3402,"line":3403},[2915,49799,4951],{"class":3533},[2915,49801,6393],{"class":3529},[2915,49803,49804],{"class":3402,"line":1117},[2915,49805,4979],{"class":3533},[2915,49807,49808],{"class":3402,"line":1125},[2915,49809,6402],{"class":3406},[2915,49811,49812],{"class":3402,"line":3515},[2915,49813,6407],{"class":3533},[2915,49815,49816],{"class":3402,"line":3520},[2915,49817,6402],{"class":3406},[2915,49819,49820],{"class":3402,"line":5070},[2915,49821,4997],{"class":3533},[228,49823,49825],{"id":49824},"die-if-elif-else-anweisung","Die if-elif-else Anweisung",[16,49827,6422],{},[3392,49829,49830],{"className":3394,"code":6425,"language":3396,"meta":225,"style":225},[3398,49831,49832,49838,49842,49846,49852,49856,49860,49864,49868],{"__ignoreMap":225},[2915,49833,49834,49836],{"class":3402,"line":3403},[2915,49835,4951],{"class":3533},[2915,49837,6393],{"class":3529},[2915,49839,49840],{"class":3402,"line":1117},[2915,49841,4979],{"class":3533},[2915,49843,49844],{"class":3402,"line":1125},[2915,49845,6402],{"class":3406},[2915,49847,49848,49850],{"class":3402,"line":3515},[2915,49849,6446],{"class":3533},[2915,49851,6393],{"class":3529},[2915,49853,49854],{"class":3402,"line":3520},[2915,49855,4979],{"class":3533},[2915,49857,49858],{"class":3402,"line":5070},[2915,49859,6402],{"class":3406},[2915,49861,49862],{"class":3402,"line":5075},[2915,49863,6407],{"class":3533},[2915,49865,49866],{"class":3402,"line":5093},[2915,49867,6402],{"class":3406},[2915,49869,49870],{"class":3402,"line":5098},[2915,49871,4997],{"class":3533},[54,49873,49875],{"id":49874},"mehrfachauswahl-mit-case","Mehrfachauswahl mit case",[16,49877,6475],{},[3392,49879,49880],{"className":3394,"code":6478,"language":3396,"meta":225,"style":225},[3398,49881,49882,49890,49900,49910],{"__ignoreMap":225},[2915,49883,49884,49886,49888],{"class":3402,"line":3403},[2915,49885,5014],{"class":3533},[2915,49887,6487],{"class":3529},[2915,49889,5020],{"class":3533},[2915,49891,49892,49894,49896,49898],{"class":3402,"line":1117},[2915,49893,6494],{"class":5029},[2915,49895,5032],{"class":3533},[2915,49897,6499],{"class":3406},[2915,49899,5768],{"class":3529},[2915,49901,49902,49904,49906,49908],{"class":3402,"line":1125},[2915,49903,6506],{"class":5029},[2915,49905,5032],{"class":3533},[2915,49907,6511],{"class":3406},[2915,49909,5768],{"class":3529},[2915,49911,49912,49914,49916,49918],{"class":3402,"line":3515},[2915,49913,6518],{"class":5029},[2915,49915,5032],{"class":3533},[2915,49917,6523],{"class":3406},[2915,49919,5768],{"class":3529},[16,49921,6528],{},[3392,49923,49924],{"className":3394,"code":6531,"language":3396,"meta":225,"style":225},[3398,49925,49926],{"__ignoreMap":225},[2915,49927,49928],{"class":3402,"line":3403},[2915,49929,5101],{"class":3529},[54,49931,49933],{"id":49932},"essenzielle-werkzeuge","Essenzielle Werkzeuge",[20,49935,49936,49940,49944,49948],{},[23,49937,49938,6549],{},[26,49939,6548],{},[23,49941,49942,6555],{},[26,49943,6554],{},[23,49945,49946,6561],{},[26,49947,6560],{},[23,49949,49950,6567],{},[26,49951,6566],{},[54,49953,49955],{"id":49954},"funktionen","Funktionen",[16,49957,49958],{},[223,49959],{"alt":225,"src":49960},"\u002Fdownloads\u002FBSA\u002Fimages\u002Fap-zsmf_img_2.png",[16,49962,49963],{},[223,49964],{"alt":225,"src":49965},"\u002Fdownloads\u002FBSA\u002Fimages\u002Fap-zsmf_img_3.png",[11,49967,49969],{"id":49968},"definition","Definition",[3392,49971,49973],{"className":3394,"code":49972,"language":3396,"meta":225,"style":225},"meine_funktion() {\n\necho \"Hallo $1!\"\n\n}\n\n# Aufruf\n\nmeine_funktion \"Welt\"\n\n# Mit Rückgabewert (Exit-Code 0-255)\n\nist_gerade() {\n\nif (($1 % 2 == 0)); then\n\nreturn 0\n\nelse\n\nreturn 1\n\nfi\n\n}\n\n# Werte \"zurückgeben\" über echo\n\nberechne() {\n\necho $(($1 * $1))\n\n}\n\nergebnis=$(berechne 5)\n\n# Lokale Variablen\n\nfunktion() {\n\nlocal zahl=5 # Nur innerhalb der Funktion sichtbar\n\necho $zahl\n\n}\n\n",[3398,49974,49975,49982,49986,49998,50002,50006,50010,50015,50019,50026,50030,50035,50039,50046,50050,50071,50075,50083,50087,50091,50095,50101,50105,50109,50113,50117,50121,50126,50130,50137,50141,50155,50159,50163,50167,50181,50185,50190,50194,50201,50205,50220,50224,50231,50235],{"__ignoreMap":225},[2915,49976,49977,49980],{"class":3402,"line":3403},[2915,49978,49979],{"class":3406},"meine_funktion",[2915,49981,5812],{"class":3529},[2915,49983,49984],{"class":3402,"line":1117},[2915,49985,3506],{"emptyLinePlaceholder":3505},[2915,49987,49988,49990,49993,49995],{"class":3402,"line":1125},[2915,49989,5059],{"class":3410},[2915,49991,49992],{"class":3414}," \"Hallo ",[2915,49994,8638],{"class":3410},[2915,49996,49997],{"class":3414},"!\"\n",[2915,49999,50000],{"class":3402,"line":3515},[2915,50001,3506],{"emptyLinePlaceholder":3505},[2915,50003,50004],{"class":3402,"line":3520},[2915,50005,5840],{"class":3529},[2915,50007,50008],{"class":3402,"line":5070},[2915,50009,3506],{"emptyLinePlaceholder":3505},[2915,50011,50012],{"class":3402,"line":5075},[2915,50013,50014],{"class":3511},"# Aufruf\n",[2915,50016,50017],{"class":3402,"line":5093},[2915,50018,3506],{"emptyLinePlaceholder":3505},[2915,50020,50021,50023],{"class":3402,"line":5098},[2915,50022,49979],{"class":3406},[2915,50024,50025],{"class":3414}," \"Welt\"\n",[2915,50027,50028],{"class":3402,"line":5207},[2915,50029,3506],{"emptyLinePlaceholder":3505},[2915,50031,50032],{"class":3402,"line":5212},[2915,50033,50034],{"class":3511},"# Mit Rückgabewert (Exit-Code 0-255)\n",[2915,50036,50037],{"class":3402,"line":5218},[2915,50038,3506],{"emptyLinePlaceholder":3505},[2915,50040,50041,50044],{"class":3402,"line":5223},[2915,50042,50043],{"class":3406},"ist_gerade",[2915,50045,5812],{"class":3529},[2915,50047,50048],{"class":3402,"line":5229},[2915,50049,3506],{"emptyLinePlaceholder":3505},[2915,50051,50052,50054,50057,50059,50061,50063,50065,50067,50069],{"class":3402,"line":5253},[2915,50053,4951],{"class":3533},[2915,50055,50056],{"class":3529}," ((",[2915,50058,8638],{"class":5824},[2915,50060,46730],{"class":3533},[2915,50062,14080],{"class":3410},[2915,50064,10246],{"class":3533},[2915,50066,24123],{"class":3410},[2915,50068,47138],{"class":3529},[2915,50070,4979],{"class":3533},[2915,50072,50073],{"class":3402,"line":5266},[2915,50074,3506],{"emptyLinePlaceholder":3505},[2915,50076,50077,50080],{"class":3402,"line":5721},[2915,50078,50079],{"class":3533},"return",[2915,50081,50082],{"class":3410}," 0\n",[2915,50084,50085],{"class":3402,"line":9401},[2915,50086,3506],{"emptyLinePlaceholder":3505},[2915,50088,50089],{"class":3402,"line":9406},[2915,50090,6407],{"class":3533},[2915,50092,50093],{"class":3402,"line":9411},[2915,50094,3506],{"emptyLinePlaceholder":3505},[2915,50096,50097,50099],{"class":3402,"line":9416},[2915,50098,50079],{"class":3533},[2915,50100,9653],{"class":3410},[2915,50102,50103],{"class":3402,"line":9428},[2915,50104,3506],{"emptyLinePlaceholder":3505},[2915,50106,50107],{"class":3402,"line":9433},[2915,50108,4997],{"class":3533},[2915,50110,50111],{"class":3402,"line":9454},[2915,50112,3506],{"emptyLinePlaceholder":3505},[2915,50114,50115],{"class":3402,"line":9459},[2915,50116,5840],{"class":3529},[2915,50118,50119],{"class":3402,"line":9464},[2915,50120,3506],{"emptyLinePlaceholder":3505},[2915,50122,50123],{"class":3402,"line":9469},[2915,50124,50125],{"class":3511},"# Werte \"zurückgeben\" über echo\n",[2915,50127,50128],{"class":3402,"line":9479},[2915,50129,3506],{"emptyLinePlaceholder":3505},[2915,50131,50132,50135],{"class":3402,"line":9484},[2915,50133,50134],{"class":3406},"berechne",[2915,50136,5812],{"class":3529},[2915,50138,50139],{"class":3402,"line":9489},[2915,50140,3506],{"emptyLinePlaceholder":3505},[2915,50142,50143,50145,50147,50149,50151,50153],{"class":3402,"line":9494},[2915,50144,5059],{"class":3410},[2915,50146,46639],{"class":3529},[2915,50148,8638],{"class":5824},[2915,50150,5828],{"class":3533},[2915,50152,5825],{"class":5824},[2915,50154,9425],{"class":3529},[2915,50156,50157],{"class":3402,"line":9504},[2915,50158,3506],{"emptyLinePlaceholder":3505},[2915,50160,50161],{"class":3402,"line":9509},[2915,50162,5840],{"class":3529},[2915,50164,50165],{"class":3402,"line":9514},[2915,50166,3506],{"emptyLinePlaceholder":3505},[2915,50168,50169,50171,50173,50175,50177,50179],{"class":3402,"line":9519},[2915,50170,46937],{"class":3529},[2915,50172,5137],{"class":3533},[2915,50174,9001],{"class":3529},[2915,50176,50134],{"class":3406},[2915,50178,15203],{"class":3410},[2915,50180,5152],{"class":3529},[2915,50182,50183],{"class":3402,"line":9524},[2915,50184,3506],{"emptyLinePlaceholder":3505},[2915,50186,50187],{"class":3402,"line":9529},[2915,50188,50189],{"class":3511},"# Lokale Variablen\n",[2915,50191,50192],{"class":3402,"line":9534},[2915,50193,3506],{"emptyLinePlaceholder":3505},[2915,50195,50196,50199],{"class":3402,"line":9539},[2915,50197,50198],{"class":3406},"funktion",[2915,50200,5812],{"class":3529},[2915,50202,50203],{"class":3402,"line":9552},[2915,50204,3506],{"emptyLinePlaceholder":3505},[2915,50206,50207,50210,50213,50215,50217],{"class":3402,"line":9557},[2915,50208,50209],{"class":3533},"local",[2915,50211,50212],{"class":3529}," zahl",[2915,50214,5137],{"class":3533},[2915,50216,13045],{"class":3410},[2915,50218,50219],{"class":3511}," # Nur innerhalb der Funktion sichtbar\n",[2915,50221,50222],{"class":3402,"line":9570},[2915,50223,3506],{"emptyLinePlaceholder":3505},[2915,50225,50226,50228],{"class":3402,"line":9575},[2915,50227,5059],{"class":3410},[2915,50229,50230],{"class":3529}," $zahl\n",[2915,50232,50233],{"class":3402,"line":9588},[2915,50234,3506],{"emptyLinePlaceholder":3505},[2915,50236,50237],{"class":3402,"line":9593},[2915,50238,5840],{"class":3529},[54,50240,50242],{"id":50241},"best-practices","Best Practices",[228,50244,50246],{"id":50245},"fehlerbehandlung-mit-trap","Fehlerbehandlung mit trap",[3392,50248,50250],{"className":3394,"code":50249,"language":3396,"meta":225,"style":225},"cleanup() {\n\nrm -f \"$LOCKFILE\"\n\necho \"Aufgeräumt\"\n\n}\n\ntrap cleanup EXIT INT TERM\n\n",[3398,50251,50252,50258,50262,50274,50278,50285,50289,50293,50297],{"__ignoreMap":225},[2915,50253,50254,50256],{"class":3402,"line":3403},[2915,50255,10076],{"class":3406},[2915,50257,5812],{"class":3529},[2915,50259,50260],{"class":3402,"line":1117},[2915,50261,3506],{"emptyLinePlaceholder":3505},[2915,50263,50264,50266,50268,50270,50272],{"class":3402,"line":1125},[2915,50265,10086],{"class":3406},[2915,50267,10089],{"class":3410},[2915,50269,4968],{"class":3414},[2915,50271,10094],{"class":3529},[2915,50273,5204],{"class":3414},[2915,50275,50276],{"class":3402,"line":3515},[2915,50277,3506],{"emptyLinePlaceholder":3505},[2915,50279,50280,50282],{"class":3402,"line":3520},[2915,50281,5059],{"class":3410},[2915,50283,50284],{"class":3414}," \"Aufgeräumt\"\n",[2915,50286,50287],{"class":3402,"line":5070},[2915,50288,3506],{"emptyLinePlaceholder":3505},[2915,50290,50291],{"class":3402,"line":5075},[2915,50292,5840],{"class":3529},[2915,50294,50295],{"class":3402,"line":5093},[2915,50296,3506],{"emptyLinePlaceholder":3505},[2915,50298,50299,50301,50303,50306,50309],{"class":3402,"line":5098},[2915,50300,10140],{"class":3410},[2915,50302,10143],{"class":3414},[2915,50304,50305],{"class":3414}," EXIT",[2915,50307,50308],{"class":3414}," INT",[2915,50310,50311],{"class":3414}," TERM\n",[228,50313,50315],{"id":50314},"locking-verhindert-doppelte-ausführung","Locking (verhindert doppelte Ausführung)",[3392,50317,50319],{"className":3394,"code":50318,"language":3396,"meta":225,"style":225},"LOCKFILE=\"\u002Ftmp\u002Fmyscript.lock\"\n\nexec 200>\"$LOCKFILE\"\n\nflock -n 200 || {\n\necho \"Already running\"\n\nexit 1\n\n}\n\n",[3398,50320,50321,50330,50334,50349,50353,50368,50372,50378,50382,50388,50392],{"__ignoreMap":225},[2915,50322,50323,50325,50327],{"class":3402,"line":3403},[2915,50324,9994],{"class":3529},[2915,50326,5137],{"class":3533},[2915,50328,50329],{"class":3414},"\"\u002Ftmp\u002Fmyscript.lock\"\n",[2915,50331,50332],{"class":3402,"line":1117},[2915,50333,3506],{"emptyLinePlaceholder":3505},[2915,50335,50336,50338,50340,50343,50345,50347],{"class":3402,"line":1125},[2915,50337,29467],{"class":3410},[2915,50339,15618],{"class":3410},[2915,50341,50342],{"class":3533},"0>",[2915,50344,4957],{"class":3414},[2915,50346,10094],{"class":3529},[2915,50348,5204],{"class":3414},[2915,50350,50351],{"class":3402,"line":3515},[2915,50352,3506],{"emptyLinePlaceholder":3505},[2915,50354,50355,50358,50360,50363,50365],{"class":3402,"line":3520},[2915,50356,50357],{"class":3406},"flock",[2915,50359,8127],{"class":3410},[2915,50361,50362],{"class":3410}," 200",[2915,50364,22827],{"class":3533},[2915,50366,50367],{"class":3529}," {\n",[2915,50369,50370],{"class":3402,"line":5070},[2915,50371,3506],{"emptyLinePlaceholder":3505},[2915,50373,50374,50376],{"class":3402,"line":5075},[2915,50375,5059],{"class":3410},[2915,50377,46218],{"class":3414},[2915,50379,50380],{"class":3402,"line":5093},[2915,50381,3506],{"emptyLinePlaceholder":3505},[2915,50383,50384,50386],{"class":3402,"line":5098},[2915,50385,9650],{"class":3410},[2915,50387,9653],{"class":3410},[2915,50389,50390],{"class":3402,"line":5207},[2915,50391,3506],{"emptyLinePlaceholder":3505},[2915,50393,50394],{"class":3402,"line":5212},[2915,50395,5840],{"class":3529},[228,50397,50399],{"id":50398},"main-struktur-empfohlen","main()-Struktur (empfohlen)",[3392,50401,50403],{"className":3394,"code":50402,"language":3396,"meta":225,"style":225},"#!\u002Fbin\u002Fbash\n\nset -euo pipefail\n\ncheck_input() {\n\nif [ -z \"$1\" ]; then\n\necho \"Kein Parameter!\"\n\nexit 1\n\nfi\n\n}\n\nverarbeite() {\n\necho \"Verarbeite: $1\"\n\n}\n\nmain() {\n\ncheck_input \"$1\"\n\nverarbeite \"$1\"\n\n}\n\nmain \"$@\"\n\n",[3398,50404,50405,50409,50413,50421,50425,50432,50436,50454,50458,50465,50469,50475,50479,50483,50487,50491,50495,50502,50506,50516,50520,50524,50528,50535,50539,50549,50553,50563,50567,50571,50575],{"__ignoreMap":225},[2915,50406,50407],{"class":3402,"line":3403},[2915,50408,5125],{"class":3511},[2915,50410,50411],{"class":3402,"line":1117},[2915,50412,3506],{"emptyLinePlaceholder":3505},[2915,50414,50415,50417,50419],{"class":3402,"line":1125},[2915,50416,9916],{"class":3410},[2915,50418,9919],{"class":3410},[2915,50420,9922],{"class":3414},[2915,50422,50423],{"class":3402,"line":3515},[2915,50424,3506],{"emptyLinePlaceholder":3505},[2915,50426,50427,50430],{"class":3402,"line":3520},[2915,50428,50429],{"class":3406},"check_input",[2915,50431,5812],{"class":3529},[2915,50433,50434],{"class":3402,"line":5070},[2915,50435,3506],{"emptyLinePlaceholder":3505},[2915,50437,50438,50440,50442,50444,50446,50448,50450,50452],{"class":3402,"line":5075},[2915,50439,4951],{"class":3533},[2915,50441,4954],{"class":3529},[2915,50443,19159],{"class":3533},[2915,50445,4968],{"class":3414},[2915,50447,8638],{"class":3410},[2915,50449,4957],{"class":3414},[2915,50451,4976],{"class":3529},[2915,50453,4979],{"class":3533},[2915,50455,50456],{"class":3402,"line":5093},[2915,50457,3506],{"emptyLinePlaceholder":3505},[2915,50459,50460,50462],{"class":3402,"line":5098},[2915,50461,5059],{"class":3410},[2915,50463,50464],{"class":3414}," \"Kein Parameter!\"\n",[2915,50466,50467],{"class":3402,"line":5207},[2915,50468,3506],{"emptyLinePlaceholder":3505},[2915,50470,50471,50473],{"class":3402,"line":5212},[2915,50472,9650],{"class":3410},[2915,50474,9653],{"class":3410},[2915,50476,50477],{"class":3402,"line":5218},[2915,50478,3506],{"emptyLinePlaceholder":3505},[2915,50480,50481],{"class":3402,"line":5223},[2915,50482,4997],{"class":3533},[2915,50484,50485],{"class":3402,"line":5229},[2915,50486,3506],{"emptyLinePlaceholder":3505},[2915,50488,50489],{"class":3402,"line":5253},[2915,50490,5840],{"class":3529},[2915,50492,50493],{"class":3402,"line":5266},[2915,50494,3506],{"emptyLinePlaceholder":3505},[2915,50496,50497,50500],{"class":3402,"line":5721},[2915,50498,50499],{"class":3406},"verarbeite",[2915,50501,5812],{"class":3529},[2915,50503,50504],{"class":3402,"line":9401},[2915,50505,3506],{"emptyLinePlaceholder":3505},[2915,50507,50508,50510,50512,50514],{"class":3402,"line":9406},[2915,50509,5059],{"class":3410},[2915,50511,36291],{"class":3414},[2915,50513,8638],{"class":3410},[2915,50515,5204],{"class":3414},[2915,50517,50518],{"class":3402,"line":9411},[2915,50519,3506],{"emptyLinePlaceholder":3505},[2915,50521,50522],{"class":3402,"line":9416},[2915,50523,5840],{"class":3529},[2915,50525,50526],{"class":3402,"line":9428},[2915,50527,3506],{"emptyLinePlaceholder":3505},[2915,50529,50530,50533],{"class":3402,"line":9433},[2915,50531,50532],{"class":3406},"main",[2915,50534,5812],{"class":3529},[2915,50536,50537],{"class":3402,"line":9454},[2915,50538,3506],{"emptyLinePlaceholder":3505},[2915,50540,50541,50543,50545,50547],{"class":3402,"line":9459},[2915,50542,50429],{"class":3406},[2915,50544,4968],{"class":3414},[2915,50546,8638],{"class":3410},[2915,50548,5204],{"class":3414},[2915,50550,50551],{"class":3402,"line":9464},[2915,50552,3506],{"emptyLinePlaceholder":3505},[2915,50554,50555,50557,50559,50561],{"class":3402,"line":9469},[2915,50556,50499],{"class":3406},[2915,50558,4968],{"class":3414},[2915,50560,8638],{"class":3410},[2915,50562,5204],{"class":3414},[2915,50564,50565],{"class":3402,"line":9479},[2915,50566,3506],{"emptyLinePlaceholder":3505},[2915,50568,50569],{"class":3402,"line":9484},[2915,50570,5840],{"class":3529},[2915,50572,50573],{"class":3402,"line":9489},[2915,50574,3506],{"emptyLinePlaceholder":3505},[2915,50576,50577,50579,50581,50583],{"class":3402,"line":9494},[2915,50578,50532],{"class":3406},[2915,50580,4968],{"class":3414},[2915,50582,10222],{"class":3410},[2915,50584,5204],{"class":3414},[11,50586,50588],{"id":50587},"vm-vs-docker","VM vs. Docker",[54,50590,50592],{"id":50591},"virtualisierung","Virtualisierung",[645,50594,50595,50613],{},[648,50596,50597],{},[651,50598,50599,50603,50608],{},[654,50600,50601],{},[26,50602,43379],{},[654,50604,50605],{},[26,50606,50607],{},"Virtuelle Maschine (VM)",[654,50609,50610],{},[26,50611,50612],{},"Docker Container",[670,50614,50615,50626,50637,50648,50658,50669,50680],{},[651,50616,50617,50620,50623],{},[675,50618,50619],{},"Isolation",[675,50621,50622],{},"Vollständig (eigener Kernel)",[675,50624,50625],{},"Prozess-Level (teilt Kernel mit Host)",[651,50627,50628,50631,50634],{},[675,50629,50630],{},"Ressourcen",[675,50632,50633],{},"Braucht viel RAM\u002FCPU (eigenes OS)",[675,50635,50636],{},"Leichtgewichtig",[651,50638,50639,50642,50645],{},[675,50640,50641],{},"Startzeit",[675,50643,50644],{},"Minuten",[675,50646,50647],{},"Sekunden",[651,50649,50650,50652,50655],{},[675,50651,8389],{},[675,50653,50654],{},"GB (volles Betriebssystem)",[675,50656,50657],{},"MB (nur App + Dependencies)",[651,50659,50660,50663,50666],{},[675,50661,50662],{},"Portabilität",[675,50664,50665],{},"Image-basiert",[675,50667,50668],{},"Container-Image (Docker Hub)",[651,50670,50671,50674,50677],{},[675,50672,50673],{},"Hypervisor",[675,50675,50676],{},"Ja (VMware, VirtualBox, KVM)",[675,50678,50679],{},"Docker Engine",[651,50681,50682,50685,50688],{},[675,50683,50684],{},"Use Case",[675,50686,50687],{},"Verschiedene OS gleichzeitig",[675,50689,50690],{},"Microservices, CI\u002FCD",[228,50692,50694],{"id":50693},"begriffe-virtualisierung","Begriffe (Virtualisierung):",[20,50696,50697,50703,50709],{},[23,50698,50699,50702],{},[26,50700,50701],{},"Hostsystem"," = System, auf dem die Virtualisierung läuft",[23,50704,50705,50708],{},[26,50706,50707],{},"Gastsystem"," = System in der VM",[23,50710,50711,50714],{},[26,50712,50713],{},"Hypervisor \u002F VMM"," = Virtualisierungssoftware",[228,50716,50718],{"id":50717},"virtualbox-netzwerktypen","VirtualBox Netzwerktypen:",[645,50720,50721,50733],{},[648,50722,50723],{},[651,50724,50725,50729],{},[654,50726,50727],{},[26,50728,5473],{},[654,50730,50731],{},[26,50732,4550],{},[670,50734,50735,50743,50751,50759,50767],{},[651,50736,50737,50740],{},[675,50738,50739],{},"NAT",[675,50741,50742],{},"Standard, VM nutzt Host als Router",[651,50744,50745,50748],{},[675,50746,50747],{},"NAT-Netzwerk",[675,50749,50750],{},"VMs können untereinander + nach außen kommunizieren",[651,50752,50753,50756],{},[675,50754,50755],{},"Bridged",[675,50757,50758],{},"VM bekommt direkten Netzwerkzugang",[651,50760,50761,50764],{},[675,50762,50763],{},"Internes Netzwerk",[675,50765,50766],{},"Nur VMs untereinander",[651,50768,50769,50772],{},[675,50770,50771],{},"Host-only",[675,50773,50774],{},"VMs + Host können kommunizieren",[54,50776,50777],{"id":6792},"Docker",[228,50779,50781],{"id":50780},"grundbegriffe","Grundbegriffe",[645,50783,50784,50796],{},[648,50785,50786],{},[651,50787,50788,50792],{},[654,50789,50790],{},[26,50791,27824],{},[654,50793,50794],{},[26,50795,4550],{},[670,50797,50798,50805,50812,50819,50827],{},[651,50799,50800,50802],{},[675,50801,27835],{},[675,50803,50804],{},"Bauplan\u002FVorlage (\"eingepackte Applikation\")",[651,50806,50807,50809],{},[675,50808,27843],{},[675,50810,50811],{},"Laufende Instanz eines Images",[651,50813,50814,50816],{},[675,50815,27851],{},[675,50817,50818],{},"Bauanleitung für ein Image",[651,50820,50821,50824],{},[675,50822,50823],{},"Docker Hub",[675,50825,50826],{},"Zentrale Registry für Images",[651,50828,50829,50831],{},[675,50830,27874],{},[675,50832,50833],{},"Persistenter Speicher",[228,50835,50836],{"id":27888},"Wichtige Docker-Befehle",[995,50838,50840],{"id":50839},"images-verwalten","Images verwalten",[3392,50842,50844],{"className":3394,"code":50843,"language":3396,"meta":225,"style":225},"docker image pull nginx # Image herunterladen\n\ndocker image build -t myapp:1.0 . # Image aus Dockerfile bauen\n\ndocker image ls # Alle Images anzeigen\n\ndocker image rm nginx # Image löschen\n\ndocker images prune # Ungenutzte Images löschen\n\n",[3398,50845,50846,50862,50866,50884,50888,50900,50904,50917,50921],{"__ignoreMap":225},[2915,50847,50848,50850,50853,50856,50859],{"class":3402,"line":3403},[2915,50849,6792],{"class":3406},[2915,50851,50852],{"class":3414}," image",[2915,50854,50855],{"class":3414}," pull",[2915,50857,50858],{"class":3414}," nginx",[2915,50860,50861],{"class":3511}," # Image herunterladen\n",[2915,50863,50864],{"class":3402,"line":1117},[2915,50865,3506],{"emptyLinePlaceholder":3505},[2915,50867,50868,50870,50872,50874,50876,50879,50881],{"class":3402,"line":1125},[2915,50869,6792],{"class":3406},[2915,50871,50852],{"class":3414},[2915,50873,29108],{"class":3414},[2915,50875,14262],{"class":3410},[2915,50877,50878],{"class":3414}," myapp:1.0",[2915,50880,8232],{"class":3414},[2915,50882,50883],{"class":3511}," # Image aus Dockerfile bauen\n",[2915,50885,50886],{"class":3402,"line":3515},[2915,50887,3506],{"emptyLinePlaceholder":3505},[2915,50889,50890,50892,50894,50897],{"class":3402,"line":3520},[2915,50891,6792],{"class":3406},[2915,50893,50852],{"class":3414},[2915,50895,50896],{"class":3414}," ls",[2915,50898,50899],{"class":3511}," # Alle Images anzeigen\n",[2915,50901,50902],{"class":3402,"line":5070},[2915,50903,3506],{"emptyLinePlaceholder":3505},[2915,50905,50906,50908,50910,50912,50914],{"class":3402,"line":5075},[2915,50907,6792],{"class":3406},[2915,50909,50852],{"class":3414},[2915,50911,8545],{"class":3414},[2915,50913,50858],{"class":3414},[2915,50915,50916],{"class":3511}," # Image löschen\n",[2915,50918,50919],{"class":3402,"line":5093},[2915,50920,3506],{"emptyLinePlaceholder":3505},[2915,50922,50923,50925,50928,50930],{"class":3402,"line":5098},[2915,50924,6792],{"class":3406},[2915,50926,50927],{"class":3414}," images",[2915,50929,29253],{"class":3414},[2915,50931,50932],{"class":3511}," # Ungenutzte Images löschen\n",[995,50934,50936],{"id":50935},"container-verwalten","Container verwalten",[11,50938,29376],{"id":50939},"container-erstellen-und-starten",[3392,50941,50943],{"className":3394,"code":50942,"language":3396,"meta":225,"style":225},"docker run -d -p 8080:80 --name myweb nginx\n\ndocker run -it ubuntu bash # Interaktiv starten\n\ndocker run --rm alpine echo \"Hello\" # Nach Beenden löschen\n\n# Container verwalten\n\ndocker container ls # Laufende Container\n\ndocker container ls -a # Alle Container\n\ndocker container stop myweb # Stoppen\n\ndocker container start myweb # Starten\n\ndocker container rm myweb # Löschen\n\ndocker container rm -f myweb # Erzwungen löschen\n\ndocker container inspect myweb # Details anzeigen\n\n# Im Container arbeiten\n\ndocker exec -it myweb bash # Shell in laufendem Container\n\ndocker logs myweb # Logs anzeigen\n\ndocker logs -f myweb # Live-Logs\n\ndocker stats # Ressourcen-Monitoring\n\n",[3398,50944,50945,50964,50968,50985,50989,51008,51012,51017,51021,51033,51037,51050,51054,51068,51072,51085,51089,51102,51106,51121,51125,51138,51142,51147,51151,51166,51170,51181,51185,51198,51202],{"__ignoreMap":225},[2915,50946,50947,50949,50951,50953,50955,50957,50959,50962],{"class":3402,"line":3403},[2915,50948,6792],{"class":3406},[2915,50950,6795],{"class":3414},[2915,50952,6798],{"class":3410},[2915,50954,6956],{"class":3410},[2915,50956,6959],{"class":3414},[2915,50958,6962],{"class":3410},[2915,50960,50961],{"class":3414}," myweb",[2915,50963,6968],{"class":3414},[2915,50965,50966],{"class":3402,"line":1117},[2915,50967,3506],{"emptyLinePlaceholder":3505},[2915,50969,50970,50972,50974,50976,50979,50982],{"class":3402,"line":1125},[2915,50971,6792],{"class":3406},[2915,50973,6795],{"class":3414},[2915,50975,29079],{"class":3410},[2915,50977,50978],{"class":3414}," ubuntu",[2915,50980,50981],{"class":3414}," bash",[2915,50983,50984],{"class":3511}," # Interaktiv starten\n",[2915,50986,50987],{"class":3402,"line":3515},[2915,50988,3506],{"emptyLinePlaceholder":3505},[2915,50990,50991,50993,50995,50997,51000,51002,51005],{"class":3402,"line":3520},[2915,50992,6792],{"class":3406},[2915,50994,6795],{"class":3414},[2915,50996,29082],{"class":3410},[2915,50998,50999],{"class":3414}," alpine",[2915,51001,5035],{"class":3414},[2915,51003,51004],{"class":3414}," \"Hello\"",[2915,51006,51007],{"class":3511}," # Nach Beenden löschen\n",[2915,51009,51010],{"class":3402,"line":5070},[2915,51011,3506],{"emptyLinePlaceholder":3505},[2915,51013,51014],{"class":3402,"line":5075},[2915,51015,51016],{"class":3511},"# Container verwalten\n",[2915,51018,51019],{"class":3402,"line":5093},[2915,51020,3506],{"emptyLinePlaceholder":3505},[2915,51022,51023,51025,51028,51030],{"class":3402,"line":5098},[2915,51024,6792],{"class":3406},[2915,51026,51027],{"class":3414}," container",[2915,51029,50896],{"class":3414},[2915,51031,51032],{"class":3511}," # Laufende Container\n",[2915,51034,51035],{"class":3402,"line":5207},[2915,51036,3506],{"emptyLinePlaceholder":3505},[2915,51038,51039,51041,51043,51045,51047],{"class":3402,"line":5212},[2915,51040,6792],{"class":3406},[2915,51042,51027],{"class":3414},[2915,51044,50896],{"class":3414},[2915,51046,10056],{"class":3410},[2915,51048,51049],{"class":3511}," # Alle Container\n",[2915,51051,51052],{"class":3402,"line":5218},[2915,51053,3506],{"emptyLinePlaceholder":3505},[2915,51055,51056,51058,51060,51063,51065],{"class":3402,"line":5223},[2915,51057,6792],{"class":3406},[2915,51059,51027],{"class":3414},[2915,51061,51062],{"class":3414}," stop",[2915,51064,50961],{"class":3414},[2915,51066,51067],{"class":3511}," # Stoppen\n",[2915,51069,51070],{"class":3402,"line":5229},[2915,51071,3506],{"emptyLinePlaceholder":3505},[2915,51073,51074,51076,51078,51080,51082],{"class":3402,"line":5253},[2915,51075,6792],{"class":3406},[2915,51077,51027],{"class":3414},[2915,51079,44117],{"class":3414},[2915,51081,50961],{"class":3414},[2915,51083,51084],{"class":3511}," # Starten\n",[2915,51086,51087],{"class":3402,"line":5266},[2915,51088,3506],{"emptyLinePlaceholder":3505},[2915,51090,51091,51093,51095,51097,51099],{"class":3402,"line":5721},[2915,51092,6792],{"class":3406},[2915,51094,51027],{"class":3414},[2915,51096,8545],{"class":3414},[2915,51098,50961],{"class":3414},[2915,51100,51101],{"class":3511}," # Löschen\n",[2915,51103,51104],{"class":3402,"line":9401},[2915,51105,3506],{"emptyLinePlaceholder":3505},[2915,51107,51108,51110,51112,51114,51116,51118],{"class":3402,"line":9406},[2915,51109,6792],{"class":3406},[2915,51111,51027],{"class":3414},[2915,51113,8545],{"class":3414},[2915,51115,10089],{"class":3410},[2915,51117,50961],{"class":3414},[2915,51119,51120],{"class":3511}," # Erzwungen löschen\n",[2915,51122,51123],{"class":3402,"line":9411},[2915,51124,3506],{"emptyLinePlaceholder":3505},[2915,51126,51127,51129,51131,51133,51135],{"class":3402,"line":9416},[2915,51128,6792],{"class":3406},[2915,51130,51027],{"class":3414},[2915,51132,29302],{"class":3414},[2915,51134,50961],{"class":3414},[2915,51136,51137],{"class":3511}," # Details anzeigen\n",[2915,51139,51140],{"class":3402,"line":9428},[2915,51141,3506],{"emptyLinePlaceholder":3505},[2915,51143,51144],{"class":3402,"line":9433},[2915,51145,51146],{"class":3511},"# Im Container arbeiten\n",[2915,51148,51149],{"class":3402,"line":9454},[2915,51150,3506],{"emptyLinePlaceholder":3505},[2915,51152,51153,51155,51157,51159,51161,51163],{"class":3402,"line":9459},[2915,51154,6792],{"class":3406},[2915,51156,29181],{"class":3414},[2915,51158,29079],{"class":3410},[2915,51160,50961],{"class":3414},[2915,51162,50981],{"class":3414},[2915,51164,51165],{"class":3511}," # Shell in laufendem Container\n",[2915,51167,51168],{"class":3402,"line":9464},[2915,51169,3506],{"emptyLinePlaceholder":3505},[2915,51171,51172,51174,51176,51178],{"class":3402,"line":9469},[2915,51173,6792],{"class":3406},[2915,51175,29156],{"class":3414},[2915,51177,50961],{"class":3414},[2915,51179,51180],{"class":3511}," # Logs anzeigen\n",[2915,51182,51183],{"class":3402,"line":9479},[2915,51184,3506],{"emptyLinePlaceholder":3505},[2915,51186,51187,51189,51191,51193,51195],{"class":3402,"line":9484},[2915,51188,6792],{"class":3406},[2915,51190,29156],{"class":3414},[2915,51192,10089],{"class":3410},[2915,51194,50961],{"class":3414},[2915,51196,51197],{"class":3511}," # Live-Logs\n",[2915,51199,51200],{"class":3402,"line":9489},[2915,51201,3506],{"emptyLinePlaceholder":3505},[2915,51203,51204,51206,51208],{"class":3402,"line":9494},[2915,51205,6792],{"class":3406},[2915,51207,29279],{"class":3414},[2915,51209,51210],{"class":3511}," # Ressourcen-Monitoring\n",[995,51212,51214],{"id":51213},"docker-run-optionen","docker run Optionen",[645,51216,51217,51229],{},[648,51218,51219],{},[651,51220,51221,51225],{},[654,51222,51223],{},[26,51224,7715],{},[654,51226,51227],{},[26,51228,4550],{},[670,51230,51231,51239,51246,51254,51262,51270,51278,51285],{},[651,51232,51233,51236],{},[675,51234,51235],{},"-d systemctl",[675,51237,51238],{},"Detached (Hintergrund)",[651,51240,51241,51243],{},[675,51242,28283],{},[675,51244,51245],{},"Interaktiv mit Terminal",[651,51247,51248,51251],{},[675,51249,51250],{},"-p host:container",[675,51252,51253],{},"Port-Mapping",[651,51255,51256,51259],{},[675,51257,51258],{},"-v host:container",[675,51260,51261],{},"Volume\u002FBind Mount",[651,51263,51264,51267],{},[675,51265,51266],{},"--name name",[675,51268,51269],{},"Container-Name vergeben",[651,51271,51272,51275],{},[675,51273,51274],{},"--network netz",[675,51276,51277],{},"Mit Netzwerk verbinden",[651,51279,51280,51282],{},[675,51281,28339],{},[675,51283,51284],{},"Container nach Beenden löschen",[651,51286,51287,51289],{},[675,51288,28323],{},[675,51290,28326],{},[995,51292,51293],{"id":30145},"Volumes",[3392,51295,51297],{"className":3394,"code":51296,"language":3396,"meta":225,"style":225},"docker volume create myvolume # Volume erstellen\n\ndocker volume ls # Alle Volumes\n\ndocker volume inspect myvolume # Details\n\ndocker volume rm myvolume # Löschen\n\n# Mit Volume starten\n\ndocker run -v myvolume:\u002Fdata ubuntu\n\n# Bind Mount (lokales Verzeichnis)\n\ndocker run -v \u002Fhome\u002Fuser\u002Fhtml:\u002Fusr\u002Fshare\u002Fnginx\u002Fhtml nginx\n\n",[3398,51298,51299,51315,51319,51330,51334,51347,51351,51363,51367,51372,51376,51390,51394,51399,51403],{"__ignoreMap":225},[2915,51300,51301,51303,51306,51309,51312],{"class":3402,"line":3403},[2915,51302,6792],{"class":3406},[2915,51304,51305],{"class":3414}," volume",[2915,51307,51308],{"class":3414}," create",[2915,51310,51311],{"class":3414}," myvolume",[2915,51313,51314],{"class":3511}," # Volume erstellen\n",[2915,51316,51317],{"class":3402,"line":1117},[2915,51318,3506],{"emptyLinePlaceholder":3505},[2915,51320,51321,51323,51325,51327],{"class":3402,"line":1125},[2915,51322,6792],{"class":3406},[2915,51324,51305],{"class":3414},[2915,51326,50896],{"class":3414},[2915,51328,51329],{"class":3511}," # Alle Volumes\n",[2915,51331,51332],{"class":3402,"line":3515},[2915,51333,3506],{"emptyLinePlaceholder":3505},[2915,51335,51336,51338,51340,51342,51344],{"class":3402,"line":3520},[2915,51337,6792],{"class":3406},[2915,51339,51305],{"class":3414},[2915,51341,29302],{"class":3414},[2915,51343,51311],{"class":3414},[2915,51345,51346],{"class":3511}," # Details\n",[2915,51348,51349],{"class":3402,"line":5070},[2915,51350,3506],{"emptyLinePlaceholder":3505},[2915,51352,51353,51355,51357,51359,51361],{"class":3402,"line":5075},[2915,51354,6792],{"class":3406},[2915,51356,51305],{"class":3414},[2915,51358,8545],{"class":3414},[2915,51360,51311],{"class":3414},[2915,51362,51101],{"class":3511},[2915,51364,51365],{"class":3402,"line":5093},[2915,51366,3506],{"emptyLinePlaceholder":3505},[2915,51368,51369],{"class":3402,"line":5098},[2915,51370,51371],{"class":3511},"# Mit Volume starten\n",[2915,51373,51374],{"class":3402,"line":5207},[2915,51375,3506],{"emptyLinePlaceholder":3505},[2915,51377,51378,51380,51382,51384,51387],{"class":3402,"line":5212},[2915,51379,6792],{"class":3406},[2915,51381,6795],{"class":3414},[2915,51383,16455],{"class":3410},[2915,51385,51386],{"class":3414}," myvolume:\u002Fdata",[2915,51388,51389],{"class":3414}," ubuntu\n",[2915,51391,51392],{"class":3402,"line":5218},[2915,51393,3506],{"emptyLinePlaceholder":3505},[2915,51395,51396],{"class":3402,"line":5223},[2915,51397,51398],{"class":3511},"# Bind Mount (lokales Verzeichnis)\n",[2915,51400,51401],{"class":3402,"line":5229},[2915,51402,3506],{"emptyLinePlaceholder":3505},[2915,51404,51405,51407,51409,51411,51414],{"class":3402,"line":5253},[2915,51406,6792],{"class":3406},[2915,51408,6795],{"class":3414},[2915,51410,16455],{"class":3410},[2915,51412,51413],{"class":3414}," \u002Fhome\u002Fuser\u002Fhtml:\u002Fusr\u002Fshare\u002Fnginx\u002Fhtml",[2915,51415,6968],{"class":3414},[995,51417,51419],{"id":51418},"netzwerke","Netzwerke",[3392,51421,51423],{"className":3394,"code":51422,"language":3396,"meta":225,"style":225},"docker network create mynetwork # Netzwerk erstellen\n\ndocker network rm mynetwork # Netzwerk löschen\n\n# Container im gleichen Netzwerk können sich über Namen erreichen:\n\ndocker run -d --network mynetwork --name db mongo\n\ndocker run -d --network mynetwork --name app node-app\n\n# → app kann db über \"db\" als Hostname ansprechen\n\n",[3398,51424,51425,51440,51444,51457,51461,51466,51470,51491,51495,51515,51519],{"__ignoreMap":225},[2915,51426,51427,51429,51432,51434,51437],{"class":3402,"line":3403},[2915,51428,6792],{"class":3406},[2915,51430,51431],{"class":3414}," network",[2915,51433,51308],{"class":3414},[2915,51435,51436],{"class":3414}," mynetwork",[2915,51438,51439],{"class":3511}," # Netzwerk erstellen\n",[2915,51441,51442],{"class":3402,"line":1117},[2915,51443,3506],{"emptyLinePlaceholder":3505},[2915,51445,51446,51448,51450,51452,51454],{"class":3402,"line":1125},[2915,51447,6792],{"class":3406},[2915,51449,51431],{"class":3414},[2915,51451,8545],{"class":3414},[2915,51453,51436],{"class":3414},[2915,51455,51456],{"class":3511}," # Netzwerk löschen\n",[2915,51458,51459],{"class":3402,"line":3515},[2915,51460,3506],{"emptyLinePlaceholder":3505},[2915,51462,51463],{"class":3402,"line":3520},[2915,51464,51465],{"class":3511},"# Container im gleichen Netzwerk können sich über Namen erreichen:\n",[2915,51467,51468],{"class":3402,"line":5070},[2915,51469,3506],{"emptyLinePlaceholder":3505},[2915,51471,51472,51474,51476,51478,51481,51483,51485,51488],{"class":3402,"line":5075},[2915,51473,6792],{"class":3406},[2915,51475,6795],{"class":3414},[2915,51477,6798],{"class":3410},[2915,51479,51480],{"class":3410}," --network",[2915,51482,51436],{"class":3414},[2915,51484,6962],{"class":3410},[2915,51486,51487],{"class":3414}," db",[2915,51489,51490],{"class":3414}," mongo\n",[2915,51492,51493],{"class":3402,"line":5093},[2915,51494,3506],{"emptyLinePlaceholder":3505},[2915,51496,51497,51499,51501,51503,51505,51507,51509,51512],{"class":3402,"line":5098},[2915,51498,6792],{"class":3406},[2915,51500,6795],{"class":3414},[2915,51502,6798],{"class":3410},[2915,51504,51480],{"class":3410},[2915,51506,51436],{"class":3414},[2915,51508,6962],{"class":3410},[2915,51510,51511],{"class":3414}," app",[2915,51513,51514],{"class":3414}," node-app\n",[2915,51516,51517],{"class":3402,"line":5207},[2915,51518,3506],{"emptyLinePlaceholder":3505},[2915,51520,51521],{"class":3402,"line":5212},[2915,51522,51523],{"class":3511},"# → app kann db über \"db\" als Hostname ansprechen\n",[228,51525,51527],{"id":51526},"dockerfile-image-erstellen","Dockerfile – Image erstellen",[3392,51529,51531],{"className":7163,"code":51530,"language":7165,"meta":225,"style":225},"# Basis-Image\n\nFROM python:3.10-slim\n\n# Arbeitsverzeichnis setzen\n\nWORKDIR \u002Fapp\n\n# Abhängigkeiten zuerst kopieren (Layer-Cache!)\n\nCOPY requirements.txt .\n\nRUN pip install -r requirements.txt\n\n# Quellcode kopieren\n\nCOPY . .\n\n# Benutzer erstellen (Sicherheit!)\n\nRUN addgroup app && adduser -S -G app app\n\nUSER app\n\n# Port dokumentieren\n\nEXPOSE 5000\n\n# Umgebungsvariable\n\nENV APP_ENV=production\n\n# Startbefehl (Exec-Format bevorzugt!)\n\nCMD [\"python\", \"app.py\"]\n\n",[3398,51532,51533,51538,51542,51549,51553,51558,51562,51568,51572,51577,51581,51588,51592,51599,51603,51608,51612,51619,51623,51628,51632,51639,51643,51650,51654,51659,51663,51670,51674,51679,51683,51690,51694,51699,51703],{"__ignoreMap":225},[2915,51534,51535],{"class":3402,"line":3403},[2915,51536,51537],{"class":3511},"# Basis-Image\n",[2915,51539,51540],{"class":3402,"line":1117},[2915,51541,3506],{"emptyLinePlaceholder":3505},[2915,51543,51544,51546],{"class":3402,"line":1125},[2915,51545,7190],{"class":3533},[2915,51547,51548],{"class":3529}," python:3.10-slim\n",[2915,51550,51551],{"class":3402,"line":3515},[2915,51552,3506],{"emptyLinePlaceholder":3505},[2915,51554,51555],{"class":3402,"line":3520},[2915,51556,51557],{"class":3511},"# Arbeitsverzeichnis setzen\n",[2915,51559,51560],{"class":3402,"line":5070},[2915,51561,3506],{"emptyLinePlaceholder":3505},[2915,51563,51564,51566],{"class":3402,"line":5075},[2915,51565,7250],{"class":3533},[2915,51567,7448],{"class":3529},[2915,51569,51570],{"class":3402,"line":5093},[2915,51571,3506],{"emptyLinePlaceholder":3505},[2915,51573,51574],{"class":3402,"line":5098},[2915,51575,51576],{"class":3511},"# Abhängigkeiten zuerst kopieren (Layer-Cache!)\n",[2915,51578,51579],{"class":3402,"line":5207},[2915,51580,3506],{"emptyLinePlaceholder":3505},[2915,51582,51583,51585],{"class":3402,"line":5212},[2915,51584,7274],{"class":3533},[2915,51586,51587],{"class":3529}," requirements.txt .\n",[2915,51589,51590],{"class":3402,"line":5218},[2915,51591,3506],{"emptyLinePlaceholder":3505},[2915,51593,51594,51596],{"class":3402,"line":5223},[2915,51595,7298],{"class":3533},[2915,51597,51598],{"class":3529}," pip install -r requirements.txt\n",[2915,51600,51601],{"class":3402,"line":5229},[2915,51602,3506],{"emptyLinePlaceholder":3505},[2915,51604,51605],{"class":3402,"line":5253},[2915,51606,51607],{"class":3511},"# Quellcode kopieren\n",[2915,51609,51610],{"class":3402,"line":5266},[2915,51611,3506],{"emptyLinePlaceholder":3505},[2915,51613,51614,51616],{"class":3402,"line":5721},[2915,51615,7274],{"class":3533},[2915,51617,51618],{"class":3529}," . .\n",[2915,51620,51621],{"class":3402,"line":9401},[2915,51622,3506],{"emptyLinePlaceholder":3505},[2915,51624,51625],{"class":3402,"line":9406},[2915,51626,51627],{"class":3511},"# Benutzer erstellen (Sicherheit!)\n",[2915,51629,51630],{"class":3402,"line":9411},[2915,51631,3506],{"emptyLinePlaceholder":3505},[2915,51633,51634,51636],{"class":3402,"line":9416},[2915,51635,7298],{"class":3533},[2915,51637,51638],{"class":3529}," addgroup app && adduser -S -G app app\n",[2915,51640,51641],{"class":3402,"line":9428},[2915,51642,3506],{"emptyLinePlaceholder":3505},[2915,51644,51645,51647],{"class":3402,"line":9433},[2915,51646,28882],{"class":3533},[2915,51648,51649],{"class":3529}," app\n",[2915,51651,51652],{"class":3402,"line":9454},[2915,51653,3506],{"emptyLinePlaceholder":3505},[2915,51655,51656],{"class":3402,"line":9459},[2915,51657,51658],{"class":3511},"# Port dokumentieren\n",[2915,51660,51661],{"class":3402,"line":9464},[2915,51662,3506],{"emptyLinePlaceholder":3505},[2915,51664,51665,51667],{"class":3402,"line":9469},[2915,51666,7353],{"class":3533},[2915,51668,51669],{"class":3529}," 5000\n",[2915,51671,51672],{"class":3402,"line":9479},[2915,51673,3506],{"emptyLinePlaceholder":3505},[2915,51675,51676],{"class":3402,"line":9484},[2915,51677,51678],{"class":3511},"# Umgebungsvariable\n",[2915,51680,51681],{"class":3402,"line":9489},[2915,51682,3506],{"emptyLinePlaceholder":3505},[2915,51684,51685,51687],{"class":3402,"line":9494},[2915,51686,7238],{"class":3533},[2915,51688,51689],{"class":3529}," APP_ENV=production\n",[2915,51691,51692],{"class":3402,"line":9504},[2915,51693,3506],{"emptyLinePlaceholder":3505},[2915,51695,51696],{"class":3402,"line":9509},[2915,51697,51698],{"class":3511},"# Startbefehl (Exec-Format bevorzugt!)\n",[2915,51700,51701],{"class":3402,"line":9514},[2915,51702,3506],{"emptyLinePlaceholder":3505},[2915,51704,51705,51707,51709,51711,51713,51715],{"class":3402,"line":9519},[2915,51706,7341],{"class":3533},[2915,51708,7373],{"class":3529},[2915,51710,7376],{"class":3414},[2915,51712,7379],{"class":3529},[2915,51714,7382],{"class":3414},[2915,51716,7385],{"class":3529},[995,51718,51720],{"id":51719},"wichtige-dockerfile-anweisungen","Wichtige Dockerfile-Anweisungen:",[645,51722,51723,51736],{},[648,51724,51725],{},[651,51726,51727,51732],{},[654,51728,51729],{},[26,51730,51731],{},"Anweisung",[654,51733,51734],{},[26,51735,4550],{},[670,51737,51738,51745,51751,51758,51765,51772,51779,51786,51792,51799,51805],{},[651,51739,51740,51742],{},[675,51741,7190],{},[675,51743,51744],{},"Basis-Image",[651,51746,51747,51749],{},[675,51748,7250],{},[675,51750,28387],{},[651,51752,51753,51755],{},[675,51754,7274],{},[675,51756,51757],{},"Dateien in Container kopieren",[651,51759,51760,51762],{},[675,51761,7298],{},[675,51763,51764],{},"Befehl beim Image-Build ausführen",[651,51766,51767,51769],{},[675,51768,7341],{},[675,51770,51771],{},"Startbefehl (überschreibbar)",[651,51773,51774,51776],{},[675,51775,28921],{},[675,51777,51778],{},"Startbefehl (schwer überschreibbar)",[651,51780,51781,51783],{},[675,51782,7353],{},[675,51784,51785],{},"Port dokumentieren",[651,51787,51788,51790],{},[675,51789,7238],{},[675,51791,4825],{},[651,51793,51794,51796],{},[675,51795,7172],{},[675,51797,51798],{},"Build-Argument",[651,51800,51801,51803],{},[675,51802,28882],{},[675,51804,34609],{},[651,51806,51807,51810],{},[675,51808,51809],{},".dockerignore",[675,51811,51812],{},"Dateien vom Build ausschließen",[995,51814,51816],{"id":51815},"multi-stage-build-image-optimierung","Multi-Stage Build (Image-Optimierung):",[3392,51818,51820],{"className":7163,"code":51819,"language":7165,"meta":225,"style":225},"# Stage 1: Build\n\nFROM node:14 AS build\n\nWORKDIR \u002Fapp\n\nCOPY . .\n\nRUN npm install && npm run build\n\n# Stage 2: Production (nur fertiges Ergebnis!)\n\nFROM nginx:alpine\n\nCOPY --from=build \u002Fapp\u002Fbuild \u002Fusr\u002Fshare\u002Fnginx\u002Fhtml\n\n",[3398,51821,51822,51827,51831,51844,51848,51854,51858,51864,51868,51875,51879,51884,51888,51894,51898],{"__ignoreMap":225},[2915,51823,51824],{"class":3402,"line":3403},[2915,51825,51826],{"class":3511},"# Stage 1: Build\n",[2915,51828,51829],{"class":3402,"line":1117},[2915,51830,3506],{"emptyLinePlaceholder":3505},[2915,51832,51833,51835,51838,51841],{"class":3402,"line":1125},[2915,51834,7190],{"class":3533},[2915,51836,51837],{"class":3529}," node:14 ",[2915,51839,51840],{"class":3533},"AS",[2915,51842,51843],{"class":3529}," build\n",[2915,51845,51846],{"class":3402,"line":3515},[2915,51847,3506],{"emptyLinePlaceholder":3505},[2915,51849,51850,51852],{"class":3402,"line":3520},[2915,51851,7250],{"class":3533},[2915,51853,7448],{"class":3529},[2915,51855,51856],{"class":3402,"line":5070},[2915,51857,3506],{"emptyLinePlaceholder":3505},[2915,51859,51860,51862],{"class":3402,"line":5075},[2915,51861,7274],{"class":3533},[2915,51863,51618],{"class":3529},[2915,51865,51866],{"class":3402,"line":5093},[2915,51867,3506],{"emptyLinePlaceholder":3505},[2915,51869,51870,51872],{"class":3402,"line":5098},[2915,51871,7298],{"class":3533},[2915,51873,51874],{"class":3529}," npm install && npm run build\n",[2915,51876,51877],{"class":3402,"line":5207},[2915,51878,3506],{"emptyLinePlaceholder":3505},[2915,51880,51881],{"class":3402,"line":5212},[2915,51882,51883],{"class":3511},"# Stage 2: Production (nur fertiges Ergebnis!)\n",[2915,51885,51886],{"class":3402,"line":5218},[2915,51887,3506],{"emptyLinePlaceholder":3505},[2915,51889,51890,51892],{"class":3402,"line":5223},[2915,51891,7190],{"class":3533},[2915,51893,29057],{"class":3529},[2915,51895,51896],{"class":3402,"line":5229},[2915,51897,3506],{"emptyLinePlaceholder":3505},[2915,51899,51900,51902],{"class":3402,"line":5253},[2915,51901,7274],{"class":3533},[2915,51903,51904],{"class":3529}," --from=build \u002Fapp\u002Fbuild \u002Fusr\u002Fshare\u002Fnginx\u002Fhtml\n",[995,51906,51908],{"id":51907},"layer-cache-optimierung","Layer-Cache-Optimierung:",[20,51910,51911,51920],{},[23,51912,51913,51916,51917,51919],{},[26,51914,51915],{},"Stabile Dateien"," (package.json) ",[26,51918,18022],{}," veränderlichen Dateien (Quellcode) kopieren",[23,51921,51922],{},"So werden Abhängigkeiten nur bei Änderung neu installiert",[228,51924,51926],{"id":51925},"container-lebenszyklus","Container-Lebenszyklus:",[16,51928,51929,51930,51932,51933,51935],{},"Erstellt → docker run → Running → docker stop → Stopped",[5885,51931],{},"\n→ docker kill → Gelöscht",[5885,51934],{},"\nRunning → docker pause → Paused → docker unpause → Running",[54,51937,51939],{"id":51938},"docker-compose","Docker Compose",[228,51941,8604],{"id":51942},"grundprinzip-4",[3392,51944,51946],{"className":3394,"code":51945,"language":3396,"meta":225,"style":225},"docker compose (früher: docker-compose) ermöglicht die Definition und Verwaltung mehrerer zusammengehöriger Container (Multi-Container-Anwendungen) über eine einzige YAML-Konfigurationsdatei.\n\ndocker compose [OPTIONEN] BEFEHL\n\n",[3398,51947,51948,51967,51971],{"__ignoreMap":225},[2915,51949,51950,51952,51954,51957,51959,51962,51964],{"class":3402,"line":3403},[2915,51951,6792],{"class":3406},[2915,51953,31784],{"class":3414},[2915,51955,51956],{"class":3529}," (früher: ",[2915,51958,51938],{"class":3414},[2915,51960,51961],{"class":3529},") ermöglicht die Definition und Verwaltung mehrerer zusammengehöriger Container (",[2915,51963,29330],{"class":3406},[2915,51965,51966],{"class":3529},") über eine einzige YAML-Konfigurationsdatei.\n",[2915,51968,51969],{"class":3402,"line":1117},[2915,51970,3506],{"emptyLinePlaceholder":3505},[2915,51972,51973,51975,51977],{"class":3402,"line":1125},[2915,51974,6792],{"class":3406},[2915,51976,31784],{"class":3414},[2915,51978,51979],{"class":3529}," [OPTIONEN] BEFEHL\n",[11,51981,51983],{"id":51982},"konfigurationsdatei-docker-composeyml-oder-docker-composeyaml","Konfigurationsdatei: docker-compose.yml (oder docker-compose.yaml)",[228,51985,29352],{"id":29351},[645,51987,51988,52000],{},[648,51989,51990],{},[651,51991,51992,51996],{},[654,51993,51994],{},[26,51995,6993],{},[654,51997,51998],{},[26,51999,5483],{},[670,52001,52002,52008,52014,52021,52028,52034,52040,52047,52054,52061,52067,52074,52080,52086,52092,52099,52106,52112,52119,52126,52133,52140],{},[651,52003,52004,52006],{},[675,52005,29373],{},[675,52007,29376],{},[651,52009,52010,52012],{},[675,52011,29381],{},[675,52013,29384],{},[651,52015,52016,52018],{},[675,52017,29389],{},[675,52019,52020],{},"Gestoppte Container starten",[651,52022,52023,52025],{},[675,52024,29397],{},[675,52026,52027],{},"Container graceful stoppen",[651,52029,52030,52032],{},[675,52031,29405],{},[675,52033,28056],{},[651,52035,52036,52038],{},[675,52037,29412],{},[675,52039,29415],{},[651,52041,52042,52044],{},[675,52043,29420],{},[675,52045,52046],{},"Container fortsetzen",[651,52048,52049,52051],{},[675,52050,29428],{},[675,52052,52053],{},"Images neu bauen",[651,52055,52056,52058],{},[675,52057,29436],{},[675,52059,52060],{},"Images herunterladen",[651,52062,52063,52065],{},[675,52064,29444],{},[675,52066,29447],{},[651,52068,52069,52071],{},[675,52070,7673],{},[675,52072,52073],{},"Status der Container anzeigen",[651,52075,52076,52078],{},[675,52077,29459],{},[675,52079,28102],{},[651,52081,52082,52084],{},[675,52083,29467],{},[675,52085,28094],{},[651,52087,52088,52090],{},[675,52089,29474],{},[675,52091,29477],{},[651,52093,52094,52096],{},[675,52095,29482],{},[675,52097,52098],{},"Konfiguration anzeigen\u002Fvalidieren",[651,52100,52101,52103],{},[675,52102,27892],{},[675,52104,52105],{},"Images der Services auflisten",[651,52107,52108,52110],{},[675,52109,10086],{},[675,52111,29499],{},[651,52113,52114,52116],{},[675,52115,29504],{},[675,52117,52118],{},"Container mit Signal beenden",[651,52120,52121,52123],{},[675,52122,3185],{},[675,52124,52125],{},"Prozesse in Containern anzeigen",[651,52127,52128,52130],{},[675,52129,29519],{},[675,52131,52132],{},"Echtzeit-Ereignisse ausgeben",[651,52134,52135,52137],{},[675,52136,29527],{},[675,52138,52139],{},"Port-Mapping eines Services anzeigen",[651,52141,52142,52144],{},[675,52143,29558],{},[675,52145,29561],{},[228,52147,29565],{"id":29564},[645,52149,52150,52162],{},[648,52151,52152],{},[651,52153,52154,52158],{},[654,52155,52156],{},[26,52157,7715],{},[654,52159,52160],{},[26,52161,5483],{},[670,52163,52164,52170,52177,52184,52190,52196,52202,52208,52216],{},[651,52165,52166,52168],{},[675,52167,28275],{},[675,52169,29588],{},[651,52171,52172,52174],{},[675,52173,29593],{},[675,52175,52176],{},"Images vor dem Start neu bauen",[651,52178,52179,52181],{},[675,52180,29601],{},[675,52182,52183],{},"Images nicht neu bauen",[651,52185,52186,52188],{},[675,52187,29609],{},[675,52189,29612],{},[651,52191,52192,52194],{},[675,52193,29617],{},[675,52195,29620],{},[651,52197,52198,52200],{},[675,52199,29633],{},[675,52201,29636],{},[651,52203,52204,52206],{},[675,52205,29641],{},[675,52207,29644],{},[651,52209,52210,52213],{},[675,52211,52212],{},"--timeout N",[675,52214,52215],{},"Timeout in Sekunden (Standard: 10)",[651,52217,52218,52220],{},[675,52219,29657],{},[675,52221,29660],{},[228,52223,29688],{"id":29687},[645,52225,52226,52238],{},[648,52227,52228],{},[651,52229,52230,52234],{},[654,52231,52232],{},[26,52233,7715],{},[654,52235,52236],{},[26,52237,5483],{},[670,52239,52240,52247,52254,52260,52266],{},[651,52241,52242,52244],{},[675,52243,29709],{},[675,52245,52246],{},"Volumes ebenfalls löschen",[651,52248,52249,52251],{},[675,52250,29717],{},[675,52252,52253],{},"Alle Images entfernen",[651,52255,52256,52258],{},[675,52257,29725],{},[675,52259,29728],{},[651,52261,52262,52264],{},[675,52263,29633],{},[675,52265,29735],{},[651,52267,52268,52270],{},[675,52269,29649],{},[675,52271,52272],{},"Timeout setzen",[228,52274,29746],{"id":29745},[645,52276,52277,52289],{},[648,52278,52279],{},[651,52280,52281,52285],{},[654,52282,52283],{},[26,52284,7715],{},[654,52286,52287],{},[26,52288,5483],{},[670,52290,52291,52298,52304,52311],{},[651,52292,52293,52295],{},[675,52294,29767],{},[675,52296,52297],{},"Log live verfolgen",[651,52299,52300,52302],{},[675,52301,29775],{},[675,52303,29778],{},[651,52305,52306,52308],{},[675,52307,29783],{},[675,52309,52310],{},"Zeitstempel anzeigen",[651,52312,52313,52315],{},[675,52314,29791],{},[675,52316,52317],{},"Service-Name nicht voranstellen",[228,52319,29814],{"id":29813},[645,52321,52322,52334],{},[648,52323,52324],{},[651,52325,52326,52330],{},[654,52327,52328],{},[26,52329,7715],{},[654,52331,52332],{},[26,52333,5483],{},[670,52335,52336,52342,52348,52354],{},[651,52337,52338,52340],{},[675,52339,28283],{},[675,52341,29837],{},[651,52343,52344,52346],{},[675,52345,28371],{},[675,52347,29844],{},[651,52349,52350,52352],{},[675,52351,28323],{},[675,52353,28326],{},[651,52355,52356,52358],{},[675,52357,28384],{},[675,52359,29857],{},[228,52361,29877],{"id":29876},[645,52363,52364,52376],{},[648,52365,52366],{},[651,52367,52368,52372],{},[654,52369,52370],{},[26,52371,7715],{},[654,52373,52374],{},[26,52375,5483],{},[670,52377,52378,52384,52391,52397,52403],{},[651,52379,52380,52382],{},[675,52381,18176],{},[675,52383,29900],{},[651,52385,52386,52388],{},[675,52387,29905],{},[675,52389,52390],{},"Projektname setzen (Standard: Verzeichnisname)",[651,52392,52393,52395],{},[675,52394,29913],{},[675,52396,29916],{},[651,52398,52399,52401],{},[675,52400,28331],{},[675,52402,29923],{},[651,52404,52405,52408],{},[675,52406,52407],{},"--progress STRING",[675,52409,52410],{},"Ausgabestil: auto, tty, plain, quiet",[228,52412,52414],{"id":52413},"aufbau-einer-docker-composeyml","Aufbau einer docker-compose.yml",[3392,52416,52418],{"className":29954,"code":52417,"language":29956,"meta":225,"style":225},"version: '3.9'\n\nservices:\n\nwebserver:\n\nimage: 'nginx:alpine'\n\ncontainer_name: mein-nginx\n\nhostname: webserver\n\nrestart: always\n\nports:\n\n- '80:80'\n\n- '443:443'\n\nvolumes:\n\n- '.\u002Fhtml:\u002Fusr\u002Fshare\u002Fnginx\u002Fhtml'\n\n- 'nginx_conf:\u002Fetc\u002Fnginx'\n\nenvironment:\n\n- NGINX_HOST=example.com\n\nenv_file:\n\n- .env\n\nnetworks:\n\n- frontend\n\ndepends_on:\n\n- app\n\nhealthcheck:\n\ntest:\n\n- CMD\n\n- curl\n\n- '-f'\n\n- 'http:\u002F\u002Flocalhost'\n\ninterval: 30s\n\ntimeout: 10s\n\nretries: 3\n\nstart_period: 40s\n\nlabels:\n\n- traefik.enable=true\n\nlogging:\n\ndriver: json-file\n\noptions:\n\nmax-size: 10m\n\nmax-file: '3'\n\napp:\n\nbuild:\n\ncontext: .\u002Fapp\n\ndockerfile: Dockerfile.prod\n\nargs:\n\n- BUILD_VERSION=1.0\n\nimage: 'meine-app:latest'\n\nrestart: unless-stopped\n\nports:\n\n- '3000:3000'\n\nvolumes:\n\n- 'app_data:\u002Fapp\u002Fdata'\n\nenvironment:\n\nDATABASE_URL: 'postgres:\u002F\u002Fuser:pass@db:5432\u002Fmydb'\n\nNODE_ENV: production\n\nnetworks:\n\n- frontend\n\n- backend\n\ndepends_on:\n\ndb:\n\ncondition: service_healthy\n\ndb:\n\nimage: 'postgres:15'\n\nrestart: always\n\nvolumes:\n\n- 'db_data:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata'\n\nenvironment:\n\nPOSTGRES_DB: mydb\n\nPOSTGRES_USER: user\n\nPOSTGRES_PASSWORD: pass\n\nnetworks:\n\n- backend\n\nhealthcheck:\n\ntest:\n\n- CMD-SHELL\n\n- pg_isready -U user -d mydb\n\ninterval: 10s\n\ntimeout: 5s\n\nretries: 5\n\nvolumes:\n\nnginx_conf: null\n\napp_data: null\n\ndb_data:\n\ndriver: local\n\ndriver_opts:\n\ntype: none\n\no: bind\n\ndevice: \u002Fmnt\u002Fdata\u002Fpostgres\n\nnetworks:\n\nfrontend:\n\ndriver: bridge\n\nbackend:\n\ndriver: bridge\n\ninternal: true\n\nextern_netz:\n\nexternal: true\n\nname: mein-netz\n\n",[3398,52419,52420,52428,52432,52438,52442,52449,52453,52462,52466,52475,52479,52488,52492,52500,52504,52510,52514,52521,52525,52532,52536,52542,52546,52553,52557,52564,52568,52574,52578,52585,52589,52595,52599,52605,52609,52615,52619,52625,52629,52635,52639,52646,52650,52656,52660,52666,52670,52676,52680,52686,52690,52696,52700,52707,52711,52719,52723,52731,52735,52743,52747,52756,52760,52766,52770,52776,52780,52786,52790,52798,52802,52808,52812,52820,52824,52832,52836,52842,52846,52852,52856,52865,52869,52878,52882,52888,52892,52899,52903,52912,52916,52924,52928,52934,52938,52944,52948,52954,52958,52965,52969,52975,52979,52989,52993,53002,53006,53012,53016,53022,53026,53033,53037,53043,53047,53054,53058,53066,53070,53076,53080,53089,53093,53101,53105,53111,53115,53121,53125,53131,53135,53144,53148,53157,53161,53170,53174,53180,53184,53190,53194,53200,53204,53210,53214,53220,53224,53231,53235,53243,53247,53255,53259,53267,53271,53277,53281,53290,53294,53303,53307,53313,53317,53325,53329,53335,53339,53347,53351,53359,53363,53372,53376,53382,53386,53392,53396,53404,53408,53414,53418,53426,53430,53438,53442,53449,53453,53461,53465],{"__ignoreMap":225},[2915,52421,52422,52424,52426],{"class":3402,"line":3403},[2915,52423,29558],{"class":29963},[2915,52425,6162],{"class":3529},[2915,52427,29968],{"class":3414},[2915,52429,52430],{"class":3402,"line":1117},[2915,52431,3506],{"emptyLinePlaceholder":3505},[2915,52433,52434,52436],{"class":3402,"line":1125},[2915,52435,29977],{"class":29963},[2915,52437,1554],{"class":3529},[2915,52439,52440],{"class":3402,"line":3515},[2915,52441,3506],{"emptyLinePlaceholder":3505},[2915,52443,52444,52447],{"class":3402,"line":3520},[2915,52445,52446],{"class":29963},"webserver",[2915,52448,1554],{"class":3529},[2915,52450,52451],{"class":3402,"line":5070},[2915,52452,3506],{"emptyLinePlaceholder":3505},[2915,52454,52455,52457,52459],{"class":3402,"line":5075},[2915,52456,30059],{"class":29963},[2915,52458,6162],{"class":3529},[2915,52460,52461],{"class":3414},"'nginx:alpine'\n",[2915,52463,52464],{"class":3402,"line":5093},[2915,52465,3506],{"emptyLinePlaceholder":3505},[2915,52467,52468,52470,52472],{"class":3402,"line":5098},[2915,52469,30073],{"class":29963},[2915,52471,6162],{"class":3529},[2915,52473,52474],{"class":3414},"mein-nginx\n",[2915,52476,52477],{"class":3402,"line":5207},[2915,52478,3506],{"emptyLinePlaceholder":3505},[2915,52480,52481,52483,52485],{"class":3402,"line":5212},[2915,52482,10761],{"class":29963},[2915,52484,6162],{"class":3529},[2915,52486,52487],{"class":3414},"webserver\n",[2915,52489,52490],{"class":3402,"line":5218},[2915,52491,3506],{"emptyLinePlaceholder":3505},[2915,52493,52494,52496,52498],{"class":3402,"line":5223},[2915,52495,29405],{"class":29963},[2915,52497,6162],{"class":3529},[2915,52499,30647],{"class":3414},[2915,52501,52502],{"class":3402,"line":5229},[2915,52503,3506],{"emptyLinePlaceholder":3505},[2915,52505,52506,52508],{"class":3402,"line":5253},[2915,52507,30112],{"class":29963},[2915,52509,1554],{"class":3529},[2915,52511,52512],{"class":3402,"line":5266},[2915,52513,3506],{"emptyLinePlaceholder":3505},[2915,52515,52516,52518],{"class":3402,"line":5721},[2915,52517,30047],{"class":3529},[2915,52519,52520],{"class":3414},"'80:80'\n",[2915,52522,52523],{"class":3402,"line":9401},[2915,52524,3506],{"emptyLinePlaceholder":3505},[2915,52526,52527,52529],{"class":3402,"line":9406},[2915,52528,30047],{"class":3529},[2915,52530,52531],{"class":3414},"'443:443'\n",[2915,52533,52534],{"class":3402,"line":9411},[2915,52535,3506],{"emptyLinePlaceholder":3505},[2915,52537,52538,52540],{"class":3402,"line":9416},[2915,52539,30145],{"class":29963},[2915,52541,1554],{"class":3529},[2915,52543,52544],{"class":3402,"line":9428},[2915,52545,3506],{"emptyLinePlaceholder":3505},[2915,52547,52548,52550],{"class":3402,"line":9433},[2915,52549,30047],{"class":3529},[2915,52551,52552],{"class":3414},"'.\u002Fhtml:\u002Fusr\u002Fshare\u002Fnginx\u002Fhtml'\n",[2915,52554,52555],{"class":3402,"line":9454},[2915,52556,3506],{"emptyLinePlaceholder":3505},[2915,52558,52559,52561],{"class":3402,"line":9459},[2915,52560,30047],{"class":3529},[2915,52562,52563],{"class":3414},"'nginx_conf:\u002Fetc\u002Fnginx'\n",[2915,52565,52566],{"class":3402,"line":9464},[2915,52567,3506],{"emptyLinePlaceholder":3505},[2915,52569,52570,52572],{"class":3402,"line":9469},[2915,52571,30178],{"class":29963},[2915,52573,1554],{"class":3529},[2915,52575,52576],{"class":3402,"line":9479},[2915,52577,3506],{"emptyLinePlaceholder":3505},[2915,52579,52580,52582],{"class":3402,"line":9484},[2915,52581,30047],{"class":3529},[2915,52583,52584],{"class":3414},"NGINX_HOST=example.com\n",[2915,52586,52587],{"class":3402,"line":9489},[2915,52588,3506],{"emptyLinePlaceholder":3505},[2915,52590,52591,52593],{"class":3402,"line":9494},[2915,52592,30216],{"class":29963},[2915,52594,1554],{"class":3529},[2915,52596,52597],{"class":3402,"line":9504},[2915,52598,3506],{"emptyLinePlaceholder":3505},[2915,52600,52601,52603],{"class":3402,"line":9509},[2915,52602,30047],{"class":3529},[2915,52604,30229],{"class":3414},[2915,52606,52607],{"class":3402,"line":9514},[2915,52608,3506],{"emptyLinePlaceholder":3505},[2915,52610,52611,52613],{"class":3402,"line":9519},[2915,52612,30249],{"class":29963},[2915,52614,1554],{"class":3529},[2915,52616,52617],{"class":3402,"line":9524},[2915,52618,3506],{"emptyLinePlaceholder":3505},[2915,52620,52621,52623],{"class":3402,"line":9529},[2915,52622,30047],{"class":3529},[2915,52624,30078],{"class":3414},[2915,52626,52627],{"class":3402,"line":9534},[2915,52628,3506],{"emptyLinePlaceholder":3505},[2915,52630,52631,52633],{"class":3402,"line":9539},[2915,52632,30271],{"class":29963},[2915,52634,1554],{"class":3529},[2915,52636,52637],{"class":3402,"line":9552},[2915,52638,3506],{"emptyLinePlaceholder":3505},[2915,52640,52641,52643],{"class":3402,"line":9557},[2915,52642,30047],{"class":3529},[2915,52644,52645],{"class":3414},"app\n",[2915,52647,52648],{"class":3402,"line":9570},[2915,52649,3506],{"emptyLinePlaceholder":3505},[2915,52651,52652,52654],{"class":3402,"line":9575},[2915,52653,30307],{"class":29963},[2915,52655,1554],{"class":3529},[2915,52657,52658],{"class":3402,"line":9588},[2915,52659,3506],{"emptyLinePlaceholder":3505},[2915,52661,52662,52664],{"class":3402,"line":9593},[2915,52663,5913],{"class":29963},[2915,52665,1554],{"class":3529},[2915,52667,52668],{"class":3402,"line":9598},[2915,52669,3506],{"emptyLinePlaceholder":3505},[2915,52671,52672,52674],{"class":3402,"line":9603},[2915,52673,30047],{"class":3529},[2915,52675,30330],{"class":3414},[2915,52677,52678],{"class":3402,"line":9619},[2915,52679,3506],{"emptyLinePlaceholder":3505},[2915,52681,52682,52684],{"class":3402,"line":9624},[2915,52683,30047],{"class":3529},[2915,52685,30341],{"class":3414},[2915,52687,52688],{"class":3402,"line":9629},[2915,52689,3506],{"emptyLinePlaceholder":3505},[2915,52691,52692,52694],{"class":3402,"line":9634},[2915,52693,30047],{"class":3529},[2915,52695,30352],{"class":3414},[2915,52697,52698],{"class":3402,"line":9642},[2915,52699,3506],{"emptyLinePlaceholder":3505},[2915,52701,52702,52704],{"class":3402,"line":9647},[2915,52703,30047],{"class":3529},[2915,52705,52706],{"class":3414},"'http:\u002F\u002Flocalhost'\n",[2915,52708,52709],{"class":3402,"line":9656},[2915,52710,3506],{"emptyLinePlaceholder":3505},[2915,52712,52713,52715,52717],{"class":3402,"line":9661},[2915,52714,30372],{"class":29963},[2915,52716,6162],{"class":3529},[2915,52718,30377],{"class":3414},[2915,52720,52721],{"class":3402,"line":9666},[2915,52722,3506],{"emptyLinePlaceholder":3505},[2915,52724,52725,52727,52729],{"class":3402,"line":9671},[2915,52726,30386],{"class":29963},[2915,52728,6162],{"class":3529},[2915,52730,30391],{"class":3414},[2915,52732,52733],{"class":3402,"line":9685},[2915,52734,3506],{"emptyLinePlaceholder":3505},[2915,52736,52737,52739,52741],{"class":3402,"line":9690},[2915,52738,30400],{"class":29963},[2915,52740,6162],{"class":3529},[2915,52742,30405],{"class":3410},[2915,52744,52745],{"class":3402,"line":9711},[2915,52746,3506],{"emptyLinePlaceholder":3505},[2915,52748,52749,52751,52753],{"class":3402,"line":9716},[2915,52750,30414],{"class":29963},[2915,52752,6162],{"class":3529},[2915,52754,52755],{"class":3414},"40s\n",[2915,52757,52758],{"class":3402,"line":9721},[2915,52759,3506],{"emptyLinePlaceholder":3505},[2915,52761,52762,52764],{"class":3402,"line":9726},[2915,52763,30492],{"class":29963},[2915,52765,1554],{"class":3529},[2915,52767,52768],{"class":3402,"line":9734},[2915,52769,3506],{"emptyLinePlaceholder":3505},[2915,52771,52772,52774],{"class":3402,"line":9739},[2915,52773,30047],{"class":3529},[2915,52775,30505],{"class":3414},[2915,52777,52778],{"class":3402,"line":9747},[2915,52779,3506],{"emptyLinePlaceholder":3505},[2915,52781,52782,52784],{"class":3402,"line":9752},[2915,52783,30428],{"class":29963},[2915,52785,1554],{"class":3529},[2915,52787,52788],{"class":3402,"line":9760},[2915,52789,3506],{"emptyLinePlaceholder":3505},[2915,52791,52792,52794,52796],{"class":3402,"line":9765},[2915,52793,30439],{"class":29963},[2915,52795,6162],{"class":3529},[2915,52797,30444],{"class":3414},[2915,52799,52800],{"class":3402,"line":9773},[2915,52801,3506],{"emptyLinePlaceholder":3505},[2915,52803,52804,52806],{"class":3402,"line":9778},[2915,52805,30453],{"class":29963},[2915,52807,1554],{"class":3529},[2915,52809,52810],{"class":3402,"line":9786},[2915,52811,3506],{"emptyLinePlaceholder":3505},[2915,52813,52814,52816,52818],{"class":3402,"line":9791},[2915,52815,30464],{"class":29963},[2915,52817,6162],{"class":3529},[2915,52819,30469],{"class":3414},[2915,52821,52822],{"class":3402,"line":9800},[2915,52823,3506],{"emptyLinePlaceholder":3505},[2915,52825,52826,52828,52830],{"class":3402,"line":9805},[2915,52827,30478],{"class":29963},[2915,52829,6162],{"class":3529},[2915,52831,30483],{"class":3414},[2915,52833,52834],{"class":3402,"line":20122},[2915,52835,3506],{"emptyLinePlaceholder":3505},[2915,52837,52838,52840],{"class":3402,"line":20127},[2915,52839,31700],{"class":29963},[2915,52841,1554],{"class":3529},[2915,52843,52844],{"class":3402,"line":20133},[2915,52845,3506],{"emptyLinePlaceholder":3505},[2915,52847,52848,52850],{"class":3402,"line":20138},[2915,52849,29428],{"class":29963},[2915,52851,1554],{"class":3529},[2915,52853,52854],{"class":3402,"line":20150},[2915,52855,3506],{"emptyLinePlaceholder":3505},[2915,52857,52858,52860,52862],{"class":3402,"line":20155},[2915,52859,30009],{"class":29963},[2915,52861,6162],{"class":3529},[2915,52863,52864],{"class":3414},".\u002Fapp\n",[2915,52866,52867],{"class":3402,"line":20161},[2915,52868,3506],{"emptyLinePlaceholder":3505},[2915,52870,52871,52873,52875],{"class":3402,"line":20166},[2915,52872,7165],{"class":29963},[2915,52874,6162],{"class":3529},[2915,52876,52877],{"class":3414},"Dockerfile.prod\n",[2915,52879,52880],{"class":3402,"line":20178},[2915,52881,3506],{"emptyLinePlaceholder":3505},[2915,52883,52884,52886],{"class":3402,"line":20183},[2915,52885,30036],{"class":29963},[2915,52887,1554],{"class":3529},[2915,52889,52890],{"class":3402,"line":20189},[2915,52891,3506],{"emptyLinePlaceholder":3505},[2915,52893,52894,52896],{"class":3402,"line":20194},[2915,52895,30047],{"class":3529},[2915,52897,52898],{"class":3414},"BUILD_VERSION=1.0\n",[2915,52900,52901],{"class":3402,"line":20206},[2915,52902,3506],{"emptyLinePlaceholder":3505},[2915,52904,52905,52907,52909],{"class":3402,"line":20211},[2915,52906,30059],{"class":29963},[2915,52908,6162],{"class":3529},[2915,52910,52911],{"class":3414},"'meine-app:latest'\n",[2915,52913,52914],{"class":3402,"line":20217},[2915,52915,3506],{"emptyLinePlaceholder":3505},[2915,52917,52918,52920,52922],{"class":3402,"line":20222},[2915,52919,29405],{"class":29963},[2915,52921,6162],{"class":3529},[2915,52923,30103],{"class":3414},[2915,52925,52926],{"class":3402,"line":20234},[2915,52927,3506],{"emptyLinePlaceholder":3505},[2915,52929,52930,52932],{"class":3402,"line":20239},[2915,52931,30112],{"class":29963},[2915,52933,1554],{"class":3529},[2915,52935,52936],{"class":3402,"line":20245},[2915,52937,3506],{"emptyLinePlaceholder":3505},[2915,52939,52940,52942],{"class":3402,"line":20250},[2915,52941,30047],{"class":3529},[2915,52943,30125],{"class":3414},[2915,52945,52946],{"class":3402,"line":20256},[2915,52947,3506],{"emptyLinePlaceholder":3505},[2915,52949,52950,52952],{"class":3402,"line":20261},[2915,52951,30145],{"class":29963},[2915,52953,1554],{"class":3529},[2915,52955,52956],{"class":3402,"line":20271},[2915,52957,3506],{"emptyLinePlaceholder":3505},[2915,52959,52960,52962],{"class":3402,"line":20276},[2915,52961,30047],{"class":3529},[2915,52963,52964],{"class":3414},"'app_data:\u002Fapp\u002Fdata'\n",[2915,52966,52967],{"class":3402,"line":20282},[2915,52968,3506],{"emptyLinePlaceholder":3505},[2915,52970,52971,52973],{"class":3402,"line":20287},[2915,52972,30178],{"class":29963},[2915,52974,1554],{"class":3529},[2915,52976,52977],{"class":3402,"line":20297},[2915,52978,3506],{"emptyLinePlaceholder":3505},[2915,52980,52981,52984,52986],{"class":3402,"line":20302},[2915,52982,52983],{"class":29963},"DATABASE_URL",[2915,52985,6162],{"class":3529},[2915,52987,52988],{"class":3414},"'postgres:\u002F\u002Fuser:pass@db:5432\u002Fmydb'\n",[2915,52990,52991],{"class":3402,"line":20308},[2915,52992,3506],{"emptyLinePlaceholder":3505},[2915,52994,52995,52997,52999],{"class":3402,"line":20313},[2915,52996,28579],{"class":29963},[2915,52998,6162],{"class":3529},[2915,53000,53001],{"class":3414},"production\n",[2915,53003,53004],{"class":3402,"line":20323},[2915,53005,3506],{"emptyLinePlaceholder":3505},[2915,53007,53008,53010],{"class":3402,"line":20328},[2915,53009,30249],{"class":29963},[2915,53011,1554],{"class":3529},[2915,53013,53014],{"class":3402,"line":20334},[2915,53015,3506],{"emptyLinePlaceholder":3505},[2915,53017,53018,53020],{"class":3402,"line":20339},[2915,53019,30047],{"class":3529},[2915,53021,30078],{"class":3414},[2915,53023,53024],{"class":3402,"line":20349},[2915,53025,3506],{"emptyLinePlaceholder":3505},[2915,53027,53028,53030],{"class":3402,"line":20354},[2915,53029,30047],{"class":3529},[2915,53031,53032],{"class":3414},"backend\n",[2915,53034,53035],{"class":3402,"line":20360},[2915,53036,3506],{"emptyLinePlaceholder":3505},[2915,53038,53039,53041],{"class":3402,"line":20365},[2915,53040,30271],{"class":29963},[2915,53042,1554],{"class":3529},[2915,53044,53045],{"class":3402,"line":20375},[2915,53046,3506],{"emptyLinePlaceholder":3505},[2915,53048,53049,53052],{"class":3402,"line":20380},[2915,53050,53051],{"class":29963},"db",[2915,53053,1554],{"class":3529},[2915,53055,53056],{"class":3402,"line":20386},[2915,53057,3506],{"emptyLinePlaceholder":3505},[2915,53059,53060,53062,53064],{"class":3402,"line":20391},[2915,53061,30293],{"class":29963},[2915,53063,6162],{"class":3529},[2915,53065,30298],{"class":3414},[2915,53067,53068],{"class":3402,"line":20397},[2915,53069,3506],{"emptyLinePlaceholder":3505},[2915,53071,53072,53074],{"class":3402,"line":20402},[2915,53073,53051],{"class":29963},[2915,53075,1554],{"class":3529},[2915,53077,53078],{"class":3402,"line":20412},[2915,53079,3506],{"emptyLinePlaceholder":3505},[2915,53081,53082,53084,53086],{"class":3402,"line":20417},[2915,53083,30059],{"class":29963},[2915,53085,6162],{"class":3529},[2915,53087,53088],{"class":3414},"'postgres:15'\n",[2915,53090,53091],{"class":3402,"line":20423},[2915,53092,3506],{"emptyLinePlaceholder":3505},[2915,53094,53095,53097,53099],{"class":3402,"line":20428},[2915,53096,29405],{"class":29963},[2915,53098,6162],{"class":3529},[2915,53100,30647],{"class":3414},[2915,53102,53103],{"class":3402,"line":20438},[2915,53104,3506],{"emptyLinePlaceholder":3505},[2915,53106,53107,53109],{"class":3402,"line":20443},[2915,53108,30145],{"class":29963},[2915,53110,1554],{"class":3529},[2915,53112,53113],{"class":3402,"line":20449},[2915,53114,3506],{"emptyLinePlaceholder":3505},[2915,53116,53117,53119],{"class":3402,"line":20454},[2915,53118,30047],{"class":3529},[2915,53120,30945],{"class":3414},[2915,53122,53123],{"class":3402,"line":20464},[2915,53124,3506],{"emptyLinePlaceholder":3505},[2915,53126,53127,53129],{"class":3402,"line":20469},[2915,53128,30178],{"class":29963},[2915,53130,1554],{"class":3529},[2915,53132,53133],{"class":3402,"line":20475},[2915,53134,3506],{"emptyLinePlaceholder":3505},[2915,53136,53137,53139,53141],{"class":3402,"line":20480},[2915,53138,30975],{"class":29963},[2915,53140,6162],{"class":3529},[2915,53142,53143],{"class":3414},"mydb\n",[2915,53145,53146],{"class":3402,"line":20490},[2915,53147,3506],{"emptyLinePlaceholder":3505},[2915,53149,53150,53152,53154],{"class":3402,"line":20495},[2915,53151,30989],{"class":29963},[2915,53153,6162],{"class":3529},[2915,53155,53156],{"class":3414},"user\n",[2915,53158,53159],{"class":3402,"line":20501},[2915,53160,3506],{"emptyLinePlaceholder":3505},[2915,53162,53163,53165,53167],{"class":3402,"line":20506},[2915,53164,31003],{"class":29963},[2915,53166,6162],{"class":3529},[2915,53168,53169],{"class":3414},"pass\n",[2915,53171,53172],{"class":3402,"line":20512},[2915,53173,3506],{"emptyLinePlaceholder":3505},[2915,53175,53176,53178],{"class":3402,"line":20517},[2915,53177,30249],{"class":29963},[2915,53179,1554],{"class":3529},[2915,53181,53182],{"class":3402,"line":20535},[2915,53183,3506],{"emptyLinePlaceholder":3505},[2915,53185,53186,53188],{"class":3402,"line":20540},[2915,53187,30047],{"class":3529},[2915,53189,53032],{"class":3414},[2915,53191,53192],{"class":3402,"line":20546},[2915,53193,3506],{"emptyLinePlaceholder":3505},[2915,53195,53196,53198],{"class":3402,"line":20551},[2915,53197,30307],{"class":29963},[2915,53199,1554],{"class":3529},[2915,53201,53202],{"class":3402,"line":20563},[2915,53203,3506],{"emptyLinePlaceholder":3505},[2915,53205,53206,53208],{"class":3402,"line":20568},[2915,53207,5913],{"class":29963},[2915,53209,1554],{"class":3529},[2915,53211,53212],{"class":3402,"line":20574},[2915,53213,3506],{"emptyLinePlaceholder":3505},[2915,53215,53216,53218],{"class":3402,"line":20579},[2915,53217,30047],{"class":3529},[2915,53219,30828],{"class":3414},[2915,53221,53222],{"class":3402,"line":20589},[2915,53223,3506],{"emptyLinePlaceholder":3505},[2915,53225,53226,53228],{"class":3402,"line":20594},[2915,53227,30047],{"class":3529},[2915,53229,53230],{"class":3414},"pg_isready -U user -d mydb\n",[2915,53232,53233],{"class":3402,"line":20600},[2915,53234,3506],{"emptyLinePlaceholder":3505},[2915,53236,53237,53239,53241],{"class":3402,"line":20605},[2915,53238,30372],{"class":29963},[2915,53240,6162],{"class":3529},[2915,53242,30391],{"class":3414},[2915,53244,53245],{"class":3402,"line":20615},[2915,53246,3506],{"emptyLinePlaceholder":3505},[2915,53248,53249,53251,53253],{"class":3402,"line":20620},[2915,53250,30386],{"class":29963},[2915,53252,6162],{"class":3529},[2915,53254,30864],{"class":3414},[2915,53256,53257],{"class":3402,"line":20626},[2915,53258,3506],{"emptyLinePlaceholder":3505},[2915,53260,53261,53263,53265],{"class":3402,"line":20631},[2915,53262,30400],{"class":29963},[2915,53264,6162],{"class":3529},[2915,53266,30877],{"class":3410},[2915,53268,53269],{"class":3402,"line":20641},[2915,53270,3506],{"emptyLinePlaceholder":3505},[2915,53272,53273,53275],{"class":3402,"line":20646},[2915,53274,30145],{"class":29963},[2915,53276,1554],{"class":3529},[2915,53278,53279],{"class":3402,"line":20652},[2915,53280,3506],{"emptyLinePlaceholder":3505},[2915,53282,53283,53286,53288],{"class":3402,"line":20657},[2915,53284,53285],{"class":29963},"nginx_conf",[2915,53287,6162],{"class":3529},[2915,53289,31304],{"class":3410},[2915,53291,53292],{"class":3402,"line":20663},[2915,53293,3506],{"emptyLinePlaceholder":3505},[2915,53295,53296,53299,53301],{"class":3402,"line":20668},[2915,53297,53298],{"class":29963},"app_data",[2915,53300,6162],{"class":3529},[2915,53302,31304],{"class":3410},[2915,53304,53305],{"class":3402,"line":20678},[2915,53306,3506],{"emptyLinePlaceholder":3505},[2915,53308,53309,53311],{"class":3402,"line":20683},[2915,53310,31271],{"class":29963},[2915,53312,1554],{"class":3529},[2915,53314,53315],{"class":3402,"line":20689},[2915,53316,3506],{"emptyLinePlaceholder":3505},[2915,53318,53319,53321,53323],{"class":3402,"line":20694},[2915,53320,30439],{"class":29963},[2915,53322,6162],{"class":3529},[2915,53324,31288],{"class":3414},[2915,53326,53327],{"class":3402,"line":20705},[2915,53328,3506],{"emptyLinePlaceholder":3505},[2915,53330,53331,53333],{"class":3402,"line":20710},[2915,53332,31342],{"class":29963},[2915,53334,1554],{"class":3529},[2915,53336,53337],{"class":3402,"line":20716},[2915,53338,3506],{"emptyLinePlaceholder":3505},[2915,53340,53341,53343,53345],{"class":3402,"line":20721},[2915,53342,31355],{"class":29963},[2915,53344,6162],{"class":3529},[2915,53346,31360],{"class":3414},[2915,53348,53349],{"class":3402,"line":20733},[2915,53350,3506],{"emptyLinePlaceholder":3505},[2915,53352,53353,53355,53357],{"class":3402,"line":20738},[2915,53354,12309],{"class":29963},[2915,53356,6162],{"class":3529},[2915,53358,31375],{"class":3414},[2915,53360,53361],{"class":3402,"line":20744},[2915,53362,3506],{"emptyLinePlaceholder":3505},[2915,53364,53365,53367,53369],{"class":3402,"line":20749},[2915,53366,31386],{"class":29963},[2915,53368,6162],{"class":3529},[2915,53370,53371],{"class":3414},"\u002Fmnt\u002Fdata\u002Fpostgres\n",[2915,53373,53374],{"class":3402,"line":20762},[2915,53375,3506],{"emptyLinePlaceholder":3505},[2915,53377,53378,53380],{"class":3402,"line":20767},[2915,53379,30249],{"class":29963},[2915,53381,1554],{"class":3529},[2915,53383,53384],{"class":3402,"line":20773},[2915,53385,3506],{"emptyLinePlaceholder":3505},[2915,53387,53388,53390],{"class":3402,"line":20778},[2915,53389,29988],{"class":29963},[2915,53391,1554],{"class":3529},[2915,53393,53394],{"class":3402,"line":20784},[2915,53395,3506],{"emptyLinePlaceholder":3505},[2915,53397,53398,53400,53402],{"class":3402,"line":20789},[2915,53399,30439],{"class":29963},[2915,53401,6162],{"class":3529},[2915,53403,31431],{"class":3414},[2915,53405,53406],{"class":3402,"line":20799},[2915,53407,3506],{"emptyLinePlaceholder":3505},[2915,53409,53410,53412],{"class":3402,"line":20804},[2915,53411,30282],{"class":29963},[2915,53413,1554],{"class":3529},[2915,53415,53416],{"class":3402,"line":20810},[2915,53417,3506],{"emptyLinePlaceholder":3505},[2915,53419,53420,53422,53424],{"class":3402,"line":20815},[2915,53421,30439],{"class":29963},[2915,53423,6162],{"class":3529},[2915,53425,31431],{"class":3414},[2915,53427,53428],{"class":3402,"line":20825},[2915,53429,3506],{"emptyLinePlaceholder":3505},[2915,53431,53432,53434,53436],{"class":3402,"line":20830},[2915,53433,31469],{"class":29963},[2915,53435,6162],{"class":3529},[2915,53437,10257],{"class":3410},[2915,53439,53440],{"class":3402,"line":20836},[2915,53441,3506],{"emptyLinePlaceholder":3505},[2915,53443,53444,53447],{"class":3402,"line":20841},[2915,53445,53446],{"class":29963},"extern_netz",[2915,53448,1554],{"class":3529},[2915,53450,53451],{"class":3402,"line":20847},[2915,53452,3506],{"emptyLinePlaceholder":3505},[2915,53454,53455,53457,53459],{"class":3402,"line":20852},[2915,53456,31497],{"class":29963},[2915,53458,6162],{"class":3529},[2915,53460,10257],{"class":3410},[2915,53462,53463],{"class":3402,"line":20862},[2915,53464,3506],{"emptyLinePlaceholder":3505},[2915,53466,53467,53469,53471],{"class":3402,"line":20867},[2915,53468,27487],{"class":29963},[2915,53470,6162],{"class":3529},[2915,53472,53473],{"class":3414},"mein-netz\n",[228,53475,31520],{"id":31519},[645,53477,53478,53490],{},[648,53479,53480],{},[651,53481,53482,53486],{},[654,53483,53484],{},[26,53485,31531],{},[654,53487,53488],{},[26,53489,5483],{},[670,53491,53492,53499,53506,53512],{},[651,53493,53494,53496],{},[675,53495,31542],{},[675,53497,53498],{},"Nie neu starten (Standard)",[651,53500,53501,53503],{},[675,53502,31550],{},[675,53504,53505],{},"Immer neu starten",[651,53507,53508,53510],{},[675,53509,31558],{},[675,53511,31561],{},[651,53513,53514,53516],{},[675,53515,31566],{},[675,53517,31569],{},[228,53519,31617],{"id":31616},[11,53521,31621],{"id":31620},[3392,53523,53525],{"className":3394,"code":53524,"language":3396,"meta":225,"style":225},"POSTGRES_PASSWORD=geheim123\nAPP_PORT=3000\nIMAGE_TAG=1.5.2\n\n",[3398,53526,53527,53536,53544],{"__ignoreMap":225},[2915,53528,53529,53531,53533],{"class":3402,"line":3403},[2915,53530,31003],{"class":3529},[2915,53532,5137],{"class":3533},[2915,53534,53535],{"class":3414},"geheim123\n",[2915,53537,53538,53540,53542],{"class":3402,"line":1117},[2915,53539,31672],{"class":3529},[2915,53541,5137],{"class":3533},[2915,53543,31677],{"class":3414},[2915,53545,53546,53548,53550],{"class":3402,"line":1125},[2915,53547,31662],{"class":3529},[2915,53549,5137],{"class":3533},[2915,53551,31667],{"class":3414},[16,53553,53554],{},"Im docker-compose.yml verwendbar als:",[3392,53556,53558],{"className":29954,"code":53557,"language":29956,"meta":225,"style":225},"services:\n\napp:\n\nimage: 'meineapp:${IMAGE_TAG}'\n\nports:\n\n- '${APP_PORT}:3000'\n\n",[3398,53559,53560,53566,53570,53576,53580,53589,53593,53599,53603],{"__ignoreMap":225},[2915,53561,53562,53564],{"class":3402,"line":3403},[2915,53563,29977],{"class":29963},[2915,53565,1554],{"class":3529},[2915,53567,53568],{"class":3402,"line":1117},[2915,53569,3506],{"emptyLinePlaceholder":3505},[2915,53571,53572,53574],{"class":3402,"line":1125},[2915,53573,31700],{"class":29963},[2915,53575,1554],{"class":3529},[2915,53577,53578],{"class":3402,"line":3515},[2915,53579,3506],{"emptyLinePlaceholder":3505},[2915,53581,53582,53584,53586],{"class":3402,"line":3520},[2915,53583,30059],{"class":29963},[2915,53585,6162],{"class":3529},[2915,53587,53588],{"class":3414},"'meineapp:${IMAGE_TAG}'\n",[2915,53590,53591],{"class":3402,"line":5070},[2915,53592,3506],{"emptyLinePlaceholder":3505},[2915,53594,53595,53597],{"class":3402,"line":5075},[2915,53596,30112],{"class":29963},[2915,53598,1554],{"class":3529},[2915,53600,53601],{"class":3402,"line":5093},[2915,53602,3506],{"emptyLinePlaceholder":3505},[2915,53604,53605,53607],{"class":3402,"line":5098},[2915,53606,30047],{"class":3529},[2915,53608,31736],{"class":3414},[228,53610,31764],{"id":53611},"praktische-beispiele-1",[11,53613,53615],{"id":53614},"alle-services-starten-hintergrund","Alle Services starten (Hintergrund)",[3392,53617,53619],{"className":3394,"code":53618,"language":3396,"meta":225,"style":225},"docker compose up -d\n\n# Services starten und Live-Logs beobachten\n\ndocker compose up\n\n# Nur bestimmten Service starten\n\ndocker compose up -d db\n\n# Images neu bauen und starten\n\ndocker compose up -d --build\n\n# Status anzeigen\n\ndocker compose ps\n\n# Logs aller Services\n\ndocker compose logs -f\n\n# Logs nur für \"app\" Service, letzte 50 Zeilen\n\ndocker compose logs --tail=50 -f app\n\n# In Container einloggen\n\ndocker compose exec app bash\n\ndocker compose exec db psql -U user -d mydb\n\n# Einmaligen Befehl ausführen\n\ndocker compose run --rm app npm test\n\n# Alles stoppen und entfernen (inkl. Volumes)\n\ndocker compose down -v\n\n# Bestimmte Services neu starten\n\ndocker compose restart app\n\n# Scale (mehrere Instanzen)\n\ndocker compose up -d --scale app=3\n\n# Mit anderem Dateinamen\n\ndocker compose -f docker-compose.prod.yml up -d\n\n# Projektname setzen\n\ndocker compose -p meinprojekt up -d\n\n# Konfiguration validieren\n\ndocker compose config\n\n# Alle Images bauen ohne zu starten\n\ndocker compose build\n\n# Aktuellen Stand der Container\n\ndocker compose top\n\n",[3398,53620,53621,53631,53635,53640,53644,53652,53656,53661,53665,53678,53682,53687,53691,53703,53707,53712,53716,53724,53728,53733,53737,53747,53751,53756,53760,53775,53779,53784,53788,53800,53804,53825,53829,53834,53838,53854,53858,53863,53867,53877,53881,53886,53890,53900,53904,53909,53913,53930,53934,53939,53943,53957,53961,53966,53970,53985,53989,53994,53998,54006,54010,54015,54019,54027,54031,54036,54040],{"__ignoreMap":225},[2915,53622,53623,53625,53627,53629],{"class":3402,"line":3403},[2915,53624,6792],{"class":3406},[2915,53626,31784],{"class":3414},[2915,53628,31787],{"class":3414},[2915,53630,31790],{"class":3410},[2915,53632,53633],{"class":3402,"line":1117},[2915,53634,3506],{"emptyLinePlaceholder":3505},[2915,53636,53637],{"class":3402,"line":1125},[2915,53638,53639],{"class":3511},"# Services starten und Live-Logs beobachten\n",[2915,53641,53642],{"class":3402,"line":3515},[2915,53643,3506],{"emptyLinePlaceholder":3505},[2915,53645,53646,53648,53650],{"class":3402,"line":3520},[2915,53647,6792],{"class":3406},[2915,53649,31784],{"class":3414},[2915,53651,31812],{"class":3414},[2915,53653,53654],{"class":3402,"line":5070},[2915,53655,3506],{"emptyLinePlaceholder":3505},[2915,53657,53658],{"class":3402,"line":5075},[2915,53659,53660],{"class":3511},"# Nur bestimmten Service starten\n",[2915,53662,53663],{"class":3402,"line":5093},[2915,53664,3506],{"emptyLinePlaceholder":3505},[2915,53666,53667,53669,53671,53673,53675],{"class":3402,"line":5098},[2915,53668,6792],{"class":3406},[2915,53670,31784],{"class":3414},[2915,53672,31787],{"class":3414},[2915,53674,6798],{"class":3410},[2915,53676,53677],{"class":3414}," db\n",[2915,53679,53680],{"class":3402,"line":5207},[2915,53681,3506],{"emptyLinePlaceholder":3505},[2915,53683,53684],{"class":3402,"line":5212},[2915,53685,53686],{"class":3511},"# Images neu bauen und starten\n",[2915,53688,53689],{"class":3402,"line":5218},[2915,53690,3506],{"emptyLinePlaceholder":3505},[2915,53692,53693,53695,53697,53699,53701],{"class":3402,"line":5223},[2915,53694,6792],{"class":3406},[2915,53696,31784],{"class":3414},[2915,53698,31787],{"class":3414},[2915,53700,6798],{"class":3410},[2915,53702,31838],{"class":3410},[2915,53704,53705],{"class":3402,"line":5229},[2915,53706,3506],{"emptyLinePlaceholder":3505},[2915,53708,53709],{"class":3402,"line":5253},[2915,53710,53711],{"class":3511},"# Status anzeigen\n",[2915,53713,53714],{"class":3402,"line":5266},[2915,53715,3506],{"emptyLinePlaceholder":3505},[2915,53717,53718,53720,53722],{"class":3402,"line":5721},[2915,53719,6792],{"class":3406},[2915,53721,31784],{"class":3414},[2915,53723,32195],{"class":3414},[2915,53725,53726],{"class":3402,"line":9401},[2915,53727,3506],{"emptyLinePlaceholder":3505},[2915,53729,53730],{"class":3402,"line":9406},[2915,53731,53732],{"class":3511},"# Logs aller Services\n",[2915,53734,53735],{"class":3402,"line":9411},[2915,53736,3506],{"emptyLinePlaceholder":3505},[2915,53738,53739,53741,53743,53745],{"class":3402,"line":9416},[2915,53740,6792],{"class":3406},[2915,53742,31784],{"class":3414},[2915,53744,29156],{"class":3414},[2915,53746,17782],{"class":3410},[2915,53748,53749],{"class":3402,"line":9428},[2915,53750,3506],{"emptyLinePlaceholder":3505},[2915,53752,53753],{"class":3402,"line":9433},[2915,53754,53755],{"class":3511},"# Logs nur für \"app\" Service, letzte 50 Zeilen\n",[2915,53757,53758],{"class":3402,"line":9454},[2915,53759,3506],{"emptyLinePlaceholder":3505},[2915,53761,53762,53764,53766,53768,53771,53773],{"class":3402,"line":9459},[2915,53763,6792],{"class":3406},[2915,53765,31784],{"class":3414},[2915,53767,29156],{"class":3414},[2915,53769,53770],{"class":3410}," --tail=50",[2915,53772,10089],{"class":3410},[2915,53774,51649],{"class":3414},[2915,53776,53777],{"class":3402,"line":9464},[2915,53778,3506],{"emptyLinePlaceholder":3505},[2915,53780,53781],{"class":3402,"line":9469},[2915,53782,53783],{"class":3511},"# In Container einloggen\n",[2915,53785,53786],{"class":3402,"line":9479},[2915,53787,3506],{"emptyLinePlaceholder":3505},[2915,53789,53790,53792,53794,53796,53798],{"class":3402,"line":9484},[2915,53791,6792],{"class":3406},[2915,53793,31784],{"class":3414},[2915,53795,29181],{"class":3414},[2915,53797,51511],{"class":3414},[2915,53799,29088],{"class":3414},[2915,53801,53802],{"class":3402,"line":9489},[2915,53803,3506],{"emptyLinePlaceholder":3505},[2915,53805,53806,53808,53810,53812,53814,53816,53818,53820,53822],{"class":3402,"line":9494},[2915,53807,6792],{"class":3406},[2915,53809,31784],{"class":3414},[2915,53811,29181],{"class":3414},[2915,53813,51487],{"class":3414},[2915,53815,32068],{"class":3414},[2915,53817,32071],{"class":3410},[2915,53819,44205],{"class":3414},[2915,53821,6798],{"class":3410},[2915,53823,53824],{"class":3414}," mydb\n",[2915,53826,53827],{"class":3402,"line":9504},[2915,53828,3506],{"emptyLinePlaceholder":3505},[2915,53830,53831],{"class":3402,"line":9509},[2915,53832,53833],{"class":3511},"# Einmaligen Befehl ausführen\n",[2915,53835,53836],{"class":3402,"line":9514},[2915,53837,3506],{"emptyLinePlaceholder":3505},[2915,53839,53840,53842,53844,53846,53848,53850,53852],{"class":3402,"line":9519},[2915,53841,6792],{"class":3406},[2915,53843,31784],{"class":3414},[2915,53845,6795],{"class":3414},[2915,53847,29082],{"class":3410},[2915,53849,51511],{"class":3414},[2915,53851,32136],{"class":3414},[2915,53853,32139],{"class":3414},[2915,53855,53856],{"class":3402,"line":9524},[2915,53857,3506],{"emptyLinePlaceholder":3505},[2915,53859,53860],{"class":3402,"line":9529},[2915,53861,53862],{"class":3511},"# Alles stoppen und entfernen (inkl. Volumes)\n",[2915,53864,53865],{"class":3402,"line":9534},[2915,53866,3506],{"emptyLinePlaceholder":3505},[2915,53868,53869,53871,53873,53875],{"class":3402,"line":9539},[2915,53870,6792],{"class":3406},[2915,53872,31784],{"class":3414},[2915,53874,32371],{"class":3414},[2915,53876,32374],{"class":3410},[2915,53878,53879],{"class":3402,"line":9552},[2915,53880,3506],{"emptyLinePlaceholder":3505},[2915,53882,53883],{"class":3402,"line":9557},[2915,53884,53885],{"class":3511},"# Bestimmte Services neu starten\n",[2915,53887,53888],{"class":3402,"line":9570},[2915,53889,3506],{"emptyLinePlaceholder":3505},[2915,53891,53892,53894,53896,53898],{"class":3402,"line":9575},[2915,53893,6792],{"class":3406},[2915,53895,31784],{"class":3414},[2915,53897,32423],{"class":3414},[2915,53899,51649],{"class":3414},[2915,53901,53902],{"class":3402,"line":9588},[2915,53903,3506],{"emptyLinePlaceholder":3505},[2915,53905,53906],{"class":3402,"line":9593},[2915,53907,53908],{"class":3511},"# Scale (mehrere Instanzen)\n",[2915,53910,53911],{"class":3402,"line":9598},[2915,53912,3506],{"emptyLinePlaceholder":3505},[2915,53914,53915,53917,53919,53921,53923,53925,53928],{"class":3402,"line":9603},[2915,53916,6792],{"class":3406},[2915,53918,31784],{"class":3414},[2915,53920,31787],{"class":3414},[2915,53922,6798],{"class":3410},[2915,53924,32460],{"class":3410},[2915,53926,53927],{"class":3414}," app=",[2915,53929,30405],{"class":3410},[2915,53931,53932],{"class":3402,"line":9619},[2915,53933,3506],{"emptyLinePlaceholder":3505},[2915,53935,53936],{"class":3402,"line":9624},[2915,53937,53938],{"class":3511},"# Mit anderem Dateinamen\n",[2915,53940,53941],{"class":3402,"line":9629},[2915,53942,3506],{"emptyLinePlaceholder":3505},[2915,53944,53945,53947,53949,53951,53953,53955],{"class":3402,"line":9634},[2915,53946,6792],{"class":3406},[2915,53948,31784],{"class":3414},[2915,53950,10089],{"class":3410},[2915,53952,32503],{"class":3414},[2915,53954,31787],{"class":3414},[2915,53956,31790],{"class":3410},[2915,53958,53959],{"class":3402,"line":9642},[2915,53960,3506],{"emptyLinePlaceholder":3505},[2915,53962,53963],{"class":3402,"line":9647},[2915,53964,53965],{"class":3511},"# Projektname setzen\n",[2915,53967,53968],{"class":3402,"line":9656},[2915,53969,3506],{"emptyLinePlaceholder":3505},[2915,53971,53972,53974,53976,53978,53981,53983],{"class":3402,"line":9661},[2915,53973,6792],{"class":3406},[2915,53975,31784],{"class":3414},[2915,53977,6956],{"class":3410},[2915,53979,53980],{"class":3414}," meinprojekt",[2915,53982,31787],{"class":3414},[2915,53984,31790],{"class":3410},[2915,53986,53987],{"class":3402,"line":9666},[2915,53988,3506],{"emptyLinePlaceholder":3505},[2915,53990,53991],{"class":3402,"line":9671},[2915,53992,53993],{"class":3511},"# Konfiguration validieren\n",[2915,53995,53996],{"class":3402,"line":9685},[2915,53997,3506],{"emptyLinePlaceholder":3505},[2915,53999,54000,54002,54004],{"class":3402,"line":9690},[2915,54001,6792],{"class":3406},[2915,54003,31784],{"class":3414},[2915,54005,32296],{"class":3414},[2915,54007,54008],{"class":3402,"line":9711},[2915,54009,3506],{"emptyLinePlaceholder":3505},[2915,54011,54012],{"class":3402,"line":9716},[2915,54013,54014],{"class":3511},"# Alle Images bauen ohne zu starten\n",[2915,54016,54017],{"class":3402,"line":9721},[2915,54018,3506],{"emptyLinePlaceholder":3505},[2915,54020,54021,54023,54025],{"class":3402,"line":9726},[2915,54022,6792],{"class":3406},[2915,54024,31784],{"class":3414},[2915,54026,51843],{"class":3414},[2915,54028,54029],{"class":3402,"line":9734},[2915,54030,3506],{"emptyLinePlaceholder":3505},[2915,54032,54033],{"class":3402,"line":9739},[2915,54034,54035],{"class":3511},"# Aktuellen Stand der Container\n",[2915,54037,54038],{"class":3402,"line":9747},[2915,54039,3506],{"emptyLinePlaceholder":3505},[2915,54041,54042,54044,54046],{"class":3402,"line":9752},[2915,54043,6792],{"class":3406},[2915,54045,31784],{"class":3414},[2915,54047,32274],{"class":3414},[11,54049,54051],{"id":54050},"aufgaben-und-lösungen-aus-dem-unterricht","Aufgaben und Lösungen aus dem Unterricht",[54,54053,54055],{"id":54054},"dockercomposezusatzaufgabenpdf","DockerComposeZusatzaufgaben.pdf",[16,54057,54058],{},"Quelle: DockerComposeZusatzaufgaben.pdf - 9 Seite(n)",[228,54060,54062],{"id":54061},"seite-1","Seite 1",[16,54064,54065,54066,54068],{},"Thema: Linux",[5885,54067],{},"\nTechnikerschule Erlangen",[16,54070,54071],{},"📝 Docker-Compose Übungsblatt",[16,54073,54074,54075,54077],{},"✅ Aufgabe 1: Webserver mit Docker Compose",[5885,54076],{},"\nZiel: Erstelle mit Docker Compose einen Webserver, der über den Browser erreichbar ist.",[16,54079,54080],{},"📋 Aufgabenstellung:",[966,54082,54083,54086,54089],{},[23,54084,54085],{},"Erstelle ein neues Projektverzeichnis mit einer index.html-Datei.",[23,54087,54088],{},"Setze mit Docker Compose einen Nginx-Container auf.",[23,54090,54091,54092,54097],{},"Der Webserver soll unter ",[3432,54093,54094],{"href":54094,"rel":54095},"http:\u002F\u002Flocalhost:8080",[54096],"nofollow"," erreichbar sein.",[16,54099,54100,54101,54103],{},"💡 Hinweise:",[5885,54102],{},"\n• Verwende das Nginx-Image (nginx:latest).",[16,54105,54106],{},"• Binde das Verzeichnis mit index.html als Volume ein.",[16,54108,54109],{},"• Port 80 im Container soll auf Port 8080 des Hosts weitergeleitet werden.",[16,54111,54112,54113,54115,54116,54118,54119,54121,54122,54124,54125,54127],{},"✅ Lösung:",[5885,54114],{},"\nDateistruktur:",[5885,54117],{},"\nwebserver\u002F",[5885,54120],{},"\n├── docker-compose.yml",[5885,54123],{},"\n└── html\u002F",[5885,54126],{},"\n└── index.html",[16,54129,54130,54131,54133],{},"index.html:",[5885,54132],{},"\n\u003Ch1>Hello from Docker Compose!\u003C\u002Fh1>",[16,54135,54136],{},"docker-compose.yml:",[3392,54138,54140],{"className":29954,"code":54139,"language":29956,"meta":225,"style":225},"version: '3.8'\nservices:\nweb:\nimage: nginx:latest\nports:\n- \"8080:80\"\nvolumes:\n- .\u002Fhtml:\u002Fusr\u002Fshare\u002Fnginx\u002Fhtml:ro\n\n",[3398,54141,54142,54151,54157,54164,54173,54179,54186,54192],{"__ignoreMap":225},[2915,54143,54144,54146,54148],{"class":3402,"line":3403},[2915,54145,29558],{"class":29963},[2915,54147,6162],{"class":3529},[2915,54149,54150],{"class":3414},"'3.8'\n",[2915,54152,54153,54155],{"class":3402,"line":1117},[2915,54154,29977],{"class":29963},[2915,54156,1554],{"class":3529},[2915,54158,54159,54162],{"class":3402,"line":1125},[2915,54160,54161],{"class":29963},"web",[2915,54163,1554],{"class":3529},[2915,54165,54166,54168,54170],{"class":3402,"line":3515},[2915,54167,30059],{"class":29963},[2915,54169,6162],{"class":3529},[2915,54171,54172],{"class":3414},"nginx:latest\n",[2915,54174,54175,54177],{"class":3402,"line":3520},[2915,54176,30112],{"class":29963},[2915,54178,1554],{"class":3529},[2915,54180,54181,54183],{"class":3402,"line":5070},[2915,54182,30047],{"class":3529},[2915,54184,54185],{"class":3414},"\"8080:80\"\n",[2915,54187,54188,54190],{"class":3402,"line":5075},[2915,54189,30145],{"class":29963},[2915,54191,1554],{"class":3529},[2915,54193,54194,54196],{"class":3402,"line":5093},[2915,54195,30047],{"class":3529},[2915,54197,54198],{"class":3414},".\u002Fhtml:\u002Fusr\u002Fshare\u002Fnginx\u002Fhtml:ro\n",[228,54200,54202],{"id":54201},"seite-2","Seite 2",[16,54204,54065],{},[16,54206,54207,54208,54068],{},"✅",[5885,54209],{},[16,54211,54212,54213,54215],{},"Aufgabe 2: PHP + MySQL mit Docker Compose",[5885,54214],{},"\nZiel: Starte eine einfache PHP-Webanwendung, die sich mit einer MySQL-Datenbank verbindet.",[16,54217,54080],{},[966,54219,54220,54223,54226],{},[23,54221,54222],{},"Erstelle eine PHP-Datei, die sich mit einer MySQL-Datenbank verbindet.",[23,54224,54225],{},"Setze zwei Container auf: einen für PHP (z. B. php:8.2-apache) und einen für MySQL.",[23,54227,54228],{},"Konfiguriere docker-compose.yml so, dass die Dienste korrekt verbunden sind.",[16,54230,54100,54231,54233],{},[5885,54232],{},"\n• In PHP ist der MySQL-Host db (der Name des Services).",[16,54235,54236],{},"• Nutze Umgebungsvariablen für MySQL (Benutzer, Passwort, Datenbank).",[16,54238,54112,54239,54115,54241,54243,54244,54121,54246,54248,54249,54251],{},[5885,54240],{},[5885,54242],{},"\nphp-mysql\u002F",[5885,54245],{},[5885,54247],{},"\n└── src\u002F",[5885,54250],{},"\n└── index.php",[16,54253,54254,54255,54257,54258,54260],{},"index.php:",[5885,54256],{},"\n\u003C?php",[5885,54259],{},"\n$mysqli = new mysqli(\"db\", \"user\", \"password\", \"testdb\");",[3392,54262,54264],{"className":3394,"code":54263,"language":3396,"meta":225,"style":225},"if ($mysqli->connect_error) {\ndie(\"Connection failed: \" . $mysqli->connect_error);\n}\necho \"Connected to MySQL successfully!\";\n?>\n\ndocker-compose.yml:\n\n",[3398,54265,54266,54278,54299,54303,54313,54320,54324],{"__ignoreMap":225},[2915,54267,54268,54270,54273,54275],{"class":3402,"line":3403},[2915,54269,4951],{"class":3533},[2915,54271,54272],{"class":3529}," ($mysqli-",[2915,54274,3534],{"class":3533},[2915,54276,54277],{"class":3529},"connect_error) {\n",[2915,54279,54280,54283,54286,54288,54291,54293,54296],{"class":3402,"line":1117},[2915,54281,54282],{"class":3406},"die(",[2915,54284,54285],{"class":3406},"\"Connection failed: \"",[2915,54287,8232],{"class":3414},[2915,54289,54290],{"class":3529}," $mysqli-",[2915,54292,3534],{"class":3533},[2915,54294,54295],{"class":3414},"connect_error",[2915,54297,54298],{"class":3529},");\n",[2915,54300,54301],{"class":3402,"line":1125},[2915,54302,5840],{"class":3529},[2915,54304,54305,54307,54310],{"class":3402,"line":3515},[2915,54306,5059],{"class":3410},[2915,54308,54309],{"class":3414}," \"Connected to MySQL successfully!\"",[2915,54311,54312],{"class":3529},";\n",[2915,54314,54315,54317],{"class":3402,"line":3520},[2915,54316,16286],{"class":3406},[2915,54318,54319],{"class":3529},">\n",[2915,54321,54322],{"class":3402,"line":5070},[2915,54323,3506],{"emptyLinePlaceholder":3505},[2915,54325,54326],{"class":3402,"line":5075},[2915,54327,54328],{"class":3406},"docker-compose.yml:\n",[3392,54330,54332],{"className":29954,"code":54331,"language":29956,"meta":225,"style":225},"version: '3.8'\nservices:\nweb:\nimage: php:8.2-apache\nvolumes:\n- .\u002Fsrc:\u002Fvar\u002Fwww\u002Fhtml\nports:\n- \"8000:80\"\ndepends_on:\n- db\ndb:\nimage: mysql:8.0\nenvironment:\nMYSQL_DATABASE: testdb\nMYSQL_USER: user\nMYSQL_PASSWORD: password\nMYSQL_ROOT_PASSWORD: root\n\n",[3398,54333,54334,54342,54348,54354,54363,54369,54376,54382,54389,54395,54402,54408,54417,54423,54433,54442,54452],{"__ignoreMap":225},[2915,54335,54336,54338,54340],{"class":3402,"line":3403},[2915,54337,29558],{"class":29963},[2915,54339,6162],{"class":3529},[2915,54341,54150],{"class":3414},[2915,54343,54344,54346],{"class":3402,"line":1117},[2915,54345,29977],{"class":29963},[2915,54347,1554],{"class":3529},[2915,54349,54350,54352],{"class":3402,"line":1125},[2915,54351,54161],{"class":29963},[2915,54353,1554],{"class":3529},[2915,54355,54356,54358,54360],{"class":3402,"line":3515},[2915,54357,30059],{"class":29963},[2915,54359,6162],{"class":3529},[2915,54361,54362],{"class":3414},"php:8.2-apache\n",[2915,54364,54365,54367],{"class":3402,"line":3520},[2915,54366,30145],{"class":29963},[2915,54368,1554],{"class":3529},[2915,54370,54371,54373],{"class":3402,"line":5070},[2915,54372,30047],{"class":3529},[2915,54374,54375],{"class":3414},".\u002Fsrc:\u002Fvar\u002Fwww\u002Fhtml\n",[2915,54377,54378,54380],{"class":3402,"line":5075},[2915,54379,30112],{"class":29963},[2915,54381,1554],{"class":3529},[2915,54383,54384,54386],{"class":3402,"line":5093},[2915,54385,30047],{"class":3529},[2915,54387,54388],{"class":3414},"\"8000:80\"\n",[2915,54390,54391,54393],{"class":3402,"line":5098},[2915,54392,30271],{"class":29963},[2915,54394,1554],{"class":3529},[2915,54396,54397,54399],{"class":3402,"line":5207},[2915,54398,30047],{"class":3529},[2915,54400,54401],{"class":3414},"db\n",[2915,54403,54404,54406],{"class":3402,"line":5212},[2915,54405,53051],{"class":29963},[2915,54407,1554],{"class":3529},[2915,54409,54410,54412,54414],{"class":3402,"line":5218},[2915,54411,30059],{"class":29963},[2915,54413,6162],{"class":3529},[2915,54415,54416],{"class":3414},"mysql:8.0\n",[2915,54418,54419,54421],{"class":3402,"line":5223},[2915,54420,30178],{"class":29963},[2915,54422,1554],{"class":3529},[2915,54424,54425,54428,54430],{"class":3402,"line":5229},[2915,54426,54427],{"class":29963},"MYSQL_DATABASE",[2915,54429,6162],{"class":3529},[2915,54431,54432],{"class":3414},"testdb\n",[2915,54434,54435,54438,54440],{"class":3402,"line":5253},[2915,54436,54437],{"class":29963},"MYSQL_USER",[2915,54439,6162],{"class":3529},[2915,54441,53156],{"class":3414},[2915,54443,54444,54447,54449],{"class":3402,"line":5266},[2915,54445,54446],{"class":29963},"MYSQL_PASSWORD",[2915,54448,6162],{"class":3529},[2915,54450,54451],{"class":3414},"password\n",[2915,54453,54454,54457,54459],{"class":3402,"line":5721},[2915,54455,54456],{"class":29963},"MYSQL_ROOT_PASSWORD",[2915,54458,6162],{"class":3529},[2915,54460,54461],{"class":3414},"root\n",[228,54463,54465],{"id":54464},"seite-3","Seite 3",[16,54467,54065],{},[16,54469,54207,54470,54068],{},[5885,54471],{},[16,54473,54474,54475,54477,54478,54480],{},"Aufgabe 3: Node.js mit MongoDB",[5885,54476],{},"\nZiel: Erstelle eine Node.js-App, die eine Verbindung zu MongoDB aufnimmt und einfache HTTP-",[5885,54479],{},"\nAntworten liefert.",[16,54482,54080],{},[966,54484,54485,54488,54491],{},[23,54486,54487],{},"Erstelle einen Node.js-Service mit Express.",[23,54489,54490],{},"Verbinde dich mit einer MongoDB-Instanz (in einem eigenen Container).",[23,54492,54493],{},"Zeige über einen HTTP-Endpunkt eine Erfolgsmeldung, wenn MongoDB verbunden ist.",[16,54495,54100,54496,54498],{},[5885,54497],{},"\n• Du brauchst eine Dockerfile, package.json und index.js.",[16,54500,54501,54502,54504],{},"• Verwende Mongoose zur Verbindung mit MongoDB.",[5885,54503],{},"\n• MongoDB läuft unter dem Service-Namen mongo.",[16,54506,54112,54507,54115,54509,54511,54512,54121,54514,54516,54517,54519,54520,54522,54523,54525],{},[5885,54508],{},[5885,54510],{},"\nnode-mongo\u002F",[5885,54513],{},[5885,54515],{},"\n├── app\u002F",[5885,54518],{},"\n│ ├── Dockerfile",[5885,54521],{},"\n│ ├── index.js",[5885,54524],{},"\n│ └── package.json",[16,54527,54528],{},"Dockerfile:",[3392,54530,54532],{"className":7163,"code":54531,"language":7165,"meta":225,"style":225},"FROM node:18\nWORKDIR \u002Fapp\nCOPY package*.json .\u002F\nRUN npm install\nCOPY . .\nCMD [\"node\", \"index.js\"]\n\n",[3398,54533,54534,54541,54547,54554,54561,54567],{"__ignoreMap":225},[2915,54535,54536,54538],{"class":3402,"line":3403},[2915,54537,7190],{"class":3533},[2915,54539,54540],{"class":3529}," node:18\n",[2915,54542,54543,54545],{"class":3402,"line":1117},[2915,54544,7250],{"class":3533},[2915,54546,7448],{"class":3529},[2915,54548,54549,54551],{"class":3402,"line":1125},[2915,54550,7274],{"class":3533},[2915,54552,54553],{"class":3529}," package*.json .\u002F\n",[2915,54555,54556,54558],{"class":3402,"line":3515},[2915,54557,7298],{"class":3533},[2915,54559,54560],{"class":3529}," npm install\n",[2915,54562,54563,54565],{"class":3402,"line":3520},[2915,54564,7274],{"class":3533},[2915,54566,51618],{"class":3529},[2915,54568,54569,54571,54573,54575,54577,54580],{"class":3402,"line":5070},[2915,54570,7341],{"class":3533},[2915,54572,7373],{"class":3529},[2915,54574,7587],{"class":3414},[2915,54576,7379],{"class":3529},[2915,54578,54579],{"class":3414},"\"index.js\"",[2915,54581,7385],{"class":3529},[16,54583,54584,54585,54587,54588,54590,54591,54593],{},"index.js:",[5885,54586],{},"\nconst express = require('express');",[5885,54589],{},"\nconst mongoose = require('mongoose');",[5885,54592],{},"\nconst app = express();",[16,54595,54596,54597,54599,54600,54602],{},"mongoose.connect('mongodb:\u002F\u002Fmongo:27017\u002Ftest')",[5885,54598],{},"\n.then(() => console.log('Connected to MongoDB'))",[5885,54601],{},"\n.catch(err => console.error('MongoDB connection error:', err));",[16,54604,54605,54606,54608,54609,54611],{},"app.get('\u002F', (req, res) => {",[5885,54607],{},"\nres.send('Hello from Node.js and MongoDB!');",[5885,54610],{},"\n});",[16,54613,54614],{},"app.listen(3000, () => console.log('Server running on port 3000'));",[228,54616,54618],{"id":54617},"seite-4","Seite 4",[16,54620,54065,54621,54068],{},[5885,54622],{},[16,54624,54625,54626,54628,54629,54631,54632,54634,54635,54637,54638,54640,54641,54643,54644,54646,54647,54646],{},"package.json:",[5885,54627],{},"\n{",[5885,54630],{},"\n\"name\": \"node-mongo-app\",",[5885,54633],{},"\n\"version\": \"1.0.0\",",[5885,54636],{},"\n\"dependencies\": {",[5885,54639],{},"\n\"express\": \"^4.18.2\",",[5885,54642],{},"\n\"mongoose\": \"^7.0.0\"",[5885,54645],{},"\n}",[5885,54648],{},[16,54650,54136],{},[3392,54652,54654],{"className":29954,"code":54653,"language":29956,"meta":225,"style":225},"version: '3.8'\nservices:\napp:\nbuild: .\u002Fapp\nports:\n- \"3000:3000\"\ndepends_on:\n- mongo\n\nmongo:\nimage: mongo\nports:\n- \"27017:27017\"\n\n",[3398,54655,54656,54664,54670,54676,54684,54690,54697,54703,54710,54714,54721,54729,54735],{"__ignoreMap":225},[2915,54657,54658,54660,54662],{"class":3402,"line":3403},[2915,54659,29558],{"class":29963},[2915,54661,6162],{"class":3529},[2915,54663,54150],{"class":3414},[2915,54665,54666,54668],{"class":3402,"line":1117},[2915,54667,29977],{"class":29963},[2915,54669,1554],{"class":3529},[2915,54671,54672,54674],{"class":3402,"line":1125},[2915,54673,31700],{"class":29963},[2915,54675,1554],{"class":3529},[2915,54677,54678,54680,54682],{"class":3402,"line":3515},[2915,54679,29428],{"class":29963},[2915,54681,6162],{"class":3529},[2915,54683,52864],{"class":3414},[2915,54685,54686,54688],{"class":3402,"line":3520},[2915,54687,30112],{"class":29963},[2915,54689,1554],{"class":3529},[2915,54691,54692,54694],{"class":3402,"line":5070},[2915,54693,30047],{"class":3529},[2915,54695,54696],{"class":3414},"\"3000:3000\"\n",[2915,54698,54699,54701],{"class":3402,"line":5075},[2915,54700,30271],{"class":29963},[2915,54702,1554],{"class":3529},[2915,54704,54705,54707],{"class":3402,"line":5093},[2915,54706,30047],{"class":3529},[2915,54708,54709],{"class":3414},"mongo\n",[2915,54711,54712],{"class":3402,"line":5098},[2915,54713,3506],{"emptyLinePlaceholder":3505},[2915,54715,54716,54719],{"class":3402,"line":5207},[2915,54717,54718],{"class":29963},"mongo",[2915,54720,1554],{"class":3529},[2915,54722,54723,54725,54727],{"class":3402,"line":5212},[2915,54724,30059],{"class":29963},[2915,54726,6162],{"class":3529},[2915,54728,54709],{"class":3414},[2915,54730,54731,54733],{"class":3402,"line":5218},[2915,54732,30112],{"class":29963},[2915,54734,1554],{"class":3529},[2915,54736,54737,54739],{"class":3402,"line":5223},[2915,54738,30047],{"class":3529},[2915,54740,54741],{"class":3414},"\"27017:27017\"\n",[228,54743,54745],{"id":54744},"seite-5","Seite 5",[16,54747,54065],{},[16,54749,54750,54751,54068],{},"🛠️",[5885,54752],{},[16,54754,54755,54756,54758,54759,54761],{},"Aufgabe 4: Laravel + MySQL Umgebung",[5885,54757],{},"\n📋 Aufgabenstellung:",[5885,54760],{},"\nSetze eine vollständige Laravel-Entwicklungsumgebung mit MySQL und Docker Compose auf.",[16,54763,54100,54764,54766],{},[5885,54765],{},"\n• Verwende laravel\u002Flaravel und mysql:8.",[16,54768,54769,54770,54772],{},"• Benutze Volumes für persistente Daten.",[5885,54771],{},"\n• Öffne Laravel auf Port 8000.",[16,54774,54112,54775,54777],{},[5885,54776],{},"\ndocker-compose.yml",[3392,54779,54781],{"className":29954,"code":54780,"language":29956,"meta":225,"style":225},"version: '3.8'\nservices:\napp:\nimage: laravelsail\u002Fphp82-composer\ncontainer_name: laravel_app\nworking_dir: \u002Fvar\u002Fwww\u002Fhtml\nvolumes:\n- .:\u002Fvar\u002Fwww\u002Fhtml\nports:\n- \"8000:8000\"\ndepends_on:\n- db\ncommand: bash -c \"composer install && php artisan serve --host=0.0.0.0 --\n",[3398,54782,54783,54791,54797,54803,54812,54821,54831,54837,54844,54850,54857,54863,54869],{"__ignoreMap":225},[2915,54784,54785,54787,54789],{"class":3402,"line":3403},[2915,54786,29558],{"class":29963},[2915,54788,6162],{"class":3529},[2915,54790,54150],{"class":3414},[2915,54792,54793,54795],{"class":3402,"line":1117},[2915,54794,29977],{"class":29963},[2915,54796,1554],{"class":3529},[2915,54798,54799,54801],{"class":3402,"line":1125},[2915,54800,31700],{"class":29963},[2915,54802,1554],{"class":3529},[2915,54804,54805,54807,54809],{"class":3402,"line":3515},[2915,54806,30059],{"class":29963},[2915,54808,6162],{"class":3529},[2915,54810,54811],{"class":3414},"laravelsail\u002Fphp82-composer\n",[2915,54813,54814,54816,54818],{"class":3402,"line":3520},[2915,54815,30073],{"class":29963},[2915,54817,6162],{"class":3529},[2915,54819,54820],{"class":3414},"laravel_app\n",[2915,54822,54823,54826,54828],{"class":3402,"line":5070},[2915,54824,54825],{"class":29963},"working_dir",[2915,54827,6162],{"class":3529},[2915,54829,54830],{"class":3414},"\u002Fvar\u002Fwww\u002Fhtml\n",[2915,54832,54833,54835],{"class":3402,"line":5075},[2915,54834,30145],{"class":29963},[2915,54836,1554],{"class":3529},[2915,54838,54839,54841],{"class":3402,"line":5093},[2915,54840,30047],{"class":3529},[2915,54842,54843],{"class":3414},".:\u002Fvar\u002Fwww\u002Fhtml\n",[2915,54845,54846,54848],{"class":3402,"line":5098},[2915,54847,30112],{"class":29963},[2915,54849,1554],{"class":3529},[2915,54851,54852,54854],{"class":3402,"line":5207},[2915,54853,30047],{"class":3529},[2915,54855,54856],{"class":3414},"\"8000:8000\"\n",[2915,54858,54859,54861],{"class":3402,"line":5212},[2915,54860,30271],{"class":29963},[2915,54862,1554],{"class":3529},[2915,54864,54865,54867],{"class":3402,"line":5218},[2915,54866,30047],{"class":3529},[2915,54868,54401],{"class":3414},[2915,54870,54871,54873,54875],{"class":3402,"line":5223},[2915,54872,31172],{"class":29963},[2915,54874,6162],{"class":3529},[2915,54876,54877],{"class":3414},"bash -c \"composer install && php artisan serve --host=0.0.0.0 --\n",[3392,54879,54881],{"className":3394,"code":54880,"language":3396,"meta":225,"style":225},"port=8000\"\n\n",[3398,54882,54883],{"__ignoreMap":225},[2915,54884,54885,54887,54889],{"class":3402,"line":3403},[2915,54886,29527],{"class":3529},[2915,54888,5137],{"class":3533},[2915,54890,54891],{"class":3414},"8000\"\n",[16,54893,54894],{},"db:",[3392,54896,54898],{"className":29954,"code":54897,"language":29956,"meta":225,"style":225},"image: mysql:8.0\ncontainer_name: mysql_db\nenvironment:\nMYSQL_DATABASE: laravel\nMYSQL_ROOT_PASSWORD: root\nMYSQL_USER: user\nMYSQL_PASSWORD: password\nvolumes:\n- dbdata:\u002Fvar\u002Flib\u002Fmysql\nports:\n- \"3306:3306\"\n\nvolumes:\ndbdata:\n\n",[3398,54899,54900,54908,54917,54923,54932,54940,54948,54956,54962,54969,54975,54982,54986,54992],{"__ignoreMap":225},[2915,54901,54902,54904,54906],{"class":3402,"line":3403},[2915,54903,30059],{"class":29963},[2915,54905,6162],{"class":3529},[2915,54907,54416],{"class":3414},[2915,54909,54910,54912,54914],{"class":3402,"line":1117},[2915,54911,30073],{"class":29963},[2915,54913,6162],{"class":3529},[2915,54915,54916],{"class":3414},"mysql_db\n",[2915,54918,54919,54921],{"class":3402,"line":1125},[2915,54920,30178],{"class":29963},[2915,54922,1554],{"class":3529},[2915,54924,54925,54927,54929],{"class":3402,"line":3515},[2915,54926,54427],{"class":29963},[2915,54928,6162],{"class":3529},[2915,54930,54931],{"class":3414},"laravel\n",[2915,54933,54934,54936,54938],{"class":3402,"line":3520},[2915,54935,54456],{"class":29963},[2915,54937,6162],{"class":3529},[2915,54939,54461],{"class":3414},[2915,54941,54942,54944,54946],{"class":3402,"line":5070},[2915,54943,54437],{"class":29963},[2915,54945,6162],{"class":3529},[2915,54947,53156],{"class":3414},[2915,54949,54950,54952,54954],{"class":3402,"line":5075},[2915,54951,54446],{"class":29963},[2915,54953,6162],{"class":3529},[2915,54955,54451],{"class":3414},[2915,54957,54958,54960],{"class":3402,"line":5093},[2915,54959,30145],{"class":29963},[2915,54961,1554],{"class":3529},[2915,54963,54964,54966],{"class":3402,"line":5098},[2915,54965,30047],{"class":3529},[2915,54967,54968],{"class":3414},"dbdata:\u002Fvar\u002Flib\u002Fmysql\n",[2915,54970,54971,54973],{"class":3402,"line":5207},[2915,54972,30112],{"class":29963},[2915,54974,1554],{"class":3529},[2915,54976,54977,54979],{"class":3402,"line":5212},[2915,54978,30047],{"class":3529},[2915,54980,54981],{"class":3414},"\"3306:3306\"\n",[2915,54983,54984],{"class":3402,"line":5218},[2915,54985,3506],{"emptyLinePlaceholder":3505},[2915,54987,54988,54990],{"class":3402,"line":5223},[2915,54989,30145],{"class":29963},[2915,54991,1554],{"class":3529},[2915,54993,54994,54997],{"class":3402,"line":5229},[2915,54995,54996],{"class":29963},"dbdata",[2915,54998,1554],{"class":3529},[228,55000,55002],{"id":55001},"seite-6","Seite 6",[16,55004,54065],{},[16,55006,54750,55007,54068],{},[5885,55008],{},[16,55010,55011,55012,54758,55014,55016,55017,55019],{},"Aufgabe 5: Redis als Cache-Service",[5885,55013],{},[5885,55015],{},"\nErstelle einen Redis-Service mit Docker Compose und verbinde ihn mit einer einfachen Node.js-",[5885,55018],{},"\nApp als Cache Layer.",[16,55021,54100,55022,55024,55025,55027],{},[5885,55023],{},"\n• Verwende das Redis-Image.",[5885,55026],{},"\n• Die App soll bei \u002F prüfen, ob Daten gecached sind.",[16,55029,55030],{},"• Wenn nicht, speichert sie etwas in Redis.",[16,55032,54112,55033,55035,55036,54587,55038,55040],{},[5885,55034],{},"\nindex.js",[5885,55037],{},[5885,55039],{},"\nconst redis = require('redis');",[16,55042,55043,55044,55046],{},"const client = redis.createClient({ url: 'redis:\u002F\u002Fredis:6379' });",[5885,55045],{},"\nclient.connect();",[16,55048,55049],{},"const app = express();",[16,55051,55052,55053,55055],{},"app.get('\u002F', async (req, res) => {",[5885,55054],{},"\nconst value = await client.get('message');",[3392,55057,55059],{"className":3394,"code":55058,"language":3396,"meta":225,"style":225},"if (value) {\nres.send(`Cached: ${value}`);\n",[3398,55060,55061,55073],{"__ignoreMap":225},[2915,55062,55063,55065,55067,55070],{"class":3402,"line":3403},[2915,55064,4951],{"class":3533},[2915,55066,2913],{"class":3529},[2915,55068,55069],{"class":3406},"value",[2915,55071,55072],{"class":3529},") {\n",[2915,55074,55075,55078,55081,55084,55086,55088,55091],{"class":3402,"line":1117},[2915,55076,55077],{"class":3406},"res.send(",[2915,55079,55080],{"class":3414},"`",[2915,55082,55083],{"class":3406},"Cached:",[2915,55085,10394],{"class":3414},[2915,55087,55069],{"class":3529},[2915,55089,55090],{"class":3414},"}`",[2915,55092,54298],{"class":3529},[16,55094,55095,55096,55098,55099,55101,55102,54646,55104,54611],{},"} else {",[5885,55097],{},"\nawait client.set('message', 'Hello Redis');",[5885,55100],{},"\nres.send('Set cache: Hello Redis');",[5885,55103],{},[5885,55105],{},[16,55107,55108],{},"app.listen(3000, () => console.log('Server on 3000'));",[16,55110,55111],{},"docker-compose.yml",[3392,55113,55115],{"className":29954,"code":55114,"language":29956,"meta":225,"style":225},"version: '3.8'\nservices:\napp:\nbuild: .\nports:\n- \"3000:3000\"\ndepends_on:\n- redis\n\nredis:\nimage: redis:alpine\nports:\n- \"6379:6379\"\n\n",[3398,55116,55117,55125,55131,55137,55146,55152,55158,55164,55171,55175,55182,55191,55197],{"__ignoreMap":225},[2915,55118,55119,55121,55123],{"class":3402,"line":3403},[2915,55120,29558],{"class":29963},[2915,55122,6162],{"class":3529},[2915,55124,54150],{"class":3414},[2915,55126,55127,55129],{"class":3402,"line":1117},[2915,55128,29977],{"class":29963},[2915,55130,1554],{"class":3529},[2915,55132,55133,55135],{"class":3402,"line":1125},[2915,55134,31700],{"class":29963},[2915,55136,1554],{"class":3529},[2915,55138,55139,55141,55143],{"class":3402,"line":3515},[2915,55140,29428],{"class":29963},[2915,55142,6162],{"class":3529},[2915,55144,55145],{"class":3410},".\n",[2915,55147,55148,55150],{"class":3402,"line":3520},[2915,55149,30112],{"class":29963},[2915,55151,1554],{"class":3529},[2915,55153,55154,55156],{"class":3402,"line":5070},[2915,55155,30047],{"class":3529},[2915,55157,54696],{"class":3414},[2915,55159,55160,55162],{"class":3402,"line":5075},[2915,55161,30271],{"class":29963},[2915,55163,1554],{"class":3529},[2915,55165,55166,55168],{"class":3402,"line":5093},[2915,55167,30047],{"class":3529},[2915,55169,55170],{"class":3414},"redis\n",[2915,55172,55173],{"class":3402,"line":5098},[2915,55174,3506],{"emptyLinePlaceholder":3505},[2915,55176,55177,55180],{"class":3402,"line":5207},[2915,55178,55179],{"class":29963},"redis",[2915,55181,1554],{"class":3529},[2915,55183,55184,55186,55188],{"class":3402,"line":5212},[2915,55185,30059],{"class":29963},[2915,55187,6162],{"class":3529},[2915,55189,55190],{"class":3414},"redis:alpine\n",[2915,55192,55193,55195],{"class":3402,"line":5218},[2915,55194,30112],{"class":29963},[2915,55196,1554],{"class":3529},[2915,55198,55199,55201],{"class":3402,"line":5223},[2915,55200,30047],{"class":3529},[2915,55202,55203],{"class":3414},"\"6379:6379\"\n",[228,55205,55207],{"id":55206},"seite-7","Seite 7",[16,55209,54065],{},[16,55211,54750,55212,54068],{},[5885,55213],{},[16,55215,55216,55217,54758,55219,55221],{},"Aufgabe 6: PostgreSQL + Adminer (Datenbank GUI)",[5885,55218],{},[5885,55220],{},"\nStarte eine PostgreSQL-Datenbank mit Adminer zur Verwaltung über den Browser.",[16,55223,54100,55224,55226],{},[5885,55225],{},"\n• PostgreSQL Port: 5432",[16,55228,55229],{},"• Adminer Port: 8080",[16,55231,54112,55232,54777],{},[5885,55233],{},[3392,55235,55237],{"className":29954,"code":55236,"language":29956,"meta":225,"style":225},"version: '3.8'\nservices:\ndb:\nimage: postgres:15\nenvironment:\nPOSTGRES_DB: example\nPOSTGRES_USER: user\nPOSTGRES_PASSWORD: password\nvolumes:\n- pgdata:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\nports:\n- \"5432:5432\"\n\nadminer:\nimage: adminer\nports:\n- \"8080:8080\"\n\nvolumes:\npgdata:\n\n",[3398,55238,55239,55247,55253,55259,55268,55274,55283,55291,55299,55305,55312,55318,55325,55329,55336,55345,55351,55358,55362,55368],{"__ignoreMap":225},[2915,55240,55241,55243,55245],{"class":3402,"line":3403},[2915,55242,29558],{"class":29963},[2915,55244,6162],{"class":3529},[2915,55246,54150],{"class":3414},[2915,55248,55249,55251],{"class":3402,"line":1117},[2915,55250,29977],{"class":29963},[2915,55252,1554],{"class":3529},[2915,55254,55255,55257],{"class":3402,"line":1125},[2915,55256,53051],{"class":29963},[2915,55258,1554],{"class":3529},[2915,55260,55261,55263,55265],{"class":3402,"line":3515},[2915,55262,30059],{"class":29963},[2915,55264,6162],{"class":3529},[2915,55266,55267],{"class":3414},"postgres:15\n",[2915,55269,55270,55272],{"class":3402,"line":3520},[2915,55271,30178],{"class":29963},[2915,55273,1554],{"class":3529},[2915,55275,55276,55278,55280],{"class":3402,"line":5070},[2915,55277,30975],{"class":29963},[2915,55279,6162],{"class":3529},[2915,55281,55282],{"class":3414},"example\n",[2915,55284,55285,55287,55289],{"class":3402,"line":5075},[2915,55286,30989],{"class":29963},[2915,55288,6162],{"class":3529},[2915,55290,53156],{"class":3414},[2915,55292,55293,55295,55297],{"class":3402,"line":5093},[2915,55294,31003],{"class":29963},[2915,55296,6162],{"class":3529},[2915,55298,54451],{"class":3414},[2915,55300,55301,55303],{"class":3402,"line":5098},[2915,55302,30145],{"class":29963},[2915,55304,1554],{"class":3529},[2915,55306,55307,55309],{"class":3402,"line":5207},[2915,55308,30047],{"class":3529},[2915,55310,55311],{"class":3414},"pgdata:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\n",[2915,55313,55314,55316],{"class":3402,"line":5212},[2915,55315,30112],{"class":29963},[2915,55317,1554],{"class":3529},[2915,55319,55320,55322],{"class":3402,"line":5218},[2915,55321,30047],{"class":3529},[2915,55323,55324],{"class":3414},"\"5432:5432\"\n",[2915,55326,55327],{"class":3402,"line":5223},[2915,55328,3506],{"emptyLinePlaceholder":3505},[2915,55330,55331,55334],{"class":3402,"line":5229},[2915,55332,55333],{"class":29963},"adminer",[2915,55335,1554],{"class":3529},[2915,55337,55338,55340,55342],{"class":3402,"line":5253},[2915,55339,30059],{"class":29963},[2915,55341,6162],{"class":3529},[2915,55343,55344],{"class":3414},"adminer\n",[2915,55346,55347,55349],{"class":3402,"line":5266},[2915,55348,30112],{"class":29963},[2915,55350,1554],{"class":3529},[2915,55352,55353,55355],{"class":3402,"line":5721},[2915,55354,30047],{"class":3529},[2915,55356,55357],{"class":3414},"\"8080:8080\"\n",[2915,55359,55360],{"class":3402,"line":9401},[2915,55361,3506],{"emptyLinePlaceholder":3505},[2915,55363,55364,55366],{"class":3402,"line":9406},[2915,55365,30145],{"class":29963},[2915,55367,1554],{"class":3529},[2915,55369,55370,55373],{"class":3402,"line":9411},[2915,55371,55372],{"class":29963},"pgdata",[2915,55374,1554],{"class":3529},[228,55376,55378],{"id":55377},"seite-8","Seite 8",[16,55380,54065],{},[16,55382,54750,55383,54068],{},[5885,55384],{},[16,55386,55387,55388,54758,55390,55392],{},"Aufgabe 7: RabbitMQ Messaging Queue",[5885,55389],{},[5885,55391],{},"\nStarte einen RabbitMQ-Container und sende eine Nachricht von einer Node.js-App.",[16,55394,54100,55395,55397],{},[5885,55396],{},"\n• RabbitMQ läuft auf 5672, Web-UI auf 15672",[16,55399,55400],{},"• Nutze das Paket amqplib",[16,55402,54112,55403,54777],{},[5885,55404],{},[3392,55406,55408],{"className":29954,"code":55407,"language":29956,"meta":225,"style":225},"version: '3.8'\nservices:\nrabbitmq:\nimage: rabbitmq:3-management\nports:\n- \"5672:5672\"\n- \"15672:15672\"\n\nsender:\nbuild: .\u002Fsender\ndepends_on:\n- rabbitmq\n\n",[3398,55409,55410,55418,55424,55431,55440,55446,55453,55460,55464,55471,55480,55486],{"__ignoreMap":225},[2915,55411,55412,55414,55416],{"class":3402,"line":3403},[2915,55413,29558],{"class":29963},[2915,55415,6162],{"class":3529},[2915,55417,54150],{"class":3414},[2915,55419,55420,55422],{"class":3402,"line":1117},[2915,55421,29977],{"class":29963},[2915,55423,1554],{"class":3529},[2915,55425,55426,55429],{"class":3402,"line":1125},[2915,55427,55428],{"class":29963},"rabbitmq",[2915,55430,1554],{"class":3529},[2915,55432,55433,55435,55437],{"class":3402,"line":3515},[2915,55434,30059],{"class":29963},[2915,55436,6162],{"class":3529},[2915,55438,55439],{"class":3414},"rabbitmq:3-management\n",[2915,55441,55442,55444],{"class":3402,"line":3520},[2915,55443,30112],{"class":29963},[2915,55445,1554],{"class":3529},[2915,55447,55448,55450],{"class":3402,"line":5070},[2915,55449,30047],{"class":3529},[2915,55451,55452],{"class":3414},"\"5672:5672\"\n",[2915,55454,55455,55457],{"class":3402,"line":5075},[2915,55456,30047],{"class":3529},[2915,55458,55459],{"class":3414},"\"15672:15672\"\n",[2915,55461,55462],{"class":3402,"line":5093},[2915,55463,3506],{"emptyLinePlaceholder":3505},[2915,55465,55466,55469],{"class":3402,"line":5098},[2915,55467,55468],{"class":29963},"sender",[2915,55470,1554],{"class":3529},[2915,55472,55473,55475,55477],{"class":3402,"line":5207},[2915,55474,29428],{"class":29963},[2915,55476,6162],{"class":3529},[2915,55478,55479],{"class":3414},".\u002Fsender\n",[2915,55481,55482,55484],{"class":3402,"line":5212},[2915,55483,30271],{"class":29963},[2915,55485,1554],{"class":3529},[2915,55487,55488,55490],{"class":3402,"line":5218},[2915,55489,30047],{"class":3529},[2915,55491,55492],{"class":3414},"rabbitmq\n",[16,55494,55495,55496,55498],{},"sender\u002Findex.js",[5885,55497],{},"\nconst amqp = require('amqplib');",[16,55500,55501,55502,55504,55505,55507,55508,55510,55511,55513,55514,55516,55517,55519,55520,55522,55523,55525,55526,55528],{},"(async () => {",[5885,55503],{},"\nconst conn = await amqp.connect('amqp:\u002F\u002Frabbitmq');",[5885,55506],{},"\nconst ch = await conn.createChannel();",[5885,55509],{},"\nconst q = 'task_queue';",[5885,55512],{},"\nawait ch.assertQueue(q);",[5885,55515],{},"\nch.sendToQueue(q, Buffer.from('Hello RabbitMQ'));",[5885,55518],{},"\nconsole.log('Message sent');",[5885,55521],{},"\nawait ch.close();",[5885,55524],{},"\nawait conn.close();",[5885,55527],{},"\n})();",[16,55530,55531],{},"sender\u002FDockerfile",[3392,55533,55535],{"className":7163,"code":55534,"language":7165,"meta":225,"style":225},"FROM node:18\nWORKDIR \u002Fapp\nCOPY . .\nRUN npm install\nCMD [\"node\", \"index.js\"]\n\n",[3398,55536,55537,55543,55549,55555,55561],{"__ignoreMap":225},[2915,55538,55539,55541],{"class":3402,"line":3403},[2915,55540,7190],{"class":3533},[2915,55542,54540],{"class":3529},[2915,55544,55545,55547],{"class":3402,"line":1117},[2915,55546,7250],{"class":3533},[2915,55548,7448],{"class":3529},[2915,55550,55551,55553],{"class":3402,"line":1125},[2915,55552,7274],{"class":3533},[2915,55554,51618],{"class":3529},[2915,55556,55557,55559],{"class":3402,"line":3515},[2915,55558,7298],{"class":3533},[2915,55560,54560],{"class":3529},[2915,55562,55563,55565,55567,55569,55571,55573],{"class":3402,"line":3520},[2915,55564,7341],{"class":3533},[2915,55566,7373],{"class":3529},[2915,55568,7587],{"class":3414},[2915,55570,7379],{"class":3529},[2915,55572,54579],{"class":3414},[2915,55574,7385],{"class":3529},[228,55576,55578],{"id":55577},"seite-9","Seite 9",[16,55580,54065,55581,54068],{},[5885,55582],{},[16,55584,55585,55586,54628,55588,55590,55591,54637,55593,55595,55596,54646,55598,54646],{},"sender\u002Fpackage.json",[5885,55587],{},[5885,55589],{},"\n\"name\": \"rabbit-sender\",",[5885,55592],{},[5885,55594],{},"\n\"amqplib\": \"^0.10.0\"",[5885,55597],{},[5885,55599],{},[54,55601,55603],{"id":55602},"sudoers_antworten_mit_fragenpdf","sudoers_antworten_mit_fragen.pdf",[16,55605,55606],{},"Quelle: sudoers_antworten_mit_fragen.pdf - 9 Seite(n)",[228,55608,54062],{"id":55609},"seite-1-1",[16,55611,54065],{},[16,55613,55614],{},"Technikerschule Erlangen",[16,55616,55617,55618,55620],{},"Prufungsfragen zur sudoers-Datei - Antworten",[5885,55619],{},"\nGrundlagen",[966,55622,55623,55632,55641],{},[23,55624,55625,55626,55628,55629,55631],{},"Was ist die Datei \u002Fetc\u002Fsudoers?",[5885,55627],{},"\nAntwort: Die Datei \u002Fetc\u002Fsudoers legt fest, welche Benutzer oder Gruppen sudo benutzen durfen,",[5885,55630],{},"\nals welcher Zielbenutzer Befehle laufen und welche Kommandos erlaubt oder verboten sind.",[23,55633,55634,55635,55637,55638,55640],{},"Warum sollte man die sudoers-Datei nicht direkt mit einem Editor bearbeiten?",[5885,55636],{},"\nAntwort: Weil schon kleine Syntaxfehler sudo unbrauchbar machen konnen. Dann konnen",[5885,55639],{},"\nAdministratoren sich im schlimmsten Fall aussperren oder Rechte falsch vergeben.",[23,55642,55643,55644,55646,55647,55649],{},"Welchen Befehl nutzt man zum sicheren Bearbeiten der sudoers-Datei?",[5885,55645],{},"\nAntwort: Dafur nutzt man visudo. Das Tool sperrt die Datei wahrend der Bearbeitung und pruft",[5885,55648],{},"\ndie Syntax vor dem Speichern.",[16,55651,55652,55653,55655,55656,55658,55659,55661,55662,55664,55665,55667,55668,55670,55671,55673,55674,55676,55677,55679],{},"Syntax & Struktur",[5885,55654],{},"\n4. Wie ist eine typische sudoers-Regel aufgebaut?",[5885,55657],{},"\nAntwort: Typisch ist: Benutzer Host=(Runas) Optionen: Befehl. Beispiel: max ALL=(root)",[5885,55660],{},"\n\u002Fusr\u002Fbin\u002Fsystemctl restart apache2.",[5885,55663],{},"\n5. Was bedeutet ALL in der sudoers-Datei?",[5885,55666],{},"\nAntwort: ALL bedeutet immer eine Freigabe fur alle Werte im jeweiligen Feld. Je nach Position",[5885,55669],{},"\nkann es also alle Hosts, alle Zielbenutzer oder alle Befehle meinen.",[5885,55672],{},"\n6. Was bedeutet (ALL) in einer Regel?",[5885,55675],{},"\nAntwort: Das Runas-Feld (ALL) bedeutet, dass der Befehl als jeder beliebige Zielbenutzer",[5885,55678],{},"\nausgefuhrt werden darf, also nicht nur als root.",[16,55681,55682,55683,55685,55686,55688,55689,55691,55692,55694,55695,55697,55698,55700],{},"Rechte & Sicherheit",[5885,55684],{},"\n7. Was bewirkt die Option NOPASSWD?",[5885,55687],{},"\nAntwort: NOPASSWD erlaubt die Ausfuhrung der angegebenen Befehle ohne Passwortabfrage.",[5885,55690],{},"\nDas ist bequem, sollte aber nur sehr gezielt fur wenige sichere Kommandos eingesetzt werden.",[5885,55693],{},"\n8. Was ist der Unterschied zwischen sudo und su?",[5885,55696],{},"\nAntwort: sudo fuhrt einzelne Befehle mit erhohten Rechten aus und kann fein granular geregelt",[5885,55699],{},"\nwerden. su wechselt direkt in ein anderes Benutzerkonto, oft in eine komplette Root-Shell.",[16,55702,55703,55704,55706,55707,55709,55710,55712],{},"Aliase",[5885,55705],{},"\n9. Welche Alias-Typen gibt es in der sudoers-Datei?",[5885,55708],{},"\nAntwort: Es gibt User_Alias fur Benutzer, Runas_Alias fur Zielbenutzer, Host_Alias fur Rechner",[5885,55711],{},"\nund Cmnd_Alias fur Befehlsgruppen.",[16,55714,55715,55716,55718,55719,55721,55722,55724,55725,55727,55728,55730],{},"Praktische Fragen",[5885,55717],{},"\n10. Wie erlaubst du einem Benutzer nur den Neustart des Systems?",[5885,55720],{},"\nAntwort: Zum Beispiel mit: max ALL=(root) \u002Fusr\u002Fsbin\u002Freboot. Noch besser ist die exakte Freigabe",[5885,55723],{},"\nnur des einen benotigten Befehls statt allgemeiner Systemrechte.",[5885,55726],{},"\n11. Wie erlaubst du einer Gruppe sudo-Zugriff?",[5885,55729],{},"\nAntwort: Gruppen werden mit einem Prozentzeichen geschrieben, zum Beispiel: %sudo",[3392,55732,55734],{"className":3394,"code":55733,"language":3396,"meta":225,"style":225},"ALL=(ALL) ALL. Dann erhalten alle Mitglieder dieser Gruppe die erlaubten Rechte.\n\n",[3398,55735,55736],{"__ignoreMap":225},[2915,55737,55738,55740,55742,55744,55746],{"class":3402,"line":3403},[2915,55739,36890],{"class":3529},[2915,55741,5137],{"class":3533},[2915,55743,5140],{"class":3529},[2915,55745,36890],{"class":3414},[2915,55747,55748],{"class":3529},") ALL. Dann erhalten alle Mitglieder dieser Gruppe die erlaubten Rechte.\n",[16,55750,55751],{},"Sicherheit & Best Practices",[228,55753,54202],{"id":55754},"seite-2-1",[966,55756,55757,55769],{"start":5218},[23,55758,55759,55760,55762,55763,55765,55766,55768],{},"Warum ist es gefahrlich, ALL=(ALL) ALL zu vergeben?",[5885,55761],{},"\nAntwort: Weil der Benutzer damit praktisch jede Aktion als jeder Benutzer ausfuhren kann. Das",[5885,55764],{},"\nentspricht fast vollem Administrationszugriff und vergroBert das Missbrauchs- und Fehlerrisiko",[5885,55767],{},"\nstark.",[23,55770,55771,55772,55774,55775,55777,55778,55780],{},"Was macht die Direktive Defaults?",[5885,55773],{},"\nAntwort: Defaults setzt Standardoptionen fur sudo, zum Beispiel Umgebungsvariablen,",[5885,55776],{},"\nPasswortverhalten oder TTY-Anforderungen. Solche Vorgaben konnen global oder",[5885,55779],{},"\nbenutzerbezogen gelten.",[16,55782,55783,55784,55786,55787,55789,55790,55792,55793,55795,55796,55798,55799,55801],{},"Erweiterte Fragen",[5885,55785],{},"\n14. Was ist der Unterschied zwischen \u002Fetc\u002Fsudoers und \u002Fetc\u002Fsudoers.d\u002F?",[5885,55788],{},"\nAntwort: \u002Fetc\u002Fsudoers ist die zentrale Hauptdatei. In \u002Fetc\u002Fsudoers.d\u002F liegen zusatzliche",[5885,55791],{},"\nEinzeldateien, mit denen Rechte sauber modular und besser wartbar verteilt werden konnen.",[5885,55794],{},"\n15. Wie uberpruft man die Syntax der sudoers-Datei?",[5885,55797],{},"\nAntwort: Mit visudo -c. Der Befehl pruft die Syntax der Hauptdatei und normalerweise auch die",[5885,55800],{},"\neingebundenen Dateien.",[228,55803,54465],{"id":55804},"seite-3-1",[16,55806,54065],{},[16,55808,55614],{},[16,55810,55811,55812,55814,55815,55817],{},"Szenario- & Analysefragen - Antworten",[5885,55813],{},"\nSzenario- & Analysefragen",[5885,55816],{},"\n16. Was bewirkt folgende Regel genau?",[3392,55819,55821],{"className":3394,"code":55820,"language":3396,"meta":225,"style":225},"max ALL=(root, www-data) \u002Fusr\u002Fbin\u002Fsystemctl restart apache2\n",[3398,55822,55823],{"__ignoreMap":225},[2915,55824,55825,55827,55829,55831,55834,55837,55839,55841,55843],{"class":3402,"line":3403},[2915,55826,36825],{"class":3406},[2915,55828,36828],{"class":3414},[2915,55830,5140],{"class":3529},[2915,55832,55833],{"class":3406},"root,",[2915,55835,55836],{"class":3414}," www-data",[2915,55838,5056],{"class":3529},[2915,55840,36895],{"class":3414},[2915,55842,32423],{"class":3414},[2915,55844,36900],{"class":3414},[16,55846,55847,55848,55850,55851,55853],{},"Antwort: Benutzer max darf auf allen Hosts genau den Befehl \u002Fusr\u002Fbin\u002Fsystemctl restart apache2",[5885,55849],{},"\nausfuhren, und zwar als root oder als www-data. Andere Befehle sind dadurch nicht erlaubt.",[5885,55852],{},"\n17. Was ist der Unterschied zwischen diesen beiden Regeln?",[3392,55855,55857],{"className":3394,"code":55856,"language":3396,"meta":225,"style":225},"max ALL=(ALL) ALL\nmax ALL=ALL ALL\n",[3398,55858,55859,55873],{"__ignoreMap":225},[2915,55860,55861,55863,55865,55867,55869,55871],{"class":3402,"line":3403},[2915,55862,36825],{"class":3406},[2915,55864,36828],{"class":3414},[2915,55866,5140],{"class":3529},[2915,55868,36890],{"class":3406},[2915,55870,5056],{"class":3529},[2915,55872,36838],{"class":3414},[2915,55874,55875,55877,55880],{"class":3402,"line":1117},[2915,55876,36825],{"class":3406},[2915,55878,55879],{"class":3414}," ALL=ALL",[2915,55881,37157],{"class":3414},[16,55883,55884,55885,55887,55888,55890,55891,55893],{},"Antwort: Inhaltlich fast keiner: beide erlauben max alle Befehle als alle Zielbenutzer. Die",[5885,55886],{},"\nSchreibweise mit Klammern ist die ubliche und klarere Form; ohne Klammern wird historisch ein",[5885,55889],{},"\nStandard-Runas angenommen.",[5885,55892],{},"\n18. Welche Regel hat Prioritat und warum?",[3392,55895,55897],{"className":3394,"code":55896,"language":3396,"meta":225,"style":225},"max ALL=(ALL) ALL\nmax ALL=(ALL) !\u002Fbin\u002Fbash\n",[3398,55898,55899,55913],{"__ignoreMap":225},[2915,55900,55901,55903,55905,55907,55909,55911],{"class":3402,"line":3403},[2915,55902,36825],{"class":3406},[2915,55904,36828],{"class":3414},[2915,55906,5140],{"class":3529},[2915,55908,36890],{"class":3406},[2915,55910,5056],{"class":3529},[2915,55912,36838],{"class":3414},[2915,55914,55915,55917,55919,55921,55923,55925],{"class":3402,"line":1117},[2915,55916,36825],{"class":3406},[2915,55918,36828],{"class":3414},[2915,55920,5140],{"class":3529},[2915,55922,36890],{"class":3406},[2915,55924,5056],{"class":3529},[2915,55926,55927],{"class":3414},"!\u002Fbin\u002Fbash\n",[16,55929,55930,55931,55933,55934,55936,55937,55939,55940,55942],{},"Antwort: Die einschrankende Regel mit !\u002Fbin\u002Fbash ist wichtiger, weil Negationen verbotene",[5885,55932],{},"\nBefehle explizit ausschlieBen. Trotzdem sind solche Mischregeln heikel, weil man Bash oft uber",[5885,55935],{},"\nandere Programme indirekt wieder erreichen kann.",[5885,55938],{},"\n19. Was passiert bei folgender Konfiguration?",[5885,55941],{},"\nCmnd_Alias DANGER = \u002Fbin\u002Frm, \u002Fbin\u002Fdd",[3392,55944,55946],{"className":3394,"code":55945,"language":3396,"meta":225,"style":225},"max ALL=(ALL) ALL, !DANGER\n",[3398,55947,55948],{"__ignoreMap":225},[2915,55949,55950,55952,55954,55956,55958,55960,55963],{"class":3402,"line":3403},[2915,55951,36825],{"class":3406},[2915,55953,36828],{"class":3414},[2915,55955,5140],{"class":3529},[2915,55957,36890],{"class":3406},[2915,55959,5056],{"class":3529},[2915,55961,55962],{"class":3414},"ALL,",[2915,55964,55965],{"class":3414}," !DANGER\n",[16,55967,55968,55969,55971,55972,55974],{},"Antwort: max darf grundsatzlich alle Befehle ausfuhren, auBer \u002Fbin\u002Frm und \u002Fbin\u002Fdd. Sicher ist das",[5885,55970],{},"\ntrotzdem nicht, weil ahnliche Wirkungen oft uber andere Werkzeuge oder Shells erreicht werden",[5885,55973],{},"\nkonnen.",[16,55976,55977,55978,55980],{},"Tiefergehende Syntaxfragen",[5885,55979],{},"\n20. Wie wirken NOPASSWD und PASSWD in Kombination innerhalb einer Regel?",[3392,55982,55984],{"className":3394,"code":55983,"language":3396,"meta":225,"style":225},"max ALL=(ALL) NOPASSWD: \u002Fbin\u002Fls, PASSWD: \u002Fbin\u002Fcat\n",[3398,55985,55986],{"__ignoreMap":225},[2915,55987,55988,55990,55992,55994,55996,55998,56000,56003,56006],{"class":3402,"line":3403},[2915,55989,36825],{"class":3406},[2915,55991,36828],{"class":3414},[2915,55993,5140],{"class":3529},[2915,55995,36890],{"class":3406},[2915,55997,5056],{"class":3529},[2915,55999,36932],{"class":3414},[2915,56001,56002],{"class":3414}," \u002Fbin\u002Fls,",[2915,56004,56005],{"class":3414}," PASSWD:",[2915,56007,56008],{"class":3414}," \u002Fbin\u002Fcat\n",[16,56010,56011,56012,56014,56015,56017,56018,56020,56021,56023,56024,56026,56027,56029],{},"Antwort: Die Option wirkt nur fur die danach genannten Befehle. \u002Fbin\u002Fls ware ohne Passwort",[5885,56013],{},"\nerlaubt, wahrend fur \u002Fbin\u002Fcat weiterhin eine Passwortabfrage erfolgt.",[5885,56016],{},"\n21. Was bewirkt folgende Defaults-Zeile?",[5885,56019],{},"\nDefaults:max !requiretty",[5885,56022],{},"\nAntwort: Fur den Benutzer max wird die TTY-Pflicht deaktiviert. Er darf sudo also auch ohne",[5885,56025],{},"\ninteraktives Terminal verwenden, etwa in Skripten oder per Fernaufruf.",[5885,56028],{},"\n22. Was ist der Unterschied zwischen folgenden Regeln?",[3392,56031,56033],{"className":3394,"code":56032,"language":3396,"meta":225,"style":225},"max ALL=(ALL:ALL) ALL\nmax ALL=(ALL) ALL\n",[3398,56034,56035,56049],{"__ignoreMap":225},[2915,56036,56037,56039,56041,56043,56045,56047],{"class":3402,"line":3403},[2915,56038,36825],{"class":3406},[2915,56040,36828],{"class":3414},[2915,56042,5140],{"class":3529},[2915,56044,36833],{"class":3406},[2915,56046,5056],{"class":3529},[2915,56048,36838],{"class":3414},[2915,56050,56051,56053,56055,56057,56059,56061],{"class":3402,"line":1117},[2915,56052,36825],{"class":3406},[2915,56054,36828],{"class":3414},[2915,56056,5140],{"class":3529},[2915,56058,36890],{"class":3406},[2915,56060,5056],{"class":3529},[2915,56062,36838],{"class":3414},[16,56064,56065,56066,56068],{},"Antwort: Mit (ALL:ALL) werden sowohl Zielbenutzer als auch Zielgruppen frei wahlbar. Mit (ALL)",[5885,56067],{},"\nist nur der Zielbenutzer explizit frei; die Gruppenseite bleibt standardmaBig eingeschrankter.",[16,56070,56071,56072,56074],{},"Edge Cases & Fallen",[5885,56073],{},"\n23. Warum kann folgende Regel ein Sicherheitsrisiko darstellen?",[3392,56076,56078],{"className":3394,"code":56077,"language":3396,"meta":225,"style":225},"max ALL=(ALL) \u002Fusr\u002Fbin\u002Fvim\n\n",[3398,56079,56080],{"__ignoreMap":225},[2915,56081,56082,56084,56086,56088,56090,56092],{"class":3402,"line":3403},[2915,56083,36825],{"class":3406},[2915,56085,36828],{"class":3414},[2915,56087,5140],{"class":3529},[2915,56089,36890],{"class":3406},[2915,56091,5056],{"class":3529},[2915,56093,56094],{"class":3414},"\u002Fusr\u002Fbin\u002Fvim\n",[228,56096,54618],{"id":56097},"seite-4-1",[16,56099,56100,56101,56103,56104,56106,56107,56109],{},"Antwort: Weil man aus vim heraus Shell-Befehle starten oder Dateien mit hohen Rechten",[5885,56102],{},"\nbearbeiten kann. Dadurch wird aus einem scheinbar harmlosen Editor schnell ein Weg zur",[5885,56105],{},"\nPrivilege Escalation.",[5885,56108],{},"\n24. Was passiert bei dieser Regel und wo liegt ein mogliches Problem?",[3392,56111,56113],{"className":3394,"code":56112,"language":3396,"meta":225,"style":225},"max ALL=(ALL) \u002Fusr\u002Fbin\u002Fless \u002Fvar\u002Flog\u002F*\n",[3398,56114,56115],{"__ignoreMap":225},[2915,56116,56117,56119,56121,56123,56125,56127,56130,56132],{"class":3402,"line":3403},[2915,56118,36825],{"class":3406},[2915,56120,36828],{"class":3414},[2915,56122,5140],{"class":3529},[2915,56124,36890],{"class":3406},[2915,56126,5056],{"class":3529},[2915,56128,56129],{"class":3414},"\u002Fusr\u002Fbin\u002Fless",[2915,56131,22686],{"class":3414},[2915,56133,25712],{"class":3410},[16,56135,56136,56137,56139,56140,56142,56143,56145],{},"Antwort: max darf Logdateien unter \u002Fvar\u002Flog mit less lesen. Problematisch ist, dass less externe",[5885,56138],{},"\nProgramme aufrufen kann und Wildcards zusammen mit Dateilinks oder Sonderfallen unerwartete",[5885,56141],{},"\nZugriffe erlauben konnen.",[5885,56144],{},"\n25. Warum ist folgende Regel problematisch?",[3392,56147,56149],{"className":3394,"code":56148,"language":3396,"meta":225,"style":225},"max ALL=(ALL) \u002Fusr\u002Fbin\u002Fpython3\n",[3398,56150,56151],{"__ignoreMap":225},[2915,56152,56153,56155,56157,56159,56161,56163],{"class":3402,"line":3403},[2915,56154,36825],{"class":3406},[2915,56156,36828],{"class":3414},[2915,56158,5140],{"class":3529},[2915,56160,36890],{"class":3406},[2915,56162,5056],{"class":3529},[2915,56164,56165],{"class":3414},"\u002Fusr\u002Fbin\u002Fpython3\n",[16,56167,56168,56169,56171],{},"Antwort: Ein Interpreter wie python3 kann beliebige Programme starten, Dateien schreiben oder",[5885,56170],{},"\nShells offnen. Damit entspricht die Freigabe praktisch sehr weitreichendem Vollzugriff.",[228,56173,54745],{"id":56174},"seite-5-1",[16,56176,54065],{},[16,56178,55614],{},[16,56180,56181,56182,56184,56185,56187,56188,56190,56191,56193],{},"Kombinations- & Logikfragen - Antworten",[5885,56183],{},"\nKombinations- & Logikfragen",[5885,56186],{},"\n26. Welche Berechtigungen ergeben sich aus folgender Konfiguration?",[5885,56189],{},"\nUser_Alias ADMINS = max, anna",[5885,56192],{},"\nCmnd_Alias WEB = \u002Fusr\u002Fbin\u002Fsystemctl restart apache2",[3392,56195,56197],{"className":3394,"code":56196,"language":3396,"meta":225,"style":225},"ADMINS ALL=(root) WEB\n",[3398,56198,56199],{"__ignoreMap":225},[2915,56200,56201,56204,56206,56208,56210,56212],{"class":3402,"line":3403},[2915,56202,56203],{"class":3406},"ADMINS",[2915,56205,36828],{"class":3414},[2915,56207,5140],{"class":3529},[2915,56209,12437],{"class":3406},[2915,56211,5056],{"class":3529},[2915,56213,56214],{"class":3414},"WEB\n",[16,56216,56217,56218,56220,56221,56223,56224,56226,56227,56229,56230,56232,56233,56235],{},"Antwort: Die Benutzer max und anna durfen auf allen Hosts als root genau den Befehl",[5885,56219],{},"\n\u002Fusr\u002Fbin\u002Fsystemctl restart apache2 ausfuhren. Weitere Kommandos werden dadurch nicht",[5885,56222],{},"\nfreigegeben.",[5885,56225],{},"\n27. Was passiert, wenn mehrere Dateien im Verzeichnis \u002Fetc\u002Fsudoers.d\u002F vorhanden sind?",[5885,56228],{},"\nAntwort: Alle eingebundenen Dateien werden ausgewertet. Deshalb muss man auf Reihenfolge,",[5885,56231],{},"\nNamensgebung und mogliche Regelkonflikte achten, damit keine unbeabsichtigten Rechte",[5885,56234],{},"\nentstehen.",[16,56237,56238,56239,56241],{},"Sicherheitsbewertung",[5885,56240],{},"\n28. Welche der folgenden Regeln ist sicherer und warum?",[3392,56243,56245],{"className":3394,"code":56244,"language":3396,"meta":225,"style":225},"max ALL=(ALL) ALL\n",[3398,56246,56247],{"__ignoreMap":225},[2915,56248,56249,56251,56253,56255,56257,56259],{"class":3402,"line":3403},[2915,56250,36825],{"class":3406},[2915,56252,36828],{"class":3414},[2915,56254,5140],{"class":3529},[2915,56256,36890],{"class":3406},[2915,56258,5056],{"class":3529},[2915,56260,36838],{"class":3414},[16,56262,56263],{},"vs.",[3392,56265,56267],{"className":3394,"code":56266,"language":3396,"meta":225,"style":225},"max ALL=(root) \u002Fusr\u002Fbin\u002Fsystemctl\n",[3398,56268,56269],{"__ignoreMap":225},[2915,56270,56271,56273,56275,56277,56279,56281],{"class":3402,"line":3403},[2915,56272,36825],{"class":3406},[2915,56274,36828],{"class":3414},[2915,56276,5140],{"class":3529},[2915,56278,12437],{"class":3406},[2915,56280,5056],{"class":3529},[2915,56282,37118],{"class":3414},[16,56284,56285,56286,56288],{},"Antwort: Die zweite Regel ist deutlich sicherer, weil sie nur einen bestimmten Befehl als root",[5885,56287],{},"\nerlaubt. Das Prinzip der minimalen Rechte wird damit viel besser umgesetzt.",[16,56290,56291,56292,56294,56295,56297,56298,56300,56301,56303],{},"Praxisaufgabe",[5885,56293],{},"\n29. Formuliere eine sudoers-Regel mit folgenden Anforderungen: Benutzer max,",[5885,56296],{},"\nAusfuhrung als root, apt update und apt upgrade, ohne Passwort",[5885,56299],{},"\nAntwort: Eine passende Regel ist: max ALL=(root) NOPASSWD: \u002Fusr\u002Fbin\u002Fapt update, \u002Fusr\u002Fbin\u002Fapt",[5885,56302],{},"\nupgrade. Wichtig ist die exakte Angabe der erlaubten Kommandos.",[228,56305,55002],{"id":56306},"seite-6-1",[16,56308,54065],{},[16,56310,55614],{},[16,56312,56313,56314,56316],{},"Komplexe Prufungsaufgabe: sudoers Analyse - Antworten",[5885,56315],{},"\nTeil 1: Verstandnisfragen",[966,56318,56319,56328,56340],{},[23,56320,56321,56322,56324,56325,56327],{},"Welche Rechte haben Benutzer aus der Gruppe ADMINS grundsatzlich?",[5885,56323],{},"\nAntwort: ADMINS umfasst max und anna. Durch die Regel ADMINS ALL=(ALL) ALL durfen",[5885,56326],{},"\nbeide grundsatzlich alle Befehle als alle Zielbenutzer ausfuhren.",[23,56329,56330,56331,56333,56334,56336,56337,56339],{},"Welche Befehle darf tom konkret ausfuhren?",[5885,56332],{},"\nAntwort: tom gehort zu DEV und darf dadurch als root die Befehle aus SYSTEM und EDIT",[5885,56335],{},"\nausfuhren, also systemctl, journalctl, vim und nano. Zusatzlich darf er laut letzter Regel less auf",[5885,56338],{},"\nDateien unter \u002Fvar\u002Flog verwenden.",[23,56341,56342,56343,56345,56346,56348,56349,56351],{},"Darf tom den Befehl \u002Fbin\u002Frm ausfuhren? Begrunde.",[5885,56344],{},"\nAntwort: Nach der DEV-Regel nicht direkt, weil !DANGEROUS den Alias mit \u002Fbin\u002Frm und \u002Fbin\u002Fdd",[5885,56347],{},"\nausschlieBen soll. Praktisch bleibt die Konfiguration aber unsicher, weil erlaubte Editoren oder",[5885,56350],{},"\nandere Programme dennoch Missbrauch ermoglichen konnen.",[16,56353,56354,56355,56357,56358,56360,56361,56363],{},"Teil 2: Prioritat & Regelkonflikte",[5885,56356],{},"\n4. Welche Regel gilt fur max beim Ausfuhren von Befehlen allgemein? Begrunde anhand",[5885,56359],{},"\nder Reihenfolge.",[5885,56362],{},"\nAntwort: Fur max gilt insgesamt die Kombination aller passenden Regeln. Allgemein hat er durch",[3392,56365,56367],{"className":3394,"code":56366,"language":3396,"meta":225,"style":225},"ADMINS ALL=(ALL) ALL Vollzugriff; die spateren PASSWD- und NOPASSWD-Regeln steuern\n",[3398,56368,56369],{"__ignoreMap":225},[2915,56370,56371,56373,56375,56377,56379,56381,56383,56386,56388,56391,56394,56397,56399,56402],{"class":3402,"line":3403},[2915,56372,56203],{"class":3406},[2915,56374,36828],{"class":3414},[2915,56376,5140],{"class":3529},[2915,56378,36890],{"class":3406},[2915,56380,5056],{"class":3529},[2915,56382,36890],{"class":3414},[2915,56384,56385],{"class":3414}," Vollzugriff",[2915,56387,5248],{"class":3529},[2915,56389,56390],{"class":3406},"die",[2915,56392,56393],{"class":3414}," spateren",[2915,56395,56396],{"class":3414}," PASSWD-",[2915,56398,35207],{"class":3414},[2915,56400,56401],{"class":3414}," NOPASSWD-Regeln",[2915,56403,56404],{"class":3414}," steuern\n",[16,56406,56407,56408,56410,56411,56413,56414,56416,56417,56419,56420,56422,56423,56425,56426,56428,56429,56431],{},"vor allem das Passwortverhalten fur bestimmte Befehle nach.",[5885,56409],{},"\n5. Kann max den Apache-Service ohne Passwort neu starten? Warum oder warum nicht?",[5885,56412],{},"\nAntwort: Ja. Fur genau \u002Fusr\u002Fbin\u002Fsystemctl restart apache2 existiert explizit eine NOPASSWD-",[5885,56415],{},"\nRegel, die die Passwortabfrage fur diesen Befehl aufhebt.",[5885,56418],{},"\n6. Welche Auswirkung hat die Kombination aus NOPASSWD: \u002Fusr\u002Fbin\u002Fsystemctl restart",[5885,56421],{},"\napache2 und PASSWD: ALL?",[5885,56424],{},"\nAntwort: Der Apache-Neustart bleibt ohne Passwort erlaubt, alle anderen per sudo erlaubten",[5885,56427],{},"\nBefehle erfordern ein Passwort. Die speziellere Ausnahme greift also nur fur das exakt genannte",[5885,56430],{},"\nKommando.",[16,56433,56434,56435,56437,56438,56440,56441,56443,56444,56446,56447,56449,56450,56452,56453,56455,56456,56458,56459,56461],{},"Teil 3: Sicherheitsanalyse",[5885,56436],{},"\n7. Warum ist die EDIT-Alias-Definition kritisch im Kontext von sudo?",[5885,56439],{},"\nAntwort: Weil Editoren wie vim oder nano nicht nur Text bearbeiten, sondern oft Shell-Aufrufe,",[5885,56442],{},"\nDateizugriffe und Plugins erlauben. Damit lassen sich Beschrankungen leicht umgehen.",[5885,56445],{},"\n8. Welche Sicherheitsprobleme entstehen durch die Regel: anna ALL=(root)",[5885,56448],{},"\n\u002Fusr\u002Fbin\u002Fvim \u002Fetc\u002F*",[5885,56451],{},"\nAntwort: anna darf damit als root beliebige Dateien unter \u002Fetc mit vim offnen und verandern. Aus",[5885,56454],{},"\nvim heraus kann sie zudem unter Umstanden Shell-Kommandos starten und so weit mehr als nur",[5885,56457],{},"\nKonfigurationen bearbeiten.",[5885,56460],{},"\n9. Warum ist folgende Regel potenziell unsicher, obwohl sie eingeschrankt wirkt? tom",[3392,56463,56465],{"className":3394,"code":56464,"language":3396,"meta":225,"style":225},"ALL=(ALL) \u002Fusr\u002Fbin\u002Fless \u002Fvar\u002Flog\u002F*\n",[3398,56466,56467],{"__ignoreMap":225},[2915,56468,56469,56471,56473,56475,56477,56480],{"class":3402,"line":3403},[2915,56470,36890],{"class":3529},[2915,56472,5137],{"class":3533},[2915,56474,5140],{"class":3529},[2915,56476,36890],{"class":3414},[2915,56478,56479],{"class":3529},") \u002Fusr\u002Fbin\u002Fless \u002Fvar\u002Flog\u002F",[2915,56481,25712],{"class":3533},[16,56483,56484,56485,56487],{},"Antwort: less wirkt wie ein Lesewerkzeug, kann aber externe Programme aufrufen. Auerdem",[5885,56486],{},"\nkonnen Wildcards und besondere Dateien oder Symlinks zu unerwarteten Zugriffen fuhren.",[16,56489,56490],{},"Teil 4: Syntax & Logikfehler",[228,56492,55207],{"id":56493},"seite-7-1",[966,56495,56496],{"start":5207},[23,56497,56498],{},"Gibt es einen logischen oder sicherheitstechnischen Fehler in dieser Zeile? DEV",[3392,56500,56502],{"className":3394,"code":56501,"language":3396,"meta":225,"style":225},"ALL=(root) SYSTEM, EDIT, !DANGEROUS\n",[3398,56503,56504],{"__ignoreMap":225},[2915,56505,56506,56508,56510,56512,56514,56517,56519],{"class":3402,"line":3403},[2915,56507,36890],{"class":3529},[2915,56509,5137],{"class":3533},[2915,56511,5140],{"class":3529},[2915,56513,12437],{"class":3414},[2915,56515,56516],{"class":3529},") SYSTEM, EDIT, ",[2915,56518,5592],{"class":3533},[2915,56520,56521],{"class":3406},"DANGEROUS\n",[16,56523,56524,56525,56527,56528,56530,56531,56533,56534,56536,56537,56539],{},"Antwort: Ja. Die Regel erlaubt sehr starke Werkzeuge wie Editoren und versucht nur einzelne",[5885,56526],{},"\ngefahrliche Befehle auszuschlieBen. Das ist logisch schwach, weil viele andere erlaubte",[5885,56529],{},"\nProgramme ebenfalls missbraucht werden konnen.",[5885,56532],{},"\n11. Wird !DANGEROUS hier zuverlassig durchgesetzt? Begrunde.",[5885,56535],{},"\nAntwort: Nur fur exakt die dort genannten Pfade. Zuverlassig sicher ist das nicht, weil dieselben",[5885,56538],{},"\nWirkungen uber andere Programme, Shells oder alternative Pfade erreichbar bleiben konnen.",[16,56541,56542,56543,56545,56546,56548,56549,56551,56552,56554,56555,56557,56558,56560,56561,56563,56564,56566],{},"Teil 5: Fehler finden",[5885,56544],{},"\n12. Identifiziere mindestens zwei versteckte Probleme oder Risiken in der gesamten",[5885,56547],{},"\nKonfiguration.",[5885,56550],{},"\nAntwort: Erstens fuhrt ADMINS ALL=(ALL) ALL praktisch zu Vollzugriff. Zweitens sind vim, nano,",[5885,56553],{},"\nless und ahnliche Programme als sudo-Befehle riskant, weil sie Shell-Eskalation oder",[5885,56556],{},"\nDateimanipulation erlauben.",[5885,56559],{},"\n13. Welche Regel(n) konnten unbeabsichtigt zu vollstandigem Root-Zugriff fuhren?",[5885,56562],{},"\nAntwort: Sicher die ADMINS-Regel. Praktisch ebenfalls kritisch sind die Freigaben fur vim, nano",[5885,56565],{},"\noder pythonartige Werkzeuge, weil sie sehr leicht zu einer Root-Shell fuhren konnen.",[16,56568,56569,56570,56572,56573,56575,56576,56578,56579,56581,56582,56584,56585,56587,56588,56590,56591,56593,56594,56596],{},"Teil 6: Transfer \u002F Praxis",[5885,56571],{},"\n14. Formuliere eine sichere Alternative fur die DEV-Regel, sodass nur systemctl restart",[5885,56574],{},"\napache2 erlaubt ist und keine Shell-Eskalation moglich ist.",[5885,56577],{},"\nAntwort: Eine sichere Alternative ware: tom ALL=(root) \u002Fusr\u002Fbin\u002Fsystemctl restart apache2. Damit",[5885,56580],{},"\nwird nur ein exakt benannter Befehl freigegeben und keine Shell oder kein Editor erlaubt.",[5885,56583],{},"\n15. Wie wurdest du verhindern, dass Editoren wie vim zur Privilege Escalation genutzt",[5885,56586],{},"\nwerden?",[5885,56589],{},"\nAntwort: Am besten gar keine allgemeinen Editoren per sudo freigeben. Stattdessen nur",[5885,56592],{},"\neinzelne, exakt definierte Verwaltungsbefehle erlauben oder mit sudoedit arbeiten und Shell-",[5885,56595],{},"\nFunktionen vermeiden.",[228,56598,55378],{"id":56599},"seite-8-1",[16,56601,54065],{},[16,56603,55614],{},[16,56605,56606,56607,56609,56610,56612],{},"Prufungsaufgabe: sudoers mit Syntaxfehlern & Fallen -",[5885,56608],{},"\nAntworten",[5885,56611],{},"\nTeil 1: Syntaxfehler erkennen",[966,56614,56615],{},[23,56616,56617,56618,56620,56621,56623,56624,56626],{},"Identifiziere alle Syntaxfehler, die dazu fuhren, dass visudo die Datei ablehnt.",[5885,56619],{},"\nAntwort: Fehlerhaft sind zum Beispiel: User_Alias ADMINS = max, anna, wegen des",[5885,56622],{},"\nabschlieBenden Kommas; Cmnd_Alias EDIT = \u002Fusr\u002Fbin\u002Fvim \u002Fusr\u002Fbin\u002Fnano wegen fehlendem",[5885,56625],{},"\nKomma; Cmnd_Alias DANG = \u002Fbin\u002Frm, \u002Fbin\u002Fdd, wegen des abschlieBenden Kommas; ADMINS",[3392,56628,56630],{"className":3394,"code":56629,"language":3396,"meta":225,"style":225},"ALL=(ALL ALL) ALL wegen falscher Runas-Syntax; DEV ALL=(root) SYS, EDIT !DANG wegen\nfehlendem Komma; max ALL=(ALL) PASSWD ALL wegen fehlendem Doppelpunkt nach\n",[3398,56631,56632,56671],{"__ignoreMap":225},[2915,56633,56634,56636,56638,56640,56642,56645,56648,56651,56653,56655,56657,56659,56662,56665,56668],{"class":3402,"line":3403},[2915,56635,36890],{"class":3529},[2915,56637,5137],{"class":3533},[2915,56639,5140],{"class":3529},[2915,56641,36890],{"class":3414},[2915,56643,56644],{"class":3414}," ALL",[2915,56646,56647],{"class":3529},") ALL wegen falscher Runas-Syntax; ",[2915,56649,56650],{"class":3406},"DEV",[2915,56652,36828],{"class":3414},[2915,56654,5140],{"class":3529},[2915,56656,12437],{"class":3406},[2915,56658,5056],{"class":3529},[2915,56660,56661],{"class":3414},"SYS,",[2915,56663,56664],{"class":3414}," EDIT",[2915,56666,56667],{"class":3414}," !DANG",[2915,56669,56670],{"class":3414}," wegen\n",[2915,56672,56673,56676,56679,56681,56683,56685,56687,56689,56691,56694,56696,56699,56702,56705],{"class":3402,"line":1117},[2915,56674,56675],{"class":3406},"fehlendem",[2915,56677,56678],{"class":3414}," Komma",[2915,56680,5248],{"class":3529},[2915,56682,36825],{"class":3406},[2915,56684,36828],{"class":3414},[2915,56686,5140],{"class":3529},[2915,56688,36890],{"class":3406},[2915,56690,5056],{"class":3529},[2915,56692,56693],{"class":3414},"PASSWD",[2915,56695,56644],{"class":3414},[2915,56697,56698],{"class":3414}," wegen",[2915,56700,56701],{"class":3414}," fehlendem",[2915,56703,56704],{"class":3414}," Doppelpunkt",[2915,56706,56707],{"class":3414}," nach\n",[16,56709,56710,56711,56713,56714,56716,56717,56719,56720,56722,56723,56725,56726,56728],{},"PASSWD.",[5885,56712],{},"\n2. Welche Zeilen enthalten unguItige Alias-Definitionen?",[5885,56715],{},"\nAntwort: Unzulassig sind User_Alias ADMINS = max, anna, sowie Cmnd_Alias EDIT =",[5885,56718],{},"\n\u002Fusr\u002Fbin\u002Fvim \u002Fusr\u002Fbin\u002Fnano und Cmnd_Alias DANG = \u002Fbin\u002Frm, \u002Fbin\u002Fdd,.",[5885,56721],{},"\n3. Wo fehlen notwendige Trennzeichen oder Operatoren?",[5885,56724],{},"\nAntwort: Es fehlt ein Komma zwischen vim und nano, ein Komma vor !DANG und ein",[5885,56727],{},"\nDoppelpunkt nach PASSWD. Genau solche kleinen Zeichen sind in sudoers besonders wichtig.",[16,56730,56731,56732,56734,56735,56737,56738,56740,56741,56743,56744,56746,56747,56749,56750,56752,56753,56755],{},"Teil 2: Tricky Syntax",[5885,56733],{},"\n4. Ist folgende Zeile gultig oder fehlerhaft? Begrunde.",[5885,56736],{},"\nDefaults:anna ! requiretty",[5885,56739],{},"\nAntwort: Sie ist fehlerhaft, weil zwischen ! und requiretty kein Leerzeichen stehen darf. Korrekt",[5885,56742],{},"\nware: Defaults:anna !requiretty.",[5885,56745],{},"\n5. Was ist das Problem bei: ADMINS ALL=(ALL ALL) ALL",[5885,56748],{},"\nAntwort: Im Runas-Teil fehlt der korrekte Trenner zwischen Benutzer und Gruppe. Richtig ware",[5885,56751],{},"\nentweder (ALL) oder (ALL:ALL).",[5885,56754],{},"\n6. Warum ist diese Zeile syntaktisch oder logisch problematisch?",[3392,56757,56759],{"className":3394,"code":56758,"language":3396,"meta":225,"style":225},"DEV ALL=(root) SYS, EDIT !DANG\n",[3398,56760,56761],{"__ignoreMap":225},[2915,56762,56763,56765,56767,56769,56771,56773,56775,56777],{"class":3402,"line":3403},[2915,56764,56650],{"class":3406},[2915,56766,36828],{"class":3414},[2915,56768,5140],{"class":3529},[2915,56770,12437],{"class":3406},[2915,56772,5056],{"class":3529},[2915,56774,56661],{"class":3414},[2915,56776,56664],{"class":3414},[2915,56778,56779],{"class":3414}," !DANG\n",[16,56781,56782,56783,56785,56786,56788],{},"Antwort: Syntaktisch fehlt das Komma vor !DANG. Logisch ist die Regel auBerdem",[5885,56784],{},"\nproblematisch, weil sie mit EDIT sehr machtige Programme erlaubt und nur einzelne Gefahren",[5885,56787],{},"\nausschlieBt.",[16,56790,56791,56792,56794,56795,56797,56798,56800,56801,56803,56804,56806,56807,56809],{},"Teil 3: Semantik trotz Syntax",[5885,56793],{},"\n7. Welche effektiven Rechte hatte max am Ende wirklich?",[5885,56796],{},"\nAntwort: Wenn alle Syntaxfehler behoben werden, hatte max durch die ADMINS-Regel im Kern",[5885,56799],{},"\nVollzugriff. Zusatzlich ware der Apache-Neustart ohne Passwort erlaubt.",[5885,56802],{},"\n8. Welche Regel wurde fur Passwortabfragen bei max gelten?",[5885,56805],{},"\nAntwort: Fur \u002Fusr\u002Fbin\u002Fsystemctl restart apache2 galt NOPASSWD, fur alle anderen Befehle",[5885,56808],{},"\nPASSWD. Also genau ein freigestellter Befehl, sonst Passwortpflicht.",[16,56811,56812,56813,56815,56816,56818,56819,56821,56822,56824,56825,56827],{},"Teil 4: Sicherheitsanalyse",[5885,56814],{},"\n9. Welche Regeln ermoglichen trotz Einschrankungen eine Root-Shell?",[5885,56817],{},"\nAntwort: Vor allem Regeln mit vim, nano oder ahnlichen interaktiven Programmen. Auch",[5885,56820],{},"\nInterpreter oder falsch eingeschrankte Werkzeuge konnen trotz scheinbarer Grenzen schnell zu",[5885,56823],{},"\neiner Root-Shell fuhren.",[5885,56826],{},"\n10. Warum ist die Kombination aus EDIT und sudo grundsatzlich kritisch?",[228,56829,55578],{"id":56830},"seite-9-1",[16,56832,56833,56834,56836],{},"Antwort: Weil Editoren nicht nur Dateien andern, sondern oft Shell-Kommandos, Plugins oder",[5885,56835],{},"\nDateibrowser enthalten. Damit werden sie unter sudo zu sehr machtigen Werkzeugen.",[16,56838,56839,56840,56842,56843,56845,56846,56848,56849,56851,56852,56854,56855,56857,56858,56860,56861,56863],{},"Teil 5: Fehlerbehebung",[5885,56841],{},"\n11. Korrigiere folgende Zeile vollstandig: Cmnd_Alias EDIT = \u002Fusr\u002Fbin\u002Fvim \u002Fusr\u002Fbin\u002Fnano",[5885,56844],{},"\nAntwort: Korrektur: Cmnd_Alias EDIT = \u002Fusr\u002Fbin\u002Fvim, \u002Fusr\u002Fbin\u002Fnano",[5885,56847],{},"\n12. Korrigiere die Alias-Definition mit minimaler Anderung: User_Alias ADMINS = max,",[5885,56850],{},"\nanna,",[5885,56853],{},"\nAntwort: Korrektur: User_Alias ADMINS = max, anna",[5885,56856],{},"\n13. Formuliere die DEV-Regel korrekt und sicher (nur Syntax, keine",[5885,56859],{},"\nSicherheitsoptimierung).",[5885,56862],{},"\nAntwort: Syntaktisch korrekt ware: DEV ALL=(root) SYS, EDIT, !DANG",[16,56865,56866,56867,56869,56870,56872,56873,56875,56876,56878,56879,56881,56882,56884,56885,56887,56888,56890,56891,56893],{},"Teil 6: Transfer",[5885,56868],{},"\n14. Nenne zwei Grunde, warum syntaktisch korrekte sudoers-Dateien trotzdem unsicher",[5885,56871],{},"\nsein konnen.",[5885,56874],{},"\nAntwort: Erstens konnen zu breite Rechte wie ALL=(ALL) ALL vergeben sein. Zweitens konnen",[5885,56877],{},"\nscheinbar harmlose Programme wie Editoren, Pager oder Interpreter indirekt eine",[5885,56880],{},"\nRechteausweitung erlauben.",[5885,56883],{},"\n15. Erklare, warum visudo zwar notwendig, aber nicht ausreichend fur Sicherheit ist.",[5885,56886],{},"\nAntwort: visudo pruft nur die Syntax, nicht die fachliche Sicherheit der Regeln. Eine Datei kann",[5885,56889],{},"\nalso formal korrekt sein und trotzdem gefahrliche oder zu weitreichende Berechtigungen",[5885,56892],{},"\nenthalten.",[54,56895,56897],{"id":56896},"technikervorbereitungpdf","TechnikerVorbereitung.pdf",[16,56899,56900],{},"Quelle: TechnikerVorbereitung.pdf - 5 Seite(n)",[228,56902,54062],{"id":56903},"seite-1-2",[16,56905,56906,56907,56909,56910,56912],{},"Aufgabe 1: System 11 Punkte",[5885,56908],{},"\nWelcher Verzeichniszweig ist der, bei dem eine Datensicherung am wenigstens Sinn macht? 1P",[5885,56911],{},"\nKreuzen Sie die richtige Antwort an! Begründen Sie Ihre Antwort!",[16,56914,14185,56915,56917],{},[5885,56916],{},"\n\u002Fetc",[3392,56919,56921],{"className":3394,"code":56920,"language":3396,"meta":225,"style":225},"x \u002Fproc\n",[3398,56922,56923],{"__ignoreMap":225},[2915,56924,56925,56927],{"class":3402,"line":3403},[2915,56926,12973],{"class":3406},[2915,56928,56929],{"class":3414}," \u002Fproc\n",[16,56931,56932],{},"\u002Fvar",[16,56934,56935],{},"Werfen Sie einen Blick auf die folgende Ausgabe von top und beantworten Sie die folgenden Fragen:",[16,56937,56938,56939,56941],{},"Welche Prozesse wurden vom Benutzer carol gestartet? 1P",[5885,56940],{},"\nNur einer: top. (887)",[16,56943,56944,56945,56947,56948,56950],{},"Welches virtuelle Verzeichnis von \u002Fproc sollten Sie aufrufen, um nach Daten des Befehls top zu suchen?",[5885,56946],{},"\n2P",[5885,56949],{},"\n\u002Fproc\u002F887",[16,56952,56953],{},"Welcher Prozess wurde als erstes gestartet? Woher wissen Sie das? 2P",[16,56955,56956],{},"systemd, weil es die PID 1 hat.",[16,56958,56959,56960,56962,56963,56965,56966,56968,56969,56971,56972,56974,56975,56977],{},"Wie könnte der Befehl telinit verwendet werden, um das System neu zu starten? 2P",[5885,56961],{},"\nDer Befehl telinit 6 wechselt zu Runlevel 6, d.h. das System wird neu gestartet.",[5885,56964],{},"\nWas passiert mit den Diensten, die sich auf die Datei \u002Fetc\u002Frc1.d\u002FK90network beziehen, wenn das System",[5885,56967],{},"\nRunlevel 1 aktiviert? 1P",[5885,56970],{},"\nAufgrund des Buchstabens K am Anfang des Dateinamens werden die entsprechenden Dienste beendet.",[5885,56973],{},"\nWie könnte ein Benutzer mit dem Befehl systemctl überprüfen, ob die Unit sshd.service läuft?",[5885,56976],{},"\nMit dem Befehl systemctl status sshd.service oder systemctl is-active sshd.service. 1P",[16,56979,56980,56981,56983,56984,56986],{},"Basierend auf der Nutzung von systemd: Welcher Befehl muss ausgeführt werden, um die Aktivierung von",[5885,56982],{},"\nsshd.service während der Systeminitialisierung zu ermöglichen? 1P",[5885,56985],{},"\nDer Befehl systemctl enable sshd.service wird von root ausgeführt.",[228,56988,54202],{"id":56989},"seite-2-2",[16,56991,56992,56993,56995],{},"Aufgabe 2: Shell-Umgebung 7 Punkte",[5885,56994],{},"\nGeben Sie im Folgenden die entsprechenden Befehle für die angegebene Aufgabe an.",[16,56997,56998],{},"Erzeugen Sie eine lokale Variable namens mammal und weisen Sie ihr den Wert gnu zu: 1P",[3392,57000,57002],{"className":3394,"code":57001,"language":3396,"meta":225,"style":225},"mammal=\"gnu\"\n\n",[3398,57003,57004],{"__ignoreMap":225},[2915,57005,57006,57009,57011],{"class":3402,"line":3403},[2915,57007,57008],{"class":3529},"mammal",[2915,57010,5137],{"class":3533},[2915,57012,57013],{"class":3414},"\"gnu\"\n",[16,57015,57016,57017,57019,57020,57022,57023,57025],{},"Die Variable var_sub soll einen String in folgendem Format enthalten: 1P",[5885,57018],{},"\nThe value of mammal is gnu",[5885,57021],{},"\nGeben Sie die Befehlszeile an die, die Variable var_sub auf diesen Wert setzt. Verwenden Sie dabei die",[5885,57024],{},"\nVariable mammal, um den String gnu zu erhalten.",[3392,57027,57029],{"className":3394,"code":57028,"language":3396,"meta":225,"style":225},"var_sub=\"The value of mammal is $mammal\" oder var_sub=\"The value of mammal is “ $mammal\n\n",[3398,57030,57031],{"__ignoreMap":225},[2915,57032,57033,57036,57038,57041,57044,57046,57048,57051],{"class":3402,"line":3403},[2915,57034,57035],{"class":3529},"var_sub",[2915,57037,5137],{"class":3533},[2915,57039,57040],{"class":3414},"\"The value of mammal is ",[2915,57042,57043],{"class":3529},"$mammal",[2915,57045,4957],{"class":3414},[2915,57047,25701],{"class":3406},[2915,57049,57050],{"class":3414}," var_sub=\"The value of mammal is “ ",[2915,57052,57053],{"class":3529},"$mammal\n",[16,57055,57056,57057,57059],{},"Machen Sie mammal zu einer Umgebungsvariablen: 1P",[5885,57058],{},"\nexport mammal",[16,57061,57062,57063,57065],{},"Suchen Sie mit grep nach dieser Umgebungsvariable: 1P",[5885,57064],{},"\nset | grep mammal oder env | grep mammal",[16,57067,57068],{},"Sie sind als user2 eingeloggt. Erstellen Sie ein Verzeichnis namens bin in Ihrem Homeverzeichnis. 1P",[3392,57070,57072],{"className":3394,"code":57071,"language":3396,"meta":225,"style":225},"mkdir ~\u002Fbin oder mkdir \u002Fhome\u002Fuser2\u002Fbin oder mkdir $HOME\u002Fbin\n\n",[3398,57073,57074],{"__ignoreMap":225},[2915,57075,57076,57078,57081,57083,57086,57089,57091,57093,57096],{"class":3402,"line":3403},[2915,57077,5690],{"class":3406},[2915,57079,57080],{"class":3414}," ~\u002Fbin",[2915,57082,25701],{"class":3414},[2915,57084,57085],{"class":3414}," mkdir",[2915,57087,57088],{"class":3414}," \u002Fhome\u002Fuser2\u002Fbin",[2915,57090,25701],{"class":3414},[2915,57092,57085],{"class":3414},[2915,57094,57095],{"class":3529}," $HOME",[2915,57097,57098],{"class":3414},"\u002Fbin\n",[16,57100,57101,57102,57104],{},"Das gerade angelegte Verzeichnis soll das Verzeichnis werden, in dem sie als erstes nach ausführbaren",[5885,57103],{},"\nDateien suchen. Geben Sie den Befehl, der die entsprechende Umgebungsvariable anpasst. 1P",[3392,57106,57108],{"className":3394,"code":57107,"language":3396,"meta":225,"style":225},"PATH=\"$HOME\u002Fbin:$PATH\" PATH=~\u002Fbin:$PATH oder PATH=\u002Fhome\u002Fuser2\u002Fbin:$PATH\n\n",[3398,57109,57110],{"__ignoreMap":225},[2915,57111,57112,57114,57116,57118,57120,57123,57125,57127,57129,57131,57134,57137,57140,57143],{"class":3402,"line":3403},[2915,57113,44688],{"class":3529},[2915,57115,5137],{"class":3533},[2915,57117,4957],{"class":3414},[2915,57119,10714],{"class":3529},[2915,57121,57122],{"class":3414},"\u002Fbin:",[2915,57124,42564],{"class":3529},[2915,57126,4957],{"class":3414},[2915,57128,42746],{"class":3529},[2915,57130,5137],{"class":3533},[2915,57132,57133],{"class":3414},"~\u002Fbin:",[2915,57135,57136],{"class":3529},"$PATH ",[2915,57138,57139],{"class":3406},"oder",[2915,57141,57142],{"class":3414}," PATH=\u002Fhome\u002Fuser2\u002Fbin:",[2915,57144,57145],{"class":3529},"$PATH\n",[16,57147,57148,57149,57151],{},"Geben Sie eine if-Anweisung an, die Sie in ~\u002F.profile einfügen, um sicherzustellen, dass der Wert von der",[5885,57150],{},"\ngerade veränderten Umgebungsvariable über Neustarts hinweg unverändert bleibt. 1P",[3392,57153,57155],{"className":3394,"code":57154,"language":3396,"meta":225,"style":225},"if [ -d \"$HOME\u002Fbin\" ] ; then\nPATH=\"$HOME\u002Fbin:$PATH\"\nfi\n\n",[3398,57156,57157,57177,57193],{"__ignoreMap":225},[2915,57158,57159,57161,57163,57165,57167,57169,57172,57175],{"class":3402,"line":3403},[2915,57160,4951],{"class":3533},[2915,57162,4954],{"class":3529},[2915,57164,21246],{"class":3533},[2915,57166,4968],{"class":3414},[2915,57168,10714],{"class":3529},[2915,57170,57171],{"class":3414},"\u002Fbin\"",[2915,57173,57174],{"class":3529}," ] ; ",[2915,57176,4979],{"class":3533},[2915,57178,57179,57181,57183,57185,57187,57189,57191],{"class":3402,"line":1117},[2915,57180,44688],{"class":3529},[2915,57182,5137],{"class":3533},[2915,57184,4957],{"class":3414},[2915,57186,10714],{"class":3529},[2915,57188,57122],{"class":3414},[2915,57190,42564],{"class":3529},[2915,57192,5204],{"class":3414},[2915,57194,57195],{"class":3402,"line":1125},[2915,57196,4997],{"class":3533},[228,57198,54465],{"id":57199},"seite-3-2",[16,57201,57202],{},"Aufgabe 3: Befehle 17 Punkte",[16,57204,57205,57206,57208],{},"Legen Sie mit genau einem Befehlsaufruf 5 nummerierte Dateien mit dem Präfix games an (games1,",[5885,57207],{},"\ngames2,…). 1,5 P",[3392,57210,57212],{"className":3394,"code":57211,"language":3396,"meta":225,"style":225},"touch games{1..5}\n\n",[3398,57213,57214],{"__ignoreMap":225},[2915,57215,57216,57218],{"class":3402,"line":3403},[2915,57217,10189],{"class":3406},[2915,57219,57220],{"class":3414}," games{1..5}\n",[16,57222,57223],{},"Löschen Sie mit genau einem Befehlsaufruf die gerade erstellten 5 Dateien. 1,5 P",[3392,57225,57227],{"className":3394,"code":57226,"language":3396,"meta":225,"style":225},"rm games? Oder rm games[12345]\n\n",[3398,57228,57229],{"__ignoreMap":225},[2915,57230,57231,57233,57236,57239,57241],{"class":3402,"line":3403},[2915,57232,10086],{"class":3406},[2915,57234,57235],{"class":3414}," games?",[2915,57237,57238],{"class":3414}," Oder",[2915,57240,8545],{"class":3414},[2915,57242,57243],{"class":3414}," games[12345]\n",[16,57245,57246,57247,57249],{},"Entfernen Sie die gesamten Verzeichnisbäume unterhalb der Verzeichnisse, die mit Test_Verzeichnis begin-",[5885,57248],{},"\nnen (z.B. Test_Verzeichnis1 oder auch Text_Verzeichnis_x uvm.) mit nur einem Befehl. 1P",[3392,57251,57253],{"className":3394,"code":57252,"language":3396,"meta":225,"style":225},"rm -r Test_Verzeichnis*\n\n",[3398,57254,57255],{"__ignoreMap":225},[2915,57256,57257,57259,57261,57264],{"class":3402,"line":3403},[2915,57258,10086],{"class":3406},[2915,57260,7846],{"class":3410},[2915,57262,57263],{"class":3414}," Test_Verzeichnis",[2915,57265,25712],{"class":3410},[16,57267,57268],{},"Piping ist eine Möglichkeit zwei Befehle miteinander interagieren zu lassen. Erklären Sie das Prinzip. 2P",[16,57270,57271],{},"Piping sendet stdout von einem Befehl als stdin des anderen Befehls.",[16,57273,57274],{},"Erklären Sie folgende Befehlszeile möglichst genau: 2P",[3392,57276,57278],{"className":3394,"code":57277,"language":3396,"meta":225,"style":225},"ls -l | head | wc -w\n\nls -l gibt langform des Verzeichnislisting an head weiter, der die ersten 10 Zeilen nimmt und an wc gibt, der\n",[3398,57279,57280,57297,57301],{"__ignoreMap":225},[2915,57281,57282,57284,57286,57288,57290,57292,57294],{"class":3402,"line":3403},[2915,57283,12214],{"class":3406},[2915,57285,9029],{"class":3410},[2915,57287,7679],{"class":3533},[2915,57289,9197],{"class":3406},[2915,57291,7679],{"class":3533},[2915,57293,9026],{"class":3406},[2915,57295,57296],{"class":3410}," -w\n",[2915,57298,57299],{"class":3402,"line":1117},[2915,57300,3506],{"emptyLinePlaceholder":3505},[2915,57302,57303,57305,57307,57310,57313,57316,57319,57322,57324,57327,57329,57331,57334,57336,57339,57342,57344,57346,57348,57351],{"class":3402,"line":1125},[2915,57304,12214],{"class":3406},[2915,57306,9029],{"class":3410},[2915,57308,57309],{"class":3414}," gibt",[2915,57311,57312],{"class":3414}," langform",[2915,57314,57315],{"class":3414}," des",[2915,57317,57318],{"class":3414}," Verzeichnislisting",[2915,57320,57321],{"class":3414}," an",[2915,57323,9197],{"class":3414},[2915,57325,57326],{"class":3414}," weiter,",[2915,57328,47429],{"class":3414},[2915,57330,47443],{"class":3414},[2915,57332,57333],{"class":3414}," ersten",[2915,57335,14324],{"class":3410},[2915,57337,57338],{"class":3414}," Zeilen",[2915,57340,57341],{"class":3414}," nimmt",[2915,57343,35207],{"class":3414},[2915,57345,57321],{"class":3414},[2915,57347,9026],{"class":3414},[2915,57349,57350],{"class":3414}," gibt,",[2915,57352,57353],{"class":3414}," der\n",[16,57355,57356],{},"Wörter zählt.",[16,57358,57359],{},"Suchen Sie im Verzeichnisbaum nach allen Dateien, die mit einer Ziffer enden. 2P",[3392,57361,57363],{"className":3394,"code":57362,"language":3396,"meta":225,"style":225},"find ~ -name “*[0-9]“ -type f\noder ls | find -name “*[0-9]“\n\n",[3398,57364,57365,57385],{"__ignoreMap":225},[2915,57366,57367,57369,57371,57373,57376,57378,57381,57383],{"class":3402,"line":3403},[2915,57368,8210],{"class":3406},[2915,57370,37623],{"class":3414},[2915,57372,8235],{"class":3410},[2915,57374,57375],{"class":3414}," “",[2915,57377,5078],{"class":3410},[2915,57379,57380],{"class":3414},"[0-9]“",[2915,57382,8248],{"class":3410},[2915,57384,5622],{"class":3414},[2915,57386,57387,57389,57391,57393,57396,57398,57400,57402],{"class":3402,"line":1117},[2915,57388,57139],{"class":3406},[2915,57390,50896],{"class":3414},[2915,57392,7679],{"class":3533},[2915,57394,57395],{"class":3406}," find",[2915,57397,8235],{"class":3410},[2915,57399,57375],{"class":3414},[2915,57401,5078],{"class":3410},[2915,57403,57404],{"class":3414},"[0-9]“\n",[16,57406,57274],{},[3392,57408,57410],{"className":3394,"code":57409,"language":3396,"meta":225,"style":225},"sort \u002Fetc 2 > \u002Fdev\u002Fnull\n\n",[3398,57411,57412],{"__ignoreMap":225},[2915,57413,57414,57416,57418,57420,57422],{"class":3402,"line":3403},[2915,57415,22240],{"class":3406},[2915,57417,17366],{"class":3414},[2915,57419,14080],{"class":3410},[2915,57421,23262],{"class":3533},[2915,57423,57424],{"class":3414}," \u002Fdev\u002Fnull\n",[16,57426,57427],{},"Fehlerausgabe (2) wird in die Mülltonne gelenkt",[16,57429,57430],{},"Hängen Sie die letzten 9 Zeilen der Datei contents.txt, an die Datei dump.txt an 2P",[3392,57432,57434],{"className":3394,"code":57433,"language":3396,"meta":225,"style":225},"tail -n 9 contents.txt » dump.txt\n\n",[3398,57435,57436],{"__ignoreMap":225},[2915,57437,57438,57440,57442,57445,57448,57451],{"class":3402,"line":3403},[2915,57439,15472],{"class":3406},[2915,57441,8127],{"class":3410},[2915,57443,57444],{"class":3410}," 9",[2915,57446,57447],{"class":3414}," contents.txt",[2915,57449,57450],{"class":3414}," »",[2915,57452,57453],{"class":3414}," dump.txt\n",[16,57455,57456,57457,57459],{},"Schreiben Sie einen Befehl, der im aktuellen Verzeichnis nach Dateien mit der Endung .c sucht, in denen im",[5885,57458],{},"\nDateiinhalt die Zeichenfolge „apple“ enthalten ist. (Ignorieren Sie dabei Groß- und Kleinschreibung) 3P",[3392,57461,57463],{"className":3394,"code":57462,"language":3396,"meta":225,"style":225},"find .\u002F -name “*.c“ | grep -i “apple“\n\n",[3398,57464,57465],{"__ignoreMap":225},[2915,57466,57467,57469,57472,57474,57476,57478,57481,57483,57485,57487],{"class":3402,"line":3403},[2915,57468,8210],{"class":3406},[2915,57470,57471],{"class":3414}," .\u002F",[2915,57473,8235],{"class":3410},[2915,57475,57375],{"class":3414},[2915,57477,5078],{"class":3410},[2915,57479,57480],{"class":3414},".c“",[2915,57482,7679],{"class":3533},[2915,57484,7682],{"class":3406},[2915,57486,7692],{"class":3410},[2915,57488,57489],{"class":3414}," “apple“\n",[228,57491,54618],{"id":57492},"seite-4-2",[16,57494,57495],{},"Aufgabe 4: Benutzerverwaltung 8 Punkte",[16,57497,57498],{},"Gegeben ist die folgende Ausgabe. Beantworten Sie folgende Fragen:",[16,57500,57501,57502,57504],{},"Wie lauten die Benutzer-ID (UID) und die Gruppen-ID (GID) von root und catherine? 1P",[5885,57503],{},"\nDie UID und GID von root sind 0 und 0, während die UID und GID von catherine 1030 und 1025 sind.",[16,57506,57507,57508,57510],{},"Wie lautet der Name der primären Gruppe von kevin? Geben Sie weitere Mitglieder der Gruppe an. 1,5 P",[5885,57509],{},"\nDer Gruppenname lautet db-admin. Auch emma und grace sind in dieser Gruppe.",[16,57512,57513],{},"Welche Shell ist für mail eingestellt? Warum ist die Shell für Benutzer mail auf diesen Wert gesetzt? 1,5 P",[16,57515,57516,57517,57519,57520,57522,57523,57525],{},"mail ist ein Systembenutzerkonto und seine Shell ist \u002Fsbin\u002Fnologin. Tatsächlich werden Systembenutzerkon-",[5885,57518],{},"\nten wie mail, ftp, news und daemon für administrative Aufgaben verwendet und daher sollte die normale An-",[5885,57521],{},"\nmeldung für diese Konten verhindert werden. Aus diesem Grund wird die Shell normalerweise auf \u002Fsbin\u002Fnolo-",[5885,57524],{},"\ngin oder \u002Fbin\u002Ffalse gesetzt.",[228,57527,54745],{"id":57528},"seite-5-2",[16,57530,57531],{},"Fortsetzung Aufgabe 4:",[16,57533,57534,57535,57537,57538,57540],{},"Geben Sie die Mitglieder der Gruppe app-developer an! Welche davon sind Gruppenadministratoren und",[5885,57536],{},"\nwelche sind normale Mitglieder? 1P",[5885,57539],{},"\nDie Mitglieder sind catherine, dave und christian — alle sind ordentliche Mitglieder.",[16,57542,57543,57544,57546],{},"Welche IDs werden per Konvention den Systemkonten und welche den normalen Benutzern zugewiesen?",[5885,57545],{},"\nWelche ID hat root? 2P",[16,57548,57549,57550,57552,57553,57555],{},"Systemkonten haben in der Regel UIDs unter 100 oder zwischen 500 und 1000, während normale Benutzer",[5885,57551],{},"\nUIDs haben, die bei 1000 beginnen, obwohl einige Altsysteme die Nummerierung bei 500 beginnen können.",[5885,57554],{},"\nDer Benutzer root hat die UID 0.",[16,57557,57558],{},"Ihr System verwendet Shadow-Passwörter. Was heisst das? 1P",[16,57560,57561,57562,57564],{},"Wenn Shadow-Passwörter verwendet werden, enthält das zweite Feld in \u002Fetc\u002Fpasswd für jedes Benutzerkon-",[5885,57563],{},"\nto das Zeichen x, da die verschlüsselten Benutzerpasswörter in \u002Fetc\u002Fshadow gespeichert werden.",[54,57566,57568],{"id":57567},"technikervorbereitungawk2lsgpdf","TechnikerVorbereitungawk2Lsg.pdf",[16,57570,57571],{},"Quelle: TechnikerVorbereitungawk2Lsg.pdf - 4 Seite(n)",[228,57573,54062],{"id":57574},"seite-1-3",[16,57576,57577],{},"Wiederholung awk",[966,57579,57580,57589,57604],{},[23,57581,57582,57583,57585,57586,57588],{},"Was ist AWK und wofür wird es verwendet?",[5885,57584],{},"\nAWK ist eine Skriptsprache zur Textverarbeitung, die besonders für das Filtern, Analysieren und Formatieren",[5885,57587],{},"\nvon strukturierten Daten (z. B. Tabellen, Logfiles) verwendet wird.",[23,57590,57591,57592,57594,57595,57597,57598,57600,57601,57603],{},"Wie ist ein AWK-Programm grundsätzlich aufgebaut?",[5885,57593],{},"\nSchema:",[5885,57596],{},"\npattern { action }",[5885,57599],{},"\n• pattern: Bedingung (wann wird etwas ausgeführt)",[5885,57602],{},"\n• action: Anweisung (was wird gemacht)",[23,57605,57606],{},"Was bewirkt folgender Befehl?",[3392,57608,57609],{"className":3394,"code":8683,"language":3396,"meta":225,"style":225},[3398,57610,57611],{"__ignoreMap":225},[2915,57612,57613,57615,57617],{"class":3402,"line":3403},[2915,57614,8595],{"class":3406},[2915,57616,8692],{"class":3414},[2915,57618,7698],{"class":3414},[16,57620,57621],{},"Gibt die erste Spalte jeder Zeile aus.",[966,57623,57624],{"start":3515},[23,57625,57626],{},"Bedeutung von $0, $1, $NF?",[16,57628,57629,57630,57632,57633,57635],{},"• $0 → ganze Zeile",[5885,57631],{},"\n• $1 → erstes Feld",[5885,57634],{},"\n• $NF → letztes Feld",[966,57637,57638],{"start":3520},[23,57639,57640],{},"Was macht dieser Ausdruck?",[3392,57642,57644],{"className":3394,"code":57643,"language":3396,"meta":225,"style":225},"awk '$3 > 100'\n\n",[3398,57645,57646],{"__ignoreMap":225},[2915,57647,57648,57650],{"class":3402,"line":3403},[2915,57649,8595],{"class":3406},[2915,57651,57652],{"class":3414}," '$3 > 100'\n",[16,57654,57655],{},"Gibt alle Zeilen aus, bei denen das 3. Feld größer als 100 ist.",[966,57657,57658],{"start":5070},[23,57659,57660],{},"Wie filtert man nach einem bestimmten Wort?",[3392,57662,57664],{"className":3394,"code":57663,"language":3396,"meta":225,"style":225},"awk '\u002FFehler\u002F'\n\n",[3398,57665,57666],{"__ignoreMap":225},[2915,57667,57668,57670],{"class":3402,"line":3403},[2915,57669,8595],{"class":3406},[2915,57671,57672],{"class":3414}," '\u002FFehler\u002F'\n",[16,57674,57675],{},"Zeigt alle Zeilen, die „Fehler“ enthalte",[966,57677,57678],{"start":5075},[23,57679,57680],{},"Was macht folgendes Skript?",[3392,57682,57684],{"className":3394,"code":57683,"language":3396,"meta":225,"style":225},"awk '{sum += $2} END {print sum}'\n\n",[3398,57685,57686],{"__ignoreMap":225},[2915,57687,57688,57690],{"class":3402,"line":3403},[2915,57689,8595],{"class":3406},[2915,57691,57692],{"class":3414}," '{sum += $2} END {print sum}'\n",[16,57694,57695],{},"Summiert die zweite Spalte und gibt das Ergebnis am Ende aus.",[16,57697,57698],{},"Seite 1 von 4",[228,57700,54202],{"id":57701},"seite-2-3",[966,57703,57704],{"start":5093},[23,57705,57706],{},"Unterschied zwischen BEGIN und END?",[16,57708,57709,57710,57712,57713,57715],{},"• BEGIN → wird vor der Verarbeitung ausgeführt",[5885,57711],{},"\n• END → wird nach der Verarbeitung ausgeführt",[5885,57714],{},"\n9. Wie ändert man das Feldtrennzeichen?",[3392,57717,57719],{"className":3394,"code":57718,"language":3396,"meta":225,"style":225},"awk -F \":\" '{print $1}'\n\n",[3398,57720,57721],{"__ignoreMap":225},[2915,57722,57723,57725,57727,57729],{"class":3402,"line":3403},[2915,57724,8595],{"class":3406},[2915,57726,8750],{"class":3410},[2915,57728,8753],{"class":3414},[2915,57730,57731],{"class":3414}," '{print $1}'\n",[16,57733,57734],{},"Trennt Felder anhand von : statt Leerzeichen.",[966,57736,57737],{"start":5207},[23,57738,57739],{},"Was macht dieses Beispiel?",[3392,57741,57743],{"className":3394,"code":57742,"language":3396,"meta":225,"style":225},"awk '{if ($2 > 50) print $1, $2}'\n\nGibt nur Zeilen aus, bei denen Spalte 2 > 50 ist, und zeigt Spalte 1 und 2.\n\n",[3398,57744,57745,57752,57756],{"__ignoreMap":225},[2915,57746,57747,57749],{"class":3402,"line":3403},[2915,57748,8595],{"class":3406},[2915,57750,57751],{"class":3414}," '{if ($2 > 50) print $1, $2}'\n",[2915,57753,57754],{"class":3402,"line":1117},[2915,57755,3506],{"emptyLinePlaceholder":3505},[2915,57757,57758,57761,57764,57766,57769,57772,57775,57778,57780,57782,57785,57788,57790,57793,57795,57797,57799],{"class":3402,"line":1125},[2915,57759,57760],{"class":3406},"Gibt",[2915,57762,57763],{"class":3414}," nur",[2915,57765,57338],{"class":3414},[2915,57767,57768],{"class":3414}," aus,",[2915,57770,57771],{"class":3414}," bei",[2915,57773,57774],{"class":3414}," denen",[2915,57776,57777],{"class":3414}," Spalte",[2915,57779,14080],{"class":3410},[2915,57781,23262],{"class":3533},[2915,57783,57784],{"class":3410}," 50",[2915,57786,57787],{"class":3414}," ist,",[2915,57789,35207],{"class":3414},[2915,57791,57792],{"class":3414}," zeigt",[2915,57794,57777],{"class":3414},[2915,57796,9016],{"class":3410},[2915,57798,35207],{"class":3414},[2915,57800,57801],{"class":3414}," 2.\n",[966,57803,57804],{"start":5212},[23,57805,57806],{},"Wie zählt man die Anzahl der Zeilen?",[3392,57808,57810],{"className":3394,"code":57809,"language":3396,"meta":225,"style":225},"awk 'END {print NR}'\n\nNR = Number of Records (Zeilenanzahl)\n\n",[3398,57811,57812,57819,57823],{"__ignoreMap":225},[2915,57813,57814,57816],{"class":3402,"line":3403},[2915,57815,8595],{"class":3406},[2915,57817,57818],{"class":3414}," 'END {print NR}'\n",[2915,57820,57821],{"class":3402,"line":1117},[2915,57822,3506],{"emptyLinePlaceholder":3505},[2915,57824,57825,57827,57829,57832,57835,57838],{"class":3402,"line":1125},[2915,57826,8669],{"class":3406},[2915,57828,13922],{"class":3414},[2915,57830,57831],{"class":3414}," Number",[2915,57833,57834],{"class":3414}," of",[2915,57836,57837],{"class":3414}," Records",[2915,57839,57840],{"class":3529}," (Zeilenanzahl)\n",[966,57842,57843],{"start":5218},[23,57844,57845],{},"Wie gibt man nur eindeutige Werte aus?",[3392,57847,57849],{"className":3394,"code":57848,"language":3396,"meta":225,"style":225},"awk '!seen[$1]++'\n\n",[3398,57850,57851],{"__ignoreMap":225},[2915,57852,57853,57855],{"class":3402,"line":3403},[2915,57854,8595],{"class":3406},[2915,57856,57857],{"class":3414}," '!seen[$1]++'\n",[16,57859,57860],{},"Gibt jede erste Spalte nur einmal aus.",[966,57862,57863],{"start":5223},[23,57864,57865,57866,57868],{},"Aufgabe:",[5885,57867],{},"\nGegeben ist eine Datei mit Name und Punktzahl. Berechne den Durchschnitt.",[3392,57870,57872],{"className":3394,"code":57871,"language":3396,"meta":225,"style":225},"awk '{sum += $2; count++} END {print sum\u002Fcount}'\n\n",[3398,57873,57874],{"__ignoreMap":225},[2915,57875,57876,57878],{"class":3402,"line":3403},[2915,57877,8595],{"class":3406},[2915,57879,57880],{"class":3414}," '{sum += $2; count++} END {print sum\u002Fcount}'\n",[966,57882,57883],{"start":5229},[23,57884,57885],{},"Was ist der Unterschied zwischen AWK und grep?",[16,57887,57888,57889,57891],{},"• grep → nur Suchen",[5885,57890],{},"\n• AWK → Suchen + Verarbeiten + Berechnen",[16,57893,57894],{},"Seite 2 von 4",[228,57896,54465],{"id":57897},"seite-3-3",[966,57899,57900],{"start":5253},[23,57901,57902],{},"Logdateien auswerten.",[16,57904,57905],{},"Gegeben: Mehrere Logdateien in \u002Fvar\u002Flog\u002Fapp\u002F",[16,57907,57908],{},"Ziel:",[16,57910,57911],{},"• Nur Dateinamen (ohne Pfad) ausgeben",[16,57913,57914],{},"• Fehlerzeilen (ERROR) filtern",[16,57916,57917],{},"• Anzahl Fehler pro Datei berechnen",[16,57919,57920],{},"• Ergebnis gleichzeitig anzeigen und in report.txt speichern",[3392,57922,57924],{"className":3394,"code":57923,"language":3396,"meta":225,"style":225},"for file in \u002Fvar\u002Flog\u002Fapp\u002F*.log; do\nname=$(basename \"$file\")\ncount=$(awk '\u002FERROR\u002F {c++} END {print c+0}' \"$file\")\necho \"$name: $count\"\ndone | tee report.txt\n\n",[3398,57925,57926,57941,57959,57981,57996],{"__ignoreMap":225},[2915,57927,57928,57930,57932,57934,57937,57939],{"class":3402,"line":3403},[2915,57929,5175],{"class":3533},[2915,57931,10812],{"class":3529},[2915,57933,5181],{"class":3533},[2915,57935,57936],{"class":3414}," \u002Fvar\u002Flog\u002Fapp\u002F*.log",[2915,57938,5248],{"class":3529},[2915,57940,5187],{"class":3533},[2915,57942,57943,57945,57947,57949,57951,57953,57955,57957],{"class":3402,"line":1117},[2915,57944,27487],{"class":3529},[2915,57946,5137],{"class":3533},[2915,57948,9001],{"class":3529},[2915,57950,26856],{"class":3406},[2915,57952,4968],{"class":3414},[2915,57954,10845],{"class":3529},[2915,57956,4957],{"class":3414},[2915,57958,5152],{"class":3529},[2915,57960,57961,57964,57966,57968,57970,57973,57975,57977,57979],{"class":3402,"line":1125},[2915,57962,57963],{"class":3529},"count",[2915,57965,5137],{"class":3533},[2915,57967,9001],{"class":3529},[2915,57969,8595],{"class":3406},[2915,57971,57972],{"class":3414}," '\u002FERROR\u002F {c++} END {print c+0}'",[2915,57974,4968],{"class":3414},[2915,57976,10845],{"class":3529},[2915,57978,4957],{"class":3414},[2915,57980,5152],{"class":3529},[2915,57982,57983,57985,57987,57989,57991,57994],{"class":3402,"line":3515},[2915,57984,5059],{"class":3410},[2915,57986,4968],{"class":3414},[2915,57988,27517],{"class":3529},[2915,57990,6162],{"class":3414},[2915,57992,57993],{"class":3529},"$count",[2915,57995,5204],{"class":3414},[2915,57997,57998,58000,58002,58004],{"class":3402,"line":3520},[2915,57999,5433],{"class":3533},[2915,58001,7679],{"class":3533},[2915,58003,10053],{"class":3406},[2915,58005,58006],{"class":3414}," report.txt\n",[16,58008,58009],{},"Was wird geprüft:",[16,58011,58012],{},"• basename → entfernt Pfad",[16,58014,58015],{},"• awk → zählt Fehler",[16,58017,58018],{},"• tee → Ausgabe + Speicherung gleichzeitig",[966,58020,58021],{"start":5253},[23,58022,58023],{},"CSV analysieren + bedingte Ausgabe",[16,58025,58026],{},"Gegeben: Datei daten.csv",[16,58028,58029,58030,58032,58033,58035,58036,58038],{},"id,name,punkte",[5885,58031],{},"\n1,Anna,45",[5885,58034],{},"\n2,Bob,78",[5885,58037],{},"\n3,Chris,30",[16,58040,57908],{},[16,58042,58043,58044,58046,58047,58049],{},"• Nur Datensätze mit Punkte > 50",[5885,58045],{},"\n• Ausgabeformat: Dateiname: Name (Punkte)",[5885,58048],{},"\n• Ergebnis in Datei und Konsole",[16,58051,58052],{},"Seite 3 von 4",[228,58054,54618],{"id":58055},"seite-4-3",[16,58057,58058],{},"Lösung:",[3392,58060,58062],{"className":3394,"code":58061,"language":3396,"meta":225,"style":225},"file=\"daten.csv\"\nawk -F, '$3 > 50 {print $2 \" (\" $3 \")\"}' \"$file\" \\\n| sed \"s\u002F^\u002F$(basename \"$file\"): \u002F\" \\\n| tee output.txt\n\n",[3398,58063,58064,58074,58092,58112],{"__ignoreMap":225},[2915,58065,58066,58069,58071],{"class":3402,"line":3403},[2915,58067,58068],{"class":3529},"file",[2915,58070,5137],{"class":3533},[2915,58072,58073],{"class":3414},"\"daten.csv\"\n",[2915,58075,58076,58078,58081,58084,58086,58088,58090],{"class":3402,"line":1117},[2915,58077,8595],{"class":3406},[2915,58079,58080],{"class":3410}," -F,",[2915,58082,58083],{"class":3414}," '$3 > 50 {print $2 \" (\" $3 \")\"}'",[2915,58085,4968],{"class":3414},[2915,58087,10845],{"class":3529},[2915,58089,4957],{"class":3414},[2915,58091,6801],{"class":3410},[2915,58093,58094,58096,58098,58101,58103,58105,58107,58110],{"class":3402,"line":1125},[2915,58095,46746],{"class":3533},[2915,58097,20529],{"class":3406},[2915,58099,58100],{"class":3414}," \"s\u002F^\u002F$(",[2915,58102,26856],{"class":3406},[2915,58104,4968],{"class":3414},[2915,58106,10845],{"class":3529},[2915,58108,58109],{"class":3414},"\"): \u002F\"",[2915,58111,6801],{"class":3410},[2915,58113,58114,58116,58118],{"class":3402,"line":3515},[2915,58115,46746],{"class":3533},[2915,58117,10053],{"class":3406},[2915,58119,58120],{"class":3414}," output.txt\n",[966,58122,58123],{"start":5266},[23,58124,58125],{},"Mehrere Dateien + Summenbildung",[16,58127,58128],{},"👉 Ziel:",[16,58130,58131],{},"• Für jede Datei die Summe der 2. Spalte",[16,58133,58134],{},"• Nur Dateiname anzeigen",[16,58136,58137],{},"• Gesamtsumme aller Dateien am Ende",[16,58139,58058],{},[3392,58141,58143],{"className":3394,"code":58142,"language":3396,"meta":225,"style":225},"total=0\n\nfor f in *.txt; do\nname=$(basename \"$f\")\nsum=$(awk '{s += $2} END {print s+0}' \"$f\")\necho \"$name: $sum\"\ntotal=$((total + sum))\ndone | tee result.txt\n\necho \"TOTAL: $total\" | tee -a result.txt\n\n",[3398,58144,58145,58154,58158,58172,58190,58212,58227,58244,58255,58259],{"__ignoreMap":225},[2915,58146,58147,58150,58152],{"class":3402,"line":3403},[2915,58148,58149],{"class":3529},"total",[2915,58151,5137],{"class":3533},[2915,58153,9263],{"class":3414},[2915,58155,58156],{"class":3402,"line":1117},[2915,58157,3506],{"emptyLinePlaceholder":3505},[2915,58159,58160,58162,58164,58166,58168,58170],{"class":3402,"line":1125},[2915,58161,5175],{"class":3533},[2915,58163,27469],{"class":3529},[2915,58165,5181],{"class":3533},[2915,58167,5374],{"class":3414},[2915,58169,5248],{"class":3529},[2915,58171,5187],{"class":3533},[2915,58173,58174,58176,58178,58180,58182,58184,58186,58188],{"class":3402,"line":3515},[2915,58175,27487],{"class":3529},[2915,58177,5137],{"class":3533},[2915,58179,9001],{"class":3529},[2915,58181,26856],{"class":3406},[2915,58183,4968],{"class":3414},[2915,58185,5644],{"class":3529},[2915,58187,4957],{"class":3414},[2915,58189,5152],{"class":3529},[2915,58191,58192,58195,58197,58199,58201,58204,58206,58208,58210],{"class":3402,"line":3520},[2915,58193,58194],{"class":3529},"sum",[2915,58196,5137],{"class":3533},[2915,58198,9001],{"class":3529},[2915,58200,8595],{"class":3406},[2915,58202,58203],{"class":3414}," '{s += $2} END {print s+0}'",[2915,58205,4968],{"class":3414},[2915,58207,5644],{"class":3529},[2915,58209,4957],{"class":3414},[2915,58211,5152],{"class":3529},[2915,58213,58214,58216,58218,58220,58222,58225],{"class":3402,"line":5070},[2915,58215,5059],{"class":3410},[2915,58217,4968],{"class":3414},[2915,58219,27517],{"class":3529},[2915,58221,6162],{"class":3414},[2915,58223,58224],{"class":3529},"$sum",[2915,58226,5204],{"class":3414},[2915,58228,58229,58231,58233,58235,58237,58239,58242],{"class":3402,"line":5075},[2915,58230,58149],{"class":3529},[2915,58232,5137],{"class":3533},[2915,58234,46942],{"class":3529},[2915,58236,58149],{"class":3406},[2915,58238,10471],{"class":3414},[2915,58240,58241],{"class":3414}," sum",[2915,58243,9425],{"class":3529},[2915,58245,58246,58248,58250,58252],{"class":3402,"line":5093},[2915,58247,5433],{"class":3533},[2915,58249,7679],{"class":3533},[2915,58251,10053],{"class":3406},[2915,58253,58254],{"class":3414}," result.txt\n",[2915,58256,58257],{"class":3402,"line":5098},[2915,58258,3506],{"emptyLinePlaceholder":3505},[2915,58260,58261,58263,58266,58269,58271,58273,58275,58277],{"class":3402,"line":5207},[2915,58262,5059],{"class":3410},[2915,58264,58265],{"class":3414}," \"TOTAL: ",[2915,58267,58268],{"class":3529},"$total",[2915,58270,4957],{"class":3414},[2915,58272,7679],{"class":3533},[2915,58274,10053],{"class":3406},[2915,58276,10056],{"class":3410},[2915,58278,58254],{"class":3414},[966,58280,58281],{"start":5721},[23,58282,58283],{},"Analysiere folgendes:",[3392,58285,58287],{"className":3394,"code":58286,"language":3396,"meta":225,"style":225},"for f in *.txt; do\nbase=$(basename \"$f\" .txt)\nawk 'NF \u003C 3' \"$f\" | tee \"${base}_errors.txt\"\ndone\n\n",[3398,58288,58289,58303,58324,58348],{"__ignoreMap":225},[2915,58290,58291,58293,58295,58297,58299,58301],{"class":3402,"line":3403},[2915,58292,5175],{"class":3533},[2915,58294,27469],{"class":3529},[2915,58296,5181],{"class":3533},[2915,58298,5374],{"class":3414},[2915,58300,5248],{"class":3529},[2915,58302,5187],{"class":3533},[2915,58304,58305,58308,58310,58312,58314,58316,58318,58320,58322],{"class":3402,"line":1117},[2915,58306,58307],{"class":3529},"base",[2915,58309,5137],{"class":3533},[2915,58311,9001],{"class":3529},[2915,58313,26856],{"class":3406},[2915,58315,4968],{"class":3414},[2915,58317,5644],{"class":3529},[2915,58319,4957],{"class":3414},[2915,58321,25152],{"class":3414},[2915,58323,5152],{"class":3529},[2915,58325,58326,58328,58331,58333,58335,58337,58339,58341,58343,58345],{"class":3402,"line":1125},[2915,58327,8595],{"class":3406},[2915,58329,58330],{"class":3414}," 'NF \u003C 3'",[2915,58332,4968],{"class":3414},[2915,58334,5644],{"class":3529},[2915,58336,4957],{"class":3414},[2915,58338,7679],{"class":3533},[2915,58340,10053],{"class":3406},[2915,58342,10359],{"class":3414},[2915,58344,58307],{"class":3529},[2915,58346,58347],{"class":3414},"}_errors.txt\"\n",[2915,58349,58350],{"class":3402,"line":3515},[2915,58351,5269],{"class":3533},[16,58353,58354],{},"Seite 4 von 4",[54,58356,58358],{"id":58357},"technikervorbereitungsedlsgpdf","TechnikerVorbereitungsedLsg.pdf",[16,58360,58361],{},"Quelle: TechnikerVorbereitungsedLsg.pdf - 3 Seite(n)",[228,58363,54062],{"id":58364},"seite-1-4",[16,58366,58367],{},"Wiederholung sed",[966,58369,58370],{},[23,58371,58372],{},"Nur bestimmte Zeilen ändern",[16,58374,58375,58376,58378],{},"Gegeben: Datei mit Logeinträgen",[5885,58377],{},"\nErsetze „ERROR“ durch „WARNUNG“, aber nur in Zeilen 5–10",[3392,58380,58382],{"className":3394,"code":58381,"language":3396,"meta":225,"style":225},"sed '5,10 s\u002FERROR\u002FWARNUNG\u002F' logfile.txt\n\n",[3398,58383,58384],{"__ignoreMap":225},[2915,58385,58386,58388,58391],{"class":3402,"line":3403},[2915,58387,7916],{"class":3406},[2915,58389,58390],{"class":3414}," '5,10 s\u002FERROR\u002FWARNUNG\u002F'",[2915,58392,7668],{"class":3414},[966,58394,58395],{"start":1117},[23,58396,58397],{},"Nur erste Übereinstimmung pro Zeile ersetzen",[16,58399,58400],{},"Ersetze nur das erste Vorkommen von „foo“ in jeder Zeile",[3392,58402,58404],{"className":3394,"code":58403,"language":3396,"meta":225,"style":225},"sed 's\u002Ffoo\u002Fbar\u002F'\n\n",[3398,58405,58406],{"__ignoreMap":225},[2915,58407,58408,58410],{"class":3402,"line":3403},[2915,58409,7916],{"class":3406},[2915,58411,58412],{"class":3414}," 's\u002Ffoo\u002Fbar\u002F'\n",[966,58414,58415],{"start":1125},[23,58416,8018],{},[16,58418,58419],{},"Jetzt aber alle „foo“ ersetzen",[3392,58421,58423],{"className":3394,"code":58422,"language":3396,"meta":225,"style":225},"sed 's\u002Ffoo\u002Fbar\u002Fg'\n\n",[3398,58424,58425],{"__ignoreMap":225},[2915,58426,58427,58429],{"class":3402,"line":3403},[2915,58428,7916],{"class":3406},[2915,58430,58431],{"class":3414}," 's\u002Ffoo\u002Fbar\u002Fg'\n",[966,58433,58434],{"start":3515},[23,58435,58436],{},"Nur Zeilen anzeigen, die NICHT passen",[16,58438,58439],{},"Zeige alle Zeilen, die kein „ERROR“ enthalten",[3392,58441,58443],{"className":3394,"code":58442,"language":3396,"meta":225,"style":225},"sed '\u002FERROR\u002Fd'\n\n",[3398,58444,58445],{"__ignoreMap":225},[2915,58446,58447,58449],{"class":3402,"line":3403},[2915,58448,7916],{"class":3406},[2915,58450,58451],{"class":3414}," '\u002FERROR\u002Fd'\n",[966,58453,58454],{"start":3520},[23,58455,58456],{},"Bestimmte Zeilen extrahieren",[16,58458,58459],{},"Nur Zeilen 10–20 anzeigen",[3392,58461,58463],{"className":3394,"code":58462,"language":3396,"meta":225,"style":225},"sed -n '10,20p' file.txt\n\n",[3398,58464,58465],{"__ignoreMap":225},[2915,58466,58467,58469,58471,58474],{"class":3402,"line":3403},[2915,58468,7916],{"class":3406},[2915,58470,8127],{"class":3410},[2915,58472,58473],{"class":3414}," '10,20p'",[2915,58475,58476],{"class":3414}," file.txt\n",[16,58478,58479],{},"• -n unterdrückt Standardausgabe",[16,58481,58482],{},"• p druckt explizit",[16,58484,58485],{},"•",[16,58487,58488],{},"Seite 1 von 3",[228,58490,54202],{"id":58491},"seite-2-4",[966,58493,58494],{"start":5070},[23,58495,58496],{},"Mehrere Befehle kombinieren",[16,58498,58499],{},"Ersetze „foo“ durch „bar“ UND lösche leere Zeilen",[3392,58501,58503],{"className":3394,"code":58502,"language":3396,"meta":225,"style":225},"sed -e 's\u002Ffoo\u002Fbar\u002Fg' -e '\u002F^$\u002Fd'\n\n",[3398,58504,58505],{"__ignoreMap":225},[2915,58506,58507,58509,58511,58513,58515],{"class":3402,"line":3403},[2915,58508,7916],{"class":3406},[2915,58510,19828],{"class":3410},[2915,58512,19831],{"class":3414},[2915,58514,19828],{"class":3410},[2915,58516,58517],{"class":3414}," '\u002F^$\u002Fd'\n",[966,58519,58520],{"start":5075},[23,58521,58522],{},"In-place bearbeiten",[16,58524,58525],{},"Datei direkt ändern",[3392,58527,58529],{"className":3394,"code":58528,"language":3396,"meta":225,"style":225},"sed -i 's\u002Ffoo\u002Fbar\u002Fg' file.txt\n\n",[3398,58530,58531],{"__ignoreMap":225},[2915,58532,58533,58535,58537,58539],{"class":3402,"line":3403},[2915,58534,7916],{"class":3406},[2915,58536,7692],{"class":3410},[2915,58538,19831],{"class":3414},[2915,58540,58476],{"class":3414},[966,58542,58543],{"start":5093},[23,58544,58545],{},"Mit Capture Groups arbeiten",[16,58547,58548],{},"Format ändern: Name: Max → Max (Name)",[3392,58550,58552],{"className":3394,"code":58551,"language":3396,"meta":225,"style":225},"sed 's\u002F(.): (.)\u002F\\2 (\\1)\u002F'\n\n",[3398,58553,58554],{"__ignoreMap":225},[2915,58555,58556,58558],{"class":3402,"line":3403},[2915,58557,7916],{"class":3406},[2915,58559,58560],{"class":3414}," 's\u002F(.): (.)\u002F\\2 (\\1)\u002F'\n",[966,58562,58563],{"start":5098},[23,58564,58565],{},"Nur bestimmte Spalte ersetzen",[16,58567,58568],{},"Ersetze nur im 2. Feld (durch Leerzeichen getrennt)",[3392,58570,58572],{"className":3394,"code":58571,"language":3396,"meta":225,"style":225},"sed 's\u002F^([^ ]* )foo\u002F\\1bar\u002F'\n\n",[3398,58573,58574],{"__ignoreMap":225},[2915,58575,58576,58578],{"class":3402,"line":3403},[2915,58577,7916],{"class":3406},[2915,58579,58580],{"class":3414}," 's\u002F^([^ ]* )foo\u002F\\1bar\u002F'\n",[966,58582,58583],{"start":5207},[23,58584,58585],{},"Zeilen einfügen",[16,58587,58588],{},"Füge nach jeder Zeile mit „START“ eine neue Zeile „---“ ein",[3392,58590,58592],{"className":3394,"code":58591,"language":3396,"meta":225,"style":225},"sed '\u002FSTART\u002Fa ---'\n\n",[3398,58593,58594],{"__ignoreMap":225},[2915,58595,58596,58598],{"class":3402,"line":3403},[2915,58597,7916],{"class":3406},[2915,58599,58600],{"class":3414}," '\u002FSTART\u002Fa ---'\n",[16,58602,58603],{},"Seite 2 von 3",[228,58605,54465],{"id":58606},"seite-3-4",[966,58608,58609],{},[23,58610,58611],{},"Unterschied zwischen sed und AWK?",[16,58613,58614],{},"• sed → Stream Editor (Text ersetzen, löschen)",[16,58616,58617],{},"• AWK → datenorientierte Verarbeitung (Spalten, Berechnungen)",[966,58619,58620,58626],{"start":1117},[23,58621,58622,58623,58625],{},"Was macht -n?",[5885,58624],{},"\nUnterdrückt automatische Ausgabe",[23,58627,58628],{},"Unterschied p vs. d?",[16,58630,58631],{},"p → drucken",[16,58633,58634],{},"d → löschen + nächste Zeile",[966,58636,58637],{"start":3515},[23,58638,58639],{},"„Zeilen, die nicht mit # beginnen“ ersetzen.",[16,58641,58642],{},"Seite 3 von 3",[54,58644,58646],{"id":58645},"techniker_vorbereitung2_mit_antwortenpdf","techniker_vorbereitung2_mit_antworten.pdf",[16,58648,58649],{},"Quelle: techniker_vorbereitung2_mit_antworten.pdf - 4 Seite(n)",[228,58651,54062],{"id":58652},"seite-1-5",[16,58654,58655,58656,58658],{},"Aufgabe 4: crontab",[5885,58657],{},"\n8 Punkte",[16,58660,58661],{},"Folgendes Shellskript clean_backup.sh liegt vor:",[3392,58663,58665],{"className":3394,"code":58664,"language":3396,"meta":225,"style":225},"#!\u002Fbin\u002Fbash\nfind \"\u002Fbackupfolder\" -type f -mtime +5 -exec rm {} \\;\n",[3398,58666,58667,58671],{"__ignoreMap":225},[2915,58668,58669],{"class":3402,"line":3403},[2915,58670,5125],{"class":3511},[2915,58672,58673,58675,58678,58680,58682,58684,58687,58689,58691,58693],{"class":3402,"line":1117},[2915,58674,8210],{"class":3406},[2915,58676,58677],{"class":3414}," \"\u002Fbackupfolder\"",[2915,58679,8248],{"class":3410},[2915,58681,9021],{"class":3414},[2915,58683,8488],{"class":3410},[2915,58685,58686],{"class":3414}," +5",[2915,58688,8542],{"class":3410},[2915,58690,8545],{"class":3414},[2915,58692,8548],{"class":3414},[2915,58694,8551],{"class":3410},[16,58696,58697,58698,58700,58701,58703,58704,58706,58707,58709,58710,58712,58713,58715,58716,58718,58719,58721,58722,58724,58725,58727,58728,58730],{},"a) Wozu dient die erste Zeile des Skripts?",[5885,58699],{},"\nAntwort: Die erste Zeile ist der sogenannte Shebang. Sie legt fest, dass das Skript mit \u002Fbin\u002Fbash",[5885,58702],{},"\nausgeführt werden soll. Dadurch wird sichergestellt, dass die Bash als Interpreter verwendet wird und",[5885,58705],{},"\ndie Shell-Befehle korrekt verarbeitet werden.",[5885,58708],{},"\nb) Was sind die Auswirkungen des Skripts?",[5885,58711],{},"\nAntwort: Das Skript durchsucht das Verzeichnis \u002Fbackupfolder nach normalen Dateien. Alle Dateien,",[5885,58714],{},"\nderen Änderungsdatum mehr als 5 Tage zurückliegt, werden mit rm gelöscht. Unterordner selbst",[5885,58717],{},"\nwerden dabei nicht gelöscht, sondern nur passende Dateien.",[5885,58720],{},"\nc) Für die Ausführung des Shellskript clean_backup.sh sind Root-Rechte notwendig. Geben Sie",[5885,58723],{},"\ndie Befehle an, um root zum Besitzer der Datei clean_backup.sh zu machen und die Ausführung",[5885,58726],{},"\nunter root – also unter den Rechten des Besitzers – zu gewährleisten.",[5885,58729],{},"\nAntwort: Möglich wäre:",[3392,58732,58734],{"className":3394,"code":58733,"language":3396,"meta":225,"style":225},"sudo chown root clean_backup.sh\nsudo chmod u+s clean_backup.sh\n",[3398,58735,58736,58748],{"__ignoreMap":225},[2915,58737,58738,58740,58743,58745],{"class":3402,"line":3403},[2915,58739,11814],{"class":3406},[2915,58741,58742],{"class":3414}," chown",[2915,58744,13890],{"class":3414},[2915,58746,58747],{"class":3414}," clean_backup.sh\n",[2915,58749,58750,58752,58754,58756],{"class":3402,"line":1117},[2915,58751,11814],{"class":3406},[2915,58753,17702],{"class":3414},[2915,58755,13777],{"class":3414},[2915,58757,58747],{"class":3414},[16,58759,58760,58761,58763,58764,58766,58767,58769,58770,58772,58773,58775,58776,58778,58779,58781,58782,58784,58785,58787,58788,58790,58791,58793,58794,58796],{},"Der erste Befehl setzt root als Eigentümer. Der zweite setzt das Setuid-Bit, sodass das Skript mit den",[5885,58762],{},"\nRechten des Besitzers laufen soll. In der Praxis ist Setuid bei Shellskripten jedoch oft aus",[5885,58765],{},"\nSicherheitsgründen deaktiviert; sicherer wäre die Ausführung über sudo oder einen root-Cronjob.",[5885,58768],{},"\nd) Sie wollen das Skript clean_backup.sh automatisch ausführen lassen. Notieren Sie den",[5885,58771],{},"\nnotwendigen Eintrag in der Datei crontab, um das Skript jeden Dienstag und Freitag einmal pro",[5885,58774],{},"\nStunde zwischen 15:00 und 17:00 auszuführen.",[5885,58777],{},"\nAntwort: Ein möglicher Eintrag lautet:",[5885,58780],{},"\n0 15,16,17 * * 2,5 \u002Fpfad\u002Fzu\u002Fclean_backup.sh",[5885,58783],{},"\nDas bedeutet: Minute 0, also jeweils zur vollen Stunde, an den Stunden 15, 16 und 17, an jedem Tag",[5885,58786],{},"\nund Monat, aber nur an den Wochentagen Dienstag (2) und Freitag (5).",[5885,58789],{},"\ne) Mit welchem Befehl geben Sie Ihre aktuelle crontab am Bildschirm aus? Leiten Sie die",[5885,58792],{},"\nAusgabe in die Datei crontab.bak um.",[5885,58795],{},"\nAntwort:",[3392,58798,58800],{"className":3394,"code":58799,"language":3396,"meta":225,"style":225},"crontab -l > crontab.bak\nMit crontab -l wird die aktuelle Crontab angezeigt. Durch die Umleitung mit > wird die Ausgabe in die\n",[3398,58801,58802,58813],{"__ignoreMap":225},[2915,58803,58804,58806,58808,58810],{"class":3402,"line":3403},[2915,58805,44151],{"class":3406},[2915,58807,9029],{"class":3410},[2915,58809,23262],{"class":3533},[2915,58811,58812],{"class":3414}," crontab.bak\n",[2915,58814,58815,58817,58820,58822,58825,58827,58830,58833,58836,58839,58841,58844,58847,58849,58851,58853,58856,58858],{"class":3402,"line":1117},[2915,58816,11915],{"class":3406},[2915,58818,58819],{"class":3414}," crontab",[2915,58821,9029],{"class":3410},[2915,58823,58824],{"class":3414}," wird",[2915,58826,47443],{"class":3414},[2915,58828,58829],{"class":3414}," aktuelle",[2915,58831,58832],{"class":3414}," Crontab",[2915,58834,58835],{"class":3414}," angezeigt.",[2915,58837,58838],{"class":3414}," Durch",[2915,58840,47443],{"class":3414},[2915,58842,58843],{"class":3414}," Umleitung",[2915,58845,58846],{"class":3414}," mit",[2915,58848,23262],{"class":3533},[2915,58850,58824],{"class":3414},[2915,58852,47443],{"class":3414},[2915,58854,58855],{"class":3414}," Ausgabe",[2915,58857,15061],{"class":3414},[2915,58859,58860],{"class":3414}," die\n",[16,58862,58863],{},"Datei crontab.bak geschrieben.",[16,58865,57698],{},[228,58867,54202],{"id":58868},"seite-2-5",[16,58870,58871,58872,58874],{},"Aufgabe 5: Software Installation",[5885,58873],{},"\n14 Punkte",[16,58876,58877,58878,58880,58881,58883,58884,58886],{},"Advanced Package Tool (APT) ist der Paketmanager für Debian- und Ubuntu-Linux-Distributionen.",[5885,58879],{},"\na) Welche Datei regelt dabei, welche Online-Repositories bei der Software-Installation von APT",[5885,58882],{},"\nverwendet werden?",[5885,58885],{},"\nAntwort: Die zentrale Datei ist \u002Fetc\u002Fapt\u002Fsources.list. Zusätzlich können weitere Paketquellen in Dateien",[3392,58888,58890],{"className":3394,"code":58889,"language":3396,"meta":225,"style":225},"unter \u002Fetc\u002Fapt\u002Fsources.list.d\u002F eingetragen sein.\n",[3398,58891,58892],{"__ignoreMap":225},[2915,58893,58894,58897,58900,58903],{"class":3402,"line":3403},[2915,58895,58896],{"class":3406},"unter",[2915,58898,58899],{"class":3414}," \u002Fetc\u002Fapt\u002Fsources.list.d\u002F",[2915,58901,58902],{"class":3414}," eingetragen",[2915,58904,58905],{"class":3414}," sein.\n",[16,58907,58908,58909,58911,58912,58796],{},"b) Wie sollten Sie vorgehen, wenn Sie den Webserver apache2 installieren wollen? Geben Sie die",[5885,58910],{},"\nKommandos an.",[5885,58913],{},[3392,58915,58917],{"className":3394,"code":58916,"language":3396,"meta":225,"style":225},"sudo apt update\nsudo apt install apache2\n",[3398,58918,58919,58929],{"__ignoreMap":225},[2915,58920,58921,58923,58926],{"class":3402,"line":3403},[2915,58922,11814],{"class":3406},[2915,58924,58925],{"class":3414}," apt",[2915,58927,58928],{"class":3414}," update\n",[2915,58930,58931,58933,58935,58938],{"class":3402,"line":1117},[2915,58932,11814],{"class":3406},[2915,58934,58925],{"class":3414},[2915,58936,58937],{"class":3414}," install",[2915,58939,36900],{"class":3414},[16,58941,58942,58943,58945,58946,58948,58949,58796,58951,58953,58954,58956,58957,58959,58960,58962,58963,58965,58966,58968,58969,58796],{},"Zuerst wird die Paketliste aktualisiert, damit der Paketmanager den aktuellen Stand der Repositories",[5885,58944],{},"\nkennt. Anschließend wird das Paket apache2 installiert.",[5885,58947],{},"\nc) Nennen Sie drei distributionsunabhängige Paketformate und erklären Sie sie stichpunktartig.",[5885,58950],{},[5885,58952],{},"\nAppImage: Eine einzelne ausführbare Datei, die meist ohne klassische Installation gestartet werden",[5885,58955],{},"\nkann.",[5885,58958],{},"\nSnap: Ein von Canonical unterstütztes Paketformat mit Sandbox-Ansatz und zentralem Snap Store.",[5885,58961],{},"\nFlatpak: Ebenfalls ein distributionsübergreifendes Format mit Fokus auf Desktop-Anwendungen und",[5885,58964],{},"\nisolierter Ausführung in einer Sandbox.",[5885,58967],{},"\nd) Wie installieren Sie mit einem Befehl spotify im Snap-Format?",[5885,58970],{},[3392,58972,58974],{"className":3394,"code":58973,"language":3396,"meta":225,"style":225},"sudo snap install spotify\n",[3398,58975,58976],{"__ignoreMap":225},[2915,58977,58978,58980,58983,58985],{"class":3402,"line":3403},[2915,58979,11814],{"class":3406},[2915,58981,58982],{"class":3414}," snap",[2915,58984,58937],{"class":3414},[2915,58986,58987],{"class":3414}," spotify\n",[16,58989,58990,58991,58993,58994,58996,58997,58999,59000,59002,59003,59005],{},"Damit wird das Spotify-Paket aus dem Snap-Store installiert.",[5885,58992],{},"\ne) Welche Aufgabe hat die Datei \u002Fetc\u002Fsudoers?",[5885,58995],{},"\nAntwort: Die Datei \u002Fetc\u002Fsudoers legt fest, welche Benutzer oder Gruppen sudo verwenden dürfen und",[5885,58998],{},"\nwelche Befehle sie mit erhöhten Rechten ausführen dürfen. Sie ist damit ein zentrales Sicherheits-",[5885,59001],{},"\nund Berechtigungskonfigurationsfile.",[5885,59004],{},"\nf) Was bedeutet die folgende Zeile aus der \u002Fetc\u002Fsudoers-Datei?",[3392,59007,59009],{"className":3394,"code":59008,"language":3396,"meta":225,"style":225},"%admin ALL=(ALL) ALL\n",[3398,59010,59011],{"__ignoreMap":225},[2915,59012,59013,59015,59017,59019,59021,59023],{"class":3402,"line":3403},[2915,59014,36852],{"class":3406},[2915,59016,36828],{"class":3414},[2915,59018,5140],{"class":3529},[2915,59020,36890],{"class":3406},[2915,59022,5056],{"class":3529},[2915,59024,36838],{"class":3414},[16,59026,59027,59028,59030,59031,59033,59034,59036,59037,58796],{},"Antwort: Alle Benutzer, die Mitglied der Gruppe admin sind, dürfen auf allen Hosts bzw. in allen",[5885,59029],{},"\npassenden Kontexten alle Befehle als alle Benutzer ausführen. In der Praxis bedeutet das meist",[5885,59032],{},"\nweitreichende Administratorrechte, typischerweise auch Root-Rechte.",[5885,59035],{},"\ng) Mit welchem Befehl bearbeitet man die \u002Fetc\u002Fsudoers-Datei?",[5885,59038],{},[3392,59040,59042],{"className":3394,"code":59041,"language":3396,"meta":225,"style":225},"visudo\n",[3398,59043,59044],{"__ignoreMap":225},[2915,59045,59046],{"class":3402,"line":3403},[2915,59047,59041],{"class":3406},[16,59049,59050,59051,59053,59054,59056,59057,59059,59060,59062,59063,59065,59066,59068,59069,59071],{},"Dieser Befehl öffnet die sudoers-Datei in einem sicheren Editor und prüft beim Speichern direkt die",[5885,59052],{},"\nSyntax.",[5885,59055],{},"\nh) Was sind die Unterschiede der Befehle su und sudo in der Anwendung?",[5885,59058],{},"\nAntwort: su wechselt in der Regel auf einen anderen Benutzer, meist root, und verlangt normalerweise",[5885,59061],{},"\ndas Passwort des Zielbenutzers. sudo führt dagegen gezielt einen einzelnen Befehl mit erhöhten",[5885,59064],{},"\nRechten aus und verwendet normalerweise das eigene Benutzerpasswort. sudo ist feiner",[5885,59067],{},"\nkonfigurierbar und protokollierbarer, während su eher einen vollständigen Benutzerwechsel bis zum",[5885,59070],{},"\nAbmelden oder bis exit darstellt.",[16,59073,57894],{},[228,59075,54465],{"id":59076},"seite-3-5",[16,59078,59079,59080,59082],{},"Aufgabe 6: Shellskript",[5885,59081],{},"\n12 Punkte",[16,59084,59085,59086,59088],{},"a) Gegeben sei folgendes Shellskript:",[5885,59087],{},"\n#! \u002Fbin\u002Fsh",[3392,59090,59092],{"className":3394,"code":59091,"language":3396,"meta":225,"style":225},"readcmd() {\necho \"Anzahl der Parameter in der Kommandozeile : $#\"\nfor var in $*\ndo\necho \"$i. Parameter : $var\"\ni=`expr $i + 1`\ndone\n}\necho \"Vor der Funktion ...\"\nreadcmd $*\necho \"... nach der Funktion\"\n",[3398,59093,59094,59101,59112,59124,59128,59144,59166,59170,59174,59181,59187],{"__ignoreMap":225},[2915,59095,59096,59099],{"class":3402,"line":3403},[2915,59097,59098],{"class":3406},"readcmd",[2915,59100,5812],{"class":3529},[2915,59102,59103,59105,59108,59110],{"class":3402,"line":1117},[2915,59104,5059],{"class":3410},[2915,59106,59107],{"class":3414}," \"Anzahl der Parameter in der Kommandozeile : ",[2915,59109,4891],{"class":3410},[2915,59111,5204],{"class":3414},[2915,59113,59114,59116,59119,59121],{"class":3402,"line":1125},[2915,59115,5175],{"class":3533},[2915,59117,59118],{"class":3529}," var ",[2915,59120,5181],{"class":3533},[2915,59122,59123],{"class":3410}," $*\n",[2915,59125,59126],{"class":3402,"line":3515},[2915,59127,5187],{"class":3533},[2915,59129,59130,59132,59134,59136,59139,59142],{"class":3402,"line":3520},[2915,59131,5059],{"class":3410},[2915,59133,4968],{"class":3414},[2915,59135,5327],{"class":3529},[2915,59137,59138],{"class":3414},". Parameter : ",[2915,59140,59141],{"class":3529},"$var",[2915,59143,5204],{"class":3414},[2915,59145,59146,59149,59151,59153,59155,59158,59161,59163],{"class":3402,"line":5070},[2915,59147,59148],{"class":3529},"i",[2915,59150,5137],{"class":3533},[2915,59152,55080],{"class":3414},[2915,59154,5821],{"class":3406},[2915,59156,59157],{"class":3529}," $i",[2915,59159,59160],{"class":3414}," + ",[2915,59162,12976],{"class":3410},[2915,59164,59165],{"class":3414},"`\n",[2915,59167,59168],{"class":3402,"line":5075},[2915,59169,5269],{"class":3533},[2915,59171,59172],{"class":3402,"line":5093},[2915,59173,5840],{"class":3529},[2915,59175,59176,59178],{"class":3402,"line":5098},[2915,59177,5059],{"class":3410},[2915,59179,59180],{"class":3414}," \"Vor der Funktion ...\"\n",[2915,59182,59183,59185],{"class":3402,"line":5207},[2915,59184,59098],{"class":3406},[2915,59186,59123],{"class":3410},[2915,59188,59189,59191],{"class":3402,"line":5212},[2915,59190,5059],{"class":3410},[2915,59192,59193],{"class":3414}," \"... nach der Funktion\"\n",[16,59195,59196,59197,59199,59200,58796,59202,59204,59205,59207,59208,59210],{},"Geben Sie an, was bei folgender Ausführung ausgegeben wird:",[5885,59198],{},"\nyou@host > .\u002Fafunc7 eins zwei drei vier",[5885,59201],{},[5885,59203],{},"\nVor der Funktion ...",[5885,59206],{},"\nAnzahl der Parameter in der Kommandozeile : 4",[5885,59209],{},"\n. Parameter : eins",[966,59212,59213,59216,59219],{},[23,59214,59215],{},"Parameter : zwei",[23,59217,59218],{},"Parameter : drei",[23,59220,59221,59222,59224,59225,59227,59228,59230,59231,59233,59234,59236,59237,59239,59240,59242,59243,59245,59246,58796,59248,59088],{},"Parameter : vier",[5885,59223],{},"\n... nach der Funktion",[5885,59226],{},"\nBegründung: Es werden vier Parameter übergeben. Die Variable i ist anfangs leer, daher beginnt die",[5885,59229],{},"\nerste Ausgabe mit einem leeren Zähler vor dem Punkt. Danach wird i schrittweise erhöht.",[5885,59232],{},"\nb) Schreiben Sie ein Shellskript, welches Zeilenduplikate in einer Datei erkennt und löscht. Dabei",[5885,59235],{},"\nwird der Dateiname eingelesen und überprüft, ob die Datei vorhanden ist. Anschließend werden",[5885,59238],{},"\ndie Zeilenduplikate gelöscht, sodass jede Zeile nur einmal vorhanden ist. Dann wird das Ergebnis",[5885,59241],{},"\nin die Datei sorted.txt geschrieben. Die ursprüngliche Datei bleibt unverändert erhalten. (Tipp:",[5885,59244],{},"\nReihenfolge der Zeilen in sorted.txt ist egal)",[5885,59247],{},[5885,59249],{},[3392,59251,59253],{"className":3394,"code":59252,"language":3396,"meta":225,"style":225},"echo -n \"Enter Filename-> \"\nread filename\nif [ -f \"$filename\" ]; then\nsort \"$filename\" | uniq > sorted.txt\nelse\necho \"No $filename in $PWD...try again\"\nfi\nexit 0\n",[3398,59254,59255,59264,59271,59290,59310,59314,59331,59335],{"__ignoreMap":225},[2915,59256,59257,59259,59261],{"class":3402,"line":3403},[2915,59258,5059],{"class":3410},[2915,59260,8127],{"class":3410},[2915,59262,59263],{"class":3414}," \"Enter Filename-> \"\n",[2915,59265,59266,59268],{"class":3402,"line":1117},[2915,59267,9794],{"class":3410},[2915,59269,59270],{"class":3414}," filename\n",[2915,59272,59273,59275,59277,59279,59281,59284,59286,59288],{"class":3402,"line":1125},[2915,59274,4951],{"class":3533},[2915,59276,4954],{"class":3529},[2915,59278,9329],{"class":3533},[2915,59280,4968],{"class":3414},[2915,59282,59283],{"class":3529},"$filename",[2915,59285,4957],{"class":3414},[2915,59287,4976],{"class":3529},[2915,59289,4979],{"class":3533},[2915,59291,59292,59294,59296,59298,59300,59302,59305,59307],{"class":3402,"line":3515},[2915,59293,22240],{"class":3406},[2915,59295,4968],{"class":3414},[2915,59297,59283],{"class":3529},[2915,59299,4957],{"class":3414},[2915,59301,7679],{"class":3533},[2915,59303,59304],{"class":3406}," uniq",[2915,59306,23262],{"class":3533},[2915,59308,59309],{"class":3414}," sorted.txt\n",[2915,59311,59312],{"class":3402,"line":3520},[2915,59313,6407],{"class":3533},[2915,59315,59316,59318,59321,59323,59326,59328],{"class":3402,"line":5070},[2915,59317,5059],{"class":3410},[2915,59319,59320],{"class":3414}," \"No ",[2915,59322,59283],{"class":3529},[2915,59324,59325],{"class":3414}," in ",[2915,59327,42586],{"class":3529},[2915,59329,59330],{"class":3414},"...try again\"\n",[2915,59332,59333],{"class":3402,"line":5075},[2915,59334,4997],{"class":3533},[2915,59336,59337,59339],{"class":3402,"line":5093},[2915,59338,9650],{"class":3410},[2915,59340,50082],{"class":3410},[16,59342,59343,59344,59346,59347,59349],{},"Erläuterung: Der Dateiname wird eingelesen. Mit -f wird geprüft, ob eine normale Datei existiert. sort",[5885,59345],{},"\nsortiert die Zeilen, uniq entfernt danach doppelte Zeilen. Das Ergebnis wird in sorted.txt gespeichert,",[5885,59348],{},"\ndie Originaldatei bleibt unverändert.",[16,59351,58052],{},[228,59353,54618],{"id":59354},"seite-4-4",[16,59356,59357,59358,59360],{},"Aufgabe 7: Docker",[5885,59359],{},"\n18 Punkte",[16,59362,59363,59364,59366,59367,59369,59370,59372,59373,59375,59376,59378,59379,59381,59382,59384,59385,59387,59388,59390],{},"a) Erklären Sie die Unterschiede zwischen virtueller Maschine und Docker-Container bezüglich",[5885,59365],{},"\nRessourcenverteilung.",[5885,59368],{},"\nAntwort: Eine virtuelle Maschine bringt ein komplettes Gastbetriebssystem mit. Dadurch benötigt sie",[5885,59371],{},"\nmehr Arbeitsspeicher, mehr Speicherplatz und meist auch mehr Startzeit. Docker-Container teilen sich",[5885,59374],{},"\ndagegen den Kernel des Host-Systems und kapseln nur die Anwendung samt benötigter Bibliotheken.",[5885,59377],{},"\nDeshalb sind Container leichter, starten schneller und nutzen die vorhandenen Ressourcen in der",[5885,59380],{},"\nRegel effizienter.",[5885,59383],{},"\nb) Schreiben Sie ein Dockerfile für ein Docker-Image für einen Apache-Webserver unter Port 80 in",[5885,59386],{},"\neinem Ubuntu-Docker-Container. Dazu apache2 installieren und folgende Umgebungsvariablen",[5885,59389],{},"\nsetzen: APACHE_RUN_USER=www-data, APACHE_RUN_GROUP=www-data,",[3392,59392,59394],{"className":3394,"code":59393,"language":3396,"meta":225,"style":225},"APACHE_LOG_DIR=\u002Fvar\u002Flog\u002Fapache2. Darin starten Sie beim Erstellen des Containers den\n",[3398,59395,59396],{"__ignoreMap":225},[2915,59397,59398,59401,59403,59406,59409,59412,59415,59418,59421,59423,59426],{"class":3402,"line":3403},[2915,59399,59400],{"class":3529},"APACHE_LOG_DIR",[2915,59402,5137],{"class":3533},[2915,59404,59405],{"class":3414},"\u002Fvar\u002Flog\u002Fapache2.",[2915,59407,59408],{"class":3406}," Darin",[2915,59410,59411],{"class":3414}," starten",[2915,59413,59414],{"class":3414}," Sie",[2915,59416,59417],{"class":3414}," beim",[2915,59419,59420],{"class":3414}," Erstellen",[2915,59422,57315],{"class":3414},[2915,59424,59425],{"class":3414}," Containers",[2915,59427,59428],{"class":3414}," den\n",[16,59430,59431,59432,58796],{},"apache2-Dienst.",[5885,59433],{},[3392,59435,59437],{"className":7163,"code":59436,"language":7165,"meta":225,"style":225},"FROM ubuntu\nRUN apt update && apt-get install -y apache2 && apt-get clean\nENV APACHE_RUN_USER=www-data\nENV APACHE_RUN_GROUP=www-data\nENV APACHE_LOG_DIR=\u002Fvar\u002Flog\u002Fapache2\nEXPOSE 80\nCMD [\"apachectl\", \"-D\", \"FOREGROUND\"]\n",[3398,59438,59439,59445,59452,59459,59466,59473,59480],{"__ignoreMap":225},[2915,59440,59441,59443],{"class":3402,"line":3403},[2915,59442,7190],{"class":3533},[2915,59444,51389],{"class":3529},[2915,59446,59447,59449],{"class":3402,"line":1117},[2915,59448,7298],{"class":3533},[2915,59450,59451],{"class":3529}," apt update && apt-get install -y apache2 && apt-get clean\n",[2915,59453,59454,59456],{"class":3402,"line":1125},[2915,59455,7238],{"class":3533},[2915,59457,59458],{"class":3529}," APACHE_RUN_USER=www-data\n",[2915,59460,59461,59463],{"class":3402,"line":3515},[2915,59462,7238],{"class":3533},[2915,59464,59465],{"class":3529}," APACHE_RUN_GROUP=www-data\n",[2915,59467,59468,59470],{"class":3402,"line":3520},[2915,59469,7238],{"class":3533},[2915,59471,59472],{"class":3529}," APACHE_LOG_DIR=\u002Fvar\u002Flog\u002Fapache2\n",[2915,59474,59475,59477],{"class":3402,"line":5070},[2915,59476,7353],{"class":3533},[2915,59478,59479],{"class":3529}," 80\n",[2915,59481,59482,59484,59486,59489,59491,59494,59496,59499],{"class":3402,"line":5075},[2915,59483,7341],{"class":3533},[2915,59485,7373],{"class":3529},[2915,59487,59488],{"class":3414},"\"apachectl\"",[2915,59490,7379],{"class":3529},[2915,59492,59493],{"class":3414},"\"-D\"",[2915,59495,7379],{"class":3529},[2915,59497,59498],{"class":3414},"\"FOREGROUND\"",[2915,59500,7385],{"class":3529},[16,59502,59503,59504,59506,59507,59509,59510,59512],{},"Hinweis: Für Container ist es besser, den Webserver im Vordergrund laufen zu lassen. service",[5885,59505],{},"\napache2 start startet den Dienst nur kurzzeitig und beendet den Container meist wieder.",[5885,59508],{},"\nc) Schreiben Sie folgende Docker-Container-Einstellung als Docker Compose um und verwenden",[5885,59511],{},"\nSie Version 2.",[3392,59514,59516],{"className":3394,"code":59515,"language":3396,"meta":225,"style":225},"docker run --name apache -p 80:8080 -p 443:8443 -v \u002Fpath\u002Fto\u002Fapp:\u002Fapp bitnami\u002Fapache:latest\n",[3398,59517,59518],{"__ignoreMap":225},[2915,59519,59520,59522,59524,59526,59529,59531,59534,59536,59539,59541,59544],{"class":3402,"line":3403},[2915,59521,6792],{"class":3406},[2915,59523,6795],{"class":3414},[2915,59525,6962],{"class":3410},[2915,59527,59528],{"class":3414}," apache",[2915,59530,6956],{"class":3410},[2915,59532,59533],{"class":3414}," 80:8080",[2915,59535,6956],{"class":3410},[2915,59537,59538],{"class":3414}," 443:8443",[2915,59540,16455],{"class":3410},[2915,59542,59543],{"class":3414}," \u002Fpath\u002Fto\u002Fapp:\u002Fapp",[2915,59545,59546],{"class":3414}," bitnami\u002Fapache:latest\n",[16,59548,59549],{},"Antwort:",[3392,59551,59553],{"className":29954,"code":59552,"language":29956,"meta":225,"style":225},"version: \"2\"\nservices:\napache:\nimage: bitnami\u002Fapache:latest\ncontainer_name: apache\nports:\n- \"80:8080\"\n- \"443:8443\"\nvolumes:\n- \u002Fpath\u002Fto\u002Fapp:\u002Fapp\n",[3398,59554,59555,59564,59570,59577,59586,59595,59601,59608,59615,59621],{"__ignoreMap":225},[2915,59556,59557,59559,59561],{"class":3402,"line":3403},[2915,59558,29558],{"class":29963},[2915,59560,6162],{"class":3529},[2915,59562,59563],{"class":3414},"\"2\"\n",[2915,59565,59566,59568],{"class":3402,"line":1117},[2915,59567,29977],{"class":29963},[2915,59569,1554],{"class":3529},[2915,59571,59572,59575],{"class":3402,"line":1125},[2915,59573,59574],{"class":29963},"apache",[2915,59576,1554],{"class":3529},[2915,59578,59579,59581,59583],{"class":3402,"line":3515},[2915,59580,30059],{"class":29963},[2915,59582,6162],{"class":3529},[2915,59584,59585],{"class":3414},"bitnami\u002Fapache:latest\n",[2915,59587,59588,59590,59592],{"class":3402,"line":3520},[2915,59589,30073],{"class":29963},[2915,59591,6162],{"class":3529},[2915,59593,59594],{"class":3414},"apache\n",[2915,59596,59597,59599],{"class":3402,"line":5070},[2915,59598,30112],{"class":29963},[2915,59600,1554],{"class":3529},[2915,59602,59603,59605],{"class":3402,"line":5075},[2915,59604,30047],{"class":3529},[2915,59606,59607],{"class":3414},"\"80:8080\"\n",[2915,59609,59610,59612],{"class":3402,"line":5093},[2915,59611,30047],{"class":3529},[2915,59613,59614],{"class":3414},"\"443:8443\"\n",[2915,59616,59617,59619],{"class":3402,"line":5098},[2915,59618,30145],{"class":29963},[2915,59620,1554],{"class":3529},[2915,59622,59623,59625],{"class":3402,"line":5207},[2915,59624,30047],{"class":3529},[2915,59626,59627],{"class":3414},"\u002Fpath\u002Fto\u002Fapp:\u002Fapp\n",[16,59629,59630,59631,59633],{},"Diese Compose-Datei bildet dieselben Einstellungen wie der docker-run-Befehl ab: Containername,",[5885,59632],{},"\nImage, Portweiterleitungen und Volume-Mount.",[16,59635,58354],{},[54,59637,59639],{"id":59638},"techniker_vorbereitung_find_mit_antwortenpdf","techniker_vorbereitung_find_mit_antworten.pdf",[16,59641,59642],{},"Quelle: techniker_vorbereitung_find_mit_antworten.pdf - 1 Seite(n)",[228,59644,54062],{"id":59645},"seite-1-6",[16,59647,59648],{},"Wiederholung find",[966,59650,59651,59663,59679,59688,59697,59709,59718,59727,59736,59745,59754,59766],{},[23,59652,59653,59654,59656,59657,59659,59660,59662],{},"Was ist die Hauptfunktion des Befehls find in Linux?",[5885,59655],{},"\nAntwort: Der Befehl find dient dazu, Dateien und Verzeichnisse rekursiv zu durchsuchen. Dabei kann",[5885,59658],{},"\nnach verschiedenen Kriterien wie Name, Typ, Größe, Änderungszeit, Besitzer oder Rechten gesucht",[5885,59661],{},"\nwerden.",[23,59664,59665,59666,59668,59669,59671,59672,59674,59675,59678],{},"Welche Option wird mit find verwendet, um nach einem Dateinamen zu suchen? A) -user B) -size",[5885,59667],{},"\nC) -name D) -exec",[5885,59670],{},"\nAntwort: Richtig ist C) -name. Mit -name wird nach einem konkreten Dateinamen oder nach Mustern",[5885,59673],{},"\nmit Platzhaltern wie ",[257,59676,59677],{},".txt oder backup"," gesucht.",[23,59680,59681,59682,59684,59685,59687],{},"Was bewirkt folgender Befehl? find \u002Fhome -type f -name \"*.pdf\"",[5885,59683],{},"\nAntwort: Der Befehl durchsucht \u002Fhome und alle Unterverzeichnisse nach normalen Dateien (-type f),",[5885,59686],{},"\nderen Name auf .pdf endet. Es werden also alle PDF-Dateien unterhalb von \u002Fhome gefunden.",[23,59689,59690,59691,59693,59694,59696],{},"Finde alle Dateien im aktuellen Verzeichnis, die größer als 10 MB sind.",[5885,59692],{},"\nAntwort: Befehl: find . -type f -size +10M. Der Punkt steht für das aktuelle Verzeichnis, -type f",[5885,59695],{},"\nbeschränkt die Suche auf Dateien und +10M bedeutet größer als 10 Megabyte.",[23,59698,59699,59700,59702,59703,59705,59706,59708],{},"Finde alle Dateien mit der Endung .log in \u002Fvar\u002Flog und lösche sie.",[5885,59701],{},"\nAntwort: Befehl: find \u002Fvar\u002Flog -type f -name \"*.log\" -delete. Damit werden alle .log-Dateien in \u002Fvar\u002Flog",[5885,59704],{},"\nund darunter direkt gelöscht. Vorsicht: -delete sollte nur verwendet werden, wenn das Suchmuster",[5885,59707],{},"\nsicher stimmt.",[23,59710,59711,59712,59714,59715,59717],{},"Suche im Verzeichnis \u002Fetc alle Dateien, die in den letzten 7 Tagen geändert wurden.",[5885,59713],{},"\nAntwort: Befehl: find \u002Fetc -type f -mtime -7. Die Option -mtime -7 findet Dateien, deren Änderungszeit",[5885,59716],{},"\nweniger als 7 Tage zurückliegt.",[23,59719,59720,59721,59723,59724,59726],{},"Finde alle Verzeichnisse, deren Name mit „backup“ beginnt.",[5885,59722],{},"\nAntwort: Befehl: find . -type d -name \"backup*\". Mit -type d werden nur Verzeichnisse gesucht und das",[5885,59725],{},"\nMuster backup* findet alle Namen, die mit backup anfangen.",[23,59728,59729,59730,59732,59733,59735],{},"Suche nach Dateien, die genau 100 KB groß sind.",[5885,59731],{},"\nAntwort: Befehl: find . -type f -size 100k. Damit werden Dateien gesucht, deren Größe genau 100",[5885,59734],{},"\nKilobyte beträgt. Das kleine k steht hier für Kilobyte in der find-Syntax.",[23,59737,59738,59739,59741,59742,59744],{},"Finde alle Dateien, die dem Benutzer student gehören.",[5885,59740],{},"\nAntwort: Befehl: find . -type f -user student. Damit werden alle Dateien im aktuellen Verzeichnis und",[5885,59743],{},"\nseinen Unterordnern gesucht, deren Besitzer der Benutzer student ist.",[23,59746,59747,59748,59750,59751,59753],{},"Führe für jede gefundene Datei mit Endung .tmp den Befehl rm aus.",[5885,59749],{},"\nAntwort: Befehl: find . -type f -name \"*.tmp\" -exec rm {} ;. Für jede gefundene .tmp-Datei wird der",[5885,59752],{},"\nBefehl rm einzeln ausgeführt. {} steht dabei für die jeweils gefundene Datei.",[23,59755,59756,59757,59759,59760,59762,59763,59765],{},"Was bedeutet {} ; in folgendem Befehl? find . -name \"*.sh\" -exec chmod +x {} ;",[5885,59758],{},"\nAntwort: Die geschweiften Klammern {} sind ein Platzhalter für jede gefundene Datei. Das",[5885,59761],{},"\nabschließende ; beendet den mit -exec gestarteten Befehl. Dadurch wird chmod +x nacheinander auf",[5885,59764],{},"\njede gefundene .sh-Datei angewendet.",[23,59767,59768,59769,59771,59772,59774,59775,59777],{},"Wie kann man mit find nur in einem bestimmten Verzeichnistiefenbereich suchen? (z. B. nur erste",[5885,59770],{},"\nEbene)",[5885,59773],{},"\nAntwort: Dafür verwendet man zum Beispiel -maxdepth und -mindepth. Mit find . -maxdepth 1 -name",[5885,59776],{},"\n\"*.txt\" wird nur im aktuellen Verzeichnis gesucht, also ohne tiefer in Unterordner zu gehen.",[54,59779,59781],{"id":59780},"techniker_vorbereitung_grep_mit_antwortenpdf","techniker_vorbereitung_grep_mit_antworten.pdf",[16,59783,59784],{},"Quelle: techniker_vorbereitung_grep_mit_antworten.pdf - 2 Seite(n)",[228,59786,54062],{"id":59787},"seite-1-7",[16,59789,59790],{},"Wiederholung grep",[966,59792,59793,59805,59820,59829,59838,59850,59868],{},[23,59794,59795,59796,59798,59799,59801,59802,59804],{},"Was ist der Zweck des Befehls grep?",[5885,59797],{},"\nAntwort: grep dient dazu, Textdateien oder Eingaben nach einem bestimmten Suchmuster zu",[5885,59800],{},"\ndurchsuchen. Das Muster kann ein normales Wort, eine Zeichenfolge oder auch ein regulärer Ausdruck",[5885,59803],{},"\nsein. So lassen sich passende Zeilen schnell finden und ausgeben.",[23,59806,59807,59808,59810,59811,59813,59814,59816,59817,59819],{},"Welcher Befehl sucht nach dem Wort \"Fehler\" in der Datei log.txt, ohne auf",[5885,59809],{},"\nGroß-\u002FKleinschreibung zu achten?",[5885,59812],{},"\nAntwort: Richtige Antwort: B) grep -i Fehler log.txt",[5885,59815],{},"\nDie Option -i sorgt dafür, dass grep nicht zwischen Groß- und Kleinschreibung unterscheidet. Dadurch",[5885,59818],{},"\nwerden zum Beispiel sowohl „Fehler“ als auch „fehler“ oder „FEHLER“ gefunden.",[23,59821,59822,59823,59825,59826,59828],{},"Was bewirkt grep -v \"root\" \u002Fetc\u002Fpasswd?",[5885,59824],{},"\nAntwort: Der Befehl gibt alle Zeilen aus der Datei \u002Fetc\u002Fpasswd aus, in denen das Wort root nicht",[5885,59827],{},"\nvorkommt. Die Option -v kehrt die Suche also um und filtert passende Zeilen heraus.",[23,59830,59831,59832,59834,59835,59837],{},"Suchen Sie in der Datei system.log nach allen Zeilen, die den Begriff „error“ enthalten.",[5885,59833],{},"\nAntwort: grep \"error\" system.log",[5885,59836],{},"\nDieser Befehl zeigt alle Zeilen der Datei system.log an, in denen der Text error vorkommt.",[23,59839,59840,59841,59843,59844,59846,59847,59849],{},"Zeigen Sie alle Zeilen in users.txt, die mit dem Buchstaben „A“ beginnen.",[5885,59842],{},"\nAntwort: grep \"^A\" users.txt",[5885,59845],{},"\nDas Zeichen ^ steht für den Zeilenanfang. Deshalb werden nur Zeilen angezeigt, deren erstes Zeichen",[5885,59848],{},"\nein großes A ist.",[23,59851,59852,59853,59855,59856,59858,59859,59861,59862,59864,59865,59867],{},"Suchen Sie in der Datei daten.csv alle Zeilen, die mit einer Zahl beginnen.",[5885,59854],{},"\nAntwort: grep \"^",[2915,59857,16816],{},"\" daten.csv",[5885,59860],{},"\nDer Ausdruck ",[2915,59863,16816],{}," steht für eine beliebige Ziffer. Zusammen mit ^ bedeutet das: Zeige alle Zeilen, die",[5885,59866],{},"\ndirekt am Anfang mit einer Zahl starten.",[23,59869,59870,59871,59873,59874,59876],{},"Suchen Sie rekursiv im Verzeichnis \u002Fvar\u002Flog nach dem Begriff „failed“.",[5885,59872],{},"\nAntwort: grep -r \"failed\" \u002Fvar\u002Flog",[5885,59875],{},"\nMit der Option -r werden das angegebene Verzeichnis und alle Unterverzeichnisse rekursiv durchsucht.",[3392,59878,59880],{"className":3394,"code":59879,"language":3396,"meta":225,"style":225},"grep sucht dabei in allen passenden Dateien nach dem Begriff failed.\n",[3398,59881,59882],{"__ignoreMap":225},[2915,59883,59884,59886,59889,59892,59894,59897,59900,59902,59905,59908,59911],{"class":3402,"line":3403},[2915,59885,7645],{"class":3406},[2915,59887,59888],{"class":3414}," sucht",[2915,59890,59891],{"class":3414}," dabei",[2915,59893,15061],{"class":3414},[2915,59895,59896],{"class":3414}," allen",[2915,59898,59899],{"class":3414}," passenden",[2915,59901,35204],{"class":3414},[2915,59903,59904],{"class":3414}," nach",[2915,59906,59907],{"class":3414}," dem",[2915,59909,59910],{"class":3414}," Begriff",[2915,59912,59913],{"class":3414}," failed.\n",[966,59915,59916,59928,59940],{"start":5093},[23,59917,59918,59919,59921,59922,59924,59925,59927],{},"Zählen Sie, wie oft das Wort „login“ in der Datei auth.log vorkommt.",[5885,59920],{},"\nAntwort: grep -o \"login\" auth.log | wc -l",[5885,59923],{},"\nDie Option -o gibt jeden einzelnen Treffer separat aus. Diese Treffer werden an wc -l weitergegeben,",[5885,59926],{},"\ndas dann die Anzahl der Zeilen und damit die Anzahl der Vorkommen zählt.",[23,59929,59930,59931,59933,59934,59936,59937,59939],{},"Wie würden Sie alle Zeilen mit genau 8 Zeichen anzeigen? (Zeichenanzahl = 8)",[5885,59932],{},"\nAntwort: grep -x \".{8}\" datei.txt",[5885,59935],{},"\nDer Ausdruck .{8} steht für genau acht beliebige Zeichen. Die Option -x sorgt dafür, dass die gesamte",[5885,59938],{},"\nZeile genau diesem Muster entsprechen muss.",[23,59941,59942],{},"Verwenden Sie grep, um in einer Datei users.txt nur Zeilen auszugeben, die NICHT das",[3392,59944,59946],{"className":3394,"code":59945,"language":3396,"meta":225,"style":225},"Wort \"admin\" enthalten.\n",[3398,59947,59948],{"__ignoreMap":225},[2915,59949,59950,59953,59956],{"class":3402,"line":3403},[2915,59951,59952],{"class":3406},"Wort",[2915,59954,59955],{"class":3414}," \"admin\"",[2915,59957,59958],{"class":3414}," enthalten.\n",[16,59960,59961,59962,59964,59965,59967,59968,59970,59971,59973,59974,59976,59977,59979,59980,59982],{},"Antwort: grep -v \"admin\" users.txt",[5885,59963],{},"\nAuch hier bedeutet -v, dass alle Zeilen ohne den Suchbegriff ausgegeben werden. Zeilen mit dem Wort",[5885,59966],{},"\nadmin werden also ausgeschlossen.",[5885,59969],{},"\n11. Wozu dient der Befehl grep -l ?",[5885,59972],{},"\nAntwort: Die Option -l gibt nur die Namen der Dateien aus, in denen ein Suchmuster gefunden wurde.",[5885,59975],{},"\nDie eigentlichen Trefferzeilen werden dabei nicht angezeigt. Das ist praktisch, wenn man nur wissen",[5885,59978],{},"\nmöchte, in welchen Dateien ein Begriff vorkommt.",[5885,59981],{},"\n12. Geben Sie ein Beispiel an.",[16,59984,54062],{},[228,59986,54202],{"id":59987},"seite-2-6",[16,59989,59990,59991,59993,59994,59996,59997,59999,60000,60002,60003,60005,60006,60008,60009,60011,60012,60014,60015,60017,60018,60020],{},"Antwort: grep -l \"Fehler\" *.log",[5885,59992],{},"\nDieser Befehl durchsucht alle Dateien mit der Endung .log im aktuellen Verzeichnis. Anschließend",[5885,59995],{},"\nwerden nur die Dateinamen ausgegeben, in denen das Wort Fehler gefunden wurde.",[5885,59998],{},"\n13. Was macht folgender Befehl? grep -rl \"TODO\" .",[5885,60001],{},"\nAntwort: Der Befehl durchsucht das aktuelle Verzeichnis . und alle Unterordner rekursiv nach dem",[5885,60004],{},"\nBegriff TODO. Durch die Kombination aus -r und -l werden nur die Dateinamen angezeigt, in denen",[5885,60007],{},"\nmindestens ein Treffer vorkommt.",[5885,60010],{},"\n14. Was macht folgender Befehl? grep -li \"warnung\" *.txt",[5885,60013],{},"\nAntwort: Dieser Befehl durchsucht alle .txt-Dateien im aktuellen Verzeichnis nach dem Wort warnung,",[5885,60016],{},"\nohne zwischen Groß- und Kleinschreibung zu unterscheiden. Wegen -l werden nur die Dateinamen",[5885,60019],{},"\nausgegeben, nicht die einzelnen Zeilen mit dem Treffer.",[16,60022,54202],{},[54,60024,60026],{"id":60025},"techniker_vorbereitung_systemd_mit_antwortenpdf","techniker_vorbereitung_systemd_mit_antworten.pdf",[16,60028,60029],{},"Quelle: techniker_vorbereitung_systemd_mit_antworten.pdf - 2 Seite(n)",[228,60031,54062],{"id":60032},"seite-1-8",[16,60034,60035],{},"Prüfungsfragen zu systemd",[966,60037,60038,60053,60068,60083,60092,60104,60116,60125,60140,60152],{},[23,60039,60040,60041,60043,60044,60046,60047,60049,60050,60052],{},"Was ist systemd und welche Aufgabe erfüllt es?",[5885,60042],{},"\nAntwort: systemd ist das Init-System und der Service-Manager vieler Linux-Distributionen. Es startet",[5885,60045],{},"\nbeim Booten die notwendigen Dienste, überwacht laufende Prozesse und verwaltet deren Status",[5885,60048],{},"\nwährend des Betriebs. Außerdem stellt es Werkzeuge bereit, um Dienste kontrolliert zu starten, zu",[5885,60051],{},"\nstoppen, neu zu laden oder beim Systemstart automatisch zu aktivieren.",[23,60054,60055,60056,60058,60059,60061,60062,60064,60065,60067],{},"Was ist eine Unit-Datei? Nenne Beispiele.",[5885,60057],{},"\nAntwort: Eine Unit-Datei ist eine Konfigurationsdatei, mit der systemd festlegt, wie eine bestimmte",[5885,60060],{},"\nRessource oder Funktion verwaltet wird. Beispiele sind .service für Dienste, .socket für Socket-",[5885,60063],{},"\nAktivierung, .target für Zielzustände ähnlich den früheren Runleveln, .mount für Einhängepunkte",[5885,60066],{},"\nund .timer für zeitgesteuerte Aufgaben.",[23,60069,60070,60071,60073,60074,60076,60077,60079,60080,60082],{},"Wo befinden sich systemd-Unit-Dateien?",[5885,60072],{},"\nAntwort: Häufig liegen benutzerdefinierte oder lokal angepasste Units unter \u002Fetc\u002Fsystemd\u002Fsystem. Vom",[5885,60075],{},"\nPaketmanager installierte Standard-Units liegen meist unter \u002Fusr\u002Flib\u002Fsystemd\u002Fsystem oder je nach",[5885,60078],{},"\nDistribution unter \u002Flib\u002Fsystemd\u002Fsystem. Änderungen in \u002Fetc haben in der Praxis Vorrang, weil dort lokale",[5885,60081],{},"\nAnpassungen vorgenommen werden.",[23,60084,60085,60086,60088,60089,60091],{},"Wie startest du einen Dienst manuell?",[5885,60087],{},"\nAntwort: Mit einem Befehl wie systemctl start nginx. Dadurch wird der Dienst sofort gestartet, aber noch",[5885,60090],{},"\nnicht automatisch für den nächsten Bootvorgang aktiviert.",[23,60093,60094,60095,60097,60098,60100,60101,60103],{},"Wie aktivierst du einen Dienst beim Booten?",[5885,60096],{},"\nAntwort: Mit systemctl enable nginx. Damit wird der Dienst so eingerichtet, dass er beim Systemstart",[5885,60099],{},"\nautomatisch geladen und gestartet wird. Der Befehl ändert also die Boot-Konfiguration, startet den",[5885,60102],{},"\nDienst aber nicht zwingend sofort.",[23,60105,60106,60107,60109,60110,60112,60113,60115],{},"Unterschied zwischen start und enable?",[5885,60108],{},"\nAntwort: start wirkt sofort und startet den Dienst in der aktuellen Sitzung. enable sorgt dafür, dass der",[5885,60111],{},"\nDienst beim nächsten Systemstart automatisch startet. In der Praxis werden oft beide Befehle",[5885,60114],{},"\nkombiniert, wenn ein Dienst sofort laufen und dauerhaft aktiviert sein soll.",[23,60117,60118,60119,60121,60122,60124],{},"Wie prüfst du den Status eines Dienstes?",[5885,60120],{},"\nAntwort: Mit systemctl status nginx. Der Befehl zeigt unter anderem, ob der Dienst aktiv ist, wann er",[5885,60123],{},"\ngestartet wurde, ob Fehler aufgetreten sind und welche letzten Log-Ausgaben zugeordnet wurden.",[23,60126,60127,60128,60130,60131,60133,60134,60136,60137,60139],{},"Was ist ein Target?",[5885,60129],{},"\nAntwort: Ein Target ist eine Sammlung von Units, die einen bestimmten Systemzustand beschreibt.",[5885,60132],{},"\nBeispiele sind multi-user.target für einen Mehrbenutzerbetrieb ohne grafische Oberfläche oder",[5885,60135],{},"\ngraphical.target für den grafischen Modus. Targets ersetzen damit weitgehend das frühere Runlevel-",[5885,60138],{},"\nKonzept.",[23,60141,60142,60143,60145,60146,60148,60149,60151],{},"Wie wechselst du das Target zur Laufzeit?",[5885,60144],{},"\nAntwort: Mit systemctl isolate multi-user.target. Dadurch versucht systemd, sofort in den angegebenen",[5885,60147],{},"\nZielzustand zu wechseln und nur die dafür benötigten Units aktiv zu lassen. Das kann laufende Dienste",[5885,60150],{},"\nstoppen, die im neuen Target nicht mehr benötigt werden.",[23,60153,60154,60155,60157,60158,60160,60161,60163],{},"Was ist der Unterschied zwischen restart und reload?",[5885,60156],{},"\nAntwort: restart beendet einen Dienst vollständig und startet ihn anschließend neu. reload lädt nur die",[5885,60159],{},"\nKonfiguration neu, ohne den Prozess komplett zu beenden, sofern der Dienst diese Funktion unterstützt.",[5885,60162],{},"\nreload ist daher oft schonender, weil laufende Verbindungen oder Zustände eher erhalten bleiben.",[16,60165,54062],{},[228,60167,54202],{"id":60168},"seite-2-7",[966,60170,60171],{"start":5212},[23,60172,60173,60174,60176,60177,60179,60180,60182,60183,60185],{},"Erstelle einen einfachen Service: Datei: \u002Fetc\u002Fsystemd\u002Fsystem\u002Fmeinservice.service",[5885,60175],{},"\nAntwort: Eine einfache Unit-Datei könnte den Dienst mit ExecStart=\u002Fusr\u002Fbin\u002Fsleep 1000 definieren und",[5885,60178],{},"\nmit WantedBy=multi-user.target beim Mehrbenutzerstart einbinden. Nach dem Anlegen oder Ändern der",[5885,60181],{},"\nDatei sollte man systemctl daemon-reload ausführen, damit systemd die neue Unit-Datei einliest.",[5885,60184],{},"\nAnschließend kann man den Dienst mit systemctl enable meinservice dauerhaft aktivieren und mit",[3392,60187,60189],{"className":3394,"code":60188,"language":3396,"meta":225,"style":225},"systemctl start meinservice sofort starten.\n",[3398,60190,60191],{"__ignoreMap":225},[2915,60192,60193,60196,60198,60201,60204],{"class":3402,"line":3403},[2915,60194,60195],{"class":3406},"systemctl",[2915,60197,44117],{"class":3414},[2915,60199,60200],{"class":3414}," meinservice",[2915,60202,60203],{"class":3414}," sofort",[2915,60205,60206],{"class":3414}," starten.\n",[966,60208,60209,60224,60236,60248],{"start":5218},[23,60210,60211,60212,60214,60215,60217,60218,60220,60221,60223],{},"Was macht systemctl daemon-reload?",[5885,60213],{},"\nAntwort: Dieser Befehl liest die Unit-Dateien erneut ein, wenn Konfigurationen neu angelegt oder",[5885,60216],{},"\nverändert wurden. Er ist notwendig, damit systemd Änderungen an Service-Dateien, Timern oder",[5885,60219],{},"\nanderen Units überhaupt erkennt. Ohne daemon-reload arbeitet systemd oft noch mit der alten Version",[5885,60222],{},"\nder Datei.",[23,60225,60226,60227,60229,60230,60232,60233,60235],{},"Was ist journalctl?",[5885,60228],{},"\nAntwort: journalctl ist das Werkzeug zum Auslesen des systemd-Journals. Darüber lassen sich zentrale",[5885,60231],{},"\nLogeinträge des Systems und einzelner Dienste anzeigen, filtern und zeitlich eingrenzen. Es ist",[5885,60234],{},"\nbesonders nützlich für die Fehlersuche und die Analyse von Startproblemen.",[23,60237,60238,60239,60241,60242,60244,60245,60247],{},"Beispiel: Logs eines Dienstes anzeigen",[5885,60240],{},"\nAntwort: Mit journalctl -u nginx. Der Parameter -u filtert die Einträge auf eine bestimmte Unit, sodass nur",[5885,60243],{},"\ndie Protokolle des betreffenden Dienstes angezeigt werden. So lassen sich Fehler, Warnungen und",[5885,60246],{},"\nStartmeldungen gezielt untersuchen.",[23,60249,60250,60251,60253,60254,60256,60257,60259,60260,60262],{},"Was sind Timer-Units?",[5885,60252],{},"\nAntwort: Timer-Units sind die systemd-Variante für zeitgesteuerte Aufgaben und damit oft ein Ersatz für",[5885,60255],{},"\nklassische Cronjobs. Ein Timer startet zu bestimmten Zeitpunkten oder nach bestimmten Intervallen eine",[5885,60258],{},"\nzugehörige Service-Unit. Der Vorteil liegt darin, dass Zeitsteuerung und Dienstverwaltung direkt",[5885,60261],{},"\ninnerhalb von systemd zusammenarbeiten.",[4468,60264,60265],{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sA_wV, html code.shiki .sA_wV{--shiki-default:#032F62;--shiki-dark:#DBEDFF}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":225,"searchDepth":1117,"depth":1117,"links":60267},[60268,60269,60270,60271,60272,60273,60274,60275,60276,60277,60280,60281,60287,60288,60289,60293,60297,60302,60310,60311,60320,60321,60322,60323,60330,60331,60332,60333,60334,60339,60340,60345,60354,60362,60363,60364,60365,60368,60369,60370,60371,60372,60373,60376,60377,60378,60379,60385,60386,60387,60388,60389,60390,60391,60392,60393,60394,60395,60396,60397,60398,60399,60400,60401,60404,60405,60406,60407,60416,60417,60424,60425,60426,60427,60432,60433,60434,60441,60442,60443,60444,60449,60453,60459,60472,60483,60494,60501,60507,60512,60518,60521,60525],{"id":34569,"depth":1117,"text":34570},{"id":34707,"depth":1117,"text":34708},{"id":34780,"depth":1117,"text":34781},{"id":34903,"depth":1117,"text":34904},{"id":35017,"depth":1117,"text":35018},{"id":35123,"depth":1117,"text":35124},{"id":35186,"depth":1117,"text":35187},{"id":23559,"depth":1117,"text":23559},{"id":26856,"depth":1117,"text":26856},{"id":36612,"depth":1117,"text":36613,"children":60278},[60279],{"id":36725,"depth":1125,"text":36726},{"id":36779,"depth":1117,"text":36780},{"id":31763,"depth":1117,"text":31764,"children":60282},[60283,60284,60285,60286],{"id":36807,"depth":1125,"text":36808},{"id":36865,"depth":1125,"text":36866},{"id":36903,"depth":1125,"text":36904},{"id":36946,"depth":1125,"text":36947},{"id":36980,"depth":1117,"text":36981},{"id":36999,"depth":1117,"text":37000},{"id":37050,"depth":1117,"text":37051,"children":60290},[60291,60292],{"id":37054,"depth":1125,"text":37055},{"id":37259,"depth":1125,"text":1168},{"id":37315,"depth":1117,"text":37316,"children":60294},[60295,60296],{"id":7701,"depth":1125,"text":37337},{"id":8675,"depth":1125,"text":7653},{"id":37628,"depth":1117,"text":37629,"children":60298},[60299,60300,60301],{"id":7946,"depth":1125,"text":37337},{"id":37713,"depth":1125,"text":37714},{"id":12120,"depth":1125,"text":7653},{"id":37879,"depth":1117,"text":37880,"children":60303},[60304,60305,60306,60307,60308,60309],{"id":8603,"depth":1125,"text":8604},{"id":19065,"depth":1125,"text":19066},{"id":19188,"depth":1125,"text":19189},{"id":38196,"depth":1125,"text":38197},{"id":38299,"depth":1125,"text":38300},{"id":12610,"depth":1125,"text":8676},{"id":39089,"depth":1117,"text":39090},{"id":39141,"depth":1117,"text":39142,"children":60312},[60313,60314,60315,60316,60317,60318,60319],{"id":39145,"depth":1125,"text":8604},{"id":39240,"depth":1125,"text":39241},{"id":39368,"depth":1125,"text":39369},{"id":39440,"depth":1125,"text":39441},{"id":39453,"depth":1125,"text":18184},{"id":39506,"depth":1125,"text":39507},{"id":13392,"depth":1125,"text":8676},{"id":40267,"depth":1117,"text":40268},{"id":40367,"depth":1117,"text":40368},{"id":40444,"depth":1117,"text":40445},{"id":40500,"depth":1117,"text":40501,"children":60324},[60325,60326,60327,60328,60329],{"id":40504,"depth":1125,"text":40505},{"id":40508,"depth":1125,"text":40509},{"id":40520,"depth":1125,"text":40521},{"id":40535,"depth":1125,"text":40536},{"id":40542,"depth":1125,"text":40543},{"id":40551,"depth":1117,"text":40552},{"id":40624,"depth":1117,"text":40625},{"id":40751,"depth":1117,"text":40752},{"id":12898,"depth":1117,"text":12899},{"id":40827,"depth":1117,"text":40828,"children":60335},[60336,60337,60338],{"id":40831,"depth":1125,"text":40832},{"id":40916,"depth":1125,"text":40917},{"id":40983,"depth":1125,"text":40984},{"id":41052,"depth":1117,"text":41053},{"id":41106,"depth":1117,"text":41107,"children":60341},[60342,60343,60344],{"id":41173,"depth":1125,"text":41174},{"id":41245,"depth":1125,"text":41246},{"id":41301,"depth":1125,"text":41302},{"id":41398,"depth":1117,"text":41399,"children":60346},[60347,60348,60349,60350,60351,60352,60353],{"id":41433,"depth":1125,"text":41434},{"id":41499,"depth":1125,"text":41500},{"id":41580,"depth":1125,"text":41581},{"id":41709,"depth":1125,"text":41710},{"id":41728,"depth":1125,"text":41729},{"id":41818,"depth":1125,"text":41819},{"id":41905,"depth":1125,"text":41906},{"id":42027,"depth":1117,"text":42028,"children":60355},[60356,60357,60358,60359,60360,60361],{"id":42044,"depth":1125,"text":42045},{"id":42153,"depth":1125,"text":42154},{"id":42216,"depth":1125,"text":42217},{"id":42325,"depth":1125,"text":42326},{"id":42369,"depth":1125,"text":42370},{"id":42426,"depth":1125,"text":42427},{"id":42535,"depth":1117,"text":42536},{"id":42606,"depth":1117,"text":42607},{"id":42758,"depth":1117,"text":42759},{"id":42819,"depth":1117,"text":42820,"children":60366},[60367],{"id":42847,"depth":1125,"text":42848},{"id":42924,"depth":1117,"text":42925},{"id":43038,"depth":1117,"text":43039},{"id":43106,"depth":1117,"text":43107},{"id":43240,"depth":1117,"text":43241},{"id":43301,"depth":1117,"text":43302},{"id":43336,"depth":1117,"text":43337,"children":60374},[60375],{"id":402,"depth":1125,"text":403},{"id":43367,"depth":1117,"text":43368},{"id":43490,"depth":1117,"text":43491},{"id":43614,"depth":1117,"text":43615},{"id":43690,"depth":1117,"text":43691,"children":60380},[60381,60382,60383,60384],{"id":43694,"depth":1125,"text":43695},{"id":43706,"depth":1125,"text":43707},{"id":44072,"depth":1125,"text":44073},{"id":44122,"depth":1125,"text":44123},{"id":44141,"depth":1117,"text":8604},{"id":44213,"depth":1117,"text":44214},{"id":44255,"depth":1117,"text":44256},{"id":44318,"depth":1117,"text":44319},{"id":44375,"depth":1117,"text":44376},{"id":44460,"depth":1117,"text":44461},{"id":14694,"depth":1117,"text":8676},{"id":44699,"depth":1117,"text":44700},{"id":44767,"depth":1117,"text":44768},{"id":44789,"depth":1117,"text":44790},{"id":44845,"depth":1117,"text":8604},{"id":44867,"depth":1117,"text":44868},{"id":25768,"depth":1117,"text":25769},{"id":26227,"depth":1117,"text":26228},{"id":15178,"depth":1117,"text":8676},{"id":45790,"depth":1117,"text":45791},{"id":45805,"depth":1117,"text":45806,"children":60402},[60403],{"id":45928,"depth":1125,"text":45929},{"id":46001,"depth":1117,"text":46002},{"id":46386,"depth":1117,"text":46387},{"id":46460,"depth":1117,"text":46461},{"id":46494,"depth":1117,"text":46495,"children":60408},[60409,60410,60411,60412,60413,60414,60415],{"id":46501,"depth":1125,"text":46502},{"id":46598,"depth":1125,"text":46599},{"id":46902,"depth":1125,"text":46903},{"id":46975,"depth":1125,"text":46976},{"id":47102,"depth":1125,"text":47103},{"id":47229,"depth":1125,"text":47230},{"id":47281,"depth":1125,"text":47282},{"id":47853,"depth":1117,"text":47854},{"id":48232,"depth":1117,"text":48233,"children":60418},[60419,60420,60421,60423],{"id":48362,"depth":1125,"text":48363},{"id":48409,"depth":1125,"text":48410},{"id":48501,"depth":1125,"text":60422},"Unterschied zwischen \"$array\" und \"${array@}\"",{"id":48658,"depth":1125,"text":48659},{"id":48685,"depth":1117,"text":4921},{"id":48698,"depth":1117,"text":48699},{"id":48748,"depth":1117,"text":5002},{"id":48831,"depth":1117,"text":48832,"children":60428},[60429,60430,60431],{"id":48970,"depth":1125,"text":48971},{"id":49037,"depth":1125,"text":49038},{"id":49110,"depth":1125,"text":5404},{"id":49154,"depth":1117,"text":5462},{"id":49269,"depth":1117,"text":5605},{"id":49378,"depth":1117,"text":49379,"children":60435},[60436,60437,60438,60439,60440],{"id":49382,"depth":1125,"text":49383},{"id":49422,"depth":1125,"text":49423},{"id":49472,"depth":1125,"text":49473},{"id":49788,"depth":1125,"text":49789},{"id":49824,"depth":1125,"text":49825},{"id":49874,"depth":1117,"text":49875},{"id":49932,"depth":1117,"text":49933},{"id":49954,"depth":1117,"text":49955},{"id":50241,"depth":1117,"text":50242,"children":60445},[60446,60447,60448],{"id":50245,"depth":1125,"text":50246},{"id":50314,"depth":1125,"text":50315},{"id":50398,"depth":1125,"text":50399},{"id":50591,"depth":1117,"text":50592,"children":60450},[60451,60452],{"id":50693,"depth":1125,"text":50694},{"id":50717,"depth":1125,"text":50718},{"id":6792,"depth":1117,"text":50777,"children":60454},[60455,60456,60457,60458],{"id":50780,"depth":1125,"text":50781},{"id":27888,"depth":1125,"text":50836},{"id":51526,"depth":1125,"text":51527},{"id":51925,"depth":1125,"text":51926},{"id":51938,"depth":1117,"text":51939,"children":60460},[60461,60462,60463,60464,60465,60466,60467,60468,60469,60470,60471],{"id":51942,"depth":1125,"text":8604},{"id":29351,"depth":1125,"text":29352},{"id":29564,"depth":1125,"text":29565},{"id":29687,"depth":1125,"text":29688},{"id":29745,"depth":1125,"text":29746},{"id":29813,"depth":1125,"text":29814},{"id":29876,"depth":1125,"text":29877},{"id":52413,"depth":1125,"text":52414},{"id":31519,"depth":1125,"text":31520},{"id":31616,"depth":1125,"text":31617},{"id":53611,"depth":1125,"text":31764},{"id":54054,"depth":1117,"text":54055,"children":60473},[60474,60475,60476,60477,60478,60479,60480,60481,60482],{"id":54061,"depth":1125,"text":54062},{"id":54201,"depth":1125,"text":54202},{"id":54464,"depth":1125,"text":54465},{"id":54617,"depth":1125,"text":54618},{"id":54744,"depth":1125,"text":54745},{"id":55001,"depth":1125,"text":55002},{"id":55206,"depth":1125,"text":55207},{"id":55377,"depth":1125,"text":55378},{"id":55577,"depth":1125,"text":55578},{"id":55602,"depth":1117,"text":55603,"children":60484},[60485,60486,60487,60488,60489,60490,60491,60492,60493],{"id":55609,"depth":1125,"text":54062},{"id":55754,"depth":1125,"text":54202},{"id":55804,"depth":1125,"text":54465},{"id":56097,"depth":1125,"text":54618},{"id":56174,"depth":1125,"text":54745},{"id":56306,"depth":1125,"text":55002},{"id":56493,"depth":1125,"text":55207},{"id":56599,"depth":1125,"text":55378},{"id":56830,"depth":1125,"text":55578},{"id":56896,"depth":1117,"text":56897,"children":60495},[60496,60497,60498,60499,60500],{"id":56903,"depth":1125,"text":54062},{"id":56989,"depth":1125,"text":54202},{"id":57199,"depth":1125,"text":54465},{"id":57492,"depth":1125,"text":54618},{"id":57528,"depth":1125,"text":54745},{"id":57567,"depth":1117,"text":57568,"children":60502},[60503,60504,60505,60506],{"id":57574,"depth":1125,"text":54062},{"id":57701,"depth":1125,"text":54202},{"id":57897,"depth":1125,"text":54465},{"id":58055,"depth":1125,"text":54618},{"id":58357,"depth":1117,"text":58358,"children":60508},[60509,60510,60511],{"id":58364,"depth":1125,"text":54062},{"id":58491,"depth":1125,"text":54202},{"id":58606,"depth":1125,"text":54465},{"id":58645,"depth":1117,"text":58646,"children":60513},[60514,60515,60516,60517],{"id":58652,"depth":1125,"text":54062},{"id":58868,"depth":1125,"text":54202},{"id":59076,"depth":1125,"text":54465},{"id":59354,"depth":1125,"text":54618},{"id":59638,"depth":1117,"text":59639,"children":60519},[60520],{"id":59645,"depth":1125,"text":54062},{"id":59780,"depth":1117,"text":59781,"children":60522},[60523,60524],{"id":59787,"depth":1125,"text":54062},{"id":59987,"depth":1125,"text":54202},{"id":60025,"depth":1117,"text":60026,"children":60526},[60527,60528],{"id":60032,"depth":1125,"text":54062},{"id":60168,"depth":1125,"text":54202},{},{"title":34386},"\u002Ffaecher\u002Fbsa\u002Fap-zsmf","\u002Fdownloads\u002FBSA\u002FBSA_ZSMF_AP.pdf",{"title":34386,"description":225},"faecher\u002Fbsa\u002Fap-zsmf","5EnLwpdNJfUZrGDKUmMLO1A5TlBoDrA1y-3kO_Bs0DM",1778676318890]