[{"data":1,"prerenderedAt":23257},["ShallowReactive",2],{"content-\u002Ffaecher\u002Fbsa\u002Fap-cs":3},{"id":4,"title":5,"body":6,"class":23242,"description":23243,"extension":23244,"meta":23245,"navigation":23246,"path":23247,"pdfDownload":23248,"scope":23242,"scopeName":23249,"seo":23250,"stem":23251,"subject":23252,"subjectName":23253,"type":23254,"typeName":23255,"year":23249,"__hash__":23256},"faecher\u002Ffaecher\u002Fbsa\u002Fap-cs.md","Cheat-Sheet – Abschlussprüfung",{"type":7,"value":8,"toc":23093},"minimark",[9,13,21,37,42,98,102,190,194,198,200,204,300,304,307,311,314,318,347,351,354,442,444,448,450,454,457,460,510,513,543,546,557,569,573,580,590,593,596,606,609,641,645,728,731,735,890,894,897,900,903,905,909,1001,1004,1007,1010,1044,1047,1064,1080,1084,1145,1148,1236,1239,1243,1458,1461,1465,1468,1472,1475,1478,1481,1506,1509,1526,1536,1540,1624,1628,1762,1766,1879,1882,1934,1938,2036,2039,2043,2300,2303,2307,2310,2314,2317,2321,2324,2328,2331,2335,2354,2359,2364,2389,2394,2420,2424,2570,2573,2594,2598,2602,2611,2616,2628,2632,2652,2656,2763,2765,2817,2820,2823,2827,2832,2850,2854,2875,2879,3003,3005,3033,3037,3127,3131,3135,3219,3244,3247,3252,3264,3267,3340,3345,3355,3358,3361,3365,3368,3372,3626,3629,3632,3635,3638,3642,3646,3650,3654,3657,3661,3664,3667,3670,3674,3677,3681,3684,3688,3760,3763,3766,3775,3786,3789,3852,3855,3859,3862,3866,4090,4093,4097,4100,4103,4106,4110,4113,4116,4119,4122,4125,4128,4131,4134,4138,4141,4144,4147,4150,4164,4175,4178,4269,4272,4276,4279,4283,4542,4545,4549,4552,4555,4558,4562,4569,4576,4583,4586,4590,4593,4596,4599,4627,4629,4637,4649,4652,4912,4916,5032,5035,5039,5463,5466,5470,5472,5476,5479,5482,5486,5489,5493,5500,5506,5512,5518,5524,5539,5542,5545,5548,5550,5555,5568,5572,5576,5664,5668,5775,5779,5867,5871,5919,5923,5995,5999,6047,6050,6054,6669,6672,6676,6679,6682,6685,6689,6692,6695,6699,6701,6704,6707,6710,6713,6725,6737,6742,6754,6760,6788,6792,6889,6892,6932,6937,7002,7006,7121,7136,7140,7223,7227,7231,7241,7245,7248,7253,7260,7265,7268,7272,7278,7282,7296,7300,7307,7310,7320,7324,7327,7330,7334,7338,7341,7345,7757,7760,7764,7766,7769,7772,7774,7778,7781,7784,7788,7791,7794,7797,7801,7804,7807,7812,7822,7826,7945,7949,8160,8164,8222,8226,8313,8317,8438,8441,8445,8449,9804,9807,9811,9814,9816,9820,9822,9824,9826,9839,9842,9846,9849,9852,9855,9859,9863,9868,9870,9875,9887,9890,10089,10093,10120,10145,10150,10208,10212,10294,10297,10301,10626,10629,10633,10636,10639,10642,10645,10648,10651,10654,10657,10660,10664,10667,10670,10673,10677,10680,10692,10701,10704,10734,10739,10750,10763,10766,10770,10791,10794,10798,10800,10804,10998,11001,11004,11007,11011,11015,11018,11022,11025,11028,11033,11044,11047,11245,11250,11265,11283,11286,11290,11293,11297,11623,11627,11630,11633,11637,11640,11643,11646,11648,11651,11653,11655,11657,11660,11664,11666,11668,11670,11672,11676,11678,11680,11682,11686,11688,11690,11692,11695,11699,11702,11705,11708,11711,11714,11717,11726,11737,11740,11850,11855,11903,11906,11910,12106,12108,12110,12113,12117,12173,12176,12180,12255,12258,12262,12264,12266,12268,12271,12275,12277,12279,12282,12286,12342,12344,12346,12350,12353,12362,12373,12376,12414,12417,12421,12424,12428,12582,12585,12589,12591,12593,12595,12598,12601,12603,12605,12607,12609,12613,12619,12623,12626,12642,12653,12656,12780,12785,12791,12794,12854,12859,12865,12924,12927,12931,12933,12937,12940,12944,13142,13145,13148,13151,13154,13157,13161,13164,13168,13172,13176,13180,13184,13188,13192,13195,13199,13202,13205,13213,13241,13250,13254,13262,13308,13333,13337,13523,13527,13551,13558,13596,13600,13603,13714,13719,13723,13735,13739,13741,13745,13789,13792,13796,14194,14197,14201,14205,14216,14221,14224,14228,14231,14234,14237,14240,14243,14246,14249,14252,14255,14258,14261,14264,14267,14270,14273,14276,14279,14282,14285,14288,14291,14294,14297,14300,14303,14306,14309,14312,14316,14540,14549,14557,14561,14581,14584,14588,15043,15047,15096,15100,15106,15109,15113,15117,15631,15634,15638,15662,15668,15673,15676,15685,15689,15694,15714,15718,15778,15781,15785,15789,16575,16578,16582,16585,16589,16592,16596,16599,16602,16605,16609,16611,16614,16618,16621,16623,16632,16640,16644,16717,16721,16725,16838,16841,16985,16989,17085,17089,17278,17282,17409,17445,17522,17534,17537,17540,17855,17858,17862,18178,18187,18204,18208,18419,18423,18542,18546,18600,18604,18668,18672,18731,18735,18805,18809,20379,20383,20432,20436,20476,20480,20484,20488,20540,20543,20623,20627,20631,20635,21427,21430,21434,21446,21452,21455,21471,21476,21482,21487,21490,21494,21607,21611,21737,21741,21759,21763,21767,21770,21773,21776,21779,21782,21785,21788,21791,21794,21798,21801,21804,21808,21811,21814,21818,21821,21824,21828,21832,21845,21849,21852,21855,21858,21862,21865,21869,21971,21987,21995,22000,22003,22006,22066,22070,22117,22121,22124,22127,22130,22133,22136,22139,22142,22145,22148,22152,22155,22158,22161,22165,22168,22172,22176,22179,22183,22195,22199,22202,22206,22209,22244,22248,22251,22254,22258,22261,22265,22269,22272,22276,22279,22283,22286,22290,22293,22297,22300,22304,22307,22310,22313,22315,22319,22323,22327,22330,22333,22337,22341,22345,22360,22367,22371,22374,22377,22434,22438,22449,22453,22456,22460,22463,22466,22470,22473,22476,22479,22482,22486,22490,22494,22497,22501,22504,22507,22521,22525,22528,22531,22533,22537,22540,22544,22547,22551,22554,22558,22561,22565,22568,22572,22574,22577,22580,22582,22585,22589,22593,22597,22600,22604,22608,22777,22781,22784,22792,22796,22859,22863,22923,22927,23066,23070,23077,23080,23086,23089],[10,11,12],"h1",{"id":12},"id",[14,15,16,20],"p",{},[17,18,19],"strong",{},"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.",[14,22,23,26,27],{},[17,24,25],{},"Syntax:"," ",[17,28,29,30,26,34],{},"id ",[31,32,33],"span",{},"OPTIONEN",[31,35,36],{},"BENUTZER",[38,39,41],"h2",{"id":40},"uid-bereiche-linux-konvention","UID-Bereiche (Linux-Konvention)",[43,44,45,62],"table",{},[46,47,48],"thead",{},[49,50,51,57],"tr",{},[52,53,54],"th",{},[17,55,56],{},"Bereich",[52,58,59],{},[17,60,61],{},"Bedeutung",[63,64,65,74,82,90],"tbody",{},[49,66,67,71],{},[68,69,70],"td",{},"0",[68,72,73],{},"root – Superuser mit vollen Systemrechten",[49,75,76,79],{},[68,77,78],{},"1 – 999",[68,80,81],{},"System-\u002FDienst-Konten (daemon, www-data, ...)",[49,83,84,87],{},[68,85,86],{},"1000 – 65533",[68,88,89],{},"Normale Benutzer",[49,91,92,95],{},[68,93,94],{},"65534",[68,96,97],{},"nobody – minimale Rechte, für NFS o. ä.",[38,99,101],{"id":100},"flags","Flags",[43,103,104,122],{},[46,105,106],{},[49,107,108,113,118],{},[52,109,110],{},[17,111,112],{},"Flag",[52,114,115],{},[17,116,117],{},"Langform",[52,119,120],{},[17,121,61],{},[63,123,124,135,146,157,168,179],{},[49,125,126,129,132],{},[68,127,128],{},"-u",[68,130,131],{},"--user",[68,133,134],{},"Nur die UID (User ID) numerisch ausgeben",[49,136,137,140,143],{},[68,138,139],{},"-g",[68,141,142],{},"--group",[68,144,145],{},"Nur die primäre GID numerisch ausgeben",[49,147,148,151,154],{},[68,149,150],{},"-G",[68,152,153],{},"--groups",[68,155,156],{},"Alle GIDs (primär + alle sekundären) aufzählen",[49,158,159,162,165],{},[68,160,161],{},"-n",[68,163,164],{},"--name",[68,166,167],{},"Namen statt numerischer ID ausgeben – immer mit -u, -g oder -G kombinieren",[49,169,170,173,176],{},[68,171,172],{},"-r",[68,174,175],{},"--real",[68,177,178],{},"Echte (reale) ID statt der effektiven ID ausgeben",[49,180,181,184,187],{},[68,182,183],{},"-Z",[68,185,186],{},"--context",[68,188,189],{},"SELinux-Sicherheitskontext ausgeben (nur auf SELinux-Systemen verfügbar)",[38,191,193],{"id":192},"beispiele","Beispiele",[10,195,197],{"id":196},"alle-ids-des-aktuell-eingeloggten-benutzers-ausgeben","Alle IDs des aktuell eingeloggten Benutzers ausgeben",[14,199,12],{},[10,201,203],{"id":202},"nur-die-eigene-uid-numerisch","Nur die eigene UID numerisch",[205,206,211],"pre",{"className":207,"code":208,"language":209,"meta":210,"style":210},"language-bash shiki shiki-themes github-light github-dark","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","bash","",[212,213,214,225,232,239,244,252,257,263,268,276,281,287,292],"code",{"__ignoreMap":210},[31,215,218,221],{"class":216,"line":217},"line",1,[31,219,12],{"class":220},"sScJk",[31,222,224],{"class":223},"sj4cs"," -u\n",[31,226,228],{"class":216,"line":227},2,[31,229,231],{"emptyLinePlaceholder":230},true,"\n",[31,233,235],{"class":216,"line":234},3,[31,236,238],{"class":237},"sJ8bj","# Nur die eigene UID als Namen (Benutzername)\n",[31,240,242],{"class":216,"line":241},4,[31,243,231],{"emptyLinePlaceholder":230},[31,245,247,249],{"class":216,"line":246},5,[31,248,12],{"class":220},[31,250,251],{"class":223}," -un\n",[31,253,255],{"class":216,"line":254},6,[31,256,231],{"emptyLinePlaceholder":230},[31,258,260],{"class":216,"line":259},7,[31,261,262],{"class":237},"# Alle Gruppen-IDs des aktuellen Nutzers\n",[31,264,266],{"class":216,"line":265},8,[31,267,231],{"emptyLinePlaceholder":230},[31,269,271,273],{"class":216,"line":270},9,[31,272,12],{"class":220},[31,274,275],{"class":223}," -G\n",[31,277,279],{"class":216,"line":278},10,[31,280,231],{"emptyLinePlaceholder":230},[31,282,284],{"class":216,"line":283},11,[31,285,286],{"class":237},"# Alle Gruppennamen (keine Nummern)\n",[31,288,290],{"class":216,"line":289},12,[31,291,231],{"emptyLinePlaceholder":230},[31,293,295,297],{"class":216,"line":294},13,[31,296,12],{"class":220},[31,298,299],{"class":223}," -Gn\n",[10,301,303],{"id":302},"ids-eines-anderen-benutzers-abfragen-als-root-oder-für-eigenen-account","IDs eines anderen Benutzers abfragen (als root oder für eigenen Account)",[14,305,306],{},"id www-data",[10,308,310],{"id":309},"ids-des-benutzers-alice-prüfen-nützlich-zur-berechtigungsprüfung","IDs des Benutzers \"alice\" prüfen – nützlich zur Berechtigungsprüfung",[14,312,313],{},"id alice",[10,315,317],{"id":316},"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)",[205,319,321],{"className":207,"code":320,"language":209,"meta":210,"style":210},"id -Gn alice | grep -w sudo\n\n",[212,322,323],{"__ignoreMap":210},[31,324,325,327,330,334,338,341,344],{"class":216,"line":217},[31,326,12],{"class":220},[31,328,329],{"class":223}," -Gn",[31,331,333],{"class":332},"sZZnC"," alice",[31,335,337],{"class":336},"szBVR"," |",[31,339,340],{"class":220}," grep",[31,342,343],{"class":223}," -w",[31,345,346],{"class":332}," sudo\n",[38,348,350],{"id":349},"ausgabe","Ausgabe",[10,352,12],{"id":353},"id-1",[205,355,357],{"className":207,"code":356,"language":209,"meta":210,"style":210},"uid=1000(matta) gid=1000(matta) Gruppen=1000(matta),4(adm),27(sudo),999(docker)\n\n# id -u\n\n",[212,358,359,433,437],{"__ignoreMap":210},[31,360,361,365,368,371,374,377,380,382,384,386,388,391,393,395,397,399,402,405,407,410,412,415,417,420,422,425,427,430],{"class":216,"line":217},[31,362,364],{"class":363},"sVt8B","uid",[31,366,367],{"class":336},"=",[31,369,370],{"class":332},"1000",[31,372,373],{"class":363},"(",[31,375,376],{"class":220},"matta",[31,378,379],{"class":363},") gid",[31,381,367],{"class":336},[31,383,370],{"class":332},[31,385,373],{"class":363},[31,387,376],{"class":220},[31,389,390],{"class":363},") Gruppen",[31,392,367],{"class":336},[31,394,370],{"class":332},[31,396,373],{"class":363},[31,398,376],{"class":220},[31,400,401],{"class":363},")",[31,403,404],{"class":332},",4",[31,406,373],{"class":363},[31,408,409],{"class":220},"adm",[31,411,401],{"class":363},[31,413,414],{"class":332},",27",[31,416,373],{"class":363},[31,418,419],{"class":220},"sudo",[31,421,401],{"class":363},[31,423,424],{"class":332},",999",[31,426,373],{"class":363},[31,428,429],{"class":220},"docker",[31,431,432],{"class":363},")\n",[31,434,435],{"class":216,"line":227},[31,436,231],{"emptyLinePlaceholder":230},[31,438,439],{"class":216,"line":234},[31,440,441],{"class":237},"# id -u\n",[14,443,370],{},[10,445,447],{"id":446},"id-un","id -un",[14,449,376],{},[10,451,453],{"id":452},"id-gn","id -Gn",[14,455,456],{},"matta adm sudo docker",[10,458,306],{"id":459},"id-www-data",[205,461,463],{"className":207,"code":462,"language":209,"meta":210,"style":210},"uid=33(www-data) gid=33(www-data) Gruppen=33(www-data)\n\n# id -Gn alice | grep -w sudo\n\n",[212,464,465,501,505],{"__ignoreMap":210},[31,466,467,469,471,474,476,479,481,483,485,487,489,491,493,495,497,499],{"class":216,"line":217},[31,468,364],{"class":363},[31,470,367],{"class":336},[31,472,473],{"class":332},"33",[31,475,373],{"class":363},[31,477,478],{"class":220},"www-data",[31,480,379],{"class":363},[31,482,367],{"class":336},[31,484,473],{"class":332},[31,486,373],{"class":363},[31,488,478],{"class":220},[31,490,390],{"class":363},[31,492,367],{"class":336},[31,494,473],{"class":332},[31,496,373],{"class":363},[31,498,478],{"class":220},[31,500,432],{"class":363},[31,502,503],{"class":216,"line":227},[31,504,231],{"emptyLinePlaceholder":230},[31,506,507],{"class":216,"line":234},[31,508,509],{"class":237},"# id -Gn alice | grep -w sudo\n",[14,511,512],{},"sudo \u003C- alice ist in der sudo-Gruppe",[14,514,515,26,521,26,524,528,529,26,533,26,536,26,540],{},[516,517,518],"em",{},[17,519,520],{},"Hinweis:",[516,522,523],{},"Mit",[516,525,526],{},[17,527,12],{}," *lässt sich schnell überprüfen ob ein Benutzer Sudo-Rechte hat (*",[516,530,531],{},[17,532,419],{},[516,534,535],{},"in Gruppen) oder zu Dienst-Gruppen wie",[516,537,538],{},[17,539,429],{},[516,541,542],{},"gehört.",[10,544,545],{"id":545},"umask",[14,547,548,26,550,552,553,556],{},[17,549,19],{},[17,551,545],{}," (User file-creation Mode Mask) bestimmt, welche Berechtigungsbits beim Erstellen neuer Dateien und Verzeichnisse ",[17,554,555],{},"automatisch entfernt"," werden. Sie gilt für die aktuelle Shell-Sitzung und alle daraus gestarteten Prozesse.",[14,558,559,26,561],{},[17,560,25],{},[17,562,563,564,26,566],{},"umask ",[31,565,33],{},[31,567,568],{},"MASKE",[38,570,572],{"id":571},"funktionsprinzip","Funktionsprinzip",[14,574,575,576,579],{},"Die umask wirkt als ",[17,577,578],{},"Subtraktion"," von den maximalen Standardrechten:",[14,581,582,583,586,587,589],{},"Datei Verzeichnis",[584,585],"br",{},"\nMaximale Rechte: 666 777",[584,588],{},"\nminus umask: -022 -022",[591,592],"hr",{},[14,594,595],{},"Ergebnis: 644 755",[14,597,598,26,603],{},[516,599,600],{},[17,601,602],{},"Wichtig:",[516,604,605],{},"Bei Dateien ist das Ausführ-Bit (1) grundsätzlich nicht im Maximum enthalten. Dateien werden nie direkt als ausführbar erstellt.",[38,607,101],{"id":608},"flags-1",[43,610,611,623],{},[46,612,613],{},[49,614,615,619],{},[52,616,617],{},[17,618,112],{},[52,620,621],{},[17,622,61],{},[63,624,625,633],{},[49,626,627,630],{},[68,628,629],{},"-S",[68,631,632],{},"Symbolische Darstellung ausgeben (z. B. u=rwx,g=rx,o=rx)",[49,634,635,638],{},[68,636,637],{},"-p",[68,639,640],{},"Aktuelle umask als umask-Befehl ausgeben (für Shell-Skripte \u002F Sicherung geeignet)",[38,642,644],{"id":643},"häufige-umask-werte","Häufige umask-Werte",[43,646,647,670],{},[46,648,649],{},[49,650,651,655,660,665],{},[52,652,653],{},[17,654,545],{},[52,656,657],{},[17,658,659],{},"Dateien",[52,661,662],{},[17,663,664],{},"Verzeichnisse",[52,666,667],{},[17,668,669],{},"Typischer Einsatz",[63,671,672,686,700,714],{},[49,673,674,677,680,683],{},[68,675,676],{},"0022",[68,678,679],{},"rw-r--r-- (644)",[68,681,682],{},"rwxr-xr-x (755)",[68,684,685],{},"Standard auf den meisten Systemen",[49,687,688,691,694,697],{},[68,689,690],{},"0027",[68,692,693],{},"rw-r----- (640)",[68,695,696],{},"rwxr-x--- (750)",[68,698,699],{},"Sicherere Server-Umgebungen",[49,701,702,705,708,711],{},[68,703,704],{},"0077",[68,706,707],{},"rw------- (600)",[68,709,710],{},"rwx------ (700)",[68,712,713],{},"Sehr restriktiv (nur Eigentümer)",[49,715,716,719,722,725],{},[68,717,718],{},"0002",[68,720,721],{},"rw-rw-r-- (664)",[68,723,724],{},"rwxrwxr-x (775)",[68,726,727],{},"Kollaborative Umgebungen",[38,729,193],{"id":730},"beispiele-1",[10,732,734],{"id":733},"aktuelle-umask-numerisch-anzeigen","Aktuelle umask numerisch anzeigen",[205,736,738],{"className":207,"code":737,"language":209,"meta":210,"style":210},"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",[212,739,740,745,749,754,758,765,769,774,778,785,789,794,798,805,810,819,824,835,840,846,851,866,871,877,882],{"__ignoreMap":210},[31,741,742],{"class":216,"line":217},[31,743,744],{"class":223},"umask\n",[31,746,747],{"class":216,"line":227},[31,748,231],{"emptyLinePlaceholder":230},[31,750,751],{"class":216,"line":234},[31,752,753],{"class":237},"# Aktuelle umask symbolisch anzeigen\n",[31,755,756],{"class":216,"line":241},[31,757,231],{"emptyLinePlaceholder":230},[31,759,760,762],{"class":216,"line":246},[31,761,545],{"class":223},[31,763,764],{"class":223}," -S\n",[31,766,767],{"class":216,"line":254},[31,768,231],{"emptyLinePlaceholder":230},[31,770,771],{"class":216,"line":259},[31,772,773],{"class":237},"# umask auf 027 setzen – gilt ab diesem Moment für alle neuen Dateien\n",[31,775,776],{"class":216,"line":265},[31,777,231],{"emptyLinePlaceholder":230},[31,779,780,782],{"class":216,"line":270},[31,781,545],{"class":223},[31,783,784],{"class":223}," 027\n",[31,786,787],{"class":216,"line":278},[31,788,231],{"emptyLinePlaceholder":230},[31,790,791],{"class":216,"line":283},[31,792,793],{"class":237},"# So prüfen welche Dateirechte mit der aktuellen umask entstehen\n",[31,795,796],{"class":216,"line":289},[31,797,231],{"emptyLinePlaceholder":230},[31,799,800,802],{"class":216,"line":294},[31,801,545],{"class":223},[31,803,804],{"class":223}," 022\n",[31,806,808],{"class":216,"line":807},14,[31,809,231],{"emptyLinePlaceholder":230},[31,811,813,816],{"class":216,"line":812},15,[31,814,815],{"class":220},"touch",[31,817,818],{"class":332}," testdatei.txt\n",[31,820,822],{"class":216,"line":821},16,[31,823,231],{"emptyLinePlaceholder":230},[31,825,827,830,833],{"class":216,"line":826},17,[31,828,829],{"class":220},"ls",[31,831,832],{"class":223}," -l",[31,834,818],{"class":332},[31,836,838],{"class":216,"line":837},18,[31,839,231],{"emptyLinePlaceholder":230},[31,841,843],{"class":216,"line":842},19,[31,844,845],{"class":237},"# umask dauerhaft setzen: in ~\u002F.bashrc oder \u002Fetc\u002Fprofile eintragen\n",[31,847,849],{"class":216,"line":848},20,[31,850,231],{"emptyLinePlaceholder":230},[31,852,854,857,860,863],{"class":216,"line":853},21,[31,855,856],{"class":223},"echo",[31,858,859],{"class":332}," \"umask 027\"",[31,861,862],{"class":336}," >>",[31,864,865],{"class":332}," ~\u002F.bashrc\n",[31,867,869],{"class":216,"line":868},22,[31,870,231],{"emptyLinePlaceholder":230},[31,872,874],{"class":216,"line":873},23,[31,875,876],{"class":237},"# umask als Befehl ausgeben (Skript-Sicherung)\n",[31,878,880],{"class":216,"line":879},24,[31,881,231],{"emptyLinePlaceholder":230},[31,883,885,887],{"class":216,"line":884},25,[31,886,545],{"class":223},[31,888,889],{"class":223}," -p\n",[10,891,893],{"id":892},"temporäre-umask-in-einem-subshell-block-nur-in-dieser-subshell-aktiv","Temporäre umask in einem Subshell-Block (nur in dieser Subshell aktiv)",[14,895,896],{},"(umask 077; touch geheim.txt; ls -l geheim.txt)",[38,898,350],{"id":899},"ausgabe-1",[10,901,545],{"id":902},"umask-1",[14,904,676],{},[10,906,908],{"id":907},"umask-s","umask -S",[205,910,912],{"className":207,"code":911,"language":209,"meta":210,"style":210},"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",[212,913,914,940,944,949,953,972,976,981,985,992,996],{"__ignoreMap":210},[31,915,916,919,921,924,927,929,932,935,937],{"class":216,"line":217},[31,917,918],{"class":363},"u",[31,920,367],{"class":336},[31,922,923],{"class":332},"rwx,",[31,925,926],{"class":363},"g",[31,928,367],{"class":336},[31,930,931],{"class":332},"rx,",[31,933,934],{"class":363},"o",[31,936,367],{"class":336},[31,938,939],{"class":332},"rx\n",[31,941,942],{"class":216,"line":227},[31,943,231],{"emptyLinePlaceholder":230},[31,945,946],{"class":216,"line":234},[31,947,948],{"class":237},"# umask 027 ; umask -S\n",[31,950,951],{"class":216,"line":241},[31,952,231],{"emptyLinePlaceholder":230},[31,954,955,957,959,961,963,965,967,969],{"class":216,"line":246},[31,956,918],{"class":363},[31,958,367],{"class":336},[31,960,923],{"class":332},[31,962,926],{"class":363},[31,964,367],{"class":336},[31,966,931],{"class":332},[31,968,934],{"class":363},[31,970,971],{"class":336},"=\n",[31,973,974],{"class":216,"line":254},[31,975,231],{"emptyLinePlaceholder":230},[31,977,978],{"class":216,"line":259},[31,979,980],{"class":237},"# umask -p\n",[31,982,983],{"class":216,"line":265},[31,984,231],{"emptyLinePlaceholder":230},[31,986,987,989],{"class":216,"line":270},[31,988,545],{"class":223},[31,990,991],{"class":223}," 0022\n",[31,993,994],{"class":216,"line":278},[31,995,231],{"emptyLinePlaceholder":230},[31,997,998],{"class":216,"line":283},[31,999,1000],{"class":237},"# touch testdatei.txt ; ls -l testdatei.txt (bei umask 022)\n",[14,1002,1003],{},"-rw-r--r-- 1 matta matta 0 Apr 29 10:00 testdatei.txt",[10,1005,896],{"id":1006},"umask-077-touch-geheimtxt-ls-l-geheimtxt",[14,1008,1009],{},"-rw------- 1 matta matta 0 Apr 29 10:00 geheim.txt",[14,1011,1012,26,1017,26,1020,26,1025,26,1028,26,1033,26,1036,26,1041],{},[516,1013,1014],{},[17,1015,1016],{},"Tipp:",[516,1018,1019],{},"Die umask gilt nur für die aktuelle Shell-Sitzung. Soll sie dauerhaft aktiv sein, muss sie in",[516,1021,1022],{},[17,1023,1024],{},"\u002Fetc\u002Fprofile",[516,1026,1027],{},"(systemweit) oder",[516,1029,1030],{},[17,1031,1032],{},"~\u002F.bashrc",[516,1034,1035],{},"\u002F",[516,1037,1038],{},[17,1039,1040],{},"~\u002F.profile",[516,1042,1043],{},"(benutzerspezifisch) eingetragen werden.",[10,1045,1046],{"id":1046},"chown",[14,1048,1049,1051,1052,1055,1056,1059,1060,1063],{},[17,1050,19],{}," Ändert den Eigentümer (",[17,1053,1054],{},"user",") und\u002Foder die Gruppe (",[17,1057,1058],{},"group",") einer Datei oder eines Verzeichnisses. Nur ",[17,1061,1062],{},"root"," darf beliebige Eigentümer setzen; normale Benutzer können nur Dateien ihrer eigenen Gruppe zuweisen.",[14,1065,1066,26,1068],{},[17,1067,25],{},[17,1069,1070,1071,1073,1074,1079],{},"chown ",[31,1072,33],{}," [EIGENTÜMER]",[31,1075,1076],{},[1077,1078],"gruppe",{}," DATEI...",[38,1081,1083],{"id":1082},"syntax-varianten","Syntax-Varianten",[43,1085,1086,1100],{},[46,1087,1088],{},[49,1089,1090,1095],{},[52,1091,1092],{},[17,1093,1094],{},"Syntax",[52,1096,1097],{},[17,1098,1099],{},"Wirkung",[63,1101,1102,1110,1118,1126,1137],{},[49,1103,1104,1107],{},[68,1105,1106],{},"chown alice datei",[68,1108,1109],{},"Nur Eigentümer auf alice setzen",[49,1111,1112,1115],{},[68,1113,1114],{},"chown alice:dev datei",[68,1116,1117],{},"Eigentümer auf alice, Gruppe auf dev setzen",[49,1119,1120,1123],{},[68,1121,1122],{},"chown alice: datei",[68,1124,1125],{},"Eigentümer auf alice, Gruppe auf alice's Primärgruppe",[49,1127,1128,1134],{},[68,1129,1070,1130,1133],{},[1131,1132],"dev",{}," datei",[68,1135,1136],{},"Nur Gruppe ändern (Eigentümer unverändert)",[49,1138,1139,1142],{},[68,1140,1141],{},"chown 1001:1002 datei",[68,1143,1144],{},"Per numerischer UID:GID setzen",[38,1146,101],{"id":1147},"flags-2",[43,1149,1150,1162],{},[46,1151,1152],{},[49,1153,1154,1158],{},[52,1155,1156],{},[17,1157,112],{},[52,1159,1160],{},[17,1161,61],{},[63,1163,1164,1172,1180,1188,1196,1204,1212,1220,1228],{},[49,1165,1166,1169],{},[68,1167,1168],{},"-R",[68,1170,1171],{},"Rekursiv: Verzeichnis und alle enthaltenen Dateien\u002FUnterverzeichnisse",[49,1173,1174,1177],{},[68,1175,1176],{},"-v",[68,1178,1179],{},"Verbose – zeigt jede durchgeführte Änderung an",[49,1181,1182,1185],{},[68,1183,1184],{},"-c",[68,1186,1187],{},"Wie -v, aber zeigt nur Zeilen mit tatsächlichen Änderungen",[49,1189,1190,1193],{},[68,1191,1192],{},"-f",[68,1194,1195],{},"Fehlermeldungen unterdrücken (force silent)",[49,1197,1198,1201],{},[68,1199,1200],{},"-h",[68,1202,1203],{},"Bei symbolischen Links: den Link selbst ändern, nicht das Ziel",[49,1205,1206,1209],{},[68,1207,1208],{},"--reference=REF",[68,1210,1211],{},"Eigentümer und Gruppe von der Datei REF übernehmen",[49,1213,1214,1217],{},[68,1215,1216],{},"--from=EIGEN:GRP",[68,1218,1219],{},"Nur Dateien ändern die momentan exakt diesen Eigentümer\u002FGruppe haben",[49,1221,1222,1225],{},[68,1223,1224],{},"-L",[68,1226,1227],{},"Bei -R: symbolische Links in Verzeichnisse verfolgen",[49,1229,1230,1233],{},[68,1231,1232],{},"-P",[68,1234,1235],{},"Bei -R: keine symbolischen Links verfolgen (Standard)",[38,1237,193],{"id":1238},"beispiele-2",[10,1240,1242],{"id":1241},"eigentümer-einer-einzelnen-datei-ändern","Eigentümer einer einzelnen Datei ändern",[205,1244,1246],{"className":207,"code":1245,"language":209,"meta":210,"style":210},"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",[212,1247,1248,1257,1261,1266,1270,1279,1283,1288,1292,1302,1306,1311,1315,1328,1332,1337,1341,1354,1358,1363,1367,1380,1384,1389,1393,1403,1408,1414,1419,1432,1437,1443,1448],{"__ignoreMap":210},[31,1249,1250,1252,1254],{"class":216,"line":217},[31,1251,1046],{"class":220},[31,1253,333],{"class":332},[31,1255,1256],{"class":332}," datei.txt\n",[31,1258,1259],{"class":216,"line":227},[31,1260,231],{"emptyLinePlaceholder":230},[31,1262,1263],{"class":216,"line":234},[31,1264,1265],{"class":237},"# Eigentümer und Gruppe gleichzeitig setzen\n",[31,1267,1268],{"class":216,"line":241},[31,1269,231],{"emptyLinePlaceholder":230},[31,1271,1272,1274,1277],{"class":216,"line":246},[31,1273,1046],{"class":220},[31,1275,1276],{"class":332}," alice:entwickler",[31,1278,1256],{"class":332},[31,1280,1281],{"class":216,"line":254},[31,1282,231],{"emptyLinePlaceholder":230},[31,1284,1285],{"class":216,"line":259},[31,1286,1287],{"class":237},"# Nur die Gruppe einer Datei ändern\n",[31,1289,1290],{"class":216,"line":265},[31,1291,231],{"emptyLinePlaceholder":230},[31,1293,1294,1296,1299],{"class":216,"line":270},[31,1295,1046],{"class":220},[31,1297,1298],{"class":332}," :webteam",[31,1300,1301],{"class":332}," \u002Fvar\u002Fwww\u002Fhtml\u002Findex.html\n",[31,1303,1304],{"class":216,"line":278},[31,1305,231],{"emptyLinePlaceholder":230},[31,1307,1308],{"class":216,"line":283},[31,1309,1310],{"class":237},"# Rekursiv für ein Webserver-Verzeichnis\n",[31,1312,1313],{"class":216,"line":289},[31,1314,231],{"emptyLinePlaceholder":230},[31,1316,1317,1319,1322,1325],{"class":216,"line":294},[31,1318,1046],{"class":220},[31,1320,1321],{"class":223}," -R",[31,1323,1324],{"class":332}," www-data:www-data",[31,1326,1327],{"class":332}," \u002Fvar\u002Fwww\u002Fhtml\u002F\n",[31,1329,1330],{"class":216,"line":807},[31,1331,231],{"emptyLinePlaceholder":230},[31,1333,1334],{"class":216,"line":812},[31,1335,1336],{"class":237},"# Verbose: Jede Änderung protokollieren\n",[31,1338,1339],{"class":216,"line":821},[31,1340,231],{"emptyLinePlaceholder":230},[31,1342,1343,1345,1348,1351],{"class":216,"line":826},[31,1344,1046],{"class":220},[31,1346,1347],{"class":223}," -Rv",[31,1349,1350],{"class":332}," matta:matta",[31,1352,1353],{"class":332}," \u002Fhome\u002Fmatta\u002F\n",[31,1355,1356],{"class":216,"line":837},[31,1357,231],{"emptyLinePlaceholder":230},[31,1359,1360],{"class":216,"line":842},[31,1361,1362],{"class":237},"# Eigentümer nur ändern wenn aktuell root gehört\n",[31,1364,1365],{"class":216,"line":848},[31,1366,231],{"emptyLinePlaceholder":230},[31,1368,1369,1371,1374,1377],{"class":216,"line":853},[31,1370,1046],{"class":220},[31,1372,1373],{"class":223}," --from=root:root",[31,1375,1376],{"class":332}," alice:alice",[31,1378,1379],{"class":332}," \u002Fhome\u002Falice\u002Fwichtig.txt\n",[31,1381,1382],{"class":216,"line":868},[31,1383,231],{"emptyLinePlaceholder":230},[31,1385,1386],{"class":216,"line":873},[31,1387,1388],{"class":237},"# Eigentümer\u002FGruppe von einer anderen Datei übernehmen\n",[31,1390,1391],{"class":216,"line":879},[31,1392,231],{"emptyLinePlaceholder":230},[31,1394,1395,1397,1400],{"class":216,"line":884},[31,1396,1046],{"class":220},[31,1398,1399],{"class":223}," --reference=\u002Fetc\u002Fpasswd",[31,1401,1402],{"class":332}," \u002Ftmp\u002Fneue_passwd_kopie\n",[31,1404,1406],{"class":216,"line":1405},26,[31,1407,231],{"emptyLinePlaceholder":230},[31,1409,1411],{"class":216,"line":1410},27,[31,1412,1413],{"class":237},"# Symbolischen Link selbst (nicht Ziel) ändern\n",[31,1415,1417],{"class":216,"line":1416},28,[31,1418,231],{"emptyLinePlaceholder":230},[31,1420,1422,1424,1427,1429],{"class":216,"line":1421},29,[31,1423,1046],{"class":220},[31,1425,1426],{"class":223}," -h",[31,1428,333],{"class":332},[31,1430,1431],{"class":332}," symlink_auf_datei\n",[31,1433,1435],{"class":216,"line":1434},30,[31,1436,231],{"emptyLinePlaceholder":230},[31,1438,1440],{"class":216,"line":1439},31,[31,1441,1442],{"class":237},"# Numerische UID und GID verwenden\n",[31,1444,1446],{"class":216,"line":1445},32,[31,1447,231],{"emptyLinePlaceholder":230},[31,1449,1451,1453,1456],{"class":216,"line":1450},33,[31,1452,1046],{"class":220},[31,1454,1455],{"class":332}," 1000:1000",[31,1457,1256],{"class":332},[38,1459,350],{"id":1460},"ausgabe-2",[10,1462,1464],{"id":1463},"chown-v-alicealice-homealicetesttxt","chown -v alice:alice \u002Fhome\u002Falice\u002Ftest.txt",[14,1466,1467],{},"Eigentümer von '\u002Fhome\u002Falice\u002Ftest.txt' von root:root zu alice:alice geändert",[10,1469,1471],{"id":1470},"chown-vc-www-datawww-data-varwwwhtml","chown -Vc www-data:www-data \u002Fvar\u002Fwww\u002Fhtml\u002F",[14,1473,1474],{},"Eigentümer von '\u002Fvar\u002Fwww\u002Fhtml\u002F' von matta:matta zu www-data:www-data geändert",[14,1476,1477],{},"Eigentümer von '\u002Fvar\u002Fwww\u002Fhtml\u002Findex.html' von matta:matta zu www-data:www-data geändert",[14,1479,1480],{},"Eigentümer von '\u002Fvar\u002Fwww\u002Fhtml\u002Fstyle.css' von matta:matta zu www-data:www-data geändert",[14,1482,1483,26,1488,26,1491,26,1496,26,1499,26,1503],{},[516,1484,1485],{},[17,1486,1487],{},"Sicherheitshinweis:",[516,1489,1490],{},"Sei bei rekursivem",[516,1492,1493],{},[17,1494,1495],{},"chown -R",[516,1497,1498],{},"auf",[516,1500,1501],{},[17,1502,1035],{},[516,1504,1505],{},"oder wichtigen Systemverzeichnissen äußerst vorsichtig – ein falsches Ziel kann das System unbrauchbar machen.",[10,1507,1508],{"id":1508},"chmod",[14,1510,1511,1513,1514,1517,1518,1521,1522,1525],{},[17,1512,19],{}," Ändert die Zugriffsrechte (Berechtigungen) von Dateien und Verzeichnissen. Die Rechte werden für drei Klassen vergeben: ",[17,1515,1516],{},"Eigentümer (u)",", ",[17,1519,1520],{},"Gruppe (g)"," und ",[17,1523,1524],{},"Andere (o)",".",[14,1527,1528,26,1530],{},[17,1529,25],{},[17,1531,1532,1533,1535],{},"chmod ",[31,1534,33],{}," MODUS DATEI...",[38,1537,1539],{"id":1538},"bedeutung-der-rechte","Bedeutung der Rechte",[43,1541,1542,1571],{},[46,1543,1544],{},[49,1545,1546,1551,1556,1561,1566],{},[52,1547,1548],{},[17,1549,1550],{},"Recht",[52,1552,1553],{},[17,1554,1555],{},"Zeichen",[52,1557,1558],{},[17,1559,1560],{},"Oktal",[52,1562,1563],{},[17,1564,1565],{},"Auf Dateien",[52,1567,1568],{},[17,1569,1570],{},"Auf Verzeichnisse",[63,1572,1573,1590,1607],{},[49,1574,1575,1578,1581,1584,1587],{},[68,1576,1577],{},"Lesen",[68,1579,1580],{},"r",[68,1582,1583],{},"4",[68,1585,1586],{},"Dateiinhalt lesen",[68,1588,1589],{},"Verzeichnisinhalt auflisten (ls)",[49,1591,1592,1595,1598,1601,1604],{},[68,1593,1594],{},"Schreiben",[68,1596,1597],{},"w",[68,1599,1600],{},"2",[68,1602,1603],{},"Datei bearbeiten\u002Flöschen",[68,1605,1606],{},"Dateien erstellen\u002Flöschen im Verz.",[49,1608,1609,1612,1615,1618,1621],{},[68,1610,1611],{},"Ausführen",[68,1613,1614],{},"x",[68,1616,1617],{},"1",[68,1619,1620],{},"Datei ausführen",[68,1622,1623],{},"In Verzeichnis wechseln (cd)",[38,1625,1627],{"id":1626},"oktalnotation-vollständige-tabelle","Oktalnotation – vollständige Tabelle",[43,1629,1630,1652],{},[46,1631,1632],{},[49,1633,1634,1638,1643,1648],{},[52,1635,1636],{},[17,1637,1560],{},[52,1639,1640],{},[17,1641,1642],{},"Binär",[52,1644,1645],{},[17,1646,1647],{},"Symbolisch",[52,1649,1650],{},[17,1651,61],{},[63,1653,1654,1668,1682,1696,1709,1723,1736,1749],{},[49,1655,1656,1659,1662,1665],{},[68,1657,1658],{},"7",[68,1660,1661],{},"111",[68,1663,1664],{},"rwx",[68,1666,1667],{},"Lesen, Schreiben, Ausführen",[49,1669,1670,1673,1676,1679],{},[68,1671,1672],{},"6",[68,1674,1675],{},"110",[68,1677,1678],{},"rw-",[68,1680,1681],{},"Lesen, Schreiben",[49,1683,1684,1687,1690,1693],{},[68,1685,1686],{},"5",[68,1688,1689],{},"101",[68,1691,1692],{},"r-x",[68,1694,1695],{},"Lesen, Ausführen",[49,1697,1698,1700,1703,1706],{},[68,1699,1583],{},[68,1701,1702],{},"100",[68,1704,1705],{},"r--",[68,1707,1708],{},"Nur Lesen",[49,1710,1711,1714,1717,1720],{},[68,1712,1713],{},"3",[68,1715,1716],{},"011",[68,1718,1719],{},"-wx",[68,1721,1722],{},"Schreiben, Ausführen",[49,1724,1725,1727,1730,1733],{},[68,1726,1600],{},[68,1728,1729],{},"010",[68,1731,1732],{},"-w-",[68,1734,1735],{},"Nur Schreiben",[49,1737,1738,1740,1743,1746],{},[68,1739,1617],{},[68,1741,1742],{},"001",[68,1744,1745],{},"--x",[68,1747,1748],{},"Nur Ausführen",[49,1750,1751,1753,1756,1759],{},[68,1752,70],{},[68,1754,1755],{},"000",[68,1757,1758],{},"---",[68,1760,1761],{},"Keine Rechte",[38,1763,1765],{"id":1764},"symbolische-notation","Symbolische Notation",[43,1767,1768,1780],{},[46,1769,1770],{},[49,1771,1772,1776],{},[52,1773,1774],{},[17,1775,1555],{},[52,1777,1778],{},[17,1779,61],{},[63,1781,1782,1789,1796,1803,1811,1819,1827,1834,1841,1848,1855,1863,1871],{},[49,1783,1784,1786],{},[68,1785,918],{},[68,1787,1788],{},"Eigentümer (user\u002Fowner)",[49,1790,1791,1793],{},[68,1792,926],{},[68,1794,1795],{},"Gruppe (group)",[49,1797,1798,1800],{},[68,1799,934],{},[68,1801,1802],{},"Andere (others)",[49,1804,1805,1808],{},[68,1806,1807],{},"a",[68,1809,1810],{},"Alle (all = u+g+o)",[49,1812,1813,1816],{},[68,1814,1815],{},"+",[68,1817,1818],{},"Recht hinzufügen",[49,1820,1821,1824],{},[68,1822,1823],{},"-",[68,1825,1826],{},"Recht entfernen",[49,1828,1829,1831],{},[68,1830,367],{},[68,1832,1833],{},"Recht exakt setzen (andere Bits werden gelöscht)",[49,1835,1836,1838],{},[68,1837,1580],{},[68,1839,1840],{},"Lesen (read = 4)",[49,1842,1843,1845],{},[68,1844,1597],{},[68,1846,1847],{},"Schreiben (write = 2)",[49,1849,1850,1852],{},[68,1851,1614],{},[68,1853,1854],{},"Ausführen (execute = 1)",[49,1856,1857,1860],{},[68,1858,1859],{},"X",[68,1861,1862],{},"Ausführen nur setzen wenn bereits woanders x gesetzt ist",[49,1864,1865,1868],{},[68,1866,1867],{},"s",[68,1869,1870],{},"SUID \u002F SGID setzen",[49,1872,1873,1876],{},[68,1874,1875],{},"t",[68,1877,1878],{},"Sticky Bit setzen",[38,1880,101],{"id":1881},"flags-3",[43,1883,1884,1896],{},[46,1885,1886],{},[49,1887,1888,1892],{},[52,1889,1890],{},[17,1891,112],{},[52,1893,1894],{},[17,1895,61],{},[63,1897,1898,1905,1912,1919,1926],{},[49,1899,1900,1902],{},[68,1901,1168],{},[68,1903,1904],{},"Rekursiv – alle Dateien und Unterverzeichnisse",[49,1906,1907,1909],{},[68,1908,1176],{},[68,1910,1911],{},"Verbose – jede Änderung ausgeben",[49,1913,1914,1916],{},[68,1915,1184],{},[68,1917,1918],{},"Nur tatsächliche Änderungen ausgeben",[49,1920,1921,1923],{},[68,1922,1192],{},[68,1924,1925],{},"Fehlermeldungen unterdrücken",[49,1927,1928,1931],{},[68,1929,1930],{},"--reference=DATEI",[68,1932,1933],{},"Rechte von Referenzdatei übernehmen",[38,1935,1937],{"id":1936},"typische-oktalwerte","Typische Oktalwerte",[43,1939,1940,1957],{},[46,1941,1942],{},[49,1943,1944,1948,1952],{},[52,1945,1946],{},[17,1947,1560],{},[52,1949,1950],{},[17,1951,1647],{},[52,1953,1954],{},[17,1955,1956],{},"Verwendung",[63,1958,1959,1970,1981,1992,2003,2014,2025],{},[49,1960,1961,1964,1967],{},[68,1962,1963],{},"644",[68,1965,1966],{},"rw-r--r--",[68,1968,1969],{},"Standard für normale Dateien",[49,1971,1972,1975,1978],{},[68,1973,1974],{},"755",[68,1976,1977],{},"rwxr-xr-x",[68,1979,1980],{},"Standard für Verzeichnisse\u002FSkripte",[49,1982,1983,1986,1989],{},[68,1984,1985],{},"600",[68,1987,1988],{},"rw-------",[68,1990,1991],{},"Private Schlüssel (.ssh\u002Fid_rsa)",[49,1993,1994,1997,2000],{},[68,1995,1996],{},"700",[68,1998,1999],{},"rwx------",[68,2001,2002],{},"Private Verzeichnisse",[49,2004,2005,2008,2011],{},[68,2006,2007],{},"664",[68,2009,2010],{},"rw-rw-r--",[68,2012,2013],{},"Gemeinsame Projektdateien",[49,2015,2016,2019,2022],{},[68,2017,2018],{},"777",[68,2020,2021],{},"rwxrwxrwx",[68,2023,2024],{},"Alle Rechte für alle (gefährlich!)",[49,2026,2027,2030,2033],{},[68,2028,2029],{},"640",[68,2031,2032],{},"rw-r-----",[68,2034,2035],{},"Sensible Konfigdateien",[38,2037,193],{"id":2038},"beispiele-3",[10,2040,2042],{"id":2041},"oktal-typisch-für-shell-skripte","Oktal: typisch für Shell-Skripte",[205,2044,2046],{"className":207,"code":2045,"language":209,"meta":210,"style":210},"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",[212,2047,2048,2058,2062,2067,2071,2081,2085,2090,2094,2104,2108,2113,2117,2126,2130,2135,2139,2148,2152,2157,2161,2171,2175,2180,2184,2194,2198,2203,2207,2217,2221,2226,2230,2242,2247,2253,2258,2268,2273,2279,2284],{"__ignoreMap":210},[31,2049,2050,2052,2055],{"class":216,"line":217},[31,2051,1508],{"class":220},[31,2053,2054],{"class":223}," 755",[31,2056,2057],{"class":332}," skript.sh\n",[31,2059,2060],{"class":216,"line":227},[31,2061,231],{"emptyLinePlaceholder":230},[31,2063,2064],{"class":216,"line":234},[31,2065,2066],{"class":237},"# Oktal: typisch für normale Dateien\n",[31,2068,2069],{"class":216,"line":241},[31,2070,231],{"emptyLinePlaceholder":230},[31,2072,2073,2075,2078],{"class":216,"line":246},[31,2074,1508],{"class":220},[31,2076,2077],{"class":223}," 644",[31,2079,2080],{"class":332}," README.txt\n",[31,2082,2083],{"class":216,"line":254},[31,2084,231],{"emptyLinePlaceholder":230},[31,2086,2087],{"class":216,"line":259},[31,2088,2089],{"class":237},"# Oktal: nur Owner darf lesen und schreiben (z.B. SSH-Key)\n",[31,2091,2092],{"class":216,"line":265},[31,2093,231],{"emptyLinePlaceholder":230},[31,2095,2096,2098,2101],{"class":216,"line":270},[31,2097,1508],{"class":220},[31,2099,2100],{"class":223}," 600",[31,2102,2103],{"class":332}," ~\u002F.ssh\u002Fid_rsa\n",[31,2105,2106],{"class":216,"line":278},[31,2107,231],{"emptyLinePlaceholder":230},[31,2109,2110],{"class":216,"line":283},[31,2111,2112],{"class":237},"# Symbolisch: Ausführrecht für alle hinzufügen\n",[31,2114,2115],{"class":216,"line":289},[31,2116,231],{"emptyLinePlaceholder":230},[31,2118,2119,2121,2124],{"class":216,"line":294},[31,2120,1508],{"class":220},[31,2122,2123],{"class":332}," a+x",[31,2125,2057],{"class":332},[31,2127,2128],{"class":216,"line":807},[31,2129,231],{"emptyLinePlaceholder":230},[31,2131,2132],{"class":216,"line":812},[31,2133,2134],{"class":237},"# Symbolisch: Schreibrecht für Andere entfernen\n",[31,2136,2137],{"class":216,"line":821},[31,2138,231],{"emptyLinePlaceholder":230},[31,2140,2141,2143,2146],{"class":216,"line":826},[31,2142,1508],{"class":220},[31,2144,2145],{"class":332}," o-w",[31,2147,1256],{"class":332},[31,2149,2150],{"class":216,"line":837},[31,2151,231],{"emptyLinePlaceholder":230},[31,2153,2154],{"class":216,"line":842},[31,2155,2156],{"class":237},"# Symbolisch: Alle Rechte exakt setzen (löscht alles was nicht angegeben)\n",[31,2158,2159],{"class":216,"line":848},[31,2160,231],{"emptyLinePlaceholder":230},[31,2162,2163,2165,2168],{"class":216,"line":853},[31,2164,1508],{"class":220},[31,2166,2167],{"class":332}," u=rwx,g=rx,o=",[31,2169,2170],{"class":332}," private.sh\n",[31,2172,2173],{"class":216,"line":868},[31,2174,231],{"emptyLinePlaceholder":230},[31,2176,2177],{"class":216,"line":873},[31,2178,2179],{"class":237},"# Symbolisch: Gruppe Schreibrecht hinzufügen\n",[31,2181,2182],{"class":216,"line":879},[31,2183,231],{"emptyLinePlaceholder":230},[31,2185,2186,2188,2191],{"class":216,"line":884},[31,2187,1508],{"class":220},[31,2189,2190],{"class":332}," g+w",[31,2192,2193],{"class":332}," projekt\u002F\n",[31,2195,2196],{"class":216,"line":1405},[31,2197,231],{"emptyLinePlaceholder":230},[31,2199,2200],{"class":216,"line":1410},[31,2201,2202],{"class":237},"# Rekursiv für Webverzeichnis\n",[31,2204,2205],{"class":216,"line":1416},[31,2206,231],{"emptyLinePlaceholder":230},[31,2208,2209,2211,2213,2215],{"class":216,"line":1421},[31,2210,1508],{"class":220},[31,2212,1321],{"class":223},[31,2214,2054],{"class":223},[31,2216,1327],{"class":332},[31,2218,2219],{"class":216,"line":1434},[31,2220,231],{"emptyLinePlaceholder":230},[31,2222,2223],{"class":216,"line":1439},[31,2224,2225],{"class":237},"# Nur Ausführrecht setzen wenn es bereits für jemanden gesetzt war\n",[31,2227,2228],{"class":216,"line":1445},[31,2229,231],{"emptyLinePlaceholder":230},[31,2231,2232,2234,2236,2239],{"class":216,"line":1450},[31,2233,1508],{"class":220},[31,2235,1321],{"class":223},[31,2237,2238],{"class":332}," a+X",[31,2240,2241],{"class":332}," verzeichnis\u002F\n",[31,2243,2245],{"class":216,"line":2244},34,[31,2246,231],{"emptyLinePlaceholder":230},[31,2248,2250],{"class":216,"line":2249},35,[31,2251,2252],{"class":237},"# Rechte von anderer Datei übernehmen\n",[31,2254,2256],{"class":216,"line":2255},36,[31,2257,231],{"emptyLinePlaceholder":230},[31,2259,2261,2263,2265],{"class":216,"line":2260},37,[31,2262,1508],{"class":220},[31,2264,1399],{"class":223},[31,2266,2267],{"class":332}," \u002Ftmp\u002Fmeine_passwdkopie\n",[31,2269,2271],{"class":216,"line":2270},38,[31,2272,231],{"emptyLinePlaceholder":230},[31,2274,2276],{"class":216,"line":2275},39,[31,2277,2278],{"class":237},"# Verbose anzeigen was geändert wird\n",[31,2280,2282],{"class":216,"line":2281},40,[31,2283,231],{"emptyLinePlaceholder":230},[31,2285,2287,2289,2292,2294,2297],{"class":216,"line":2286},41,[31,2288,1508],{"class":220},[31,2290,2291],{"class":223}," -vc",[31,2293,2077],{"class":223},[31,2295,2296],{"class":223}," *",[31,2298,2299],{"class":332},".txt\n",[38,2301,350],{"id":2302},"ausgabe-3",[10,2304,2306],{"id":2305},"vorher-nach-touch-skriptsh","Vorher (nach touch skript.sh)",[14,2308,2309],{},"-rw-r--r-- 1 matta matta 0 Apr 29 10:00 skript.sh",[10,2311,2313],{"id":2312},"chmod-755-skriptsh","chmod 755 skript.sh",[14,2315,2316],{},"-rwxr-xr-x 1 matta matta 0 Apr 29 10:00 skript.sh",[10,2318,2320],{"id":2319},"chmod-600-sshid_rsa","chmod 600 ~\u002F.ssh\u002Fid_rsa",[14,2322,2323],{},"-rw------- 1 matta matta 2610 Apr 29 10:00 \u002Fhome\u002Fmatta\u002F.ssh\u002Fid_rsa",[10,2325,2327],{"id":2326},"chmod-vc-644-txt","chmod -vc 644 *.txt",[14,2329,2330],{},"Modus von 'notizen.txt' geändert: 0664 (rw-rw-r--) -> 0644 (rw-r--r--)",[38,2332,2334],{"id":2333},"spezialbits","Spezialbits",[14,2336,2337,2339,2340,2342,2343,1517,2346,2349,2350,2353],{},[17,2338,19],{}," Neben den normalen ",[17,2341,1664],{},"-Bits existieren drei zusätzliche Sonderbits: ",[17,2344,2345],{},"SUID",[17,2347,2348],{},"SGID"," und das ",[17,2351,2352],{},"Sticky Bit",". Sie werden im führenden vierten Oktalblock angegeben.",[2355,2356,2358],"h3",{"id":2357},"suid-set-user-id-oktal-4xxx","SUID (Set User ID) – Oktal: 4xxx",[14,2360,2361],{},[17,2362,2363],{},"Auf ausführbare Dateien:",[2365,2366,2367,2375],"ul",{},[2368,2369,2370,2371,2374],"li",{},"Das Programm läuft mit den Berechtigungen des ",[17,2372,2373],{},"Eigentümers"," der Datei – nicht mit denen des ausführenden Benutzers.",[2368,2376,2377,2378,2381,2382,2384,2385,2388],{},"Typisches Beispiel: ",[17,2379,2380],{},"\u002Fusr\u002Fbin\u002Fpasswd"," gehört ",[17,2383,1062],{},". Jeder Benutzer darf es ausführen und dadurch sein Passwort in ",[17,2386,2387],{},"\u002Fetc\u002Fshadow"," ändern.",[14,2390,2391],{},[17,2392,2393],{},"Anzeige in ls -l:",[2365,2395,2396,2407],{},[2368,2397,2398,2400,2401,2403,2404],{},[17,2399,1867],{}," statt ",[17,2402,1614],{}," beim Eigentümer-Ausführbit, wenn SUID+x gesetzt: ",[17,2405,2406],{},"-rwsr-xr-x",[2368,2408,2409,2412,2413,2416,2417],{},[17,2410,2411],{},"S"," (Großbuchstabe) wenn SUID gesetzt aber ",[17,2414,2415],{},"kein"," Ausführrecht: ",[17,2418,2419],{},"-rwSr--r--",[10,2421,2423],{"id":2422},"suid-symbolisch-setzen","SUID symbolisch setzen",[205,2425,2427],{"className":207,"code":2426,"language":209,"meta":210,"style":210},"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",[212,2428,2429,2439,2443,2448,2452,2461,2465,2470,2474,2483,2487,2492,2496,2525,2529,2534,2538],{"__ignoreMap":210},[31,2430,2431,2433,2436],{"class":216,"line":217},[31,2432,1508],{"class":220},[31,2434,2435],{"class":332}," u+s",[31,2437,2438],{"class":332}," \u002Fusr\u002Fbin\u002Fmyprog\n",[31,2440,2441],{"class":216,"line":227},[31,2442,231],{"emptyLinePlaceholder":230},[31,2444,2445],{"class":216,"line":234},[31,2446,2447],{"class":237},"# SUID oktal setzen (4 + normale Rechte)\n",[31,2449,2450],{"class":216,"line":241},[31,2451,231],{"emptyLinePlaceholder":230},[31,2453,2454,2456,2459],{"class":216,"line":246},[31,2455,1508],{"class":220},[31,2457,2458],{"class":223}," 4755",[31,2460,2438],{"class":332},[31,2462,2463],{"class":216,"line":254},[31,2464,231],{"emptyLinePlaceholder":230},[31,2466,2467],{"class":216,"line":259},[31,2468,2469],{"class":237},"# SUID entfernen\n",[31,2471,2472],{"class":216,"line":265},[31,2473,231],{"emptyLinePlaceholder":230},[31,2475,2476,2478,2481],{"class":216,"line":270},[31,2477,1508],{"class":220},[31,2479,2480],{"class":332}," u-s",[31,2482,2438],{"class":332},[31,2484,2485],{"class":216,"line":278},[31,2486,231],{"emptyLinePlaceholder":230},[31,2488,2489],{"class":216,"line":283},[31,2490,2491],{"class":237},"# Alle SUID-Dateien im System finden (Sicherheitscheck!)\n",[31,2493,2494],{"class":216,"line":289},[31,2495,231],{"emptyLinePlaceholder":230},[31,2497,2498,2501,2504,2507,2510,2513,2516,2519,2522],{"class":216,"line":294},[31,2499,2500],{"class":220},"find",[31,2502,2503],{"class":332}," \u002F",[31,2505,2506],{"class":223}," -type",[31,2508,2509],{"class":332}," f",[31,2511,2512],{"class":223}," -perm",[31,2514,2515],{"class":223}," -4000",[31,2517,2518],{"class":223}," -ls",[31,2520,2521],{"class":336}," 2>",[31,2523,2524],{"class":332},"\u002Fdev\u002Fnull\n",[31,2526,2527],{"class":216,"line":807},[31,2528,231],{"emptyLinePlaceholder":230},[31,2530,2531],{"class":216,"line":812},[31,2532,2533],{"class":237},"# Beispiel: passwd hat SUID\n",[31,2535,2536],{"class":216,"line":821},[31,2537,231],{"emptyLinePlaceholder":230},[31,2539,2540,2542,2544,2547,2550,2553,2555,2558,2561,2564,2567],{"class":216,"line":826},[31,2541,829],{"class":220},[31,2543,832],{"class":223},[31,2545,2546],{"class":332}," \u002Fusr\u002Fbin\u002Fpasswd-rwsr-xr-x",[31,2548,2549],{"class":223}," 1",[31,2551,2552],{"class":332}," root",[31,2554,2552],{"class":332},[31,2556,2557],{"class":223}," 63960",[31,2559,2560],{"class":332}," Apr",[31,2562,2563],{"class":223}," 13",[31,2565,2566],{"class":223}," 2023",[31,2568,2569],{"class":332}," \u002Fusr\u002Fbin\u002Fpasswd\n",[14,2571,2572],{},"^",[205,2574,2576],{"className":207,"code":2575,"language":209,"meta":210,"style":210},"s = SUID + Ausführrecht\n\n",[212,2577,2578],{"__ignoreMap":210},[31,2579,2580,2582,2585,2588,2591],{"class":216,"line":217},[31,2581,1867],{"class":220},[31,2583,2584],{"class":332}," =",[31,2586,2587],{"class":332}," SUID",[31,2589,2590],{"class":332}," +",[31,2592,2593],{"class":332}," Ausführrecht\n",[2355,2595,2597],{"id":2596},"sgid-set-group-id-oktal-2xxx","SGID (Set Group ID) – Oktal: 2xxx",[14,2599,2600],{},[17,2601,2363],{},[2365,2603,2604],{},[2368,2605,2606,2607,2610],{},"Das Programm läuft mit den Rechten der ",[17,2608,2609],{},"Gruppe des Eigentümers"," (nicht der Gruppe des Aufrufers).",[14,2612,2613],{},[17,2614,2615],{},"Auf Verzeichnisse (häufigster Einsatz):",[2365,2617,2618,2625],{},[2368,2619,2620,2621,2624],{},"Alle ",[17,2622,2623],{},"neu erstellten Dateien und Unterverzeichnisse erben die Gruppe"," des übergeordneten Verzeichnisses.",[2368,2626,2627],{},"Ideal für Teamverzeichnisse.",[14,2629,2630],{},[17,2631,2393],{},[2365,2633,2634,2644],{},[2368,2635,2636,2400,2638,2640,2641],{},[17,2637,1867],{},[17,2639,1614],{}," beim Gruppen-Ausführbit: ",[17,2642,2643],{},"drwxrwsr-x",[2368,2645,2646,2648,2649],{},[17,2647,2411],{}," wenn SGID gesetzt aber kein Gruppen-Ausführrecht: ",[17,2650,2651],{},"drwxrwSr-x",[10,2653,2655],{"id":2654},"sgid-auf-einem-gemeinsamen-projektverzeichnis-setzen","SGID auf einem gemeinsamen Projektverzeichnis setzen",[205,2657,2659],{"className":207,"code":2658,"language":209,"meta":210,"style":210},"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",[212,2660,2661,2671,2675,2684,2688,2693,2697,2706,2710,2715,2719],{"__ignoreMap":210},[31,2662,2663,2665,2668],{"class":216,"line":217},[31,2664,1508],{"class":220},[31,2666,2667],{"class":332}," g+s",[31,2669,2670],{"class":332}," \u002Fshared\u002Fprojekt\n",[31,2672,2673],{"class":216,"line":227},[31,2674,231],{"emptyLinePlaceholder":230},[31,2676,2677,2679,2682],{"class":216,"line":234},[31,2678,1508],{"class":220},[31,2680,2681],{"class":223}," 2775",[31,2683,2670],{"class":332},[31,2685,2686],{"class":216,"line":241},[31,2687,231],{"emptyLinePlaceholder":230},[31,2689,2690],{"class":216,"line":246},[31,2691,2692],{"class":237},"# Prüfen ob SGID gesetzt ist\n",[31,2694,2695],{"class":216,"line":254},[31,2696,231],{"emptyLinePlaceholder":230},[31,2698,2699,2701,2704],{"class":216,"line":259},[31,2700,829],{"class":220},[31,2702,2703],{"class":223}," -ld",[31,2705,2670],{"class":332},[31,2707,2708],{"class":216,"line":265},[31,2709,231],{"emptyLinePlaceholder":230},[31,2711,2712],{"class":216,"line":270},[31,2713,2714],{"class":237},"# Alle SGID-Verzeichnisse finden\n",[31,2716,2717],{"class":216,"line":278},[31,2718,231],{"emptyLinePlaceholder":230},[31,2720,2721,2723,2725,2727,2730,2732,2735,2737,2739,2742,2745,2747,2750,2753,2755,2758,2761],{"class":216,"line":283},[31,2722,2500],{"class":220},[31,2724,2503],{"class":332},[31,2726,2506],{"class":223},[31,2728,2729],{"class":332}," d",[31,2731,2512],{"class":223},[31,2733,2734],{"class":223}," -2000",[31,2736,2518],{"class":223},[31,2738,2521],{"class":336},[31,2740,2741],{"class":332},"\u002Fdev\u002Fnulldrwxrwsr-x",[31,2743,2744],{"class":223}," 2",[31,2746,333],{"class":332},[31,2748,2749],{"class":332}," entwickler",[31,2751,2752],{"class":223}," 4096",[31,2754,2560],{"class":332},[31,2756,2757],{"class":223}," 29",[31,2759,2760],{"class":332}," 10:00",[31,2762,2670],{"class":332},[14,2764,2572],{},[205,2766,2768],{"className":207,"code":2767,"language":209,"meta":210,"style":210},"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",[212,2769,2770,2785,2789,2794,2798,2805,2809],{"__ignoreMap":210},[31,2771,2772,2774,2776,2779,2782],{"class":216,"line":217},[31,2773,1867],{"class":220},[31,2775,2584],{"class":332},[31,2777,2778],{"class":332}," SGID",[31,2780,2781],{"class":332}," auf",[31,2783,2784],{"class":332}," Verzeichnis\n",[31,2786,2787],{"class":216,"line":227},[31,2788,231],{"emptyLinePlaceholder":230},[31,2790,2791],{"class":216,"line":234},[31,2792,2793],{"class":237},"# Neue Datei im Verzeichnis erstellt von Benutzer \"bob\":\n",[31,2795,2796],{"class":216,"line":241},[31,2797,231],{"emptyLinePlaceholder":230},[31,2799,2800,2802],{"class":216,"line":246},[31,2801,815],{"class":220},[31,2803,2804],{"class":332}," \u002Fshared\u002Fprojekt\u002Fbob_datei.txt\n",[31,2806,2807],{"class":216,"line":254},[31,2808,231],{"emptyLinePlaceholder":230},[31,2810,2811,2813,2815],{"class":216,"line":259},[31,2812,829],{"class":220},[31,2814,832],{"class":223},[31,2816,2804],{"class":332},[14,2818,2819],{},"-rw-r--r-- 1 bob entwickler 0 Apr 29 10:01 bob_datei.txt",[14,2821,2822],{},"^^^^^^^^^^ Gruppe wird vererbt!",[2355,2824,2826],{"id":2825},"sticky-bit-oktal-1xxx","Sticky Bit – Oktal: 1xxx",[14,2828,2829],{},[17,2830,2831],{},"Auf Verzeichnisse:",[2365,2833,2834,2844],{},[2368,2835,2836,2837,2840,2841,2843],{},"Dateien dürfen nur von ihrem ",[17,2838,2839],{},"eigenen Eigentümer"," oder ",[17,2842,1062],{}," gelöscht\u002Fumbenannt werden – selbst wenn andere Benutzer Schreibrecht auf das Verzeichnis haben.",[2368,2845,2846,2847],{},"Klassisches Beispiel: ",[17,2848,2849],{},"\u002Ftmp",[14,2851,2852],{},[17,2853,2393],{},[2365,2855,2856,2866],{},[2368,2857,2858,2400,2860,2862,2863],{},[17,2859,1875],{},[17,2861,1614],{}," beim Anderen-Ausführbit: ",[17,2864,2865],{},"drwxrwxrwt",[2368,2867,2868,2871,2872],{},[17,2869,2870],{},"T"," wenn Sticky gesetzt aber kein Ausführrecht für Andere: ",[17,2873,2874],{},"drwxrwxrwT",[10,2876,2878],{"id":2877},"sticky-bit-auf-verzeichnis-setzen","Sticky Bit auf Verzeichnis setzen",[205,2880,2882],{"className":207,"code":2881,"language":209,"meta":210,"style":210},"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",[212,2883,2884,2894,2898,2907,2911,2916,2920,2929,2933,2938,2942,2951,2955,2960,2964],{"__ignoreMap":210},[31,2885,2886,2888,2891],{"class":216,"line":217},[31,2887,1508],{"class":220},[31,2889,2890],{"class":332}," +t",[31,2892,2893],{"class":332}," \u002Ftmp\u002Fgeteilt\n",[31,2895,2896],{"class":216,"line":227},[31,2897,231],{"emptyLinePlaceholder":230},[31,2899,2900,2902,2905],{"class":216,"line":234},[31,2901,1508],{"class":220},[31,2903,2904],{"class":223}," 1777",[31,2906,2893],{"class":332},[31,2908,2909],{"class":216,"line":241},[31,2910,231],{"emptyLinePlaceholder":230},[31,2912,2913],{"class":216,"line":246},[31,2914,2915],{"class":237},"# Sticky Bit entfernen\n",[31,2917,2918],{"class":216,"line":254},[31,2919,231],{"emptyLinePlaceholder":230},[31,2921,2922,2924,2927],{"class":216,"line":259},[31,2923,1508],{"class":220},[31,2925,2926],{"class":223}," -t",[31,2928,2893],{"class":332},[31,2930,2931],{"class":216,"line":265},[31,2932,231],{"emptyLinePlaceholder":230},[31,2934,2935],{"class":216,"line":270},[31,2936,2937],{"class":237},"# Prüfen\n",[31,2939,2940],{"class":216,"line":278},[31,2941,231],{"emptyLinePlaceholder":230},[31,2943,2944,2946,2948],{"class":216,"line":283},[31,2945,829],{"class":220},[31,2947,2703],{"class":223},[31,2949,2950],{"class":332}," \u002Ftmp\n",[31,2952,2953],{"class":216,"line":289},[31,2954,231],{"emptyLinePlaceholder":230},[31,2956,2957],{"class":216,"line":294},[31,2958,2959],{"class":237},"# Alle Verzeichnisse mit Sticky Bit finden\n",[31,2961,2962],{"class":216,"line":807},[31,2963,231],{"emptyLinePlaceholder":230},[31,2965,2966,2968,2970,2972,2974,2976,2979,2981,2983,2986,2989,2991,2993,2995,2997,2999,3001],{"class":216,"line":812},[31,2967,2500],{"class":220},[31,2969,2503],{"class":332},[31,2971,2506],{"class":223},[31,2973,2729],{"class":332},[31,2975,2512],{"class":223},[31,2977,2978],{"class":223}," -1000",[31,2980,2518],{"class":223},[31,2982,2521],{"class":336},[31,2984,2985],{"class":332},"\u002Fdev\u002Fnulldrwxrwxrwt",[31,2987,2988],{"class":223}," 10",[31,2990,2552],{"class":332},[31,2992,2552],{"class":332},[31,2994,2752],{"class":223},[31,2996,2560],{"class":332},[31,2998,2757],{"class":223},[31,3000,2760],{"class":332},[31,3002,2950],{"class":332},[14,3004,2572],{},[205,3006,3008],{"className":207,"code":3007,"language":209,"meta":210,"style":210},"t = Sticky Bit + Ausführrecht für Andere\n\n",[212,3009,3010],{"__ignoreMap":210},[31,3011,3012,3014,3016,3019,3022,3024,3027,3030],{"class":216,"line":217},[31,3013,1875],{"class":220},[31,3015,2584],{"class":332},[31,3017,3018],{"class":332}," Sticky",[31,3020,3021],{"class":332}," Bit",[31,3023,2590],{"class":332},[31,3025,3026],{"class":332}," Ausführrecht",[31,3028,3029],{"class":332}," für",[31,3031,3032],{"class":332}," Andere\n",[2355,3034,3036],{"id":3035},"übersicht-spezialbits","Übersicht: Spezialbits",[43,3038,3039,3069],{},[46,3040,3041],{},[49,3042,3043,3048,3053,3057,3061,3065],{},[52,3044,3045],{},[17,3046,3047],{},"Bit",[52,3049,3050],{},[17,3051,3052],{},"Name",[52,3054,3055],{},[17,3056,1560],{},[52,3058,3059],{},[17,3060,1647],{},[52,3062,3063],{},[17,3064,1565],{},[52,3066,3067],{},[17,3068,1570],{},[63,3070,3071,3090,3109],{},[49,3072,3073,3075,3078,3081,3084,3087],{},[68,3074,2345],{},[68,3076,3077],{},"Set-UID",[68,3079,3080],{},"4000",[68,3082,3083],{},"u+s",[68,3085,3086],{},"Läuft als Eigentümer der Datei",[68,3088,3089],{},"Keine standardisierte Wirkung",[49,3091,3092,3094,3097,3100,3103,3106],{},[68,3093,2348],{},[68,3095,3096],{},"Set-GID",[68,3098,3099],{},"2000",[68,3101,3102],{},"g+s",[68,3104,3105],{},"Läuft als Gruppe der Datei",[68,3107,3108],{},"Neue Dateien erben Gruppe des Verzeichnisses",[49,3110,3111,3114,3116,3118,3121,3124],{},[68,3112,3113],{},"Sticky",[68,3115,2352],{},[68,3117,370],{},[68,3119,3120],{},"+t",[68,3122,3123],{},"Veraltet, keine Wirkung",[68,3125,3126],{},"Nur Eigentümer\u002Froot kann löschen",[2355,3128,3130],{"id":3129},"kombination-mit-normalen-rechten","Kombination mit normalen Rechten",[10,3132,3134],{"id":3133},"suid-755-4755","SUID + 755 = 4755",[205,3136,3138],{"className":207,"code":3137,"language":209,"meta":210,"style":210},"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",[212,3139,3140,3149,3153,3158,3162,3167,3171,3180,3184,3189,3193,3198,3202,3210,3214],{"__ignoreMap":210},[31,3141,3142,3144,3146],{"class":216,"line":217},[31,3143,1508],{"class":220},[31,3145,2458],{"class":223},[31,3147,3148],{"class":332}," \u002Fusr\u002Flocal\u002Fbin\u002Fmyprog\n",[31,3150,3151],{"class":216,"line":227},[31,3152,231],{"emptyLinePlaceholder":230},[31,3154,3155],{"class":216,"line":234},[31,3156,3157],{"class":237},"# -rwsr-xr-x\n",[31,3159,3160],{"class":216,"line":241},[31,3161,231],{"emptyLinePlaceholder":230},[31,3163,3164],{"class":216,"line":246},[31,3165,3166],{"class":237},"# SGID + 2775 = setgid-Verzeichnis für Team\n",[31,3168,3169],{"class":216,"line":254},[31,3170,231],{"emptyLinePlaceholder":230},[31,3172,3173,3175,3177],{"class":216,"line":259},[31,3174,1508],{"class":220},[31,3176,2681],{"class":223},[31,3178,3179],{"class":332}," \u002Fsrv\u002Fteam\u002F\n",[31,3181,3182],{"class":216,"line":265},[31,3183,231],{"emptyLinePlaceholder":230},[31,3185,3186],{"class":216,"line":270},[31,3187,3188],{"class":237},"# drwxrwsr-x\n",[31,3190,3191],{"class":216,"line":278},[31,3192,231],{"emptyLinePlaceholder":230},[31,3194,3195],{"class":216,"line":283},[31,3196,3197],{"class":237},"# Sticky + 1777 = \u002Ftmp-ähnliches Verzeichnis\n",[31,3199,3200],{"class":216,"line":289},[31,3201,231],{"emptyLinePlaceholder":230},[31,3203,3204,3206,3208],{"class":216,"line":294},[31,3205,1508],{"class":220},[31,3207,2904],{"class":223},[31,3209,2950],{"class":332},[31,3211,3212],{"class":216,"line":807},[31,3213,231],{"emptyLinePlaceholder":230},[31,3215,3216],{"class":216,"line":812},[31,3217,3218],{"class":237},"# drwxrwxrwt\n",[14,3220,3221,26,3225,26,3228,26,3233,26,3236,26,3241],{},[516,3222,3223],{},[17,3224,1487],{},[516,3226,3227],{},"SUID\u002FSGID auf Dateien sind häufige Angriffsvektoren (Privilege Escalation). Regelmäßige Überprüfung mit",[516,3229,3230],{},[17,3231,3232],{},"find \u002F -perm -4000",[516,3234,3235],{},"bzw.",[516,3237,3238],{},[17,3239,3240],{},"-perm -2000",[516,3242,3243],{},"ist empfehlenswert.",[10,3245,3246],{"id":3246},"wc",[14,3248,3249,3251],{},[17,3250,19],{}," Zählt Zeilen, Wörter, Zeichen und Bytes in Dateien oder der Standardeingabe. Wird sehr oft mit Pipes kombiniert um schnelle Statistiken zu erhalten.",[14,3253,3254,26,3256],{},[17,3255,25],{},[17,3257,3258,3259,26,3261],{},"wc ",[31,3260,33],{},[31,3262,3263],{},"DATEI...",[38,3265,101],{"id":3266},"flags-4",[43,3268,3269,3285],{},[46,3270,3271],{},[49,3272,3273,3277,3281],{},[52,3274,3275],{},[17,3276,112],{},[52,3278,3279],{},[17,3280,117],{},[52,3282,3283],{},[17,3284,61],{},[63,3286,3287,3298,3309,3319,3330],{},[49,3288,3289,3292,3295],{},[68,3290,3291],{},"-l",[68,3293,3294],{},"--lines",[68,3296,3297],{},"Nur Zeilenanzahl ausgeben",[49,3299,3300,3303,3306],{},[68,3301,3302],{},"-w",[68,3304,3305],{},"--words",[68,3307,3308],{},"Nur Wortanzahl ausgeben",[49,3310,3311,3313,3316],{},[68,3312,1184],{},[68,3314,3315],{},"--bytes",[68,3317,3318],{},"Byte-Anzahl ausgeben",[49,3320,3321,3324,3327],{},[68,3322,3323],{},"-m",[68,3325,3326],{},"--chars",[68,3328,3329],{},"Zeichenanzahl ausgeben (Multibyte\u002FUnicode-sicher, unterscheidet sich von -c bei UTF-8)",[49,3331,3332,3334,3337],{},[68,3333,1224],{},[68,3335,3336],{},"--max-line-length",[68,3338,3339],{},"Länge der längsten Zeile ausgeben",[14,3341,3342],{},[17,3343,3344],{},"Reihenfolge der Standardausgabe",[14,3346,3347,3348,3350,3351,3354],{},"Ohne Flags gibt ",[17,3349,3246],{}," immer ",[17,3352,3353],{},"drei Werte"," aus in dieser Reihenfolge:",[14,3356,3357],{},"ZEILEN WÖRTER BYTES DATEINAME",[38,3359,193],{"id":3360},"beispiele-4",[10,3362,3364],{"id":3363},"standard-zeilen-wörter-bytes","Standard: Zeilen, Wörter, Bytes",[14,3366,3367],{},"wc datei.txt",[10,3369,3371],{"id":3370},"nur-zeilen-zählen","Nur Zeilen zählen",[205,3373,3375],{"className":207,"code":3374,"language":209,"meta":210,"style":210},"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",[212,3376,3377,3385,3389,3394,3398,3406,3410,3415,3419,3428,3432,3437,3441,3450,3454,3459,3463,3472,3476,3481,3485,3495,3499,3504,3508,3524,3528,3533,3537,3549,3553,3558,3562,3572,3576,3581,3585,3605,3609,3614,3618],{"__ignoreMap":210},[31,3378,3379,3381,3383],{"class":216,"line":217},[31,3380,3246],{"class":220},[31,3382,832],{"class":223},[31,3384,1256],{"class":332},[31,3386,3387],{"class":216,"line":227},[31,3388,231],{"emptyLinePlaceholder":230},[31,3390,3391],{"class":216,"line":234},[31,3392,3393],{"class":237},"# Nur Wörter zählen\n",[31,3395,3396],{"class":216,"line":241},[31,3397,231],{"emptyLinePlaceholder":230},[31,3399,3400,3402,3404],{"class":216,"line":246},[31,3401,3246],{"class":220},[31,3403,343],{"class":223},[31,3405,1256],{"class":332},[31,3407,3408],{"class":216,"line":254},[31,3409,231],{"emptyLinePlaceholder":230},[31,3411,3412],{"class":216,"line":259},[31,3413,3414],{"class":237},"# Nur Bytes zählen\n",[31,3416,3417],{"class":216,"line":265},[31,3418,231],{"emptyLinePlaceholder":230},[31,3420,3421,3423,3426],{"class":216,"line":270},[31,3422,3246],{"class":220},[31,3424,3425],{"class":223}," -c",[31,3427,1256],{"class":332},[31,3429,3430],{"class":216,"line":278},[31,3431,231],{"emptyLinePlaceholder":230},[31,3433,3434],{"class":216,"line":283},[31,3435,3436],{"class":237},"# Zeichenanzahl (wichtig bei Umlauten\u002FUnicode)\n",[31,3438,3439],{"class":216,"line":289},[31,3440,231],{"emptyLinePlaceholder":230},[31,3442,3443,3445,3448],{"class":216,"line":294},[31,3444,3246],{"class":220},[31,3446,3447],{"class":223}," -m",[31,3449,1256],{"class":332},[31,3451,3452],{"class":216,"line":807},[31,3453,231],{"emptyLinePlaceholder":230},[31,3455,3456],{"class":216,"line":812},[31,3457,3458],{"class":237},"# Längste Zeile finden\n",[31,3460,3461],{"class":216,"line":821},[31,3462,231],{"emptyLinePlaceholder":230},[31,3464,3465,3467,3470],{"class":216,"line":826},[31,3466,3246],{"class":220},[31,3468,3469],{"class":223}," -L",[31,3471,1256],{"class":332},[31,3473,3474],{"class":216,"line":837},[31,3475,231],{"emptyLinePlaceholder":230},[31,3477,3478],{"class":216,"line":842},[31,3479,3480],{"class":237},"# Mehrere Dateien + Gesamtsumme\n",[31,3482,3483],{"class":216,"line":848},[31,3484,231],{"emptyLinePlaceholder":230},[31,3486,3487,3489,3491,3493],{"class":216,"line":853},[31,3488,3246],{"class":220},[31,3490,832],{"class":223},[31,3492,2296],{"class":223},[31,3494,2299],{"class":332},[31,3496,3497],{"class":216,"line":868},[31,3498,231],{"emptyLinePlaceholder":230},[31,3500,3501],{"class":216,"line":873},[31,3502,3503],{"class":237},"# Anzahl der Prozesse zählen\n",[31,3505,3506],{"class":216,"line":879},[31,3507,231],{"emptyLinePlaceholder":230},[31,3509,3510,3513,3516,3518,3521],{"class":216,"line":884},[31,3511,3512],{"class":220},"ps",[31,3514,3515],{"class":332}," aux",[31,3517,337],{"class":336},[31,3519,3520],{"class":220}," wc",[31,3522,3523],{"class":223}," -l\n",[31,3525,3526],{"class":216,"line":1405},[31,3527,231],{"emptyLinePlaceholder":230},[31,3529,3530],{"class":216,"line":1410},[31,3531,3532],{"class":237},"# Anzahl der Benutzer im System\n",[31,3534,3535],{"class":216,"line":1416},[31,3536,231],{"emptyLinePlaceholder":230},[31,3538,3539,3541,3543,3546],{"class":216,"line":1421},[31,3540,3246],{"class":220},[31,3542,832],{"class":223},[31,3544,3545],{"class":336}," \u003C",[31,3547,3548],{"class":332}," \u002Fetc\u002Fpasswd\n",[31,3550,3551],{"class":216,"line":1434},[31,3552,231],{"emptyLinePlaceholder":230},[31,3554,3555],{"class":216,"line":1439},[31,3556,3557],{"class":237},"# Anzahl der Dateien in einem Verzeichnis\n",[31,3559,3560],{"class":216,"line":1445},[31,3561,231],{"emptyLinePlaceholder":230},[31,3563,3564,3566,3568,3570],{"class":216,"line":1450},[31,3565,829],{"class":220},[31,3567,337],{"class":336},[31,3569,3520],{"class":220},[31,3571,3523],{"class":223},[31,3573,3574],{"class":216,"line":2244},[31,3575,231],{"emptyLinePlaceholder":230},[31,3577,3578],{"class":216,"line":2249},[31,3579,3580],{"class":237},"# Anzahl der Treffer einer Suche\n",[31,3582,3583],{"class":216,"line":2255},[31,3584,231],{"emptyLinePlaceholder":230},[31,3586,3587,3590,3593,3596,3599,3601,3603],{"class":216,"line":2260},[31,3588,3589],{"class":220},"grep",[31,3591,3592],{"class":223}," -r",[31,3594,3595],{"class":332}," \"TODO\"",[31,3597,3598],{"class":332}," .",[31,3600,337],{"class":336},[31,3602,3520],{"class":220},[31,3604,3523],{"class":223},[31,3606,3607],{"class":216,"line":2270},[31,3608,231],{"emptyLinePlaceholder":230},[31,3610,3611],{"class":216,"line":2275},[31,3612,3613],{"class":237},"# Datei auf maximale Zeilenlänge prüfen\n",[31,3615,3616],{"class":216,"line":2281},[31,3617,231],{"emptyLinePlaceholder":230},[31,3619,3620,3622,3624],{"class":216,"line":2286},[31,3621,3246],{"class":220},[31,3623,3469],{"class":223},[31,3625,2057],{"class":332},[38,3627,350],{"id":3628},"ausgabe-4",[10,3630,3367],{"id":3631},"wc-dateitxt",[14,3633,3634],{},"42 187 1204 datei.txt",[10,3636,3637],{"id":210},"| | |",[10,3639,3641],{"id":3640},"bytes","| | +-- Bytes",[10,3643,3645],{"id":3644},"wörter","| +-------- Wörter",[10,3647,3649],{"id":3648},"zeilen","+------------- Zeilen",[10,3651,3653],{"id":3652},"wc-l-dateitxt","wc -l datei.txt",[14,3655,3656],{},"42 datei.txt",[10,3658,3660],{"id":3659},"wc-l-txt","wc -l *.txt",[14,3662,3663],{},"10 datei1.txt",[14,3665,3666],{},"32 datei2.txt",[14,3668,3669],{},"42 gesamt",[10,3671,3673],{"id":3672},"ps-aux-wc-l","ps aux | wc -l",[14,3675,3676],{},"127",[10,3678,3680],{"id":3679},"ls-wc-l","ls | wc -l",[14,3682,3683],{},"23",[10,3685,3687],{"id":3686},"wc-c-vs-wc-m-utf-8-umlaute","wc -c vs wc -m (UTF-8: Umlaute)",[205,3689,3691],{"className":207,"code":3690,"language":209,"meta":210,"style":210},"echo \"Straße\" | wc -c\n\n8 \u003C- 8 Bytes (ß = 2 Bytes in UTF-8)\n\necho \"Straße\" | wc -m\n\n",[212,3692,3693,3707,3711,3743,3747],{"__ignoreMap":210},[31,3694,3695,3697,3700,3702,3704],{"class":216,"line":217},[31,3696,856],{"class":223},[31,3698,3699],{"class":332}," \"Straße\"",[31,3701,337],{"class":336},[31,3703,3520],{"class":220},[31,3705,3706],{"class":223}," -c\n",[31,3708,3709],{"class":216,"line":227},[31,3710,231],{"emptyLinePlaceholder":230},[31,3712,3713,3716,3718,3720,3723,3726,3729,3731,3733,3735,3738,3741],{"class":216,"line":234},[31,3714,3715],{"class":220},"8",[31,3717,3545],{"class":336},[31,3719,1823],{"class":332},[31,3721,3722],{"class":223}," 8",[31,3724,3725],{"class":332}," Bytes",[31,3727,3728],{"class":363}," (ß ",[31,3730,367],{"class":332},[31,3732,2744],{"class":223},[31,3734,3725],{"class":332},[31,3736,3737],{"class":332}," in",[31,3739,3740],{"class":332}," UTF-8",[31,3742,432],{"class":363},[31,3744,3745],{"class":216,"line":241},[31,3746,231],{"emptyLinePlaceholder":230},[31,3748,3749,3751,3753,3755,3757],{"class":216,"line":246},[31,3750,856],{"class":223},[31,3752,3699],{"class":332},[31,3754,337],{"class":336},[31,3756,3520],{"class":220},[31,3758,3759],{"class":223}," -m\n",[14,3761,3762],{},"7 \u003C- 7 Zeichen",[10,3764,3765],{"id":3765},"head",[14,3767,3768,3770,3771,3774],{},[17,3769,19],{}," Gibt die ",[17,3772,3773],{},"ersten Zeilen"," einer Datei aus. Standardmäßig werden die ersten 10 Zeilen angezeigt. Nützlich zum schnellen Einblick ohne alles laden zu müssen.",[14,3776,3777,26,3779],{},[17,3778,25],{},[17,3780,3781,3782,26,3784],{},"head ",[31,3783,33],{},[31,3785,3263],{},[38,3787,101],{"id":3788},"flags-5",[43,3790,3791,3803],{},[46,3792,3793],{},[49,3794,3795,3799],{},[52,3796,3797],{},[17,3798,112],{},[52,3800,3801],{},[17,3802,61],{},[63,3804,3805,3813,3821,3829,3837,3845],{},[49,3806,3807,3810],{},[68,3808,3809],{},"-n N oder -N",[68,3811,3812],{},"Erste N Zeilen ausgeben",[49,3814,3815,3818],{},[68,3816,3817],{},"-n -N",[68,3819,3820],{},"Alle Zeilen außer die letzten N ausgeben",[49,3822,3823,3826],{},[68,3824,3825],{},"-c N",[68,3827,3828],{},"Erste N Bytes ausgeben",[49,3830,3831,3834],{},[68,3832,3833],{},"-c -N",[68,3835,3836],{},"Alle Bytes außer die letzten N",[49,3838,3839,3842],{},[68,3840,3841],{},"-q",[68,3843,3844],{},"Dateinamen-Header unterdrücken (quiet, bei mehreren Dateien)",[49,3846,3847,3849],{},[68,3848,1176],{},[68,3850,3851],{},"Dateinamen-Header immer anzeigen (verbose, auch bei einzelner Datei)",[38,3853,193],{"id":3854},"beispiele-5",[10,3856,3858],{"id":3857},"erste-10-zeilen-standard","Erste 10 Zeilen (Standard)",[14,3860,3861],{},"head datei.txt",[10,3863,3865],{"id":3864},"erste-5-zeilen","Erste 5 Zeilen",[205,3867,3869],{"className":207,"code":3868,"language":209,"meta":210,"style":210},"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",[212,3870,3871,3883,3887,3892,3896,3905,3909,3914,3918,3929,3933,3938,3942,3954,3958,3963,3967,3979,3983,3988,3992,4002,4006,4011,4015,4030,4034,4039,4043,4059,4063,4068,4072],{"__ignoreMap":210},[31,3872,3873,3875,3878,3881],{"class":216,"line":217},[31,3874,3765],{"class":220},[31,3876,3877],{"class":223}," -n",[31,3879,3880],{"class":223}," 5",[31,3882,1256],{"class":332},[31,3884,3885],{"class":216,"line":227},[31,3886,231],{"emptyLinePlaceholder":230},[31,3888,3889],{"class":216,"line":234},[31,3890,3891],{"class":237},"# Kurzform: gleichbedeutend\n",[31,3893,3894],{"class":216,"line":241},[31,3895,231],{"emptyLinePlaceholder":230},[31,3897,3898,3900,3903],{"class":216,"line":246},[31,3899,3765],{"class":220},[31,3901,3902],{"class":223}," -5",[31,3904,1256],{"class":332},[31,3906,3907],{"class":216,"line":254},[31,3908,231],{"emptyLinePlaceholder":230},[31,3910,3911],{"class":216,"line":259},[31,3912,3913],{"class":237},"# Alle Zeilen AUSSER die letzten 3\n",[31,3915,3916],{"class":216,"line":265},[31,3917,231],{"emptyLinePlaceholder":230},[31,3919,3920,3922,3924,3927],{"class":216,"line":270},[31,3921,3765],{"class":220},[31,3923,3877],{"class":223},[31,3925,3926],{"class":223}," -3",[31,3928,1256],{"class":332},[31,3930,3931],{"class":216,"line":278},[31,3932,231],{"emptyLinePlaceholder":230},[31,3934,3935],{"class":216,"line":283},[31,3936,3937],{"class":237},"# Erste 100 Bytes der Datei\n",[31,3939,3940],{"class":216,"line":289},[31,3941,231],{"emptyLinePlaceholder":230},[31,3943,3944,3946,3948,3951],{"class":216,"line":294},[31,3945,3765],{"class":220},[31,3947,3425],{"class":223},[31,3949,3950],{"class":223}," 100",[31,3952,3953],{"class":332}," binärdatei\n",[31,3955,3956],{"class":216,"line":807},[31,3957,231],{"emptyLinePlaceholder":230},[31,3959,3960],{"class":216,"line":812},[31,3961,3962],{"class":237},"# Erstes Kilobyte einer Datei\n",[31,3964,3965],{"class":216,"line":821},[31,3966,231],{"emptyLinePlaceholder":230},[31,3968,3969,3971,3973,3976],{"class":216,"line":826},[31,3970,3765],{"class":220},[31,3972,3425],{"class":223},[31,3974,3975],{"class":332}," 1K",[31,3977,3978],{"class":332}," datei.bin\n",[31,3980,3981],{"class":216,"line":837},[31,3982,231],{"emptyLinePlaceholder":230},[31,3984,3985],{"class":216,"line":842},[31,3986,3987],{"class":237},"# Erste Zeile einer Datei (z.B. CSV-Header lesen)\n",[31,3989,3990],{"class":216,"line":848},[31,3991,231],{"emptyLinePlaceholder":230},[31,3993,3994,3996,3999],{"class":216,"line":853},[31,3995,3765],{"class":220},[31,3997,3998],{"class":223}," -1",[31,4000,4001],{"class":332}," tabelle.csv\n",[31,4003,4004],{"class":216,"line":868},[31,4005,231],{"emptyLinePlaceholder":230},[31,4007,4008],{"class":216,"line":873},[31,4009,4010],{"class":237},"# Mehrere Dateien – mit Trennlinien dazwischen\n",[31,4012,4013],{"class":216,"line":879},[31,4014,231],{"emptyLinePlaceholder":230},[31,4016,4017,4019,4021,4024,4027],{"class":216,"line":884},[31,4018,3765],{"class":220},[31,4020,3877],{"class":223},[31,4022,4023],{"class":223}," 3",[31,4025,4026],{"class":332}," datei1.txt",[31,4028,4029],{"class":332}," datei2.txt\n",[31,4031,4032],{"class":216,"line":1405},[31,4033,231],{"emptyLinePlaceholder":230},[31,4035,4036],{"class":216,"line":1410},[31,4037,4038],{"class":237},"# Mehrere Dateien ohne Dateinamen-Header\n",[31,4040,4041],{"class":216,"line":1416},[31,4042,231],{"emptyLinePlaceholder":230},[31,4044,4045,4047,4050,4052,4054,4056],{"class":216,"line":1421},[31,4046,3765],{"class":220},[31,4048,4049],{"class":223}," -q",[31,4051,3877],{"class":223},[31,4053,4023],{"class":223},[31,4055,2296],{"class":223},[31,4057,4058],{"class":332},".conf\n",[31,4060,4061],{"class":216,"line":1434},[31,4062,231],{"emptyLinePlaceholder":230},[31,4064,4065],{"class":216,"line":1439},[31,4066,4067],{"class":237},"# In welchen Shell-Skripten steht bash als Shebang?\n",[31,4069,4070],{"class":216,"line":1445},[31,4071,231],{"emptyLinePlaceholder":230},[31,4073,4074,4076,4078,4080,4083,4085,4087],{"class":216,"line":1450},[31,4075,3765],{"class":220},[31,4077,3998],{"class":223},[31,4079,2296],{"class":223},[31,4081,4082],{"class":332},".sh",[31,4084,337],{"class":336},[31,4086,340],{"class":220},[31,4088,4089],{"class":332}," \"#!\u002Fbin\u002Fbash\"\n",[38,4091,350],{"id":4092},"ausgabe-5",[10,4094,4096],{"id":4095},"head-n-3-etcpasswd","head -n 3 \u002Fetc\u002Fpasswd",[14,4098,4099],{},"root❌0:0:root:\u002Froot:\u002Fbin\u002Fbash",[14,4101,4102],{},"daemon❌1:1:daemon:\u002Fusr\u002Fsbin:\u002Fusr\u002Fsbin\u002Fnologin",[14,4104,4105],{},"bin❌2:2:bin:\u002Fbin:\u002Fusr\u002Fsbin\u002Fnologin",[10,4107,4109],{"id":4108},"head-n-3-datei1txt-datei2txt","head -n 3 datei1.txt datei2.txt",[14,4111,4112],{},"==> datei1.txt \u003C==",[14,4114,4115],{},"Zeile 1 aus Datei 1",[14,4117,4118],{},"Zeile 2 aus Datei 1",[14,4120,4121],{},"Zeile 3 aus Datei 1",[14,4123,4124],{},"==> datei2.txt \u003C==",[14,4126,4127],{},"Zeile 1 aus Datei 2",[14,4129,4130],{},"Zeile 2 aus Datei 2",[14,4132,4133],{},"Zeile 3 aus Datei 2",[10,4135,4137],{"id":4136},"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)",[14,4139,4140],{},"Zeile 1",[14,4142,4143],{},"Zeile 2",[14,4145,4146],{},"Zeile 3",[10,4148,4149],{"id":4149},"tail",[14,4151,4152,3770,4154,4157,4158,4161,4162,1525],{},[17,4153,19],{},[17,4155,4156],{},"letzten Zeilen"," einer Datei aus (Standard: 10). Besonders wertvoll zur ",[17,4159,4160],{},"Echtzeit-Überwachung"," von Log-Dateien mit ",[17,4163,1192],{},[14,4165,4166,26,4168],{},[17,4167,25],{},[17,4169,4170,4171,26,4173],{},"tail ",[31,4172,33],{},[31,4174,3263],{},[38,4176,101],{"id":4177},"flags-6",[43,4179,4180,4192],{},[46,4181,4182],{},[49,4183,4184,4188],{},[52,4185,4186],{},[17,4187,112],{},[52,4189,4190],{},[17,4191,61],{},[63,4193,4194,4201,4209,4216,4224,4231,4239,4247,4255,4262],{},[49,4195,4196,4198],{},[68,4197,3809],{},[68,4199,4200],{},"Letzte N Zeilen ausgeben",[49,4202,4203,4206],{},[68,4204,4205],{},"-n +N",[68,4207,4208],{},"Ab Zeile N bis zum Ende ausgeben (Zeilen 1 bis N-1 überspringen)",[49,4210,4211,4213],{},[68,4212,3825],{},[68,4214,4215],{},"Letzte N Bytes ausgeben",[49,4217,4218,4221],{},[68,4219,4220],{},"-c +N",[68,4222,4223],{},"Ab Byte-Position N bis zum Ende",[49,4225,4226,4228],{},[68,4227,1192],{},[68,4229,4230],{},"Follow – Datei live verfolgen, neue Zeilen werden sofort angezeigt",[49,4232,4233,4236],{},[68,4234,4235],{},"-F",[68,4237,4238],{},"Wie -f, aber Datei wird neu geöffnet wenn sie rotiert\u002Fneu erstellt wird (robuster für Log-Rotation)",[49,4240,4241,4244],{},[68,4242,4243],{},"-s N",[68,4245,4246],{},"Intervall (Sekunden) zwischen Prüfungen bei -f (Standard: 1.0)",[49,4248,4249,4252],{},[68,4250,4251],{},"--pid=PID",[68,4253,4254],{},"Beendet sich automatisch wenn Prozess mit PID endet",[49,4256,4257,4259],{},[68,4258,3841],{},[68,4260,4261],{},"Dateinamen-Header unterdrücken",[49,4263,4264,4266],{},[68,4265,1176],{},[68,4267,4268],{},"Dateinamen-Header immer anzeigen",[38,4270,193],{"id":4271},"beispiele-6",[10,4273,4275],{"id":4274},"letzte-10-zeilen-standard","Letzte 10 Zeilen (Standard)",[14,4277,4278],{},"tail datei.txt",[10,4280,4282],{"id":4281},"letzte-20-zeilen","Letzte 20 Zeilen",[205,4284,4286],{"className":207,"code":4285,"language":209,"meta":210,"style":210},"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",[212,4287,4288,4300,4304,4309,4313,4322,4326,4331,4335,4345,4349,4354,4358,4368,4372,4377,4381,4400,4404,4409,4413,4424,4428,4433,4437,4447,4451,4456,4460,4472,4476,4481,4485,4496,4500,4505,4509,4518,4522,4527,4531],{"__ignoreMap":210},[31,4289,4290,4292,4294,4297],{"class":216,"line":217},[31,4291,4149],{"class":220},[31,4293,3877],{"class":223},[31,4295,4296],{"class":223}," 20",[31,4298,4299],{"class":332}," \u002Fvar\u002Flog\u002Fsyslog\n",[31,4301,4302],{"class":216,"line":227},[31,4303,231],{"emptyLinePlaceholder":230},[31,4305,4306],{"class":216,"line":234},[31,4307,4308],{"class":237},"# Kurzform\n",[31,4310,4311],{"class":216,"line":241},[31,4312,231],{"emptyLinePlaceholder":230},[31,4314,4315,4317,4320],{"class":216,"line":246},[31,4316,4149],{"class":220},[31,4318,4319],{"class":223}," -20",[31,4321,4299],{"class":332},[31,4323,4324],{"class":216,"line":254},[31,4325,231],{"emptyLinePlaceholder":230},[31,4327,4328],{"class":216,"line":259},[31,4329,4330],{"class":237},"# Log-Datei live verfolgen (Strg+C zum Beenden)\n",[31,4332,4333],{"class":216,"line":265},[31,4334,231],{"emptyLinePlaceholder":230},[31,4336,4337,4339,4342],{"class":216,"line":270},[31,4338,4149],{"class":220},[31,4340,4341],{"class":223}," -f",[31,4343,4344],{"class":332}," \u002Fvar\u002Flog\u002Fnginx\u002Faccess.log\n",[31,4346,4347],{"class":216,"line":278},[31,4348,231],{"emptyLinePlaceholder":230},[31,4350,4351],{"class":216,"line":283},[31,4352,4353],{"class":237},"# Robusterer Follow (überlebt Log-Rotation)\n",[31,4355,4356],{"class":216,"line":289},[31,4357,231],{"emptyLinePlaceholder":230},[31,4359,4360,4362,4365],{"class":216,"line":294},[31,4361,4149],{"class":220},[31,4363,4364],{"class":223}," -F",[31,4366,4367],{"class":332}," \u002Fvar\u002Flog\u002Fnginx\u002Ferror.log\n",[31,4369,4370],{"class":216,"line":807},[31,4371,231],{"emptyLinePlaceholder":230},[31,4373,4374],{"class":216,"line":812},[31,4375,4376],{"class":237},"# Follow + gleichzeitig nach Fehlern filtern\n",[31,4378,4379],{"class":216,"line":821},[31,4380,231],{"emptyLinePlaceholder":230},[31,4382,4383,4385,4387,4390,4392,4394,4397],{"class":216,"line":826},[31,4384,4149],{"class":220},[31,4386,4341],{"class":223},[31,4388,4389],{"class":332}," \u002Fvar\u002Flog\u002Fsyslog",[31,4391,337],{"class":336},[31,4393,340],{"class":220},[31,4395,4396],{"class":223}," -i",[31,4398,4399],{"class":332}," \"error\\|warn\\|crit\"\n",[31,4401,4402],{"class":216,"line":837},[31,4403,231],{"emptyLinePlaceholder":230},[31,4405,4406],{"class":216,"line":842},[31,4407,4408],{"class":237},"# Ab Zeile 50 bis Ende ausgeben\n",[31,4410,4411],{"class":216,"line":848},[31,4412,231],{"emptyLinePlaceholder":230},[31,4414,4415,4417,4419,4422],{"class":216,"line":853},[31,4416,4149],{"class":220},[31,4418,3877],{"class":223},[31,4420,4421],{"class":332}," +50",[31,4423,1256],{"class":332},[31,4425,4426],{"class":216,"line":868},[31,4427,231],{"emptyLinePlaceholder":230},[31,4429,4430],{"class":216,"line":873},[31,4431,4432],{"class":237},"# Letzten 1KB einer Datei ausgeben\n",[31,4434,4435],{"class":216,"line":879},[31,4436,231],{"emptyLinePlaceholder":230},[31,4438,4439,4441,4443,4445],{"class":216,"line":884},[31,4440,4149],{"class":220},[31,4442,3425],{"class":223},[31,4444,3975],{"class":332},[31,4446,1256],{"class":332},[31,4448,4449],{"class":216,"line":1405},[31,4450,231],{"emptyLinePlaceholder":230},[31,4452,4453],{"class":216,"line":1410},[31,4454,4455],{"class":237},"# Follow und automatisch beenden wenn Prozess endet\n",[31,4457,4458],{"class":216,"line":1416},[31,4459,231],{"emptyLinePlaceholder":230},[31,4461,4462,4464,4466,4469],{"class":216,"line":1421},[31,4463,4149],{"class":220},[31,4465,4341],{"class":223},[31,4467,4468],{"class":223}," --pid=4321",[31,4470,4471],{"class":332}," \u002Fvar\u002Flog\u002Fapp.log\n",[31,4473,4474],{"class":216,"line":1434},[31,4475,231],{"emptyLinePlaceholder":230},[31,4477,4478],{"class":216,"line":1439},[31,4479,4480],{"class":237},"# Mehrere Log-Dateien gleichzeitig verfolgen\n",[31,4482,4483],{"class":216,"line":1445},[31,4484,231],{"emptyLinePlaceholder":230},[31,4486,4487,4489,4491,4493],{"class":216,"line":1450},[31,4488,4149],{"class":220},[31,4490,4341],{"class":223},[31,4492,4389],{"class":332},[31,4494,4495],{"class":332}," \u002Fvar\u002Flog\u002Fauth.log\n",[31,4497,4498],{"class":216,"line":2244},[31,4499,231],{"emptyLinePlaceholder":230},[31,4501,4502],{"class":216,"line":2249},[31,4503,4504],{"class":237},"# Letzten Eintrag in CSV-Datei\n",[31,4506,4507],{"class":216,"line":2255},[31,4508,231],{"emptyLinePlaceholder":230},[31,4510,4511,4513,4515],{"class":216,"line":2260},[31,4512,4149],{"class":220},[31,4514,3998],{"class":223},[31,4516,4517],{"class":332}," daten.csv\n",[31,4519,4520],{"class":216,"line":2270},[31,4521,231],{"emptyLinePlaceholder":230},[31,4523,4524],{"class":216,"line":2275},[31,4525,4526],{"class":237},"# Alle außer die erste Zeile ausgeben (Header überspringen)\n",[31,4528,4529],{"class":216,"line":2281},[31,4530,231],{"emptyLinePlaceholder":230},[31,4532,4533,4535,4537,4540],{"class":216,"line":2286},[31,4534,4149],{"class":220},[31,4536,3877],{"class":223},[31,4538,4539],{"class":332}," +2",[31,4541,4001],{"class":332},[38,4543,350],{"id":4544},"ausgabe-6",[10,4546,4548],{"id":4547},"tail-n-3-etcpasswd","tail -n 3 \u002Fetc\u002Fpasswd",[14,4550,4551],{},"matta❌1000:1000:matta,,,:\u002Fhome\u002Fmatta:\u002Fbin\u002Fbash",[14,4553,4554],{},"www-data❌33:33:www-data:\u002Fvar\u002Fwww:\u002Fusr\u002Fsbin\u002Fnologin",[14,4556,4557],{},"nobody❌65534:65534:nobody:\u002Fnonexistent:\u002Fusr\u002Fsbin\u002Fnologin",[10,4559,4561],{"id":4560},"tail-f-varlogsyslog-live-neue-einträge-erscheinen-automatisch","tail -f \u002Fvar\u002Flog\u002Fsyslog (live, neue Einträge erscheinen automatisch)",[14,4563,4564,4565,4568],{},"Apr 29 10:00:01 server cron",[31,4566,4567],{},"1234",": (root) CMD (\u002Fusr\u002Fbin\u002Fbackup.sh)",[14,4570,4571,4572,4575],{},"Apr 29 10:01:01 server cron",[31,4573,4574],{},"1235",": (root) CMD (\u002Fusr\u002Fbin\u002Fcleanup.sh)",[14,4577,4578,4579,4582],{},"Apr 29 10:02:00 server sshd",[31,4580,4581],{},"9876",": Accepted publickey for alice from 192.168.1.5",[14,4584,4585],{},"... \u003C- Strg+C zum Beenden",[10,4587,4589],{"id":4588},"tail-n-2-tabellecsv-header-wird-übersprungen","tail -n +2 tabelle.csv (Header wird übersprungen)",[14,4591,4592],{},"alice,30,Entwicklerin",[14,4594,4595],{},"bob,25,DevOps",[14,4597,4598],{},"charlie,35,Sysadmin",[14,4600,4601,4602],{},"***Tipp:*",[516,4603,4604,4626],{},[516,4605,4606,26,4611,26,4614,26,4618,26,4621],{},[516,4607,4608],{},[17,4609,4610],{},"tail -f",[516,4612,4613],{},"ist das wichtigste Werkzeug für Live-Log-Analyse.",[516,4615,4616],{},[17,4617,4235],{},[516,4619,4620],{},"ist stabiler bei Systemen mit Log-Rotation (z. B.",[516,4622,4623],{},[17,4624,4625],{},"logrotate",").",[10,4628,3589],{"id":3589},[14,4630,4631,4633,4634,1525],{},[17,4632,19],{}," Sucht in Dateien oder der Standardeingabe nach Zeilen, die einem Muster (regulärer Ausdruck) entsprechen. \"grep\" steht für ",[516,4635,4636],{},"Global Regular Expression Print",[14,4638,4639,26,4641],{},[17,4640,25],{},[17,4642,4643,4644,4646,4647],{},"grep ",[31,4645,33],{}," MUSTER ",[31,4648,3263],{},[38,4650,101],{"id":4651},"flags-7",[43,4653,4654,4670],{},[46,4655,4656],{},[49,4657,4658,4662,4666],{},[52,4659,4660],{},[17,4661,112],{},[52,4663,4664],{},[17,4665,117],{},[52,4667,4668],{},[17,4669,61],{},[63,4671,4672,4683,4693,4703,4713,4723,4733,4743,4753,4764,4774,4784,4795,4806,4817,4828,4838,4849,4860,4871,4881,4891,4901],{},[49,4673,4674,4677,4680],{},[68,4675,4676],{},"-i",[68,4678,4679],{},"--ignore-case",[68,4681,4682],{},"Groß-\u002FKleinschreibung ignorieren",[49,4684,4685,4687,4690],{},[68,4686,1176],{},[68,4688,4689],{},"--invert-match",[68,4691,4692],{},"Invertieren – nur nicht-passende Zeilen ausgeben",[49,4694,4695,4697,4700],{},[68,4696,172],{},[68,4698,4699],{},"--recursive",[68,4701,4702],{},"Rekursiv in Verzeichnisbaum suchen",[49,4704,4705,4707,4710],{},[68,4706,1168],{},[68,4708,4709],{},"--dereference-recursive",[68,4711,4712],{},"Wie -r, folgt aber auch symbolischen Links",[49,4714,4715,4717,4720],{},[68,4716,161],{},[68,4718,4719],{},"--line-number",[68,4721,4722],{},"Zeilennummer vor jede Ausgabezeile",[49,4724,4725,4727,4730],{},[68,4726,3291],{},[68,4728,4729],{},"--files-with-matches",[68,4731,4732],{},"Nur Dateinamen ausgeben (nicht Inhalt)",[49,4734,4735,4737,4740],{},[68,4736,1224],{},[68,4738,4739],{},"--files-without-match",[68,4741,4742],{},"Dateinamen ausgeben die NICHT passen",[49,4744,4745,4747,4750],{},[68,4746,1184],{},[68,4748,4749],{},"--count",[68,4751,4752],{},"Anzahl der Treffer pro Datei ausgeben",[49,4754,4755,4758,4761],{},[68,4756,4757],{},"-E",[68,4759,4760],{},"--extended-regexp",[68,4762,4763],{},"Erweiterte reguläre Ausdrücke (ERE)",[49,4765,4766,4768,4771],{},[68,4767,4235],{},[68,4769,4770],{},"--fixed-strings",[68,4772,4773],{},"Feste Zeichenkette, kein Regex-Parsing",[49,4775,4776,4778,4781],{},[68,4777,1232],{},[68,4779,4780],{},"--perl-regexp",[68,4782,4783],{},"Perl-kompatible Regex (PCRE)",[49,4785,4786,4789,4792],{},[68,4787,4788],{},"-o",[68,4790,4791],{},"--only-matching",[68,4793,4794],{},"Nur den genau passenden Teil ausgeben",[49,4796,4797,4800,4803],{},[68,4798,4799],{},"-A N",[68,4801,4802],{},"--after-context=N",[68,4804,4805],{},"N Zeilen nach dem Treffer ausgeben",[49,4807,4808,4811,4814],{},[68,4809,4810],{},"-B N",[68,4812,4813],{},"--before-context=N",[68,4815,4816],{},"N Zeilen vor dem Treffer ausgeben",[49,4818,4819,4822,4825],{},[68,4820,4821],{},"-C N",[68,4823,4824],{},"--context=N",[68,4826,4827],{},"N Zeilen vor und nach dem Treffer",[49,4829,4830,4832,4835],{},[68,4831,3302],{},[68,4833,4834],{},"--word-regexp",[68,4836,4837],{},"Nur ganze Wörter suchen",[49,4839,4840,4843,4846],{},[68,4841,4842],{},"-x",[68,4844,4845],{},"--line-regexp",[68,4847,4848],{},"Nur ganze Zeilen suchen",[49,4850,4851,4854,4857],{},[68,4852,4853],{},"--color",[68,4855,4856],{},"--colour",[68,4858,4859],{},"Treffer farbig hervorheben",[49,4861,4862,4865,4868],{},[68,4863,4864],{},"-m N",[68,4866,4867],{},"--max-count=N",[68,4869,4870],{},"Nach N Treffern abbrechen",[49,4872,4873,4875,4878],{},[68,4874,3841],{},[68,4876,4877],{},"--quiet",[68,4879,4880],{},"Keine Ausgabe, nur Exit-Code (0 = gefunden)",[49,4882,4883,4886,4889],{},[68,4884,4885],{},"-s",[68,4887,4888],{},"--no-messages",[68,4890,1925],{},[49,4892,4893,4895,4898],{},[68,4894,1200],{},[68,4896,4897],{},"--no-filename",[68,4899,4900],{},"Dateiname in Ausgabe unterdrücken",[49,4902,4903,4906,4909],{},[68,4904,4905],{},"-H",[68,4907,4908],{},"--with-filename",[68,4910,4911],{},"Dateiname immer ausgeben",[38,4913,4915],{"id":4914},"reguläre-ausdrücke-kurzübersicht","Reguläre Ausdrücke (Kurzübersicht)",[43,4917,4918,4931],{},[46,4919,4920],{},[49,4921,4922,4927],{},[52,4923,4924],{},[17,4925,4926],{},"Muster",[52,4928,4929],{},[17,4930,61],{},[63,4932,4933,4940,4947,4955,4963,4970,4978,4988,4998,5008,5016,5024],{},[49,4934,4935,4937],{},[68,4936,1525],{},[68,4938,4939],{},"Ein beliebiges Zeichen",[49,4941,4942,4944],{},[68,4943,2572],{},[68,4945,4946],{},"Zeilenanfang",[49,4948,4949,4952],{},[68,4950,4951],{},"$",[68,4953,4954],{},"Zeilenende",[49,4956,4957,4960],{},[68,4958,4959],{},"*",[68,4961,4962],{},"0 oder mehr des vorigen Zeichens",[49,4964,4965,4967],{},[68,4966,1815],{},[68,4968,4969],{},"1 oder mehr (ERE: -E)",[49,4971,4972,4975],{},[68,4973,4974],{},"?",[68,4976,4977],{},"0 oder 1 (ERE: -E)",[49,4979,4980,4985],{},[68,4981,4982],{},[31,4983,4984],{},"abc",[68,4986,4987],{},"Eines der Zeichen a, b oder c",[49,4989,4990,4995],{},[68,4991,4992],{},[31,4993,4994],{},"^abc",[68,4996,4997],{},"Keines der Zeichen a, b, c",[49,4999,5000,5005],{},[68,5001,5002],{},[31,5003,5004],{},"a-z",[68,5006,5007],{},"Zeichenklasse a bis z",[49,5009,5010,5013],{},[68,5011,5012],{},"\\b",[68,5014,5015],{},"Wortgrenze",[49,5017,5018,5021],{},[68,5019,5020],{},"(a",[68,5022,5023],{},"b)",[49,5025,5026,5029],{},[68,5027,5028],{},"{n,m}",[68,5030,5031],{},"n bis m Wiederholungen (ERE: -E)",[38,5033,193],{"id":5034},"beispiele-7",[10,5036,5038],{"id":5037},"einfache-suche","Einfache Suche",[205,5040,5042],{"className":207,"code":5041,"language":209,"meta":210,"style":210},"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",[212,5043,5044,5053,5057,5062,5066,5077,5081,5086,5090,5101,5105,5110,5114,5125,5129,5134,5138,5160,5164,5169,5173,5186,5190,5195,5199,5212,5216,5221,5225,5237,5241,5246,5250,5264,5268,5273,5277,5290,5294,5299,5303,5314,5319,5325,5330,5351,5356,5364,5369,5375,5380,5386,5391,5403,5408,5414,5419,5433,5438,5444,5449],{"__ignoreMap":210},[31,5045,5046,5048,5051],{"class":216,"line":217},[31,5047,3589],{"class":220},[31,5049,5050],{"class":332}," \"root\"",[31,5052,3548],{"class":332},[31,5054,5055],{"class":216,"line":227},[31,5056,231],{"emptyLinePlaceholder":230},[31,5058,5059],{"class":216,"line":234},[31,5060,5061],{"class":237},"# Groß-\u002FKleinschreibung ignorieren\n",[31,5063,5064],{"class":216,"line":241},[31,5065,231],{"emptyLinePlaceholder":230},[31,5067,5068,5070,5072,5075],{"class":216,"line":246},[31,5069,3589],{"class":220},[31,5071,4396],{"class":223},[31,5073,5074],{"class":332}," \"error\"",[31,5076,4299],{"class":332},[31,5078,5079],{"class":216,"line":254},[31,5080,231],{"emptyLinePlaceholder":230},[31,5082,5083],{"class":216,"line":259},[31,5084,5085],{"class":237},"# Rekursiv in einem Verzeichnis suchen\n",[31,5087,5088],{"class":216,"line":265},[31,5089,231],{"emptyLinePlaceholder":230},[31,5091,5092,5094,5096,5098],{"class":216,"line":270},[31,5093,3589],{"class":220},[31,5095,3592],{"class":223},[31,5097,3595],{"class":332},[31,5099,5100],{"class":332}," \u002Fhome\u002Fmatta\u002Fprojekt\u002F\n",[31,5102,5103],{"class":216,"line":278},[31,5104,231],{"emptyLinePlaceholder":230},[31,5106,5107],{"class":216,"line":283},[31,5108,5109],{"class":237},"# Mit Zeilennummern\n",[31,5111,5112],{"class":216,"line":289},[31,5113,231],{"emptyLinePlaceholder":230},[31,5115,5116,5118,5120,5123],{"class":216,"line":294},[31,5117,3589],{"class":220},[31,5119,3877],{"class":223},[31,5121,5122],{"class":332}," \"bash\"",[31,5124,3548],{"class":332},[31,5126,5127],{"class":216,"line":807},[31,5128,231],{"emptyLinePlaceholder":230},[31,5130,5131],{"class":216,"line":812},[31,5132,5133],{"class":237},"# Invertierte Suche: alle Nicht-Kommentar-Zeilen in Konfigdatei\n",[31,5135,5136],{"class":216,"line":821},[31,5137,231],{"emptyLinePlaceholder":230},[31,5139,5140,5142,5145,5148,5151,5153,5155,5157],{"class":216,"line":826},[31,5141,3589],{"class":220},[31,5143,5144],{"class":223}," -v",[31,5146,5147],{"class":332}," \"^#\"",[31,5149,5150],{"class":332}," \u002Fetc\u002Fssh\u002Fsshd_config",[31,5152,337],{"class":336},[31,5154,340],{"class":220},[31,5156,5144],{"class":223},[31,5158,5159],{"class":332}," \"^$\"\n",[31,5161,5162],{"class":216,"line":837},[31,5163,231],{"emptyLinePlaceholder":230},[31,5165,5166],{"class":216,"line":842},[31,5167,5168],{"class":237},"# Nur Dateinamen ausgeben (welche Dateien enthalten den Begriff?)\n",[31,5170,5171],{"class":216,"line":848},[31,5172,231],{"emptyLinePlaceholder":230},[31,5174,5175,5177,5180,5183],{"class":216,"line":853},[31,5176,3589],{"class":220},[31,5178,5179],{"class":223}," -rl",[31,5181,5182],{"class":332}," \"passwort\"",[31,5184,5185],{"class":332}," \u002Fetc\u002F\n",[31,5187,5188],{"class":216,"line":868},[31,5189,231],{"emptyLinePlaceholder":230},[31,5191,5192],{"class":216,"line":873},[31,5193,5194],{"class":237},"# Anzahl der Treffer pro Datei\n",[31,5196,5197],{"class":216,"line":879},[31,5198,231],{"emptyLinePlaceholder":230},[31,5200,5201,5203,5206,5209],{"class":216,"line":884},[31,5202,3589],{"class":220},[31,5204,5205],{"class":223}," -rc",[31,5207,5208],{"class":332}," \"ERROR\"",[31,5210,5211],{"class":332}," \u002Fvar\u002Flog\u002F\n",[31,5213,5214],{"class":216,"line":1405},[31,5215,231],{"emptyLinePlaceholder":230},[31,5217,5218],{"class":216,"line":1410},[31,5219,5220],{"class":237},"# Erweiterte Regex: root oder daemon am Zeilenanfang\n",[31,5222,5223],{"class":216,"line":1416},[31,5224,231],{"emptyLinePlaceholder":230},[31,5226,5227,5229,5232,5235],{"class":216,"line":1421},[31,5228,3589],{"class":220},[31,5230,5231],{"class":223}," -E",[31,5233,5234],{"class":332}," \"^(root|daemon)\"",[31,5236,3548],{"class":332},[31,5238,5239],{"class":216,"line":1434},[31,5240,231],{"emptyLinePlaceholder":230},[31,5242,5243],{"class":216,"line":1439},[31,5244,5245],{"class":237},"# Zeilen mit Kontext ausgeben\n",[31,5247,5248],{"class":216,"line":1445},[31,5249,231],{"emptyLinePlaceholder":230},[31,5251,5252,5254,5257,5259,5262],{"class":216,"line":1450},[31,5253,3589],{"class":220},[31,5255,5256],{"class":223}," -C",[31,5258,2744],{"class":223},[31,5260,5261],{"class":332}," \"CRITICAL\"",[31,5263,4299],{"class":332},[31,5265,5266],{"class":216,"line":2244},[31,5267,231],{"emptyLinePlaceholder":230},[31,5269,5270],{"class":216,"line":2249},[31,5271,5272],{"class":237},"# Nur passende Teile ausgeben – alle IP-Adressen extrahieren\n",[31,5274,5275],{"class":216,"line":2255},[31,5276,231],{"emptyLinePlaceholder":230},[31,5278,5279,5281,5284,5287],{"class":216,"line":2260},[31,5280,3589],{"class":220},[31,5282,5283],{"class":223}," -oE",[31,5285,5286],{"class":332}," \"[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}\"",[31,5288,5289],{"class":332}," access.log\n",[31,5291,5292],{"class":216,"line":2270},[31,5293,231],{"emptyLinePlaceholder":230},[31,5295,5296],{"class":216,"line":2275},[31,5297,5298],{"class":237},"# Nur ganze Wörter finden\n",[31,5300,5301],{"class":216,"line":2281},[31,5302,231],{"emptyLinePlaceholder":230},[31,5304,5305,5307,5309,5312],{"class":216,"line":2286},[31,5306,3589],{"class":220},[31,5308,343],{"class":223},[31,5310,5311],{"class":332}," \"pass\"",[31,5313,1256],{"class":332},[31,5315,5317],{"class":216,"line":5316},42,[31,5318,231],{"emptyLinePlaceholder":230},[31,5320,5322],{"class":216,"line":5321},43,[31,5323,5324],{"class":237},"# Stilles grep – nur Exit-Code prüfen (für Skripte)\n",[31,5326,5328],{"class":216,"line":5327},44,[31,5329,231],{"emptyLinePlaceholder":230},[31,5331,5333,5336,5338,5340,5342,5345,5348],{"class":216,"line":5332},45,[31,5334,5335],{"class":336},"if",[31,5337,340],{"class":220},[31,5339,4049],{"class":223},[31,5341,5074],{"class":332},[31,5343,5344],{"class":332}," \u002Fvar\u002Flog\u002Fapp.log",[31,5346,5347],{"class":363},"; ",[31,5349,5350],{"class":336},"then\n",[31,5352,5354],{"class":216,"line":5353},46,[31,5355,231],{"emptyLinePlaceholder":230},[31,5357,5359,5361],{"class":216,"line":5358},47,[31,5360,856],{"class":223},[31,5362,5363],{"class":332}," \"Fehler gefunden!\"\n",[31,5365,5367],{"class":216,"line":5366},48,[31,5368,231],{"emptyLinePlaceholder":230},[31,5370,5372],{"class":216,"line":5371},49,[31,5373,5374],{"class":336},"fi\n",[31,5376,5378],{"class":216,"line":5377},50,[31,5379,231],{"emptyLinePlaceholder":230},[31,5381,5383],{"class":216,"line":5382},51,[31,5384,5385],{"class":237},"# Nach einem festen String suchen (kein Regex)\n",[31,5387,5389],{"class":216,"line":5388},52,[31,5390,231],{"emptyLinePlaceholder":230},[31,5392,5394,5396,5398,5401],{"class":216,"line":5393},53,[31,5395,3589],{"class":220},[31,5397,4364],{"class":223},[31,5399,5400],{"class":332}," \"192.168.1.1\"",[31,5402,4495],{"class":332},[31,5404,5406],{"class":216,"line":5405},54,[31,5407,231],{"emptyLinePlaceholder":230},[31,5409,5411],{"class":216,"line":5410},55,[31,5412,5413],{"class":237},"# Maximal 5 Treffer ausgeben\n",[31,5415,5417],{"class":216,"line":5416},56,[31,5418,231],{"emptyLinePlaceholder":230},[31,5420,5422,5424,5426,5428,5431],{"class":216,"line":5421},57,[31,5423,3589],{"class":220},[31,5425,3447],{"class":223},[31,5427,3880],{"class":223},[31,5429,5430],{"class":332}," \"warn\"",[31,5432,4299],{"class":332},[31,5434,5436],{"class":216,"line":5435},58,[31,5437,231],{"emptyLinePlaceholder":230},[31,5439,5441],{"class":216,"line":5440},59,[31,5442,5443],{"class":237},"# Mehrere Dateien, mit Dateinamen ausgeben\n",[31,5445,5447],{"class":216,"line":5446},60,[31,5448,231],{"emptyLinePlaceholder":230},[31,5450,5452,5454,5457,5460],{"class":216,"line":5451},61,[31,5453,3589],{"class":220},[31,5455,5456],{"class":223}," -H",[31,5458,5459],{"class":332}," \"PermitRootLogin\"",[31,5461,5462],{"class":332}," \u002Fetc\u002Fssh\u002Fsshd_config\n",[38,5464,350],{"id":5465},"ausgabe-7",[10,5467,5469],{"id":5468},"grep-root-etcpasswd","grep \"root\" \u002Fetc\u002Fpasswd",[14,5471,4099],{},[10,5473,5475],{"id":5474},"grep-n-bash-etcpasswd","grep -n \"bash\" \u002Fetc\u002Fpasswd",[14,5477,5478],{},"1:root❌0:0:root:\u002Froot:\u002Fbin\u002Fbash",[14,5480,5481],{},"42:matta❌1000:1000::\u002Fhome\u002Fmatta:\u002Fbin\u002Fbash",[10,5483,5485],{"id":5484},"grep-c-error-varlogapplog","grep -c \"ERROR\" \u002Fvar\u002Flog\u002Fapp.log",[14,5487,5488],{},"15",[10,5490,5492],{"id":5491},"grep-c-2-critical-varlogsyslog","grep -C 2 \"CRITICAL\" \u002Fvar\u002Flog\u002Fsyslog",[14,5494,5495,5496,5499],{},"Apr 29 09:58:01 server app",[31,5497,5498],{},"123",": Connection established",[14,5501,5502,5503,5505],{},"Apr 29 09:59:00 server app",[31,5504,5498],{},": Retry attempt 3",[14,5507,5508,5509,5511],{},"Apr 29 09:59:30 server app",[31,5510,5498],{},": CRITICAL: Database unreachable",[14,5513,5514,5515,5517],{},"Apr 29 09:59:31 server app",[31,5516,5498],{},": Attempting failover...",[14,5519,5520,5521,5523],{},"Apr 29 09:59:45 server app",[31,5522,5498],{},": Failover successful",[10,5525,5527,5528,5531,5532,5531,5534,5531,5536,5538],{"id":5526},"grep-oe-0-9130-9130-9130-913-accesslog","grep -oE \"",[31,5529,5530],{},"0-9","{1,3}.",[31,5533,5530],{},[31,5535,5530],{},[31,5537,5530],{},"{1,3}\" access.log",[14,5540,5541],{},"192.168.1.10",[14,5543,5544],{},"10.0.0.1",[14,5546,5547],{},"172.16.5.8",[10,5549,2500],{"id":2500},[14,5551,5552,5554],{},[17,5553,19],{}," Sucht rekursiv nach Dateien und Verzeichnissen anhand von Name, Typ, Größe, Datum, Berechtigungen, Eigentümer u. v. m. Kann gefundene Dateien direkt weiterverarbeiten.",[14,5556,5557,26,5559],{},[17,5558,25],{},[17,5560,5561,5562,26,5565],{},"find ",[31,5563,5564],{},"STARTPFAD...",[31,5566,5567],{},"AUSDRUCK",[38,5569,5571],{"id":5570},"wichtige-optionen","Wichtige Optionen",[2355,5573,5575],{"id":5574},"typ-und-name","Typ und Name",[43,5577,5578,5591],{},[46,5579,5580],{},[49,5581,5582,5587],{},[52,5583,5584],{},[17,5585,5586],{},"Option",[52,5588,5589],{},[17,5590,61],{},[63,5592,5593,5601,5609,5617,5624,5632,5640,5648,5656],{},[49,5594,5595,5598],{},[68,5596,5597],{},"-name MUSTER",[68,5599,5600],{},"Dateiname (case-sensitive, Wildcards z.B. *.txt)",[49,5602,5603,5606],{},[68,5604,5605],{},"-iname MUSTER",[68,5607,5608],{},"Wie -name, aber case-insensitive",[49,5610,5611,5614],{},[68,5612,5613],{},"-type f",[68,5615,5616],{},"Reguläre Dateien",[49,5618,5619,5622],{},[68,5620,5621],{},"-type d",[68,5623,664],{},[49,5625,5626,5629],{},[68,5627,5628],{},"-type l",[68,5630,5631],{},"Symbolische Links",[49,5633,5634,5637],{},[68,5635,5636],{},"-type p",[68,5638,5639],{},"Named Pipes",[49,5641,5642,5645],{},[68,5643,5644],{},"-type s",[68,5646,5647],{},"Sockets",[49,5649,5650,5653],{},[68,5651,5652],{},"-type b",[68,5654,5655],{},"Block-Gerät",[49,5657,5658,5661],{},[68,5659,5660],{},"-type c",[68,5662,5663],{},"Zeichen-Gerät",[2355,5665,5667],{"id":5666},"größe-und-zeit","Größe und Zeit",[43,5669,5670,5682],{},[46,5671,5672],{},[49,5673,5674,5678],{},[52,5675,5676],{},[17,5677,5586],{},[52,5679,5680],{},[17,5681,61],{},[63,5683,5684,5695,5703,5711,5719,5727,5735,5743,5751,5759,5767],{},[49,5685,5686,5692],{},[68,5687,5688,5689],{},"-size +N",[31,5690,5691],{},"c\u002Fk\u002FM\u002FG",[68,5693,5694],{},"Größer als N (c=Bytes, k=1024B, M=Mega, G=Giga)",[49,5696,5697,5700],{},[68,5698,5699],{},"-size -N",[68,5701,5702],{},"Kleiner als N",[49,5704,5705,5708],{},[68,5706,5707],{},"-size N",[68,5709,5710],{},"Exakt N",[49,5712,5713,5716],{},[68,5714,5715],{},"-empty",[68,5717,5718],{},"Leere Dateien oder leere Verzeichnisse",[49,5720,5721,5724],{},[68,5722,5723],{},"-mtime N",[68,5725,5726],{},"Inhalt geändert vor genau N*24h",[49,5728,5729,5732],{},[68,5730,5731],{},"-mtime -N",[68,5733,5734],{},"Geändert innerhalb der letzten N Tage",[49,5736,5737,5740],{},[68,5738,5739],{},"-mtime +N",[68,5741,5742],{},"Geändert vor mehr als N Tagen",[49,5744,5745,5748],{},[68,5746,5747],{},"-atime N",[68,5749,5750],{},"Letzter Zugriff vor N Tagen",[49,5752,5753,5756],{},[68,5754,5755],{},"-ctime N",[68,5757,5758],{},"Status (Inode) geändert vor N Tagen",[49,5760,5761,5764],{},[68,5762,5763],{},"-newer DATEI",[68,5765,5766],{},"Neuer als angegebene Datei",[49,5768,5769,5772],{},[68,5770,5771],{},"-newermt DATUM",[68,5773,5774],{},"Neuer als angegebenes Datum",[2355,5776,5778],{"id":5777},"eigentümer-und-berechtigungen","Eigentümer und Berechtigungen",[43,5780,5781,5793],{},[46,5782,5783],{},[49,5784,5785,5789],{},[52,5786,5787],{},[17,5788,5586],{},[52,5790,5791],{},[17,5792,61],{},[63,5794,5795,5803,5811,5819,5827,5835,5843,5851,5859],{},[49,5796,5797,5800],{},[68,5798,5799],{},"-user NAME",[68,5801,5802],{},"Gehört diesem Benutzer",[49,5804,5805,5808],{},[68,5806,5807],{},"-group NAME",[68,5809,5810],{},"Gehört dieser Gruppe",[49,5812,5813,5816],{},[68,5814,5815],{},"-uid N",[68,5817,5818],{},"Numerische UID",[49,5820,5821,5824],{},[68,5822,5823],{},"-gid N",[68,5825,5826],{},"Numerische GID",[49,5828,5829,5832],{},[68,5830,5831],{},"-nouser",[68,5833,5834],{},"Kein gültiger Benutzer (verwaiste Dateien)",[49,5836,5837,5840],{},[68,5838,5839],{},"-nogroup",[68,5841,5842],{},"Keine gültige Gruppe",[49,5844,5845,5848],{},[68,5846,5847],{},"-perm MODUS",[68,5849,5850],{},"Exakt diese Berechtigungen",[49,5852,5853,5856],{},[68,5854,5855],{},"-perm -MODUS",[68,5857,5858],{},"Mindestens diese Bits gesetzt",[49,5860,5861,5864],{},[68,5862,5863],{},"-perm \u002FMODUS",[68,5865,5866],{},"Mindestens eines dieser Bits gesetzt",[2355,5868,5870],{"id":5869},"navigation","Navigation",[43,5872,5873,5885],{},[46,5874,5875],{},[49,5876,5877,5881],{},[52,5878,5879],{},[17,5880,5586],{},[52,5882,5883],{},[17,5884,61],{},[63,5886,5887,5895,5903,5911],{},[49,5888,5889,5892],{},[68,5890,5891],{},"-maxdepth N",[68,5893,5894],{},"Maximal N Verzeichnisebenen tief suchen",[49,5896,5897,5900],{},[68,5898,5899],{},"-mindepth N",[68,5901,5902],{},"Erst ab Tiefe N suchen",[49,5904,5905,5908],{},[68,5906,5907],{},"-depth",[68,5909,5910],{},"Verzeichnisinhalt vor dem Verzeichnis selbst verarbeiten",[49,5912,5913,5916],{},[68,5914,5915],{},"-follow",[68,5917,5918],{},"Symbolischen Links folgen",[2355,5920,5922],{"id":5921},"aktionen","Aktionen",[43,5924,5925,5937],{},[46,5926,5927],{},[49,5928,5929,5933],{},[52,5930,5931],{},[17,5932,5586],{},[52,5934,5935],{},[17,5936,61],{},[63,5938,5939,5947,5955,5963,5971,5979,5987],{},[49,5940,5941,5944],{},[68,5942,5943],{},"-print",[68,5945,5946],{},"Pfad ausgeben (Standard)",[49,5948,5949,5952],{},[68,5950,5951],{},"-print0",[68,5953,5954],{},"Pfad ausgeben, mit Null-Byte getrennt (für xargs -0)",[49,5956,5957,5960],{},[68,5958,5959],{},"-ls",[68,5961,5962],{},"Ausführliches ls -l-Format ausgeben",[49,5964,5965,5968],{},[68,5966,5967],{},"-delete",[68,5969,5970],{},"Gefundene Dateien\u002Fleere Verzeichnisse löschen",[49,5972,5973,5976],{},[68,5974,5975],{},"-exec BEFEHL {} ;",[68,5977,5978],{},"Befehl für jede Datei einzeln ausführen",[49,5980,5981,5984],{},[68,5982,5983],{},"-exec BEFEHL {} +",[68,5985,5986],{},"Befehl einmal mit allen Dateien ausführen (effizienter)",[49,5988,5989,5992],{},[68,5990,5991],{},"-ok BEFEHL {} ;",[68,5993,5994],{},"Wie -exec, aber mit Bestätigungsabfrage",[2355,5996,5998],{"id":5997},"logik","Logik",[43,6000,6001,6013],{},[46,6002,6003],{},[49,6004,6005,6009],{},[52,6006,6007],{},[17,6008,5586],{},[52,6010,6011],{},[17,6012,61],{},[63,6014,6015,6023,6031,6039],{},[49,6016,6017,6020],{},[68,6018,6019],{},"-not \u002F !",[68,6021,6022],{},"Negation",[49,6024,6025,6028],{},[68,6026,6027],{},"-and \u002F -a",[68,6029,6030],{},"UND (Standard, implizit)",[49,6032,6033,6036],{},[68,6034,6035],{},"-or \u002F -o",[68,6037,6038],{},"ODER",[49,6040,6041,6044],{},[68,6042,6043],{},"( AUSDRUCK )",[68,6045,6046],{},"Gruppierung",[38,6048,193],{"id":6049},"beispiele-8",[10,6051,6053],{"id":6052},"alle-txt-dateien-ab-aktuellem-verzeichnis","Alle .txt-Dateien ab aktuellem Verzeichnis",[205,6055,6057],{"className":207,"code":6056,"language":209,"meta":210,"style":210},"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",[212,6058,6059,6071,6075,6080,6084,6102,6106,6111,6115,6129,6133,6138,6142,6161,6165,6170,6174,6191,6195,6200,6204,6222,6226,6231,6235,6255,6259,6264,6268,6286,6290,6295,6299,6314,6318,6323,6327,6346,6350,6355,6359,6374,6378,6383,6387,6403,6407,6412,6416,6442,6446,6451,6455,6476,6480,6485,6489,6517,6521,6526,6530,6550,6555,6561,6566,6587,6592,6598,6603,6636,6641,6647,6652],{"__ignoreMap":210},[31,6060,6061,6063,6065,6068],{"class":216,"line":217},[31,6062,2500],{"class":220},[31,6064,3598],{"class":332},[31,6066,6067],{"class":223}," -name",[31,6069,6070],{"class":332}," \"*.txt\"\n",[31,6072,6073],{"class":216,"line":227},[31,6074,231],{"emptyLinePlaceholder":230},[31,6076,6077],{"class":216,"line":234},[31,6078,6079],{"class":237},"# Alle .conf-Dateien in \u002Fetc (case-insensitive)\n",[31,6081,6082],{"class":216,"line":241},[31,6083,231],{"emptyLinePlaceholder":230},[31,6085,6086,6088,6091,6094,6097,6099],{"class":216,"line":246},[31,6087,2500],{"class":220},[31,6089,6090],{"class":332}," \u002Fetc",[31,6092,6093],{"class":223}," -iname",[31,6095,6096],{"class":332}," \"*.conf\"",[31,6098,2506],{"class":223},[31,6100,6101],{"class":332}," f\n",[31,6103,6104],{"class":216,"line":254},[31,6105,231],{"emptyLinePlaceholder":230},[31,6107,6108],{"class":216,"line":259},[31,6109,6110],{"class":237},"# Leere Dateien finden\n",[31,6112,6113],{"class":216,"line":265},[31,6114,231],{"emptyLinePlaceholder":230},[31,6116,6117,6119,6122,6124,6126],{"class":216,"line":270},[31,6118,2500],{"class":220},[31,6120,6121],{"class":332}," \u002Ftmp",[31,6123,2506],{"class":223},[31,6125,2509],{"class":332},[31,6127,6128],{"class":223}," -empty\n",[31,6130,6131],{"class":216,"line":278},[31,6132,231],{"emptyLinePlaceholder":230},[31,6134,6135],{"class":216,"line":283},[31,6136,6137],{"class":237},"# Dateien größer als 100MB\n",[31,6139,6140],{"class":216,"line":289},[31,6141,231],{"emptyLinePlaceholder":230},[31,6143,6144,6146,6148,6150,6152,6155,6158],{"class":216,"line":294},[31,6145,2500],{"class":220},[31,6147,2503],{"class":332},[31,6149,2506],{"class":223},[31,6151,2509],{"class":332},[31,6153,6154],{"class":223}," -size",[31,6156,6157],{"class":332}," +100M",[31,6159,6160],{"class":223}," -ls\n",[31,6162,6163],{"class":216,"line":807},[31,6164,231],{"emptyLinePlaceholder":230},[31,6166,6167],{"class":216,"line":812},[31,6168,6169],{"class":237},"# Dateien in den letzten 24 Stunden geändert\n",[31,6171,6172],{"class":216,"line":821},[31,6173,231],{"emptyLinePlaceholder":230},[31,6175,6176,6178,6181,6183,6185,6188],{"class":216,"line":826},[31,6177,2500],{"class":220},[31,6179,6180],{"class":332}," \u002Fhome",[31,6182,2506],{"class":223},[31,6184,2509],{"class":332},[31,6186,6187],{"class":223}," -mtime",[31,6189,6190],{"class":223}," -1\n",[31,6192,6193],{"class":216,"line":837},[31,6194,231],{"emptyLinePlaceholder":230},[31,6196,6197],{"class":216,"line":842},[31,6198,6199],{"class":237},"# Dateien älter als 30 Tage im \u002Ftmp-Verzeichnis löschen\n",[31,6201,6202],{"class":216,"line":848},[31,6203,231],{"emptyLinePlaceholder":230},[31,6205,6206,6208,6210,6212,6214,6216,6219],{"class":216,"line":853},[31,6207,2500],{"class":220},[31,6209,6121],{"class":332},[31,6211,2506],{"class":223},[31,6213,2509],{"class":332},[31,6215,6187],{"class":223},[31,6217,6218],{"class":332}," +30",[31,6220,6221],{"class":223}," -delete\n",[31,6223,6224],{"class":216,"line":868},[31,6225,231],{"emptyLinePlaceholder":230},[31,6227,6228],{"class":216,"line":873},[31,6229,6230],{"class":237},"# SUID-Bit-Dateien finden (Sicherheitscheck)\n",[31,6232,6233],{"class":216,"line":879},[31,6234,231],{"emptyLinePlaceholder":230},[31,6236,6237,6239,6241,6243,6245,6247,6249,6251,6253],{"class":216,"line":884},[31,6238,2500],{"class":220},[31,6240,2503],{"class":332},[31,6242,2506],{"class":223},[31,6244,2509],{"class":332},[31,6246,2512],{"class":223},[31,6248,2515],{"class":223},[31,6250,2518],{"class":223},[31,6252,2521],{"class":336},[31,6254,2524],{"class":332},[31,6256,6257],{"class":216,"line":1405},[31,6258,231],{"emptyLinePlaceholder":230},[31,6260,6261],{"class":216,"line":1410},[31,6262,6263],{"class":237},"# SGID-Bit-Verzeichnisse finden\n",[31,6265,6266],{"class":216,"line":1416},[31,6267,231],{"emptyLinePlaceholder":230},[31,6269,6270,6272,6274,6276,6278,6280,6282,6284],{"class":216,"line":1421},[31,6271,2500],{"class":220},[31,6273,2503],{"class":332},[31,6275,2506],{"class":223},[31,6277,2729],{"class":332},[31,6279,2512],{"class":223},[31,6281,2734],{"class":223},[31,6283,2521],{"class":336},[31,6285,2524],{"class":332},[31,6287,6288],{"class":216,"line":1434},[31,6289,231],{"emptyLinePlaceholder":230},[31,6291,6292],{"class":216,"line":1439},[31,6293,6294],{"class":237},"# Dateien mit genau Rechten 777 finden\n",[31,6296,6297],{"class":216,"line":1445},[31,6298,231],{"emptyLinePlaceholder":230},[31,6300,6301,6303,6305,6307,6310,6312],{"class":216,"line":1450},[31,6302,2500],{"class":220},[31,6304,6121],{"class":332},[31,6306,2512],{"class":223},[31,6308,6309],{"class":223}," 777",[31,6311,2506],{"class":223},[31,6313,6101],{"class":332},[31,6315,6316],{"class":216,"line":2244},[31,6317,231],{"emptyLinePlaceholder":230},[31,6319,6320],{"class":216,"line":2249},[31,6321,6322],{"class":237},"# Verwaiste Dateien finden (ohne gültigen Eigentümer)\n",[31,6324,6325],{"class":216,"line":2255},[31,6326,231],{"emptyLinePlaceholder":230},[31,6328,6329,6331,6333,6336,6339,6342,6344],{"class":216,"line":2260},[31,6330,2500],{"class":220},[31,6332,2503],{"class":332},[31,6334,6335],{"class":223}," -nouser",[31,6337,6338],{"class":223}," -o",[31,6340,6341],{"class":223}," -nogroup",[31,6343,2521],{"class":336},[31,6345,2524],{"class":332},[31,6347,6348],{"class":216,"line":2270},[31,6349,231],{"emptyLinePlaceholder":230},[31,6351,6352],{"class":216,"line":2275},[31,6353,6354],{"class":237},"# Dateien des Benutzers alice\n",[31,6356,6357],{"class":216,"line":2281},[31,6358,231],{"emptyLinePlaceholder":230},[31,6360,6361,6363,6365,6368,6370,6372],{"class":216,"line":2286},[31,6362,2500],{"class":220},[31,6364,6180],{"class":332},[31,6366,6367],{"class":223}," -user",[31,6369,333],{"class":332},[31,6371,2506],{"class":223},[31,6373,6101],{"class":332},[31,6375,6376],{"class":216,"line":5316},[31,6377,231],{"emptyLinePlaceholder":230},[31,6379,6380],{"class":216,"line":5321},[31,6381,6382],{"class":237},"# Auf eine Verzeichnistiefe begrenzen\n",[31,6384,6385],{"class":216,"line":5327},[31,6386,231],{"emptyLinePlaceholder":230},[31,6388,6389,6391,6393,6396,6398,6400],{"class":216,"line":5332},[31,6390,2500],{"class":220},[31,6392,6090],{"class":332},[31,6394,6395],{"class":223}," -maxdepth",[31,6397,2549],{"class":223},[31,6399,6067],{"class":223},[31,6401,6402],{"class":332}," \"*.conf\"\n",[31,6404,6405],{"class":216,"line":5353},[31,6406,231],{"emptyLinePlaceholder":230},[31,6408,6409],{"class":216,"line":5358},[31,6410,6411],{"class":237},"# Ausführen: alle .sh-Dateien ausführbar machen\n",[31,6413,6414],{"class":216,"line":5366},[31,6415,231],{"emptyLinePlaceholder":230},[31,6417,6418,6420,6422,6424,6427,6430,6433,6436,6439],{"class":216,"line":5371},[31,6419,2500],{"class":220},[31,6421,3598],{"class":332},[31,6423,6067],{"class":223},[31,6425,6426],{"class":332}," \"*.sh\"",[31,6428,6429],{"class":223}," -exec",[31,6431,6432],{"class":332}," chmod",[31,6434,6435],{"class":332}," +x",[31,6437,6438],{"class":332}," {}",[31,6440,6441],{"class":223}," \\;\n",[31,6443,6444],{"class":216,"line":5377},[31,6445,231],{"emptyLinePlaceholder":230},[31,6447,6448],{"class":216,"line":5382},[31,6449,6450],{"class":237},"# Effizienter mit + (ein Aufruf für alle Dateien)\n",[31,6452,6453],{"class":216,"line":5388},[31,6454,231],{"emptyLinePlaceholder":230},[31,6456,6457,6459,6461,6463,6466,6468,6471,6473],{"class":216,"line":5393},[31,6458,2500],{"class":220},[31,6460,3598],{"class":332},[31,6462,6067],{"class":223},[31,6464,6465],{"class":332}," \"*.log\"",[31,6467,6429],{"class":223},[31,6469,6470],{"class":332}," gzip",[31,6472,6438],{"class":332},[31,6474,6475],{"class":332}," +\n",[31,6477,6478],{"class":216,"line":5405},[31,6479,231],{"emptyLinePlaceholder":230},[31,6481,6482],{"class":216,"line":5410},[31,6483,6484],{"class":237},"# Mit xargs kombinieren (null-sicher)\n",[31,6486,6487],{"class":216,"line":5416},[31,6488,231],{"emptyLinePlaceholder":230},[31,6490,6491,6493,6495,6497,6500,6503,6505,6508,6511,6514],{"class":216,"line":5421},[31,6492,2500],{"class":220},[31,6494,3598],{"class":332},[31,6496,6067],{"class":223},[31,6498,6499],{"class":332}," \"*.bak\"",[31,6501,6502],{"class":223}," -print0",[31,6504,337],{"class":336},[31,6506,6507],{"class":220}," xargs",[31,6509,6510],{"class":223}," -0",[31,6512,6513],{"class":332}," rm",[31,6515,6516],{"class":223}," -f\n",[31,6518,6519],{"class":216,"line":5435},[31,6520,231],{"emptyLinePlaceholder":230},[31,6522,6523],{"class":216,"line":5440},[31,6524,6525],{"class":237},"# Nicht in .git-Verzeichnissen suchen\n",[31,6527,6528],{"class":216,"line":5446},[31,6529,231],{"emptyLinePlaceholder":230},[31,6531,6532,6534,6536,6539,6542,6545,6547],{"class":216,"line":5451},[31,6533,2500],{"class":220},[31,6535,3598],{"class":332},[31,6537,6538],{"class":223}," -not",[31,6540,6541],{"class":223}," -path",[31,6543,6544],{"class":332}," \".\u002F.git\u002F\"",[31,6546,6067],{"class":223},[31,6548,6549],{"class":332}," \".py\"\n",[31,6551,6553],{"class":216,"line":6552},62,[31,6554,231],{"emptyLinePlaceholder":230},[31,6556,6558],{"class":216,"line":6557},63,[31,6559,6560],{"class":237},"# Dateien zwischen zwei Größen\n",[31,6562,6564],{"class":216,"line":6563},64,[31,6565,231],{"emptyLinePlaceholder":230},[31,6567,6569,6571,6573,6575,6577,6579,6582,6584],{"class":216,"line":6568},65,[31,6570,2500],{"class":220},[31,6572,3598],{"class":332},[31,6574,2506],{"class":223},[31,6576,2509],{"class":332},[31,6578,6154],{"class":223},[31,6580,6581],{"class":332}," +1k",[31,6583,6154],{"class":223},[31,6585,6586],{"class":223}," -10k\n",[31,6588,6590],{"class":216,"line":6589},66,[31,6591,231],{"emptyLinePlaceholder":230},[31,6593,6595],{"class":216,"line":6594},67,[31,6596,6597],{"class":237},"# Mehrere Namen mit ODER\n",[31,6599,6601],{"class":216,"line":6600},68,[31,6602,231],{"emptyLinePlaceholder":230},[31,6604,6606,6608,6610,6613,6616,6619,6621,6623,6626,6628,6630,6633],{"class":216,"line":6605},69,[31,6607,2500],{"class":220},[31,6609,3598],{"class":332},[31,6611,6612],{"class":363}," ( ",[31,6614,6615],{"class":223},"-name",[31,6617,6618],{"class":332}," \".jpg\"",[31,6620,6338],{"class":223},[31,6622,6067],{"class":223},[31,6624,6625],{"class":332}," \".png\"",[31,6627,6338],{"class":223},[31,6629,6067],{"class":223},[31,6631,6632],{"class":332}," \"*.gif\"",[31,6634,6635],{"class":363}," ) -type f\n",[31,6637,6639],{"class":216,"line":6638},70,[31,6640,231],{"emptyLinePlaceholder":230},[31,6642,6644],{"class":216,"line":6643},71,[31,6645,6646],{"class":237},"# Dateien neuer als eine Referenzdatei\n",[31,6648,6650],{"class":216,"line":6649},72,[31,6651,231],{"emptyLinePlaceholder":230},[31,6653,6655,6657,6659,6662,6665,6667],{"class":216,"line":6654},73,[31,6656,2500],{"class":220},[31,6658,3598],{"class":332},[31,6660,6661],{"class":223}," -newer",[31,6663,6664],{"class":332}," referenz.txt",[31,6666,2506],{"class":223},[31,6668,6101],{"class":332},[38,6670,350],{"id":6671},"ausgabe-8",[10,6673,6675],{"id":6674},"find-name-txt-type-f","find . -name \"*.txt\" -type f",[14,6677,6678],{},".\u002Fdokumente\u002Fnotizen.txt",[14,6680,6681],{},".\u002Fbackup\u002Falt.txt",[14,6683,6684],{},".\u002FREADME.txt",[10,6686,6688],{"id":6687},"find-varlog-type-f-mtime-1-ls","find \u002Fvar\u002Flog -type f -mtime -1 -ls",[14,6690,6691],{},"12345678 8 -rw-r--r-- 1 syslog adm 7194 Apr 29 09:58 \u002Fvar\u002Flog\u002Fsyslog",[14,6693,6694],{},"12345679 4 -rw-r--r-- 1 root adm 1302 Apr 29 08:00 \u002Fvar\u002Flog\u002Fauth.log",[10,6696,6698],{"id":6697},"find-type-f-perm-4000-2devnull","find \u002F -type f -perm -4000 2>\u002Fdev\u002Fnull",[14,6700,2380],{},[14,6702,6703],{},"\u002Fusr\u002Fbin\u002Fsu",[14,6705,6706],{},"\u002Fusr\u002Fbin\u002Fsudo",[14,6708,6709],{},"\u002Fusr\u002Fbin\u002Fmount",[10,6711,6712],{"id":6712},"awk",[14,6714,6715,6717,6718,6720,6721,6724],{},[17,6716,19],{}," Mächtiges Werkzeug zur strukturierten Textverarbeitung. ",[17,6719,6712],{}," liest Eingabe zeilenweise, teilt jede Zeile in Felder auf und wendet Muster-Aktions-Regeln an. Ideal für Logs, CSVs und ",[17,6722,6723],{},"\u002Fetc\u002Fpasswd","-ähnliche Dateien.",[14,6726,6727,26,6729],{},[17,6728,25],{},[17,6730,6731,6732,6734,6735],{},"awk ",[31,6733,33],{}," 'PROGRAMM' ",[31,6736,3263],{},[14,6738,6739],{},[17,6740,6741],{},"Grundstruktur eines awk-Programms",[205,6743,6745],{"className":207,"code":6744,"language":209,"meta":210,"style":210},"awk 'BEGIN { Initialisierungen }\n",[212,6746,6747],{"__ignoreMap":210},[31,6748,6749,6751],{"class":216,"line":217},[31,6750,6712],{"class":220},[31,6752,6753],{"class":332}," 'BEGIN { Initialisierungen }\n",[14,6755,6756,6757,6759],{},"\u002FMUSTER\u002F { Aktionen pro Zeile }",[584,6758],{},"\nEND { Abschlussaktionen }' datei.txt",[2365,6761,6762,6772,6781],{},[2368,6763,6764,6767,6768,6771],{},[17,6765,6766],{},"BEGIN"," – wird einmal ",[17,6769,6770],{},"vor"," dem ersten Zeileneinlesen ausgeführt",[2368,6773,6774,6767,6777,6780],{},[17,6775,6776],{},"END",[17,6778,6779],{},"nach"," dem letzten Zeileneinlesen ausgeführt",[2368,6782,6783,6784,6787],{},"Ohne Muster gilt die Aktion für ",[17,6785,6786],{},"jede"," Zeile",[38,6789,6791],{"id":6790},"eingebaute-variablen","Eingebaute Variablen",[43,6793,6794,6807],{},[46,6795,6796],{},[49,6797,6798,6803],{},[52,6799,6800],{},[17,6801,6802],{},"Variable",[52,6804,6805],{},[17,6806,61],{},[63,6808,6809,6817,6825,6833,6841,6849,6857,6865,6873,6881],{},[49,6810,6811,6814],{},[68,6812,6813],{},"$0",[68,6815,6816],{},"Komplette aktuelle Zeile",[49,6818,6819,6822],{},[68,6820,6821],{},"$1, $2, ... $NF",[68,6823,6824],{},"Felder der Zeile (1-basiert)",[49,6826,6827,6830],{},[68,6828,6829],{},"NF",[68,6831,6832],{},"Anzahl der Felder in der aktuellen Zeile",[49,6834,6835,6838],{},[68,6836,6837],{},"NR",[68,6839,6840],{},"Aktuelle Zeilennummer (gesamt)",[49,6842,6843,6846],{},[68,6844,6845],{},"FNR",[68,6847,6848],{},"Zeilennummer innerhalb der aktuellen Datei",[49,6850,6851,6854],{},[68,6852,6853],{},"FS",[68,6855,6856],{},"Eingabe-Feldtrenner (Standard: Leerzeichen\u002FTab)",[49,6858,6859,6862],{},[68,6860,6861],{},"OFS",[68,6863,6864],{},"Ausgabe-Feldtrenner",[49,6866,6867,6870],{},[68,6868,6869],{},"RS",[68,6871,6872],{},"Eingabe-Zeilentrenner (Standard: \\n)",[49,6874,6875,6878],{},[68,6876,6877],{},"ORS",[68,6879,6880],{},"Ausgabe-Zeilentrenner",[49,6882,6883,6886],{},[68,6884,6885],{},"FILENAME",[68,6887,6888],{},"Name der aktuellen Eingabedatei",[38,6890,101],{"id":6891},"flags-8",[43,6893,6894,6906],{},[46,6895,6896],{},[49,6897,6898,6902],{},[52,6899,6900],{},[17,6901,112],{},[52,6903,6904],{},[17,6905,61],{},[63,6907,6908,6916,6924],{},[49,6909,6910,6913],{},[68,6911,6912],{},"-F TRENNER",[68,6914,6915],{},"Feldtrenner festlegen (z.B. -F: oder -F\",\")",[49,6917,6918,6921],{},[68,6919,6920],{},"-v VAR=WERT",[68,6922,6923],{},"Variable vor Programmstart setzen",[49,6925,6926,6929],{},[68,6927,6928],{},"-f DATEI",[68,6930,6931],{},"awk-Programm aus Datei laden",[14,6933,6934],{},[17,6935,6936],{},"Vergleichsoperatoren",[43,6938,6939,6952],{},[46,6940,6941],{},[49,6942,6943,6948],{},[52,6944,6945],{},[17,6946,6947],{},"Operator",[52,6949,6950],{},[17,6951,61],{},[63,6953,6954,6962,6970,6978,6986,6994],{},[49,6955,6956,6959],{},[68,6957,6958],{},"==",[68,6960,6961],{},"Gleich",[49,6963,6964,6967],{},[68,6965,6966],{},"!=",[68,6968,6969],{},"Ungleich",[49,6971,6972,6975],{},[68,6973,6974],{},"\u003C, >",[68,6976,6977],{},"Kleiner\u002FGrößer",[49,6979,6980,6983],{},[68,6981,6982],{},"\u003C=, >=",[68,6984,6985],{},"Kleiner-gleich\u002FGrößer-gleich",[49,6987,6988,6991],{},[68,6989,6990],{},"~",[68,6992,6993],{},"Regulärer Ausdruck passt",[49,6995,6996,6999],{},[68,6997,6998],{},"!~",[68,7000,7001],{},"Regulärer Ausdruck passt nicht",[38,7003,7005],{"id":7004},"string-funktionen","String-Funktionen",[43,7007,7008,7021],{},[46,7009,7010],{},[49,7011,7012,7017],{},[52,7013,7014],{},[17,7015,7016],{},"Funktion",[52,7018,7019],{},[17,7020,61],{},[63,7022,7023,7031,7042,7050,7058,7069,7079,7087,7095,7103,7111],{},[49,7024,7025,7028],{},[68,7026,7027],{},"length(s)",[68,7029,7030],{},"Länge des Strings (ohne Arg: Länge von $0)",[49,7032,7033,7039],{},[68,7034,7035,7036,401],{},"substr(s, start ",[31,7037,7038],{},", len",[68,7040,7041],{},"Teilstring ab Position start, optional Länge len",[49,7043,7044,7047],{},[68,7045,7046],{},"index(s, such)",[68,7048,7049],{},"Position von such in s (0 = nicht gefunden)",[49,7051,7052,7055],{},[68,7053,7054],{},"split(s, arr, trenn)",[68,7056,7057],{},"s per Trenner in Array zerlegen; gibt Elementanzahl zurück",[49,7059,7060,7066],{},[68,7061,7062,7063,401],{},"sub(regex, ersatz ",[31,7064,7065],{},", s",[68,7067,7068],{},"Erste Übereinstimmung ersetzen (Standard: $0)",[49,7070,7071,7076],{},[68,7072,7073,7074,401],{},"gsub(regex, ersatz ",[31,7075,7065],{},[68,7077,7078],{},"Alle Übereinstimmungen ersetzen; gibt Anzahl zurück",[49,7080,7081,7084],{},[68,7082,7083],{},"match(s, regex)",[68,7085,7086],{},"Regex in s suchen – setzt RSTART (Position) und RLENGTH (Länge)",[49,7088,7089,7092],{},[68,7090,7091],{},"sprintf(format, ...)",[68,7093,7094],{},"Formatierter String (gibt String zurück, druckt nicht)",[49,7096,7097,7100],{},[68,7098,7099],{},"tolower(s)",[68,7101,7102],{},"Alle Zeichen in Kleinbuchstaben umwandeln",[49,7104,7105,7108],{},[68,7106,7107],{},"toupper(s)",[68,7109,7110],{},"Alle Zeichen in Großbuchstaben umwandeln",[49,7112,7113,7118],{},[68,7114,7115,7116,401],{},"gensub(regex, ersatz, flag ",[31,7117,7065],{},[68,7119,7120],{},"Erweitertes Ersetzen mit Rückreferenzen \\1 (gawk)",[14,7122,7123,7125,7126,7128,7129,7131,7132,7135],{},[17,7124,520],{}," In sub\u002Fgsub steht & im Ersatzstring für den gesamten gefundenen Text.",[584,7127],{},"\nBeispiel: gsub(\u002F",[31,7130,5530],{},"+\u002F, \"",[31,7133,7134],{},"&","\") → umschließt Zahlen mit eckigen Klammern.",[38,7137,7139],{"id":7138},"math-funktionen","Math-Funktionen",[43,7141,7142,7154],{},[46,7143,7144],{},[49,7145,7146,7150],{},[52,7147,7148],{},[17,7149,7016],{},[52,7151,7152],{},[17,7153,61],{},[63,7155,7156,7164,7172,7180,7188,7196,7204,7212],{},[49,7157,7158,7161],{},[68,7159,7160],{},"int(x)",[68,7162,7163],{},"Integer-Anteil (abschneiden, nicht runden)",[49,7165,7166,7169],{},[68,7167,7168],{},"sqrt(x)",[68,7170,7171],{},"Quadratwurzel",[49,7173,7174,7177],{},[68,7175,7176],{},"sin(x), cos(x)",[68,7178,7179],{},"Sinus \u002F Kosinus (Argument in Radiant)",[49,7181,7182,7185],{},[68,7183,7184],{},"atan2(y, x)",[68,7186,7187],{},"Arcustangens von y\u002Fx",[49,7189,7190,7193],{},[68,7191,7192],{},"exp(x)",[68,7194,7195],{},"e hoch x",[49,7197,7198,7201],{},[68,7199,7200],{},"log(x)",[68,7202,7203],{},"Natürlicher Logarithmus (Basis e)",[49,7205,7206,7209],{},[68,7207,7208],{},"rand()",[68,7210,7211],{},"Zufallszahl im Bereich [0, 1)",[49,7213,7214,7220],{},[68,7215,7216,7217,401],{},"srand(",[31,7218,7219],{},"seed",[68,7221,7222],{},"Zufallszahlen-Seed setzen; gibt alten Seed zurück",[38,7224,7226],{"id":7225},"kontrollstrukturen","Kontrollstrukturen",[10,7228,7230],{"id":7229},"if-else","if \u002F else",[14,7232,7233,7234,7236,7237,7240],{},"{ ",[17,7235,5335],{}," ($3 > 100) print \"groß\"; ",[17,7238,7239],{},"else"," print \"klein\" }",[10,7242,7244],{"id":7243},"if-else-if-else","if \u002F else if \u002F else",[14,7246,7247],{},"{",[14,7249,7250,7252],{},[17,7251,5335],{}," ($3 > 100) print \"groß\";",[14,7254,7255,26,7257,7259],{},[17,7256,7239],{},[17,7258,5335],{}," ($3 > 50) print \"mittel\";",[14,7261,7262,7264],{},[17,7263,7239],{}," print \"klein\"",[14,7266,7267],{},"}",[10,7269,7271],{"id":7270},"for-schleife-klassisch-über-alle-felder-einer-zeile-iterieren","for-Schleife (klassisch, über alle Felder einer Zeile iterieren)",[14,7273,7233,7274,7277],{},[17,7275,7276],{},"for"," (i = 1; i \u003C= NF; i++) print i\": \"$i }",[10,7279,7281],{"id":7280},"for-schleife-über-array-schlüssel-reihenfolge-nicht-garantiert","for-Schleife über Array-Schlüssel (Reihenfolge nicht garantiert)",[14,7283,7284,7285,7287,7288,7291,7292,7295],{},"END { ",[17,7286,7276],{}," (key ",[17,7289,7290],{},"in"," count) print key, count",[31,7293,7294],{},"key"," }",[10,7297,7299],{"id":7298},"while-schleife","while-Schleife",[14,7301,7302,7303,7306],{},"{ i = 1; ",[17,7304,7305],{},"while"," (i \u003C= NF) { print $i; i++ } }",[10,7308,7309],{"id":7309},"do-while",[14,7311,7312,7313,7316,7317,7319],{},"BEGIN { i = 1; ",[17,7314,7315],{},"do"," { print i; i++ } ",[17,7318,7305],{}," (i \u003C= 5) }",[10,7321,7323],{"id":7322},"next-restliche-regeln-überspringen-sofort-nächste-zeile-holen","next: restliche Regeln überspringen, sofort nächste Zeile holen",[14,7325,7326],{},"\u002F^#\u002F { next } # Kommentarzeilen ignorieren",[14,7328,7329],{},"{ print } # (wird für Kommentarzeilen nie erreicht)",[10,7331,7333],{"id":7332},"exit-awk-sofort-beenden-end-block-wird-trotzdem-noch-ausgeführt","exit: awk sofort beenden (END-Block wird trotzdem noch ausgeführt)",[38,7335,7337],{"id":7336},"nr-100-exit-nur-die-ersten-100-zeilen-verarbeiten","NR > 100 { exit } # Nur die ersten 100 Zeilen verarbeiten",[38,7339,193],{"id":7340},"beispiele-9",[10,7342,7344],{"id":7343},"erste-spalte-ausgeben","Erste Spalte ausgeben",[205,7346,7348],{"className":207,"code":7347,"language":209,"meta":210,"style":210},"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",[212,7349,7350,7359,7363,7368,7372,7381,7385,7390,7394,7405,7409,7414,7418,7429,7433,7438,7442,7453,7457,7462,7466,7475,7479,7484,7488,7497,7501,7506,7510,7521,7525,7530,7534,7545,7549,7554,7558,7568,7572,7577,7581,7590,7594,7599,7603,7612,7616,7621,7625,7643,7647,7652,7656,7667,7671,7676,7680,7691,7695,7700,7704,7713,7717,7722,7726,7735,7739,7744,7748],{"__ignoreMap":210},[31,7351,7352,7354,7357],{"class":216,"line":217},[31,7353,6712],{"class":220},[31,7355,7356],{"class":332}," '{print $1}'",[31,7358,1256],{"class":332},[31,7360,7361],{"class":216,"line":227},[31,7362,231],{"emptyLinePlaceholder":230},[31,7364,7365],{"class":216,"line":234},[31,7366,7367],{"class":237},"# Letzte Spalte ausgeben (NF = Anzahl Felder)\n",[31,7369,7370],{"class":216,"line":241},[31,7371,231],{"emptyLinePlaceholder":230},[31,7373,7374,7376,7379],{"class":216,"line":246},[31,7375,6712],{"class":220},[31,7377,7378],{"class":332}," '{print $NF}'",[31,7380,1256],{"class":332},[31,7382,7383],{"class":216,"line":254},[31,7384,231],{"emptyLinePlaceholder":230},[31,7386,7387],{"class":216,"line":259},[31,7388,7389],{"class":237},"# Benutzernamen aus \u002Fetc\u002Fpasswd\n",[31,7391,7392],{"class":216,"line":265},[31,7393,231],{"emptyLinePlaceholder":230},[31,7395,7396,7398,7401,7403],{"class":216,"line":270},[31,7397,6712],{"class":220},[31,7399,7400],{"class":223}," -F:",[31,7402,7356],{"class":332},[31,7404,3548],{"class":332},[31,7406,7407],{"class":216,"line":278},[31,7408,231],{"emptyLinePlaceholder":230},[31,7410,7411],{"class":216,"line":283},[31,7412,7413],{"class":237},"# Benutzername + Home-Verzeichnis + Shell\n",[31,7415,7416],{"class":216,"line":289},[31,7417,231],{"emptyLinePlaceholder":230},[31,7419,7420,7422,7424,7427],{"class":216,"line":294},[31,7421,6712],{"class":220},[31,7423,7400],{"class":223},[31,7425,7426],{"class":332}," '{print $1, $6, $7}'",[31,7428,3548],{"class":332},[31,7430,7431],{"class":216,"line":807},[31,7432,231],{"emptyLinePlaceholder":230},[31,7434,7435],{"class":216,"line":812},[31,7436,7437],{"class":237},"# Eigener Ausgabe-Trennzeichen\n",[31,7439,7440],{"class":216,"line":821},[31,7441,231],{"emptyLinePlaceholder":230},[31,7443,7444,7446,7448,7451],{"class":216,"line":826},[31,7445,6712],{"class":220},[31,7447,7400],{"class":223},[31,7449,7450],{"class":332}," 'OFS=\" | \" {print $1, $3, $6}'",[31,7452,3548],{"class":332},[31,7454,7455],{"class":216,"line":837},[31,7456,231],{"emptyLinePlaceholder":230},[31,7458,7459],{"class":216,"line":842},[31,7460,7461],{"class":237},"# Zeilennummer + Inhalt\n",[31,7463,7464],{"class":216,"line":848},[31,7465,231],{"emptyLinePlaceholder":230},[31,7467,7468,7470,7473],{"class":216,"line":853},[31,7469,6712],{"class":220},[31,7471,7472],{"class":332}," '{print NR\": \"$0}'",[31,7474,1256],{"class":332},[31,7476,7477],{"class":216,"line":868},[31,7478,231],{"emptyLinePlaceholder":230},[31,7480,7481],{"class":216,"line":873},[31,7482,7483],{"class":237},"# Nur Zeilen die \"root\" enthalten\n",[31,7485,7486],{"class":216,"line":879},[31,7487,231],{"emptyLinePlaceholder":230},[31,7489,7490,7492,7495],{"class":216,"line":884},[31,7491,6712],{"class":220},[31,7493,7494],{"class":332}," '\u002Froot\u002F {print}'",[31,7496,3548],{"class":332},[31,7498,7499],{"class":216,"line":1405},[31,7500,231],{"emptyLinePlaceholder":230},[31,7502,7503],{"class":216,"line":1410},[31,7504,7505],{"class":237},"# Zeilen ausgeben bei denen Feld 3 (UID) größer 1000 ist\n",[31,7507,7508],{"class":216,"line":1416},[31,7509,231],{"emptyLinePlaceholder":230},[31,7511,7512,7514,7516,7519],{"class":216,"line":1421},[31,7513,6712],{"class":220},[31,7515,7400],{"class":223},[31,7517,7518],{"class":332}," '$3 > 1000 {print $1, $3}'",[31,7520,3548],{"class":332},[31,7522,7523],{"class":216,"line":1434},[31,7524,231],{"emptyLinePlaceholder":230},[31,7526,7527],{"class":216,"line":1439},[31,7528,7529],{"class":237},"# Zeilen ausgeben wo Shell NICHT \u002Fnologin ist\n",[31,7531,7532],{"class":216,"line":1445},[31,7533,231],{"emptyLinePlaceholder":230},[31,7535,7536,7538,7540,7543],{"class":216,"line":1450},[31,7537,6712],{"class":220},[31,7539,7400],{"class":223},[31,7541,7542],{"class":332}," '$7 !~ \u002Fnologin\u002F {print $1, $7}'",[31,7544,3548],{"class":332},[31,7546,7547],{"class":216,"line":2244},[31,7548,231],{"emptyLinePlaceholder":230},[31,7550,7551],{"class":216,"line":2249},[31,7552,7553],{"class":237},"# Summe einer Spalte berechnen\n",[31,7555,7556],{"class":216,"line":2255},[31,7557,231],{"emptyLinePlaceholder":230},[31,7559,7560,7562,7565],{"class":216,"line":2260},[31,7561,6712],{"class":220},[31,7563,7564],{"class":332}," '{sum += $1} END {print \"Summe:\", sum}'",[31,7566,7567],{"class":332}," zahlen.txt\n",[31,7569,7570],{"class":216,"line":2270},[31,7571,231],{"emptyLinePlaceholder":230},[31,7573,7574],{"class":216,"line":2275},[31,7575,7576],{"class":237},"# Durchschnitt berechnen\n",[31,7578,7579],{"class":216,"line":2281},[31,7580,231],{"emptyLinePlaceholder":230},[31,7582,7583,7585,7588],{"class":216,"line":2286},[31,7584,6712],{"class":220},[31,7586,7587],{"class":332}," '{sum += $1; count++} END {print \"Durchschnitt:\", sum\u002Fcount}'",[31,7589,7567],{"class":332},[31,7591,7592],{"class":216,"line":5316},[31,7593,231],{"emptyLinePlaceholder":230},[31,7595,7596],{"class":216,"line":5321},[31,7597,7598],{"class":237},"# BEGIN und END mit Feldtrenner setzen\n",[31,7600,7601],{"class":216,"line":5327},[31,7602,231],{"emptyLinePlaceholder":230},[31,7604,7605,7607,7610],{"class":216,"line":5332},[31,7606,6712],{"class":220},[31,7608,7609],{"class":332}," 'BEGIN{print \"=== Start ===\"; FS=\":\"} {print $1} END{print \"=== Ende ===\"}'",[31,7611,3548],{"class":332},[31,7613,7614],{"class":216,"line":5353},[31,7615,231],{"emptyLinePlaceholder":230},[31,7617,7618],{"class":216,"line":5358},[31,7619,7620],{"class":237},"# Variable übergeben\n",[31,7622,7623],{"class":216,"line":5366},[31,7624,231],{"emptyLinePlaceholder":230},[31,7626,7627,7629,7631,7634,7636,7638,7641],{"class":216,"line":5371},[31,7628,6712],{"class":220},[31,7630,5144],{"class":223},[31,7632,7633],{"class":332}," grenze=",[31,7635,370],{"class":223},[31,7637,7400],{"class":223},[31,7639,7640],{"class":332}," '$3 > grenze {print $1}'",[31,7642,3548],{"class":332},[31,7644,7645],{"class":216,"line":5377},[31,7646,231],{"emptyLinePlaceholder":230},[31,7648,7649],{"class":216,"line":5382},[31,7650,7651],{"class":237},"# printf für formatierte Ausgabe\n",[31,7653,7654],{"class":216,"line":5388},[31,7655,231],{"emptyLinePlaceholder":230},[31,7657,7658,7660,7662,7665],{"class":216,"line":5393},[31,7659,6712],{"class":220},[31,7661,7400],{"class":223},[31,7663,7664],{"class":332}," '{printf \"%-15s UID: %4d\\n\", $1, $3}'",[31,7666,3548],{"class":332},[31,7668,7669],{"class":216,"line":5405},[31,7670,231],{"emptyLinePlaceholder":230},[31,7672,7673],{"class":216,"line":5410},[31,7674,7675],{"class":237},"# Feld ersetzen und neu ausgeben\n",[31,7677,7678],{"class":216,"line":5416},[31,7679,231],{"emptyLinePlaceholder":230},[31,7681,7682,7684,7686,7689],{"class":216,"line":5421},[31,7683,6712],{"class":220},[31,7685,7400],{"class":223},[31,7687,7688],{"class":332}," 'OFS=\":\" {$7=\"\u002Fbin\u002Fsh\"; print}'",[31,7690,3548],{"class":332},[31,7692,7693],{"class":216,"line":5435},[31,7694,231],{"emptyLinePlaceholder":230},[31,7696,7697],{"class":216,"line":5440},[31,7698,7699],{"class":237},"# Zeilen zählen die ein Muster haben\n",[31,7701,7702],{"class":216,"line":5446},[31,7703,231],{"emptyLinePlaceholder":230},[31,7705,7706,7708,7711],{"class":216,"line":5451},[31,7707,6712],{"class":220},[31,7709,7710],{"class":332}," '\u002FERROR\u002F{count++} END{print count \" Fehler gefunden\"}'",[31,7712,4471],{"class":332},[31,7714,7715],{"class":216,"line":6552},[31,7716,231],{"emptyLinePlaceholder":230},[31,7718,7719],{"class":216,"line":6557},[31,7720,7721],{"class":237},"# Einzigartiger Trick: Duplikate entfernen (ohne sort)\n",[31,7723,7724],{"class":216,"line":6563},[31,7725,231],{"emptyLinePlaceholder":230},[31,7727,7728,7730,7733],{"class":216,"line":6568},[31,7729,6712],{"class":220},[31,7731,7732],{"class":332}," '!seen[$0]++'",[31,7734,1256],{"class":332},[31,7736,7737],{"class":216,"line":6589},[31,7738,231],{"emptyLinePlaceholder":230},[31,7740,7741],{"class":216,"line":6594},[31,7742,7743],{"class":237},"# CSV ab Zeile 2 verarbeiten (Header überspringen)\n",[31,7745,7746],{"class":216,"line":6600},[31,7747,231],{"emptyLinePlaceholder":230},[31,7749,7750,7752,7755],{"class":216,"line":6605},[31,7751,6712],{"class":220},[31,7753,7754],{"class":332}," 'NR > 1 {print $1, $3}'",[31,7756,4001],{"class":332},[38,7758,350],{"id":7759},"ausgabe-9",[10,7761,7763],{"id":7762},"awk-f-print-1-etcpasswd","awk -F: '{print $1}' \u002Fetc\u002Fpasswd",[14,7765,1062],{},[14,7767,7768],{},"daemon",[14,7770,7771],{},"bin",[14,7773,376],{},[10,7775,7777],{"id":7776},"awk-f-3-1000-print-1-3-etcpasswd","awk -F: '$3 > 1000 {print $1, $3}' \u002Fetc\u002Fpasswd",[14,7779,7780],{},"matta 1001",[14,7782,7783],{},"alice 1002",[10,7785,7787],{"id":7786},"awk-f-printf-15s-uid-4dn-1-3-etcpasswd","awk -F: '{printf \"%-15s UID: %4d\\n\", $1, $3}' \u002Fetc\u002Fpasswd",[14,7789,7790],{},"root UID: 0",[14,7792,7793],{},"daemon UID: 1",[14,7795,7796],{},"matta UID: 1000",[10,7798,7800],{"id":7799},"awk-sum-1-count-end-print-summe-sum-schnitt-sumcount-zahlentxt","awk '{sum += $1; count++} END {print \"Summe:\", sum, \"Schnitt:\", sum\u002Fcount}' zahlen.txt",[14,7802,7803],{},"Summe: 165 Schnitt: 16.5",[10,7805,7806],{"id":7806},"sed",[14,7808,7809,7811],{},[17,7810,19],{}," 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.",[14,7813,7814,7816,7817,7819,7820],{},[17,7815,25],{}," sed ",[31,7818,33],{}," 'SKRIPT' ",[31,7821,3263],{},[38,7823,7825],{"id":7824},"alle-kommandozeilen-optionen","Alle Kommandozeilen-Optionen",[43,7827,7828,7844],{},[46,7829,7830],{},[49,7831,7832,7836,7840],{},[52,7833,7834],{},[17,7835,5586],{},[52,7837,7838],{},[17,7839,117],{},[52,7841,7842],{},[17,7843,61],{},[63,7845,7846,7856,7867,7877,7893,7904,7914,7925,7935],{},[49,7847,7848,7850,7853],{},[68,7849,161],{},[68,7851,7852],{},"--quiet \u002F --silent",[68,7854,7855],{},"Automatische Ausgabe unterdrücken; Ausgabe nur mit p",[49,7857,7858,7861,7864],{},[68,7859,7860],{},"-e SKRIPT",[68,7862,7863],{},"--expression=SKRIPT",[68,7865,7866],{},"Skript direkt auf der Kommandozeile angeben",[49,7868,7869,7871,7874],{},[68,7870,6928],{},[68,7872,7873],{},"--file=DATEI",[68,7875,7876],{},"sed-Programm aus einer Datei lesen",[49,7878,7879,7884,7890],{},[68,7880,4676,7881],{},[31,7882,7883],{},"SUFFIX",[68,7885,7886,7887],{},"--in-place",[31,7888,7889],{},"=SUFFIX",[68,7891,7892],{},"Datei direkt bearbeiten (Backup mit optionalem Suffix)",[49,7894,7895,7898,7901],{},[68,7896,7897],{},"-E \u002F -r",[68,7899,7900],{},"--regexp-extended",[68,7902,7903],{},"Erweiterte reguläre Ausdrücke (ERE) aktivieren",[49,7905,7906,7908,7911],{},[68,7907,4885],{},[68,7909,7910],{},"--separate",[68,7912,7913],{},"Dateien separat behandeln (NR wird je Datei zurückgesetzt)",[49,7915,7916,7919,7922],{},[68,7917,7918],{},"-z",[68,7920,7921],{},"--null-data",[68,7923,7924],{},"NUL (\\0) als Zeilentrenner statt \\n (für find -print0)",[49,7926,7927,7930,7932],{},[68,7928,7929],{},"--sandbox",[68,7931],{},[68,7933,7934],{},"Sicherer Modus: e, r, w sind verboten",[49,7936,7937,7940,7942],{},[68,7938,7939],{},"--posix",[68,7941],{},[68,7943,7944],{},"Strikt POSIX-konform arbeiten",[38,7946,7948],{"id":7947},"sed-befehle-innerhalb-des-skripts","sed-Befehle (innerhalb des Skripts)",[43,7950,7951,7964],{},[46,7952,7953],{},[49,7954,7955,7960],{},[52,7956,7957],{},[17,7958,7959],{},"Befehl",[52,7961,7962],{},[17,7963,61],{},[63,7965,7966,7974,7982,7989,8000,8010,8018,8026,8034,8042,8049,8057,8065,8073,8081,8089,8097,8105,8113,8121,8129,8140,8150],{},[49,7967,7968,7971],{},[68,7969,7970],{},"s\u002FREGEX\u002FERSATZ\u002FFLAGS",[68,7972,7973],{},"Substituieren (Ersetzen)",[49,7975,7976,7979],{},[68,7977,7978],{},"d",[68,7980,7981],{},"Zeile löschen (delete)",[49,7983,7984,7986],{},[68,7985,14],{},[68,7987,7988],{},"Zeile ausgeben (print) – extra zur Normalausgabe",[49,7990,7991,7997],{},[68,7992,7993,7994],{},"q ",[31,7995,7996],{},"CODE",[68,7998,7999],{},"Verarbeitung beenden (quit), optionaler Exit-Code",[49,8001,8002,8007],{},[68,8003,8004,8005],{},"Q ",[31,8006,7996],{},[68,8008,8009],{},"Sofort beenden ohne letzte Zeile auszugeben",[49,8011,8012,8015],{},[68,8013,8014],{},"i\\TEXT",[68,8016,8017],{},"TEXT vor der Zeile einfügen (insert)",[49,8019,8020,8023],{},[68,8021,8022],{},"a\\TEXT",[68,8024,8025],{},"TEXT nach der Zeile anhängen (append)",[49,8027,8028,8031],{},[68,8029,8030],{},"c\\TEXT",[68,8032,8033],{},"Zeile durch TEXT ersetzen (change)",[49,8035,8036,8039],{},[68,8037,8038],{},"y\u002FZEICHEN\u002FERSATZ\u002F",[68,8040,8041],{},"Zeichen 1:1 austauschen (transliterate)",[49,8043,8044,8046],{},[68,8045,367],{},[68,8047,8048],{},"Aktuelle Zeilennummer ausgeben",[49,8050,8051,8054],{},[68,8052,8053],{},"n",[68,8055,8056],{},"Nächste Zeile in Pattern Space laden (und ausgeben)",[49,8058,8059,8062],{},[68,8060,8061],{},"N",[68,8063,8064],{},"Nächste Zeile anhängen (Pattern Space wird mehrzeilig)",[49,8066,8067,8070],{},[68,8068,8069],{},"D",[68,8071,8072],{},"Erste Zeile des Pattern Space löschen, von vorne beginnen",[49,8074,8075,8078],{},[68,8076,8077],{},"P",[68,8079,8080],{},"Erste Zeile des Pattern Space ausgeben",[49,8082,8083,8086],{},[68,8084,8085],{},"r DATEI",[68,8087,8088],{},"Inhalt von DATEI nach der aktuellen Zeile einfügen",[49,8090,8091,8094],{},[68,8092,8093],{},"R DATEI",[68,8095,8096],{},"Eine Zeile aus DATEI einfügen (gawk-Erweiterung)",[49,8098,8099,8102],{},[68,8100,8101],{},"w DATEI",[68,8103,8104],{},"Matching-Zeilen in DATEI schreiben",[49,8106,8107,8110],{},[68,8108,8109],{},"l",[68,8111,8112],{},"Zeile lesbar ausgeben (unsichtbare Zeichen als Escape)",[49,8114,8115,8118],{},[68,8116,8117],{},"e",[68,8119,8120],{},"Pattern Space als Shell-Befehl ausführen (GNU sed, unsicher!)",[49,8122,8123,8126],{},[68,8124,8125],{},": LABEL",[68,8127,8128],{},"Sprungmarke definieren",[49,8130,8131,8137],{},[68,8132,8133,8134],{},"b ",[31,8135,8136],{},"LABEL",[68,8138,8139],{},"Zu LABEL springen (oder an Ende, Schleife möglich)",[49,8141,8142,8147],{},[68,8143,8144,8145],{},"t ",[31,8146,8136],{},[68,8148,8149],{},"Zu LABEL springen wenn seit letztem t ein s erfolgreich war",[49,8151,8152,8157],{},[68,8153,8154,8155],{},"T ",[31,8156,8136],{},[68,8158,8159],{},"Zu LABEL springen wenn seit letztem T kein s erfolgreich war",[38,8161,8163],{"id":8162},"s-befehl-flags","s-Befehl Flags",[43,8165,8166,8178],{},[46,8167,8168],{},[49,8169,8170,8174],{},[52,8171,8172],{},[17,8173,112],{},[52,8175,8176],{},[17,8177,61],{},[63,8179,8180,8187,8194,8201,8208,8215],{},[49,8181,8182,8184],{},[68,8183,926],{},[68,8185,8186],{},"Alle Vorkommen ersetzen (global)",[49,8188,8189,8191],{},[68,8190,8061],{},[68,8192,8193],{},"Nur das N-te Vorkommen ersetzen (z.B. s\u002Fa\u002Fb\u002F2)",[49,8195,8196,8198],{},[68,8197,14],{},[68,8199,8200],{},"Ersetzte Zeile ausgeben (sinnvoll mit -n)",[49,8202,8203,8206],{},[68,8204,8205],{},"i \u002F I",[68,8207,4682],{},[49,8209,8210,8212],{},[68,8211,8117],{},[68,8213,8214],{},"Ergebnis als Shell-Befehl ausführen (GNU sed)",[49,8216,8217,8219],{},[68,8218,8101],{},[68,8220,8221],{},"Ersetzte Zeilen in DATEI schreiben",[38,8223,8225],{"id":8224},"adressierung-zeilen-auswählen","Adressierung (Zeilen auswählen)",[43,8227,8228,8241],{},[46,8229,8230],{},[49,8231,8232,8237],{},[52,8233,8234],{},[17,8235,8236],{},"Adresse",[52,8238,8239],{},[17,8240,61],{},[63,8242,8243,8250,8258,8266,8274,8282,8290,8298,8305],{},[49,8244,8245,8247],{},[68,8246,8061],{},[68,8248,8249],{},"Nur Zeile N",[49,8251,8252,8255],{},[68,8253,8254],{},"N,M",[68,8256,8257],{},"Zeilen N bis M",[49,8259,8260,8263],{},[68,8261,8262],{},"N~SCHRITT",[68,8264,8265],{},"Ab Zeile N jede SCHRITT-te Zeile (z.B. 1~2 = alle ungeraden)",[49,8267,8268,8271],{},[68,8269,8270],{},"0~SCHRITT",[68,8272,8273],{},"Jede SCHRITT-te Zeile (z.B. 0~2 = alle geraden)",[49,8275,8276,8279],{},[68,8277,8278],{},"\u002FREGEX\u002F",[68,8280,8281],{},"Alle Zeilen, die REGEX entsprechen",[49,8283,8284,8287],{},[68,8285,8286],{},"\u002FREGEX\u002F,\u002FREGEX2\u002F",[68,8288,8289],{},"Von erster REGEX-Zeile bis REGEX2-Zeile (Range)",[49,8291,8292,8295],{},[68,8293,8294],{},"N,\u002FREGEX\u002F",[68,8296,8297],{},"Ab Zeile N bis zur ersten REGEX-Zeile",[49,8299,8300,8302],{},[68,8301,4951],{},[68,8303,8304],{},"Letzte Zeile",[49,8306,8307,8310],{},[68,8308,8309],{},"!",[68,8311,8312],{},"Negation (z.B. 3!d = alle AUSSER Zeile 3 löschen)",[38,8314,8316],{"id":8315},"reguläre-ausdrücke-bre-vs-ere","Reguläre Ausdrücke (BRE vs ERE)",[43,8318,8319,8340],{},[46,8320,8321],{},[49,8322,8323,8328,8333],{},[52,8324,8325],{},[17,8326,8327],{},"Ausdruck",[52,8329,8330],{},[17,8331,8332],{},"BRE (Standard)",[52,8334,8335],{},[17,8336,8337,8338,401],{},"ERE (",[212,8339,4757],{},[63,8341,8342,8352,8361,8372,8383,8393,8403,8413,8422,8430],{},[49,8343,8344,8347,8350],{},[68,8345,8346],{},"Gruppe",[68,8348,8349],{},"(…)",[68,8351,8349],{},[49,8353,8354,8357,8359],{},[68,8355,8356],{},"Oder",[68,8358,5020],{},[68,8360,5023],{},[49,8362,8363,8366,8369],{},[68,8364,8365],{},"1 oder mehr",[68,8367,8368],{},"a* (mind. 0)",[68,8370,8371],{},"a+",[49,8373,8374,8377,8380],{},[68,8375,8376],{},"0 oder 1",[68,8378,8379],{},"(kein direktes)",[68,8381,8382],{},"a?",[49,8384,8385,8388,8391],{},[68,8386,8387],{},"N-mal",[68,8389,8390],{},"a{3}",[68,8392,8390],{},[49,8394,8395,8398,8401],{},[68,8396,8397],{},"N bis M mal",[68,8399,8400],{},"a{2,5}",[68,8402,8400],{},[49,8404,8405,8408,8411],{},[68,8406,8407],{},"Rückreferenz",[68,8409,8410],{},"\\1, \\2",[68,8412,8410],{},[49,8414,8415,8418,8420],{},[68,8416,8417],{},"Beliebig",[68,8419,1525],{},[68,8421,1525],{},[49,8423,8424,8426,8428],{},[68,8425,4946],{},[68,8427,2572],{},[68,8429,2572],{},[49,8431,8432,8434,8436],{},[68,8433,4954],{},[68,8435,4951],{},[68,8437,4951],{},[38,8439,193],{"id":8440},"beispiele-10",[10,8442,8444],{"id":8443},"ersetzen-s-befehl","─── Ersetzen (s-Befehl) ─────────────────────────────────────",[10,8446,8448],{"id":8447},"erstes-vorkommen-pro-zeile-ersetzen","Erstes Vorkommen pro Zeile ersetzen",[205,8450,8452],{"className":207,"code":8451,"language":209,"meta":210,"style":210},"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",[212,8453,8454,8463,8467,8472,8476,8485,8489,8494,8498,8507,8511,8516,8520,8529,8533,8538,8542,8552,8556,8561,8565,8576,8580,8585,8589,8606,8610,8615,8619,8628,8632,8637,8641,8652,8656,8661,8665,8670,8674,8683,8687,8692,8696,8705,8709,8722,8726,8731,8735,8744,8748,8753,8757,8766,8770,8775,8779,8788,8792,8797,8801,8810,8814,8819,8823,8832,8836,8841,8845,8854,8858,8863,8867,8872,8877,8889,8894,8900,8905,8917,8922,8928,8933,8945,8950,8956,8961,8973,8978,8984,8989,9001,9006,9012,9017,9023,9028,9038,9043,9049,9054,9064,9069,9075,9080,9090,9095,9101,9106,9116,9121,9127,9132,9142,9147,9153,9158,9164,9169,9179,9184,9190,9195,9205,9210,9216,9221,9231,9236,9242,9247,9257,9262,9268,9273,9279,9284,9302,9307,9313,9318,9330,9335,9341,9346,9356,9361,9367,9372,9382,9387,9393,9398,9408,9413,9419,9424,9430,9435,9445,9450,9456,9461,9472,9477,9483,9488,9500,9505,9511,9516,9529,9534,9540,9545,9551,9556,9566,9571,9577,9582,9592,9597,9603,9608,9614,9619,9629,9634,9640,9645,9651,9656,9667,9672,9678,9683,9693,9698,9704,9709,9721,9726,9732,9737,9750,9755,9761,9766,9776,9781,9787,9792],{"__ignoreMap":210},[31,8455,8456,8458,8461],{"class":216,"line":217},[31,8457,7806],{"class":220},[31,8459,8460],{"class":332}," 's\u002Falt\u002Fneu\u002F'",[31,8462,1256],{"class":332},[31,8464,8465],{"class":216,"line":227},[31,8466,231],{"emptyLinePlaceholder":230},[31,8468,8469],{"class":216,"line":234},[31,8470,8471],{"class":237},"# Alle Vorkommen ersetzen (g = global)\n",[31,8473,8474],{"class":216,"line":241},[31,8475,231],{"emptyLinePlaceholder":230},[31,8477,8478,8480,8483],{"class":216,"line":246},[31,8479,7806],{"class":220},[31,8481,8482],{"class":332}," 's\u002Falt\u002Fneu\u002Fg'",[31,8484,1256],{"class":332},[31,8486,8487],{"class":216,"line":254},[31,8488,231],{"emptyLinePlaceholder":230},[31,8490,8491],{"class":216,"line":259},[31,8492,8493],{"class":237},"# Nur das 2. Vorkommen pro Zeile ersetzen\n",[31,8495,8496],{"class":216,"line":265},[31,8497,231],{"emptyLinePlaceholder":230},[31,8499,8500,8502,8505],{"class":216,"line":270},[31,8501,7806],{"class":220},[31,8503,8504],{"class":332}," 's\u002Falt\u002Fneu\u002F2'",[31,8506,1256],{"class":332},[31,8508,8509],{"class":216,"line":278},[31,8510,231],{"emptyLinePlaceholder":230},[31,8512,8513],{"class":216,"line":283},[31,8514,8515],{"class":237},"# Case-insensitive ersetzen\n",[31,8517,8518],{"class":216,"line":289},[31,8519,231],{"emptyLinePlaceholder":230},[31,8521,8522,8524,8527],{"class":216,"line":294},[31,8523,7806],{"class":220},[31,8525,8526],{"class":332}," 's\u002Ffehler\u002FFEHLER\u002Fgi'",[31,8528,1256],{"class":332},[31,8530,8531],{"class":216,"line":807},[31,8532,231],{"emptyLinePlaceholder":230},[31,8534,8535],{"class":216,"line":812},[31,8536,8537],{"class":237},"# In-place bearbeiten (Datei direkt ändern)\n",[31,8539,8540],{"class":216,"line":821},[31,8541,231],{"emptyLinePlaceholder":230},[31,8543,8544,8546,8548,8550],{"class":216,"line":826},[31,8545,7806],{"class":220},[31,8547,4396],{"class":223},[31,8549,8482],{"class":332},[31,8551,1256],{"class":332},[31,8553,8554],{"class":216,"line":837},[31,8555,231],{"emptyLinePlaceholder":230},[31,8557,8558],{"class":216,"line":842},[31,8559,8560],{"class":237},"# In-place mit Backup (Datei.bak wird angelegt)\n",[31,8562,8563],{"class":216,"line":848},[31,8564,231],{"emptyLinePlaceholder":230},[31,8566,8567,8569,8572,8574],{"class":216,"line":853},[31,8568,7806],{"class":220},[31,8570,8571],{"class":223}," -i.bak",[31,8573,8482],{"class":332},[31,8575,1256],{"class":332},[31,8577,8578],{"class":216,"line":868},[31,8579,231],{"emptyLinePlaceholder":230},[31,8581,8582],{"class":216,"line":873},[31,8583,8584],{"class":237},"# Mehrere Befehle mit -e\n",[31,8586,8587],{"class":216,"line":879},[31,8588,231],{"emptyLinePlaceholder":230},[31,8590,8591,8593,8596,8599,8601,8604],{"class":216,"line":884},[31,8592,7806],{"class":220},[31,8594,8595],{"class":223}," -e",[31,8597,8598],{"class":332}," 's\u002Ffoo\u002Fbar\u002Fg'",[31,8600,8595],{"class":223},[31,8602,8603],{"class":332}," 's\u002Fbaz\u002Fqux\u002Fg'",[31,8605,1256],{"class":332},[31,8607,8608],{"class":216,"line":1405},[31,8609,231],{"emptyLinePlaceholder":230},[31,8611,8612],{"class":216,"line":1410},[31,8613,8614],{"class":237},"# Mehrere Befehle mit Semikolon\n",[31,8616,8617],{"class":216,"line":1416},[31,8618,231],{"emptyLinePlaceholder":230},[31,8620,8621,8623,8626],{"class":216,"line":1421},[31,8622,7806],{"class":220},[31,8624,8625],{"class":332}," 's\u002Ffoo\u002Fbar\u002Fg; s\u002Fbaz\u002Fqux\u002Fg'",[31,8627,1256],{"class":332},[31,8629,8630],{"class":216,"line":1434},[31,8631,231],{"emptyLinePlaceholder":230},[31,8633,8634],{"class":216,"line":1439},[31,8635,8636],{"class":237},"# sed-Programm aus Datei\n",[31,8638,8639],{"class":216,"line":1445},[31,8640,231],{"emptyLinePlaceholder":230},[31,8642,8643,8645,8647,8650],{"class":216,"line":1450},[31,8644,7806],{"class":220},[31,8646,4341],{"class":223},[31,8648,8649],{"class":332}," korrekturen.sed",[31,8651,1256],{"class":332},[31,8653,8654],{"class":216,"line":2244},[31,8655,231],{"emptyLinePlaceholder":230},[31,8657,8658],{"class":216,"line":2249},[31,8659,8660],{"class":237},"# ─── Zeilen löschen (d-Befehl) ───────────────────────────────\n",[31,8662,8663],{"class":216,"line":2255},[31,8664,231],{"emptyLinePlaceholder":230},[31,8666,8667],{"class":216,"line":2260},[31,8668,8669],{"class":237},"# Zeilen mit \"TODO\" löschen\n",[31,8671,8672],{"class":216,"line":2270},[31,8673,231],{"emptyLinePlaceholder":230},[31,8675,8676,8678,8681],{"class":216,"line":2275},[31,8677,7806],{"class":220},[31,8679,8680],{"class":332}," '\u002FTODO\u002Fd'",[31,8682,1256],{"class":332},[31,8684,8685],{"class":216,"line":2281},[31,8686,231],{"emptyLinePlaceholder":230},[31,8688,8689],{"class":216,"line":2286},[31,8690,8691],{"class":237},"# Kommentarzeilen (# am Anfang) löschen\n",[31,8693,8694],{"class":216,"line":5316},[31,8695,231],{"emptyLinePlaceholder":230},[31,8697,8698,8700,8703],{"class":216,"line":5321},[31,8699,7806],{"class":220},[31,8701,8702],{"class":332}," '\u002F^#\u002Fd'",[31,8704,1256],{"class":332},[31,8706,8707],{"class":216,"line":5327},[31,8708,231],{"emptyLinePlaceholder":230},[31,8710,8711,8713,8716,8719],{"class":216,"line":5332},[31,8712,7806],{"class":220},[31,8714,8715],{"class":332}," '\u002F^[[:space:]]*#\u002Fd'",[31,8717,8718],{"class":332}," datei.txt",[31,8720,8721],{"class":237}," # auch eingerückte Kommentare\n",[31,8723,8724],{"class":216,"line":5353},[31,8725,231],{"emptyLinePlaceholder":230},[31,8727,8728],{"class":216,"line":5358},[31,8729,8730],{"class":237},"# Leerzeilen löschen\n",[31,8732,8733],{"class":216,"line":5366},[31,8734,231],{"emptyLinePlaceholder":230},[31,8736,8737,8739,8742],{"class":216,"line":5371},[31,8738,7806],{"class":220},[31,8740,8741],{"class":332}," '\u002F^$\u002Fd'",[31,8743,1256],{"class":332},[31,8745,8746],{"class":216,"line":5377},[31,8747,231],{"emptyLinePlaceholder":230},[31,8749,8750],{"class":216,"line":5382},[31,8751,8752],{"class":237},"# Leerzeilen und Zeilen mit nur Leerzeichen löschen\n",[31,8754,8755],{"class":216,"line":5388},[31,8756,231],{"emptyLinePlaceholder":230},[31,8758,8759,8761,8764],{"class":216,"line":5393},[31,8760,7806],{"class":220},[31,8762,8763],{"class":332}," '\u002F^s*$\u002Fd'",[31,8765,1256],{"class":332},[31,8767,8768],{"class":216,"line":5405},[31,8769,231],{"emptyLinePlaceholder":230},[31,8771,8772],{"class":216,"line":5410},[31,8773,8774],{"class":237},"# Erste Zeile löschen (z.B. Header)\n",[31,8776,8777],{"class":216,"line":5416},[31,8778,231],{"emptyLinePlaceholder":230},[31,8780,8781,8783,8786],{"class":216,"line":5421},[31,8782,7806],{"class":220},[31,8784,8785],{"class":332}," '1d'",[31,8787,1256],{"class":332},[31,8789,8790],{"class":216,"line":5435},[31,8791,231],{"emptyLinePlaceholder":230},[31,8793,8794],{"class":216,"line":5440},[31,8795,8796],{"class":237},"# Letzte Zeile löschen\n",[31,8798,8799],{"class":216,"line":5446},[31,8800,231],{"emptyLinePlaceholder":230},[31,8802,8803,8805,8808],{"class":216,"line":5451},[31,8804,7806],{"class":220},[31,8806,8807],{"class":332}," '$d'",[31,8809,1256],{"class":332},[31,8811,8812],{"class":216,"line":6552},[31,8813,231],{"emptyLinePlaceholder":230},[31,8815,8816],{"class":216,"line":6557},[31,8817,8818],{"class":237},"# Zeilen 3 bis 7 löschen\n",[31,8820,8821],{"class":216,"line":6563},[31,8822,231],{"emptyLinePlaceholder":230},[31,8824,8825,8827,8830],{"class":216,"line":6568},[31,8826,7806],{"class":220},[31,8828,8829],{"class":332}," '3,7d'",[31,8831,1256],{"class":332},[31,8833,8834],{"class":216,"line":6589},[31,8835,231],{"emptyLinePlaceholder":230},[31,8837,8838],{"class":216,"line":6594},[31,8839,8840],{"class":237},"# Alle anderen Zeilen außer Zeile 5 löschen\n",[31,8842,8843],{"class":216,"line":6600},[31,8844,231],{"emptyLinePlaceholder":230},[31,8846,8847,8849,8852],{"class":216,"line":6605},[31,8848,7806],{"class":220},[31,8850,8851],{"class":332}," '5!d'",[31,8853,1256],{"class":332},[31,8855,8856],{"class":216,"line":6638},[31,8857,231],{"emptyLinePlaceholder":230},[31,8859,8860],{"class":216,"line":6643},[31,8861,8862],{"class":237},"# ─── Ausgabe filtern (-n p) ────────────────────────────────\n",[31,8864,8865],{"class":216,"line":6649},[31,8866,231],{"emptyLinePlaceholder":230},[31,8868,8869],{"class":216,"line":6654},[31,8870,8871],{"class":237},"# Nur Matching-Zeilen ausgeben (wie grep)\n",[31,8873,8875],{"class":216,"line":8874},74,[31,8876,231],{"emptyLinePlaceholder":230},[31,8878,8880,8882,8884,8887],{"class":216,"line":8879},75,[31,8881,7806],{"class":220},[31,8883,3877],{"class":223},[31,8885,8886],{"class":332}," '\u002Fmuster\u002Fp'",[31,8888,1256],{"class":332},[31,8890,8892],{"class":216,"line":8891},76,[31,8893,231],{"emptyLinePlaceholder":230},[31,8895,8897],{"class":216,"line":8896},77,[31,8898,8899],{"class":237},"# Zeilen 5 bis 10 ausgeben\n",[31,8901,8903],{"class":216,"line":8902},78,[31,8904,231],{"emptyLinePlaceholder":230},[31,8906,8908,8910,8912,8915],{"class":216,"line":8907},79,[31,8909,7806],{"class":220},[31,8911,3877],{"class":223},[31,8913,8914],{"class":332}," '5,10p'",[31,8916,1256],{"class":332},[31,8918,8920],{"class":216,"line":8919},80,[31,8921,231],{"emptyLinePlaceholder":230},[31,8923,8925],{"class":216,"line":8924},81,[31,8926,8927],{"class":237},"# Erste Zeile ausgeben (wie head -1)\n",[31,8929,8931],{"class":216,"line":8930},82,[31,8932,231],{"emptyLinePlaceholder":230},[31,8934,8936,8938,8940,8943],{"class":216,"line":8935},83,[31,8937,7806],{"class":220},[31,8939,3877],{"class":223},[31,8941,8942],{"class":332}," '1p'",[31,8944,1256],{"class":332},[31,8946,8948],{"class":216,"line":8947},84,[31,8949,231],{"emptyLinePlaceholder":230},[31,8951,8953],{"class":216,"line":8952},85,[31,8954,8955],{"class":237},"# Letzte Zeile ausgeben (wie tail -1)\n",[31,8957,8959],{"class":216,"line":8958},86,[31,8960,231],{"emptyLinePlaceholder":230},[31,8962,8964,8966,8968,8971],{"class":216,"line":8963},87,[31,8965,7806],{"class":220},[31,8967,3877],{"class":223},[31,8969,8970],{"class":332}," '$p'",[31,8972,1256],{"class":332},[31,8974,8976],{"class":216,"line":8975},88,[31,8977,231],{"emptyLinePlaceholder":230},[31,8979,8981],{"class":216,"line":8980},89,[31,8982,8983],{"class":237},"# Zeilen ausgeben, die NICHT dem Muster entsprechen (wie grep -v)\n",[31,8985,8987],{"class":216,"line":8986},90,[31,8988,231],{"emptyLinePlaceholder":230},[31,8990,8992,8994,8996,8999],{"class":216,"line":8991},91,[31,8993,7806],{"class":220},[31,8995,3877],{"class":223},[31,8997,8998],{"class":332}," '\u002Fmuster\u002F!p'",[31,9000,1256],{"class":332},[31,9002,9004],{"class":216,"line":9003},92,[31,9005,231],{"emptyLinePlaceholder":230},[31,9007,9009],{"class":216,"line":9008},93,[31,9010,9011],{"class":237},"# ─── Einfügen und Anhängen (i, a, c) ────────────────────────\n",[31,9013,9015],{"class":216,"line":9014},94,[31,9016,231],{"emptyLinePlaceholder":230},[31,9018,9020],{"class":216,"line":9019},95,[31,9021,9022],{"class":237},"# Text vor Zeile 3 einfügen\n",[31,9024,9026],{"class":216,"line":9025},96,[31,9027,231],{"emptyLinePlaceholder":230},[31,9029,9031,9033,9036],{"class":216,"line":9030},97,[31,9032,7806],{"class":220},[31,9034,9035],{"class":332}," '3iDies kommt vor Zeile 3'",[31,9037,1256],{"class":332},[31,9039,9041],{"class":216,"line":9040},98,[31,9042,231],{"emptyLinePlaceholder":230},[31,9044,9046],{"class":216,"line":9045},99,[31,9047,9048],{"class":237},"# Text nach Zeile 3 anfügen\n",[31,9050,9052],{"class":216,"line":9051},100,[31,9053,231],{"emptyLinePlaceholder":230},[31,9055,9057,9059,9062],{"class":216,"line":9056},101,[31,9058,7806],{"class":220},[31,9060,9061],{"class":332}," '3aDies kommt nach Zeile 3'",[31,9063,1256],{"class":332},[31,9065,9067],{"class":216,"line":9066},102,[31,9068,231],{"emptyLinePlaceholder":230},[31,9070,9072],{"class":216,"line":9071},103,[31,9073,9074],{"class":237},"# Zeile 3 komplett ersetzen\n",[31,9076,9078],{"class":216,"line":9077},104,[31,9079,231],{"emptyLinePlaceholder":230},[31,9081,9083,9085,9088],{"class":216,"line":9082},105,[31,9084,7806],{"class":220},[31,9086,9087],{"class":332}," '3cDas ist jetzt Zeile 3'",[31,9089,1256],{"class":332},[31,9091,9093],{"class":216,"line":9092},106,[31,9094,231],{"emptyLinePlaceholder":230},[31,9096,9098],{"class":216,"line":9097},107,[31,9099,9100],{"class":237},"# Text nach jeder Zeile mit \"START\" einfügen\n",[31,9102,9104],{"class":216,"line":9103},108,[31,9105,231],{"emptyLinePlaceholder":230},[31,9107,9109,9111,9114],{"class":216,"line":9108},109,[31,9110,7806],{"class":220},[31,9112,9113],{"class":332}," '\u002FSTART\u002Fa---------'",[31,9115,1256],{"class":332},[31,9117,9119],{"class":216,"line":9118},110,[31,9120,231],{"emptyLinePlaceholder":230},[31,9122,9124],{"class":216,"line":9123},111,[31,9125,9126],{"class":237},"# Dateiinhalt nach bestimmter Zeile einfügen\n",[31,9128,9130],{"class":216,"line":9129},112,[31,9131,231],{"emptyLinePlaceholder":230},[31,9133,9135,9137,9140],{"class":216,"line":9134},113,[31,9136,7806],{"class":220},[31,9138,9139],{"class":332}," '\u002FINSERT_HERE\u002Fr template.txt'",[31,9141,1256],{"class":332},[31,9143,9145],{"class":216,"line":9144},114,[31,9146,231],{"emptyLinePlaceholder":230},[31,9148,9150],{"class":216,"line":9149},115,[31,9151,9152],{"class":237},"# ─── Whitespace bereinigen ───────────────────────────────────\n",[31,9154,9156],{"class":216,"line":9155},116,[31,9157,231],{"emptyLinePlaceholder":230},[31,9159,9161],{"class":216,"line":9160},117,[31,9162,9163],{"class":237},"# Leerzeichen am Zeilenende entfernen (trailing whitespace)\n",[31,9165,9167],{"class":216,"line":9166},118,[31,9168,231],{"emptyLinePlaceholder":230},[31,9170,9172,9174,9177],{"class":216,"line":9171},119,[31,9173,7806],{"class":220},[31,9175,9176],{"class":332}," 's\u002F[[:space:]]*$\u002F\u002F'",[31,9178,1256],{"class":332},[31,9180,9182],{"class":216,"line":9181},120,[31,9183,231],{"emptyLinePlaceholder":230},[31,9185,9187],{"class":216,"line":9186},121,[31,9188,9189],{"class":237},"# Führende Leerzeichen entfernen (leading whitespace)\n",[31,9191,9193],{"class":216,"line":9192},122,[31,9194,231],{"emptyLinePlaceholder":230},[31,9196,9198,9200,9203],{"class":216,"line":9197},123,[31,9199,7806],{"class":220},[31,9201,9202],{"class":332}," 's\u002F^[[:space:]]*\u002F\u002F'",[31,9204,1256],{"class":332},[31,9206,9208],{"class":216,"line":9207},124,[31,9209,231],{"emptyLinePlaceholder":230},[31,9211,9213],{"class":216,"line":9212},125,[31,9214,9215],{"class":237},"# Beides (trim)\n",[31,9217,9219],{"class":216,"line":9218},126,[31,9220,231],{"emptyLinePlaceholder":230},[31,9222,9224,9226,9229],{"class":216,"line":9223},127,[31,9225,7806],{"class":220},[31,9227,9228],{"class":332}," 's\u002F^[[:space:]]\u002F\u002F; s\u002F[[:space:]]$\u002F\u002F'",[31,9230,1256],{"class":332},[31,9232,9234],{"class":216,"line":9233},128,[31,9235,231],{"emptyLinePlaceholder":230},[31,9237,9239],{"class":216,"line":9238},129,[31,9240,9241],{"class":237},"# Tabulatoren durch Leerzeichen ersetzen\n",[31,9243,9245],{"class":216,"line":9244},130,[31,9246,231],{"emptyLinePlaceholder":230},[31,9248,9250,9252,9255],{"class":216,"line":9249},131,[31,9251,7806],{"class":220},[31,9253,9254],{"class":332}," 's\u002Ft\u002F \u002Fg'",[31,9256,1256],{"class":332},[31,9258,9260],{"class":216,"line":9259},132,[31,9261,231],{"emptyLinePlaceholder":230},[31,9263,9265],{"class":216,"line":9264},133,[31,9266,9267],{"class":237},"# ─── Zeilenoperationen ───────────────────────────────────────\n",[31,9269,9271],{"class":216,"line":9270},134,[31,9272,231],{"emptyLinePlaceholder":230},[31,9274,9276],{"class":216,"line":9275},135,[31,9277,9278],{"class":237},"# Zeilennummer vor jede Zeile (wie cat -n)\n",[31,9280,9282],{"class":216,"line":9281},136,[31,9283,231],{"emptyLinePlaceholder":230},[31,9285,9287,9289,9292,9294,9296,9299],{"class":216,"line":9286},137,[31,9288,7806],{"class":220},[31,9290,9291],{"class":332}," '='",[31,9293,8718],{"class":332},[31,9295,337],{"class":336},[31,9297,9298],{"class":220}," sed",[31,9300,9301],{"class":332}," 'N; s\u002Fn\u002Ft\u002F'\n",[31,9303,9305],{"class":216,"line":9304},138,[31,9306,231],{"emptyLinePlaceholder":230},[31,9308,9310],{"class":216,"line":9309},139,[31,9311,9312],{"class":237},"# Zeilen ab 5 ausgeben (bis Ende)\n",[31,9314,9316],{"class":216,"line":9315},140,[31,9317,231],{"emptyLinePlaceholder":230},[31,9319,9321,9323,9325,9328],{"class":216,"line":9320},141,[31,9322,7806],{"class":220},[31,9324,3877],{"class":223},[31,9326,9327],{"class":332}," '5,$p'",[31,9329,1256],{"class":332},[31,9331,9333],{"class":216,"line":9332},142,[31,9334,231],{"emptyLinePlaceholder":230},[31,9336,9338],{"class":216,"line":9337},143,[31,9339,9340],{"class":237},"# Script nach N Zeilen beenden (wie head -5)\n",[31,9342,9344],{"class":216,"line":9343},144,[31,9345,231],{"emptyLinePlaceholder":230},[31,9347,9349,9351,9354],{"class":216,"line":9348},145,[31,9350,7806],{"class":220},[31,9352,9353],{"class":332}," '5q'",[31,9355,1256],{"class":332},[31,9357,9359],{"class":216,"line":9358},146,[31,9360,231],{"emptyLinePlaceholder":230},[31,9362,9364],{"class":216,"line":9363},147,[31,9365,9366],{"class":237},"# Jede 2. Zeile löschen (gerade Zeilennummern)\n",[31,9368,9370],{"class":216,"line":9369},148,[31,9371,231],{"emptyLinePlaceholder":230},[31,9373,9375,9377,9380],{"class":216,"line":9374},149,[31,9376,7806],{"class":220},[31,9378,9379],{"class":332}," '0~2d'",[31,9381,1256],{"class":332},[31,9383,9385],{"class":216,"line":9384},150,[31,9386,231],{"emptyLinePlaceholder":230},[31,9388,9390],{"class":216,"line":9389},151,[31,9391,9392],{"class":237},"# Jede 2. Zeile löschen (ungerade Zeilennummern)\n",[31,9394,9396],{"class":216,"line":9395},152,[31,9397,231],{"emptyLinePlaceholder":230},[31,9399,9401,9403,9406],{"class":216,"line":9400},153,[31,9402,7806],{"class":220},[31,9404,9405],{"class":332}," '1~2d'",[31,9407,1256],{"class":332},[31,9409,9411],{"class":216,"line":9410},154,[31,9412,231],{"emptyLinePlaceholder":230},[31,9414,9416],{"class":216,"line":9415},155,[31,9417,9418],{"class":237},"# ─── Rückreferenzen ─────────────────────────────────────────\n",[31,9420,9422],{"class":216,"line":9421},156,[31,9423,231],{"emptyLinePlaceholder":230},[31,9425,9427],{"class":216,"line":9426},157,[31,9428,9429],{"class":237},"# Wort in Anführungszeichen einschließen (BRE)\n",[31,9431,9433],{"class":216,"line":9432},158,[31,9434,231],{"emptyLinePlaceholder":230},[31,9436,9438,9440,9443],{"class":216,"line":9437},159,[31,9439,7806],{"class":220},[31,9441,9442],{"class":332}," 's\u002F(Hallo)\u002F\"1\"\u002F'",[31,9444,1256],{"class":332},[31,9446,9448],{"class":216,"line":9447},160,[31,9449,231],{"emptyLinePlaceholder":230},[31,9451,9453],{"class":216,"line":9452},161,[31,9454,9455],{"class":237},"# Dasselbe mit ERE (-E)\n",[31,9457,9459],{"class":216,"line":9458},162,[31,9460,231],{"emptyLinePlaceholder":230},[31,9462,9464,9466,9468,9470],{"class":216,"line":9463},163,[31,9465,7806],{"class":220},[31,9467,5231],{"class":223},[31,9469,9442],{"class":332},[31,9471,1256],{"class":332},[31,9473,9475],{"class":216,"line":9474},164,[31,9476,231],{"emptyLinePlaceholder":230},[31,9478,9480],{"class":216,"line":9479},165,[31,9481,9482],{"class":237},"# Datum von YYYY-MM-DD zu DD.MM.YYYY umformatieren\n",[31,9484,9486],{"class":216,"line":9485},166,[31,9487,231],{"emptyLinePlaceholder":230},[31,9489,9491,9493,9495,9498],{"class":216,"line":9490},167,[31,9492,7806],{"class":220},[31,9494,5231],{"class":223},[31,9496,9497],{"class":332}," 's\u002F([0-9]{4})-([0-9]{2})-([0-9]{2})\u002F3.2.1\u002F'",[31,9499,1256],{"class":332},[31,9501,9503],{"class":216,"line":9502},168,[31,9504,231],{"emptyLinePlaceholder":230},[31,9506,9508],{"class":216,"line":9507},169,[31,9509,9510],{"class":237},"# Vornamen und Nachnamen tauschen (\"Muster, Hans\" → \"Hans Muster\")\n",[31,9512,9514],{"class":216,"line":9513},170,[31,9515,231],{"emptyLinePlaceholder":230},[31,9517,9519,9521,9523,9526],{"class":216,"line":9518},171,[31,9520,7806],{"class":220},[31,9522,5231],{"class":223},[31,9524,9525],{"class":332}," 's\u002F([A-Za-z] ), ([A-Za-z] )\u002F2 1\u002F'",[31,9527,9528],{"class":332}," namen.txt\n",[31,9530,9532],{"class":216,"line":9531},172,[31,9533,231],{"emptyLinePlaceholder":230},[31,9535,9537],{"class":216,"line":9536},173,[31,9538,9539],{"class":237},"# ─── Zeichenersatz (y-Befehl) ───────────────────────────────\n",[31,9541,9543],{"class":216,"line":9542},174,[31,9544,231],{"emptyLinePlaceholder":230},[31,9546,9548],{"class":216,"line":9547},175,[31,9549,9550],{"class":237},"# Kleinbuchstaben in Großbuchstaben\n",[31,9552,9554],{"class":216,"line":9553},176,[31,9555,231],{"emptyLinePlaceholder":230},[31,9557,9559,9561,9564],{"class":216,"line":9558},177,[31,9560,7806],{"class":220},[31,9562,9563],{"class":332}," 'y\u002Fabcdefghijklmnopqrstuvwxyz\u002FABCDEFGHIJKLMNOPQRSTUVWXYZ\u002F'",[31,9565,1256],{"class":332},[31,9567,9569],{"class":216,"line":9568},178,[31,9570,231],{"emptyLinePlaceholder":230},[31,9572,9574],{"class":216,"line":9573},179,[31,9575,9576],{"class":237},"# Umlaute vereinfachen\n",[31,9578,9580],{"class":216,"line":9579},180,[31,9581,231],{"emptyLinePlaceholder":230},[31,9583,9585,9587,9590],{"class":216,"line":9584},181,[31,9586,7806],{"class":220},[31,9588,9589],{"class":332}," 'y\u002FäöüÄÖÜ\u002FaouAOU\u002F'",[31,9591,1256],{"class":332},[31,9593,9595],{"class":216,"line":9594},182,[31,9596,231],{"emptyLinePlaceholder":230},[31,9598,9600],{"class":216,"line":9599},183,[31,9601,9602],{"class":237},"# ─── Mehrzeilige Operationen (N-Befehl) ─────────────────────\n",[31,9604,9606],{"class":216,"line":9605},184,[31,9607,231],{"emptyLinePlaceholder":230},[31,9609,9611],{"class":216,"line":9610},185,[31,9612,9613],{"class":237},"# Zeilenumbruch zwischen zusammengehörigen Zeilen entfernen\n",[31,9615,9617],{"class":216,"line":9616},186,[31,9618,231],{"emptyLinePlaceholder":230},[31,9620,9622,9624,9627],{"class":216,"line":9621},187,[31,9623,7806],{"class":220},[31,9625,9626],{"class":332}," 'N; s\u002Fn\u002F \u002F'",[31,9628,1256],{"class":332},[31,9630,9632],{"class":216,"line":9631},188,[31,9633,231],{"emptyLinePlaceholder":230},[31,9635,9637],{"class":216,"line":9636},189,[31,9638,9639],{"class":237},"# ─── Praktische Anwendungen ──────────────────────────────────\n",[31,9641,9643],{"class":216,"line":9642},190,[31,9644,231],{"emptyLinePlaceholder":230},[31,9646,9648],{"class":216,"line":9647},191,[31,9649,9650],{"class":237},"# HTML-Tags entfernen\n",[31,9652,9654],{"class":216,"line":9653},192,[31,9655,231],{"emptyLinePlaceholder":230},[31,9657,9659,9661,9664],{"class":216,"line":9658},193,[31,9660,7806],{"class":220},[31,9662,9663],{"class":332}," 's\u002F\u003C[^>]*>\u002F\u002Fg'",[31,9665,9666],{"class":332}," seite.html\n",[31,9668,9670],{"class":216,"line":9669},194,[31,9671,231],{"emptyLinePlaceholder":230},[31,9673,9675],{"class":216,"line":9674},195,[31,9676,9677],{"class":237},"# DOS-Zeilenenden (rn) in Unix-Zeilenenden (n) umwandeln\n",[31,9679,9681],{"class":216,"line":9680},196,[31,9682,231],{"emptyLinePlaceholder":230},[31,9684,9686,9688,9691],{"class":216,"line":9685},197,[31,9687,7806],{"class":220},[31,9689,9690],{"class":332}," 's\u002Fr\u002F\u002F'",[31,9692,1256],{"class":332},[31,9694,9696],{"class":216,"line":9695},198,[31,9697,231],{"emptyLinePlaceholder":230},[31,9699,9701],{"class":216,"line":9700},199,[31,9702,9703],{"class":237},"# Alle IP-Adressen anonymisieren\n",[31,9705,9707],{"class":216,"line":9706},200,[31,9708,231],{"emptyLinePlaceholder":230},[31,9710,9712,9714,9716,9719],{"class":216,"line":9711},201,[31,9713,7806],{"class":220},[31,9715,5231],{"class":223},[31,9717,9718],{"class":332}," 's\u002F[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}\u002FX.X.X.X\u002Fg'",[31,9720,5289],{"class":332},[31,9722,9724],{"class":216,"line":9723},202,[31,9725,231],{"emptyLinePlaceholder":230},[31,9727,9729],{"class":216,"line":9728},203,[31,9730,9731],{"class":237},"# Passwort in Konfigurationsdatei ersetzen (sicher mit Backup)\n",[31,9733,9735],{"class":216,"line":9734},204,[31,9736,231],{"emptyLinePlaceholder":230},[31,9738,9740,9742,9744,9747],{"class":216,"line":9739},205,[31,9741,7806],{"class":220},[31,9743,8571],{"class":223},[31,9745,9746],{"class":332}," \"s\u002F^password=.*\u002Fpassword=NEU\u002F\"",[31,9748,9749],{"class":332}," \u002Fetc\u002Fapp\u002Fconfig.ini\n",[31,9751,9753],{"class":216,"line":9752},206,[31,9754,231],{"emptyLinePlaceholder":230},[31,9756,9758],{"class":216,"line":9757},207,[31,9759,9760],{"class":237},"# Leerzeilen auf maximal eine reduzieren\n",[31,9762,9764],{"class":216,"line":9763},208,[31,9765,231],{"emptyLinePlaceholder":230},[31,9767,9769,9771,9774],{"class":216,"line":9768},209,[31,9770,7806],{"class":220},[31,9772,9773],{"class":332}," '\u002F^$\u002F{ N; \u002F^n$\u002Fd }'",[31,9775,1256],{"class":332},[31,9777,9779],{"class":216,"line":9778},210,[31,9780,231],{"emptyLinePlaceholder":230},[31,9782,9784],{"class":216,"line":9783},211,[31,9785,9786],{"class":237},"# oder einfacher (GNU sed):\n",[31,9788,9790],{"class":216,"line":9789},212,[31,9791,231],{"emptyLinePlaceholder":230},[31,9793,9795,9797,9799,9802],{"class":216,"line":9794},213,[31,9796,7806],{"class":220},[31,9798,5231],{"class":223},[31,9800,9801],{"class":332}," '\u002F^$\u002F{ \u002F^n $\u002Fd }'",[31,9803,1256],{"class":332},[38,9805,350],{"id":9806},"ausgabe-10",[10,9808,9810],{"id":9809},"sed-srootrootg-etcpasswd-head-2","sed 's\u002Froot\u002FROOT\u002Fg' \u002Fetc\u002Fpasswd | head -2",[14,9812,9813],{},"ROOT❌0:0:ROOT:\u002FROOT:\u002Fbin\u002Fbash",[14,9815,4102],{},[10,9817,9819],{"id":9818},"sed-n-13p-etcpasswd","sed -n '1,3p' \u002Fetc\u002Fpasswd",[14,9821,4099],{},[14,9823,4102],{},[14,9825,4105],{},[10,9827,9829,9830,9832,9833,9835,9836,9838],{"id":9828},"echo-2026-05-06-sed-e-s0-94-0-92-0-92321","echo \"2026-05-06\" | sed -E 's\u002F(",[31,9831,5530],{},"{4})-(",[31,9834,5530],{},"{2})-(",[31,9837,5530],{},"{2})\u002F3.2.1\u002F'",[14,9840,9841],{},"06.05.2026",[10,9843,9845],{"id":9844},"sed-dateitxt-sed-n-snt","sed '=' datei.txt | sed 'N; s\u002Fn\u002Ft\u002F'",[14,9847,9848],{},"1 Zeile eins",[14,9850,9851],{},"2 Zeile zwei",[14,9853,9854],{},"3 Zeile drei",[10,9856,9858],{"id":9857},"sed-ibak-sdebuginfog-applog","sed -i.bak 's\u002FDEBUG\u002FINFO\u002Fg' app.log",[10,9860,9862],{"id":9861},"applog-wird-verändert-applogbak-enthält-das-original","(app.log wird verändert, app.log.bak enthält das Original)",[14,9864,9865,9867],{},[17,9866,1016],{}," Vor jedem sed -i (in-place) immer mit sed -n ... p oder ohne -i testen, damit keine Daten versehentlich zerstört werden!",[10,9869,829],{"id":829},[14,9871,9872,9874],{},[17,9873,19],{}," Listet den Inhalt von Verzeichnissen auf. Eines der meistgenutzten Linux-Kommandos.",[14,9876,9877,26,9879],{},[17,9878,25],{},[17,9880,9881,9882,26,9884],{},"ls ",[31,9883,33],{},[31,9885,9886],{},"PFAD...",[38,9888,101],{"id":9889},"flags-9",[43,9891,9892,9908],{},[46,9893,9894],{},[49,9895,9896,9900,9904],{},[52,9897,9898],{},[17,9899,112],{},[52,9901,9902],{},[17,9903,117],{},[52,9905,9906],{},[17,9907,61],{},[63,9909,9910,9920,9931,9942,9952,9961,9972,9982,9991,10001,10011,10022,10032,10041,10050,10060,10070,10080],{},[49,9911,9912,9914,9917],{},[68,9913,3291],{},[68,9915,9916],{},"--format=long",[68,9918,9919],{},"Lange Listenansicht mit Rechten, Eigentümer, Größe, Datum",[49,9921,9922,9925,9928],{},[68,9923,9924],{},"-a",[68,9926,9927],{},"--all",[68,9929,9930],{},"Alle Dateien anzeigen, auch versteckte (.-Dateien)",[49,9932,9933,9936,9939],{},[68,9934,9935],{},"-A",[68,9937,9938],{},"--almost-all",[68,9940,9941],{},"Wie -a, aber ohne . und ..",[49,9943,9944,9946,9949],{},[68,9945,1200],{},[68,9947,9948],{},"--human-readable",[68,9950,9951],{},"Größen menschenlesbar (KB, MB, GB) – nur mit -l",[49,9953,9954,9956,9958],{},[68,9955,1168],{},[68,9957,4699],{},[68,9959,9960],{},"Rekursiv alle Unterverzeichnisse anzeigen",[49,9962,9963,9966,9969],{},[68,9964,9965],{},"-t",[68,9967,9968],{},"–",[68,9970,9971],{},"Nach Änderungszeit sortieren (neueste zuerst)",[49,9973,9974,9976,9979],{},[68,9975,172],{},[68,9977,9978],{},"--reverse",[68,9980,9981],{},"Sortierung umkehren",[49,9983,9984,9986,9988],{},[68,9985,629],{},[68,9987,9968],{},[68,9989,9990],{},"Nach Dateigröße sortieren (größte zuerst)",[49,9992,9993,9996,9998],{},[68,9994,9995],{},"-X",[68,9997,9968],{},[68,9999,10000],{},"Nach Dateiendung sortieren",[49,10002,10003,10005,10008],{},[68,10004,4676],{},[68,10006,10007],{},"--inode",[68,10009,10010],{},"Inode-Nummer ausgeben",[49,10012,10013,10016,10019],{},[68,10014,10015],{},"-d",[68,10017,10018],{},"--directory",[68,10020,10021],{},"Verzeichnis selbst anzeigen, nicht seinen Inhalt",[49,10023,10024,10027,10029],{},[68,10025,10026],{},"-1",[68,10028,9968],{},[68,10030,10031],{},"Eine Datei pro Zeile ausgeben",[49,10033,10034,10036,10038],{},[68,10035,3323],{},[68,10037,9968],{},[68,10039,10040],{},"Kommagetrennte Liste ausgeben",[49,10042,10043,10045,10047],{},[68,10044,4853],{},[68,10046,4856],{},[68,10048,10049],{},"Farbige Ausgabe (Dateitypen farbig)",[49,10051,10052,10054,10057],{},[68,10053,4235],{},[68,10055,10056],{},"--classify",[68,10058,10059],{},"Typkennzeichen anhängen (\u002F Verz., * ausführbar, @ Link, `",[49,10061,10062,10064,10067],{},[68,10063,161],{},[68,10065,10066],{},"--numeric-uid-gid",[68,10068,10069],{},"Numerische UIDs\u002FGIDs statt Namen",[49,10071,10072,10074,10077],{},[68,10073,150],{},[68,10075,10076],{},"--no-group",[68,10078,10079],{},"Gruppenname in Langansicht weglassen",[49,10081,10082,10084,10086],{},[68,10083,183],{},[68,10085,9968],{},[68,10087,10088],{},"SELinux-Kontext anzeigen",[38,10090,10092],{"id":10091},"erklärung-der-langansicht-ls-l","Erklärung der Langansicht (ls -l)",[14,10094,10095,10096,10098,10099,10101,10102,10104,10105,10107,10108,10110,10111,10113,10114,10116,10117,10119],{},"drwxr-xr-x 2 matta matta 4096 Apr 29 10:00 dokumente",[584,10097],{},"\n| | | | | | |",[584,10100],{},"\n| | | | | | +-- Dateiname",[584,10103],{},"\n| | | | | +-- Datum der letzten Änderung",[584,10106],{},"\n| | | | +-- Dateigröße (Bytes)",[584,10109],{},"\n| | | +-- Gruppe",[584,10112],{},"\n| | +-- Eigentümer",[584,10115],{},"\n| +-- Anzahl der Hard Links",[584,10118],{},"\n+-- Typ + Berechtigungen:",[205,10121,10123],{"className":207,"code":10122,"language":209,"meta":210,"style":210},"d = Verzeichnis\n- = Reguläre Datei\n",[212,10124,10125,10133],{"__ignoreMap":210},[31,10126,10127,10129,10131],{"class":216,"line":217},[31,10128,7978],{"class":220},[31,10130,2584],{"class":332},[31,10132,2784],{"class":332},[31,10134,10135,10137,10139,10142],{"class":216,"line":227},[31,10136,1823],{"class":220},[31,10138,2584],{"class":332},[31,10140,10141],{"class":332}," Reguläre",[31,10143,10144],{"class":332}," Datei\n",[2365,10146,10147],{},[2368,10148,10149],{},"= Reguläre Datei",[205,10151,10153],{"className":207,"code":10152,"language":209,"meta":210,"style":210},"l = Symbolischer Link\nc = Zeichengerät\nb = Blockgerät\np = Named Pipe\ns = Socket\n\n",[212,10154,10155,10167,10177,10187,10199],{"__ignoreMap":210},[31,10156,10157,10159,10161,10164],{"class":216,"line":217},[31,10158,8109],{"class":220},[31,10160,2584],{"class":332},[31,10162,10163],{"class":332}," Symbolischer",[31,10165,10166],{"class":332}," Link\n",[31,10168,10169,10172,10174],{"class":216,"line":227},[31,10170,10171],{"class":220},"c",[31,10173,2584],{"class":332},[31,10175,10176],{"class":332}," Zeichengerät\n",[31,10178,10179,10182,10184],{"class":216,"line":234},[31,10180,10181],{"class":220},"b",[31,10183,2584],{"class":332},[31,10185,10186],{"class":332}," Blockgerät\n",[31,10188,10189,10191,10193,10196],{"class":216,"line":241},[31,10190,14],{"class":220},[31,10192,2584],{"class":332},[31,10194,10195],{"class":332}," Named",[31,10197,10198],{"class":332}," Pipe\n",[31,10200,10201,10203,10205],{"class":216,"line":246},[31,10202,1867],{"class":220},[31,10204,2584],{"class":332},[31,10206,10207],{"class":332}," Socket\n",[38,10209,10211],{"id":10210},"dateitypen-durch-farben-bei-colorauto","Dateitypen durch Farben (bei --color=auto)",[43,10213,10214,10228],{},[46,10215,10216],{},[49,10217,10218,10223],{},[52,10219,10220],{},[17,10221,10222],{},"Farbe",[52,10224,10225],{},[17,10226,10227],{},"Typ",[63,10229,10230,10238,10246,10254,10262,10270,10278,10286],{},[49,10231,10232,10235],{},[68,10233,10234],{},"Keine\u002FWeiß",[68,10236,10237],{},"Reguläre Datei",[49,10239,10240,10243],{},[68,10241,10242],{},"Blau",[68,10244,10245],{},"Verzeichnis",[49,10247,10248,10251],{},[68,10249,10250],{},"Cyan",[68,10252,10253],{},"Symbolischer Link",[49,10255,10256,10259],{},[68,10257,10258],{},"Grün",[68,10260,10261],{},"Ausführbare Datei",[49,10263,10264,10267],{},[68,10265,10266],{},"Rot",[68,10268,10269],{},"Archivdatei",[49,10271,10272,10275],{},[68,10273,10274],{},"Magenta",[68,10276,10277],{},"Bild\u002FMediendatei",[49,10279,10280,10283],{},[68,10281,10282],{},"Gelb\u002FBlinkend",[68,10284,10285],{},"Gerätedatei",[49,10287,10288,10291],{},[68,10289,10290],{},"Rot auf Schwarz",[68,10292,10293],{},"Defekter Symlink",[38,10295,193],{"id":10296},"beispiele-11",[10,10298,10300],{"id":10299},"einfache-liste","Einfache Liste",[205,10302,10304],{"className":207,"code":10303,"language":209,"meta":210,"style":210},"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",[212,10305,10306,10311,10315,10320,10324,10330,10334,10339,10343,10350,10354,10359,10363,10370,10374,10379,10383,10390,10394,10399,10403,10410,10414,10419,10423,10441,10445,10450,10454,10461,10465,10470,10474,10482,10486,10491,10495,10507,10511,10516,10520,10527,10531,10536,10540,10547,10551,10556,10560,10574,10578,10583,10587,10600,10604,10609,10613],{"__ignoreMap":210},[31,10307,10308],{"class":216,"line":217},[31,10309,10310],{"class":220},"ls\n",[31,10312,10313],{"class":216,"line":227},[31,10314,231],{"emptyLinePlaceholder":230},[31,10316,10317],{"class":216,"line":234},[31,10318,10319],{"class":237},"# Lange Ansicht\n",[31,10321,10322],{"class":216,"line":241},[31,10323,231],{"emptyLinePlaceholder":230},[31,10325,10326,10328],{"class":216,"line":246},[31,10327,829],{"class":220},[31,10329,3523],{"class":223},[31,10331,10332],{"class":216,"line":254},[31,10333,231],{"emptyLinePlaceholder":230},[31,10335,10336],{"class":216,"line":259},[31,10337,10338],{"class":237},"# Alle Dateien inkl. versteckte + lange Ansicht + lesbare Größen\n",[31,10340,10341],{"class":216,"line":265},[31,10342,231],{"emptyLinePlaceholder":230},[31,10344,10345,10347],{"class":216,"line":270},[31,10346,829],{"class":220},[31,10348,10349],{"class":223}," -lah\n",[31,10351,10352],{"class":216,"line":278},[31,10353,231],{"emptyLinePlaceholder":230},[31,10355,10356],{"class":216,"line":283},[31,10357,10358],{"class":237},"# Alle Dateien, nach Zeit sortiert (neueste zuerst)\n",[31,10360,10361],{"class":216,"line":289},[31,10362,231],{"emptyLinePlaceholder":230},[31,10364,10365,10367],{"class":216,"line":294},[31,10366,829],{"class":220},[31,10368,10369],{"class":223}," -laht\n",[31,10371,10372],{"class":216,"line":807},[31,10373,231],{"emptyLinePlaceholder":230},[31,10375,10376],{"class":216,"line":812},[31,10377,10378],{"class":237},"# Alle Dateien, nach Größe sortiert (größte zuerst)\n",[31,10380,10381],{"class":216,"line":821},[31,10382,231],{"emptyLinePlaceholder":230},[31,10384,10385,10387],{"class":216,"line":826},[31,10386,829],{"class":220},[31,10388,10389],{"class":223}," -lahS\n",[31,10391,10392],{"class":216,"line":837},[31,10393,231],{"emptyLinePlaceholder":230},[31,10395,10396],{"class":216,"line":842},[31,10397,10398],{"class":237},"# Alle Dateien, nach Zeit sortiert (älteste zuerst)\n",[31,10400,10401],{"class":216,"line":848},[31,10402,231],{"emptyLinePlaceholder":230},[31,10404,10405,10407],{"class":216,"line":853},[31,10406,829],{"class":220},[31,10408,10409],{"class":223}," -latr\n",[31,10411,10412],{"class":216,"line":868},[31,10413,231],{"emptyLinePlaceholder":230},[31,10415,10416],{"class":216,"line":873},[31,10417,10418],{"class":237},"# Rekursiv alle Inhalte anzeigen\n",[31,10420,10421],{"class":216,"line":879},[31,10422,231],{"emptyLinePlaceholder":230},[31,10424,10425,10427,10430,10433,10435,10438],{"class":216,"line":884},[31,10426,829],{"class":220},[31,10428,10429],{"class":223}," -lR",[31,10431,10432],{"class":332}," \u002Fetc\u002F",[31,10434,337],{"class":336},[31,10436,10437],{"class":220}," head",[31,10439,10440],{"class":223}," -30\n",[31,10442,10443],{"class":216,"line":1405},[31,10444,231],{"emptyLinePlaceholder":230},[31,10446,10447],{"class":216,"line":1410},[31,10448,10449],{"class":237},"# Inode-Nummern anzeigen (nützlich für Hard Links)\n",[31,10451,10452],{"class":216,"line":1416},[31,10453,231],{"emptyLinePlaceholder":230},[31,10455,10456,10458],{"class":216,"line":1421},[31,10457,829],{"class":220},[31,10459,10460],{"class":223}," -li\n",[31,10462,10463],{"class":216,"line":1434},[31,10464,231],{"emptyLinePlaceholder":230},[31,10466,10467],{"class":216,"line":1439},[31,10468,10469],{"class":237},"# Verzeichnis selbst anzeigen (nicht seinen Inhalt)\n",[31,10471,10472],{"class":216,"line":1445},[31,10473,231],{"emptyLinePlaceholder":230},[31,10475,10476,10478,10480],{"class":216,"line":1450},[31,10477,829],{"class":220},[31,10479,2703],{"class":223},[31,10481,5185],{"class":332},[31,10483,10484],{"class":216,"line":2244},[31,10485,231],{"emptyLinePlaceholder":230},[31,10487,10488],{"class":216,"line":2249},[31,10489,10490],{"class":237},"# Nur Verzeichnisse im aktuellen Verzeichnis\n",[31,10492,10493],{"class":216,"line":2255},[31,10494,231],{"emptyLinePlaceholder":230},[31,10496,10497,10499,10502,10504],{"class":216,"line":2260},[31,10498,829],{"class":220},[31,10500,10501],{"class":223}," -d",[31,10503,2296],{"class":223},[31,10505,10506],{"class":332},"\u002F\n",[31,10508,10509],{"class":216,"line":2270},[31,10510,231],{"emptyLinePlaceholder":230},[31,10512,10513],{"class":216,"line":2275},[31,10514,10515],{"class":237},"# Typkennzeichen anzeigen\n",[31,10517,10518],{"class":216,"line":2281},[31,10519,231],{"emptyLinePlaceholder":230},[31,10521,10522,10524],{"class":216,"line":2286},[31,10523,829],{"class":220},[31,10525,10526],{"class":223}," -F\n",[31,10528,10529],{"class":216,"line":5316},[31,10530,231],{"emptyLinePlaceholder":230},[31,10532,10533],{"class":216,"line":5321},[31,10534,10535],{"class":237},"# Numerische UIDs\u002FGIDs\n",[31,10537,10538],{"class":216,"line":5327},[31,10539,231],{"emptyLinePlaceholder":230},[31,10541,10542,10544],{"class":216,"line":5332},[31,10543,829],{"class":220},[31,10545,10546],{"class":223}," -ln\n",[31,10548,10549],{"class":216,"line":5353},[31,10550,231],{"emptyLinePlaceholder":230},[31,10552,10553],{"class":216,"line":5358},[31,10554,10555],{"class":237},"# Nur Verzeichnisse (grep auf d am Anfang)\n",[31,10557,10558],{"class":216,"line":5366},[31,10559,231],{"emptyLinePlaceholder":230},[31,10561,10562,10564,10567,10569,10571],{"class":216,"line":5371},[31,10563,829],{"class":220},[31,10565,10566],{"class":223}," -la",[31,10568,337],{"class":336},[31,10570,340],{"class":220},[31,10572,10573],{"class":332}," \"^d\"\n",[31,10575,10576],{"class":216,"line":5377},[31,10577,231],{"emptyLinePlaceholder":230},[31,10579,10580],{"class":216,"line":5382},[31,10581,10582],{"class":237},"# Nur Symlinks\n",[31,10584,10585],{"class":216,"line":5388},[31,10586,231],{"emptyLinePlaceholder":230},[31,10588,10589,10591,10593,10595,10597],{"class":216,"line":5393},[31,10590,829],{"class":220},[31,10592,10566],{"class":223},[31,10594,337],{"class":336},[31,10596,340],{"class":220},[31,10598,10599],{"class":332}," \"^l\"\n",[31,10601,10602],{"class":216,"line":5405},[31,10603,231],{"emptyLinePlaceholder":230},[31,10605,10606],{"class":216,"line":5410},[31,10607,10608],{"class":237},"# Alle ausführbaren Dateien\n",[31,10610,10611],{"class":216,"line":5416},[31,10612,231],{"emptyLinePlaceholder":230},[31,10614,10615,10617,10619,10621,10623],{"class":216,"line":5421},[31,10616,829],{"class":220},[31,10618,10566],{"class":223},[31,10620,337],{"class":336},[31,10622,340],{"class":220},[31,10624,10625],{"class":332}," \"^-.*x\"\n",[38,10627,350],{"id":10628},"ausgabe-11",[10,10630,10632],{"id":10631},"ls-lah","ls -lah",[14,10634,10635],{},"gesamt 48K",[14,10637,10638],{},"drwxr-xr-x 5 matta matta 4,0K Apr 29 10:00 .",[14,10640,10641],{},"drwxr-xr-x 18 matta matta 4,0K Apr 28 09:00 ..",[14,10643,10644],{},"-rw-r--r-- 1 matta matta 220 Apr 27 08:00 .bash_logout",[14,10646,10647],{},"-rw-r--r-- 1 matta matta 3,5K Apr 27 08:00 .bashrc",[14,10649,10650],{},"drwxr-xr-x 2 matta matta 4,0K Apr 29 09:30 dokumente",[14,10652,10653],{},"-rw-r--r-- 1 matta matta 2,1K Apr 29 09:45 notizen.txt",[14,10655,10656],{},"-rwxr-xr-x 1 matta matta 1,2K Apr 29 10:00 skript.sh",[14,10658,10659],{},"lrwxrwxrwx 1 matta matta 11 Apr 29 10:00 link -> skript.sh",[10,10661,10663],{"id":10662},"ls-li-gleiche-inode-hard-links","ls -li (gleiche Inode = Hard Links)",[14,10665,10666],{},"524292 drwxr-xr-x 2 matta matta 4096 Apr 29 09:30 dokumente",[14,10668,10669],{},"524293 -rw-r--r-- 2 matta matta 1234 Apr 29 09:45 datei.txt",[14,10671,10672],{},"524293 -rw-r--r-- 2 matta matta 1234 Apr 29 09:45 hardlink.txt",[10,10674,10676],{"id":10675},"gleiche-inode-hard-links","^^^^^^^^^^ Gleiche Inode = Hard Links!",[10,10678,10679],{"id":10679},"pwd",[14,10681,10682,10684,10685,10688,10689,1525],{},[17,10683,19],{}," Gibt den ",[17,10686,10687],{},"absoluten Pfad"," des aktuellen Arbeitsverzeichnisses aus. \"pwd\" steht für ",[516,10690,10691],{},"Print Working Directory",[14,10693,10694,26,10696],{},[17,10695,25],{},[17,10697,10698,10699],{},"pwd ",[31,10700,33],{},[38,10702,101],{"id":10703},"flags-10",[43,10705,10706,10718],{},[46,10707,10708],{},[49,10709,10710,10714],{},[52,10711,10712],{},[17,10713,112],{},[52,10715,10716],{},[17,10717,61],{},[63,10719,10720,10727],{},[49,10721,10722,10724],{},[68,10723,1224],{},[68,10725,10726],{},"Logischer Pfad (Standard): zeigt den Pfad wie er in der Shell geführt wird, Symlinks werden nicht aufgelöst",[49,10728,10729,10731],{},[68,10730,1232],{},[68,10732,10733],{},"Physischer Pfad: löst alle Symlinks auf und zeigt den echten Pfad im Dateisystem",[14,10735,10736],{},[17,10737,10738],{},"Unterschied -L vs. -P",[14,10740,10741,10742,10745,10746,10749],{},"Wenn ",[17,10743,10744],{},"\u002Fhome\u002Fmatta"," ein symbolischer Link auf ",[17,10747,10748],{},"\u002Fdata\u002Fusers\u002Fmatta"," ist:",[205,10751,10753],{"className":207,"code":10752,"language":209,"meta":210,"style":210},"cd \u002Fhome\u002Fmatta\n\n",[212,10754,10755],{"__ignoreMap":210},[31,10756,10757,10760],{"class":216,"line":217},[31,10758,10759],{"class":223},"cd",[31,10761,10762],{"class":332}," \u002Fhome\u002Fmatta\n",[14,10764,10765],{},"pwd # oder pwd -L",[10,10767,10769],{"id":10768},"homematta-logischer-pfad-symlink-selbst","\u002Fhome\u002Fmatta \u003C- logischer Pfad (Symlink selbst)",[205,10771,10773],{"className":207,"code":10772,"language":209,"meta":210,"style":210},"pwd -P\n\n# \u002Fdata\u002Fusers\u002Fmatta \u003C- physischer Pfad (echtes Ziel)\n\n",[212,10774,10775,10782,10786],{"__ignoreMap":210},[31,10776,10777,10779],{"class":216,"line":217},[31,10778,10679],{"class":223},[31,10780,10781],{"class":223}," -P\n",[31,10783,10784],{"class":216,"line":227},[31,10785,231],{"emptyLinePlaceholder":230},[31,10787,10788],{"class":216,"line":234},[31,10789,10790],{"class":237},"# \u002Fdata\u002Fusers\u002Fmatta \u003C- physischer Pfad (echtes Ziel)\n",[38,10792,193],{"id":10793},"beispiele-12",[10,10795,10797],{"id":10796},"aktuelles-verzeichnis-ausgeben","Aktuelles Verzeichnis ausgeben",[14,10799,10679],{},[10,10801,10803],{"id":10802},"physischen-pfad-symlinks-aufgelöst","Physischen Pfad (Symlinks aufgelöst)",[205,10805,10807],{"className":207,"code":10806,"language":209,"meta":210,"style":210},"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",[212,10808,10809,10815,10819,10824,10828,10842,10846,10852,10856,10868,10872,10885,10889,10900,10904,10909,10913,10939,10943,10950,10954,10962,10966,10970,10974,10979,10983],{"__ignoreMap":210},[31,10810,10811,10813],{"class":216,"line":217},[31,10812,10679],{"class":223},[31,10814,10781],{"class":223},[31,10816,10817],{"class":216,"line":227},[31,10818,231],{"emptyLinePlaceholder":230},[31,10820,10821],{"class":216,"line":234},[31,10822,10823],{"class":237},"# In Skripten: aktuelles Verzeichnis speichern und später zurückkehren\n",[31,10825,10826],{"class":216,"line":241},[31,10827,231],{"emptyLinePlaceholder":230},[31,10829,10830,10833,10835,10838,10840],{"class":216,"line":246},[31,10831,10832],{"class":363},"orig",[31,10834,367],{"class":336},[31,10836,10837],{"class":363},"$(",[31,10839,10679],{"class":223},[31,10841,432],{"class":363},[31,10843,10844],{"class":216,"line":254},[31,10845,231],{"emptyLinePlaceholder":230},[31,10847,10848,10850],{"class":216,"line":259},[31,10849,10759],{"class":223},[31,10851,2950],{"class":332},[31,10853,10854],{"class":216,"line":265},[31,10855,231],{"emptyLinePlaceholder":230},[31,10857,10858,10860,10863,10865],{"class":216,"line":270},[31,10859,856],{"class":223},[31,10861,10862],{"class":332}," \"Jetzt in: $(",[31,10864,10679],{"class":223},[31,10866,10867],{"class":332},")\"\n",[31,10869,10870],{"class":216,"line":278},[31,10871,231],{"emptyLinePlaceholder":230},[31,10873,10874,10876,10879,10882],{"class":216,"line":283},[31,10875,10759],{"class":223},[31,10877,10878],{"class":332}," \"",[31,10880,10881],{"class":363},"$orig",[31,10883,10884],{"class":332},"\"\n",[31,10886,10887],{"class":216,"line":289},[31,10888,231],{"emptyLinePlaceholder":230},[31,10890,10891,10893,10896,10898],{"class":216,"line":294},[31,10892,856],{"class":223},[31,10894,10895],{"class":332}," \"Zurück in: $(",[31,10897,10679],{"class":223},[31,10899,10867],{"class":332},[31,10901,10902],{"class":216,"line":807},[31,10903,231],{"emptyLinePlaceholder":230},[31,10905,10906],{"class":216,"line":812},[31,10907,10908],{"class":237},"# Prüfen ob man sich im richtigen Verzeichnis befindet\n",[31,10910,10911],{"class":216,"line":821},[31,10912,231],{"emptyLinePlaceholder":230},[31,10914,10915,10917,10920,10923,10925,10928,10931,10934,10937],{"class":216,"line":826},[31,10916,5335],{"class":336},[31,10918,10919],{"class":363}," [ ",[31,10921,10922],{"class":332},"\"$(",[31,10924,10679],{"class":223},[31,10926,10927],{"class":332},")\"",[31,10929,10930],{"class":336}," !=",[31,10932,10933],{"class":332}," \"\u002Fvar\u002Fwww\u002Fhtml\"",[31,10935,10936],{"class":363}," ]; ",[31,10938,5350],{"class":336},[31,10940,10941],{"class":216,"line":837},[31,10942,231],{"emptyLinePlaceholder":230},[31,10944,10945,10947],{"class":216,"line":842},[31,10946,856],{"class":223},[31,10948,10949],{"class":332}," \"Falsches Verzeichnis!\"\n",[31,10951,10952],{"class":216,"line":848},[31,10953,231],{"emptyLinePlaceholder":230},[31,10955,10956,10959],{"class":216,"line":853},[31,10957,10958],{"class":223},"exit",[31,10960,10961],{"class":223}," 1\n",[31,10963,10964],{"class":216,"line":868},[31,10965,231],{"emptyLinePlaceholder":230},[31,10967,10968],{"class":216,"line":873},[31,10969,5374],{"class":336},[31,10971,10972],{"class":216,"line":879},[31,10973,231],{"emptyLinePlaceholder":230},[31,10975,10976],{"class":216,"line":884},[31,10977,10978],{"class":237},"# In Kombination mit find (absoluter Pfad als Startpunkt)\n",[31,10980,10981],{"class":216,"line":1405},[31,10982,231],{"emptyLinePlaceholder":230},[31,10984,10985,10987,10990,10992,10994,10996],{"class":216,"line":1410},[31,10986,2500],{"class":220},[31,10988,10989],{"class":332}," \"$(",[31,10991,10679],{"class":223},[31,10993,10927],{"class":332},[31,10995,6067],{"class":223},[31,10997,6402],{"class":332},[38,10999,350],{"id":11000},"ausgabe-12",[10,11002,10679],{"id":11003},"pwd-1",[14,11005,11006],{},"\u002Fhome\u002Fmatta\u002Fprojekte\u002Fwebserver",[10,11008,11010],{"id":11009},"wenn-cwd-ein-symlink-ist","Wenn CWD ein Symlink ist:",[10,11012,11014],{"id":11013},"pwd-l","pwd -L",[14,11016,11017],{},"\u002Fhome\u002Fmatta \u003C- zeigt Symlink-Pfad",[10,11019,11021],{"id":11020},"pwd-p","pwd -P",[14,11023,11024],{},"\u002Fdata\u002Fusers\u002Fmatta \u003C- zeigt echten Pfad",[10,11026,11027],{"id":11027},"sort",[14,11029,11030,11032],{},[17,11031,19],{}," Sortiert Zeilen eines Textes alphabetisch, numerisch oder nach anderen Kriterien.",[14,11034,11035,26,11037],{},[17,11036,25],{},[17,11038,11039,11040,26,11042],{},"sort ",[31,11041,33],{},[31,11043,3263],{},[38,11045,101],{"id":11046},"flags-11",[43,11048,11049,11065],{},[46,11050,11051],{},[49,11052,11053,11057,11061],{},[52,11054,11055],{},[17,11056,112],{},[52,11058,11059],{},[17,11060,117],{},[52,11062,11063],{},[17,11064,61],{},[63,11066,11067,11076,11086,11096,11104,11114,11125,11141,11152,11163,11173,11183,11193,11203,11214,11224,11235],{},[49,11068,11069,11071,11073],{},[68,11070,172],{},[68,11072,9978],{},[68,11074,11075],{},"Umgekehrte Reihenfolge",[49,11077,11078,11080,11083],{},[68,11079,161],{},[68,11081,11082],{},"--numeric-sort",[68,11084,11085],{},"Numerisch sortieren (nicht alphabetisch: 10 > 9)",[49,11087,11088,11090,11093],{},[68,11089,1200],{},[68,11091,11092],{},"--human-numeric-sort",[68,11094,11095],{},"Menschenlesbare Zahlen sortieren (1K \u003C 1M \u003C 1G)",[49,11097,11098,11100,11102],{},[68,11099,1192],{},[68,11101,4679],{},[68,11103,4682],{},[49,11105,11106,11108,11111],{},[68,11107,128],{},[68,11109,11110],{},"--unique",[68,11112,11113],{},"Duplikate entfernen",[49,11115,11116,11119,11122],{},[68,11117,11118],{},"-b",[68,11120,11121],{},"--ignore-leading-blanks",[68,11123,11124],{},"Führende Leerzeichen ignorieren",[49,11126,11127,11133,11138],{},[68,11128,11129,11130],{},"-k N",[31,11131,11132],{},",M",[68,11134,11135,11136],{},"--key=N",[31,11137,11132],{},[68,11139,11140],{},"Sortierschlüssel: Ab Feld N (bis Feld M)",[49,11142,11143,11146,11149],{},[68,11144,11145],{},"-t TRENNER",[68,11147,11148],{},"--field-separator",[68,11150,11151],{},"Spaltentrenner festlegen",[49,11153,11154,11157,11160],{},[68,11155,11156],{},"-o DATEI",[68,11158,11159],{},"--output=DATEI",[68,11161,11162],{},"Ergebnis in Datei schreiben (kann Eingabedatei sein!)",[49,11164,11165,11167,11170],{},[68,11166,1184],{},[68,11168,11169],{},"--check",[68,11171,11172],{},"Prüfen ob Eingabe bereits sortiert ist",[49,11174,11175,11178,11180],{},[68,11176,11177],{},"-C",[68,11179,9968],{},[68,11181,11182],{},"Wie -c, aber ohne Fehlermeldung",[49,11184,11185,11187,11190],{},[68,11186,3323],{},[68,11188,11189],{},"--merge",[68,11191,11192],{},"Bereits sortierte Dateien zusammenführen",[49,11194,11195,11197,11200],{},[68,11196,1168],{},[68,11198,11199],{},"--random-sort",[68,11201,11202],{},"Zufällige Reihenfolge",[49,11204,11205,11208,11211],{},[68,11206,11207],{},"-V",[68,11209,11210],{},"--version-sort",[68,11212,11213],{},"Versionsnummern sortieren (1.9 \u003C 1.10)",[49,11215,11216,11218,11221],{},[68,11217,7918],{},[68,11219,11220],{},"--zero-terminated",[68,11222,11223],{},"Null-Byte als Zeilentrenner (für find -print0)",[49,11225,11226,11229,11232],{},[68,11227,11228],{},"-S N",[68,11230,11231],{},"--buffer-size=N",[68,11233,11234],{},"Puffergröße (z.B. -S 1G)",[49,11236,11237,11240,11242],{},[68,11238,11239],{},"--parallel=N",[68,11241,9968],{},[68,11243,11244],{},"N CPU-Kerne nutzen",[14,11246,11247],{},[17,11248,11249],{},"Sortierschlüssel -k verstehen",[205,11251,11253],{"className":207,"code":11252,"language":209,"meta":210,"style":210},"sort -k ANFANG[,ENDE][OPTIONEN]\n\n",[212,11254,11255],{"__ignoreMap":210},[31,11256,11257,11259,11262],{"class":216,"line":217},[31,11258,11027],{"class":220},[31,11260,11261],{"class":223}," -k",[31,11263,11264],{"class":332}," ANFANG[,ENDE][OPTIONEN]\n",[14,11266,11267,11268,11270,11271,11273,11274,11276,11277,11279,11280,11282],{},"Beispiele:",[584,11269],{},"\n-k2 Ab Feld 2 bis Zeilenende sortieren",[584,11272],{},"\n-k2,2 Nur Feld 2 als Schlüssel",[584,11275],{},"\n-k2,2n Feld 2 numerisch sortieren",[584,11278],{},"\n-k3,3r Feld 3 rückwärts sortieren",[584,11281],{},"\n-k2,2 -k1,1 Erst nach Feld 2, dann nach Feld 1",[38,11284,193],{"id":11285},"beispiele-13",[10,11287,11289],{"id":11288},"alphabetisch-sortieren","Alphabetisch sortieren",[14,11291,11292],{},"sort namen.txt",[10,11294,11296],{"id":11295},"numerisch-sortieren-wichtig-sonst-10-2-alphabetisch","Numerisch sortieren (wichtig: sonst 10 \u003C 2 alphabetisch!)",[205,11298,11300],{"className":207,"code":11299,"language":209,"meta":210,"style":210},"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",[212,11301,11302,11310,11314,11319,11323,11331,11335,11340,11344,11353,11357,11361,11365,11373,11377,11382,11386,11395,11399,11404,11408,11420,11424,11429,11433,11454,11458,11463,11467,11492,11496,11501,11505,11527,11531,11536,11540,11561,11565,11570,11574,11584,11588,11593,11597],{"__ignoreMap":210},[31,11303,11304,11306,11308],{"class":216,"line":217},[31,11305,11027],{"class":220},[31,11307,3877],{"class":223},[31,11309,7567],{"class":332},[31,11311,11312],{"class":216,"line":227},[31,11313,231],{"emptyLinePlaceholder":230},[31,11315,11316],{"class":216,"line":234},[31,11317,11318],{"class":237},"# Umgekehrt alphabetisch\n",[31,11320,11321],{"class":216,"line":241},[31,11322,231],{"emptyLinePlaceholder":230},[31,11324,11325,11327,11329],{"class":216,"line":246},[31,11326,11027],{"class":220},[31,11328,3592],{"class":223},[31,11330,9528],{"class":332},[31,11332,11333],{"class":216,"line":254},[31,11334,231],{"emptyLinePlaceholder":230},[31,11336,11337],{"class":216,"line":259},[31,11338,11339],{"class":237},"# Numerisch + umgekehrt (größte Zahl oben)\n",[31,11341,11342],{"class":216,"line":265},[31,11343,231],{"emptyLinePlaceholder":230},[31,11345,11346,11348,11351],{"class":216,"line":270},[31,11347,11027],{"class":220},[31,11349,11350],{"class":223}," -nr",[31,11352,7567],{"class":332},[31,11354,11355],{"class":216,"line":278},[31,11356,231],{"emptyLinePlaceholder":230},[31,11358,11359],{"class":216,"line":283},[31,11360,5061],{"class":237},[31,11362,11363],{"class":216,"line":289},[31,11364,231],{"emptyLinePlaceholder":230},[31,11366,11367,11369,11371],{"class":216,"line":294},[31,11368,11027],{"class":220},[31,11370,4341],{"class":223},[31,11372,9528],{"class":332},[31,11374,11375],{"class":216,"line":807},[31,11376,231],{"emptyLinePlaceholder":230},[31,11378,11379],{"class":216,"line":812},[31,11380,11381],{"class":237},"# Duplikate entfernen\n",[31,11383,11384],{"class":216,"line":821},[31,11385,231],{"emptyLinePlaceholder":230},[31,11387,11388,11390,11393],{"class":216,"line":826},[31,11389,11027],{"class":220},[31,11391,11392],{"class":223}," -u",[31,11394,9528],{"class":332},[31,11396,11397],{"class":216,"line":837},[31,11398,231],{"emptyLinePlaceholder":230},[31,11400,11401],{"class":216,"line":842},[31,11402,11403],{"class":237},"# \u002Fetc\u002Fpasswd nach UID (3. Feld, numerisch) sortieren\n",[31,11405,11406],{"class":216,"line":848},[31,11407,231],{"emptyLinePlaceholder":230},[31,11409,11410,11412,11415,11418],{"class":216,"line":853},[31,11411,11027],{"class":220},[31,11413,11414],{"class":223}," -t:",[31,11416,11417],{"class":223}," -k3,3n",[31,11419,3548],{"class":332},[31,11421,11422],{"class":216,"line":868},[31,11423,231],{"emptyLinePlaceholder":230},[31,11425,11426],{"class":216,"line":873},[31,11427,11428],{"class":237},"# Dateien nach Größe auflisten (du + sort)\n",[31,11430,11431],{"class":216,"line":879},[31,11432,231],{"emptyLinePlaceholder":230},[31,11434,11435,11438,11441,11444,11446,11448,11451],{"class":216,"line":884},[31,11436,11437],{"class":220},"du",[31,11439,11440],{"class":223}," -sh",[31,11442,11443],{"class":332}," \u002Fvar\u002F",[31,11445,4959],{"class":223},[31,11447,337],{"class":336},[31,11449,11450],{"class":220}," sort",[31,11452,11453],{"class":223}," -h\n",[31,11455,11456],{"class":216,"line":1405},[31,11457,231],{"emptyLinePlaceholder":230},[31,11459,11460],{"class":216,"line":1410},[31,11461,11462],{"class":237},"# Größte Dateien\u002FVerzeichnisse finden\n",[31,11464,11465],{"class":216,"line":1416},[31,11466,231],{"emptyLinePlaceholder":230},[31,11468,11469,11471,11473,11476,11478,11480,11482,11485,11487,11489],{"class":216,"line":1421},[31,11470,11437],{"class":220},[31,11472,11440],{"class":223},[31,11474,11475],{"class":332}," \u002Fvar\u002Flog\u002F",[31,11477,4959],{"class":223},[31,11479,337],{"class":336},[31,11481,11450],{"class":220},[31,11483,11484],{"class":223}," -rh",[31,11486,337],{"class":336},[31,11488,10437],{"class":220},[31,11490,11491],{"class":223}," -10\n",[31,11493,11494],{"class":216,"line":1434},[31,11495,231],{"emptyLinePlaceholder":230},[31,11497,11498],{"class":216,"line":1439},[31,11499,11500],{"class":237},"# Prozesse nach CPU-Verbrauch sortieren\n",[31,11502,11503],{"class":216,"line":1445},[31,11504,231],{"emptyLinePlaceholder":230},[31,11506,11507,11509,11511,11513,11515,11518,11521,11523,11525],{"class":216,"line":1450},[31,11508,3512],{"class":220},[31,11510,3515],{"class":332},[31,11512,337],{"class":336},[31,11514,11450],{"class":220},[31,11516,11517],{"class":223}," -k3",[31,11519,11520],{"class":223}," -rn",[31,11522,337],{"class":336},[31,11524,10437],{"class":220},[31,11526,11491],{"class":223},[31,11528,11529],{"class":216,"line":2244},[31,11530,231],{"emptyLinePlaceholder":230},[31,11532,11533],{"class":216,"line":2249},[31,11534,11535],{"class":237},"# IP-Adressen sortieren (nach Oktet)\n",[31,11537,11538],{"class":216,"line":2255},[31,11539,231],{"emptyLinePlaceholder":230},[31,11541,11542,11544,11547,11550,11553,11555,11558],{"class":216,"line":2260},[31,11543,11027],{"class":220},[31,11545,11546],{"class":223}," -t.",[31,11548,11549],{"class":223}," -k1,1n",[31,11551,11552],{"class":223}," -k2,2n",[31,11554,11417],{"class":223},[31,11556,11557],{"class":223}," -k4,4n",[31,11559,11560],{"class":332}," ip_liste.txt\n",[31,11562,11563],{"class":216,"line":2270},[31,11564,231],{"emptyLinePlaceholder":230},[31,11566,11567],{"class":216,"line":2275},[31,11568,11569],{"class":237},"# Versionsnummern sortieren\n",[31,11571,11572],{"class":216,"line":2281},[31,11573,231],{"emptyLinePlaceholder":230},[31,11575,11576,11578,11581],{"class":216,"line":2286},[31,11577,11027],{"class":220},[31,11579,11580],{"class":223}," -V",[31,11582,11583],{"class":332}," versionen.txt\n",[31,11585,11586],{"class":216,"line":5316},[31,11587,231],{"emptyLinePlaceholder":230},[31,11589,11590],{"class":216,"line":5321},[31,11591,11592],{"class":237},"# Prüfen ob Datei bereits sortiert ist\n",[31,11594,11595],{"class":216,"line":5327},[31,11596,231],{"emptyLinePlaceholder":230},[31,11598,11599,11601,11603,11606,11609,11611,11614,11617,11620],{"class":216,"line":5332},[31,11600,11027],{"class":220},[31,11602,3425],{"class":223},[31,11604,11605],{"class":332}," namen.txt",[31,11607,11608],{"class":363}," && ",[31,11610,856],{"class":223},[31,11612,11613],{"class":332}," \"Bereits sortiert\"",[31,11615,11616],{"class":336}," ||",[31,11618,11619],{"class":223}," echo",[31,11621,11622],{"class":332}," \"Nicht sortiert\"\n",[10,11624,11626],{"id":11625},"in-datei-schreiben-kann-auch-eingabedatei-sein","In Datei schreiben (kann auch Eingabedatei sein)",[14,11628,11629],{},"sort namen.txt -o namen.txt",[38,11631,350],{"id":11632},"ausgabe-13",[10,11634,11636],{"id":11635},"cat-namentxt","cat namen.txt",[14,11638,11639],{},"Zara",[14,11641,11642],{},"Alice",[14,11644,11645],{},"bob",[14,11647,11642],{},[10,11649,11292],{"id":11650},"sort-namentxt",[14,11652,11642],{},[14,11654,11642],{},[14,11656,11639],{},[14,11658,11659],{},"bob \u003C- Großbuchstaben vor Kleinbuchstaben!",[10,11661,11663],{"id":11662},"sort-f-namentxt-case-insensitive","sort -f namen.txt (case-insensitive)",[14,11665,11642],{},[14,11667,11642],{},[14,11669,11645],{},[14,11671,11639],{},[10,11673,11675],{"id":11674},"sort-u-namentxt","sort -u namen.txt",[14,11677,11642],{},[14,11679,11639],{},[14,11681,11645],{},[10,11683,11685],{"id":11684},"sort-t-k33n-etcpasswd-head-4","sort -t: -k3,3n \u002Fetc\u002Fpasswd | head -4",[14,11687,4099],{},[14,11689,4102],{},[14,11691,4105],{},[14,11693,11694],{},"sys❌3:3:sys:\u002Fdev:\u002Fusr\u002Fsbin\u002Fnologin",[10,11696,11698],{"id":11697},"du-sh-varlog-sort-rh-head-5","du -sh \u002Fvar\u002Flog\u002F* | sort -rh | head -5",[14,11700,11701],{},"248M \u002Fvar\u002Flog\u002Fjournal",[14,11703,11704],{},"12M \u002Fvar\u002Flog\u002Fsyslog",[14,11706,11707],{},"4,5M \u002Fvar\u002Flog\u002Fauth.log",[14,11709,11710],{},"1,2M \u002Fvar\u002Flog\u002Fkern.log",[14,11712,11713],{},"440K \u002Fvar\u002Flog\u002Fdpkg.log",[10,11715,11716],{"id":11716},"cat",[14,11718,11719,11721,11722,11725],{},[17,11720,19],{}," Gibt den Inhalt von Dateien aus, verbindet mehrere Dateien und leitet Inhalte weiter. \"cat\" steht für ",[516,11723,11724],{},"concatenate"," (verketten).",[14,11727,11728,26,11730],{},[17,11729,25],{},[17,11731,11732,11733,26,11735],{},"cat ",[31,11734,33],{},[31,11736,3263],{},[38,11738,101],{"id":11739},"flags-12",[43,11741,11742,11758],{},[46,11743,11744],{},[49,11745,11746,11750,11754],{},[52,11747,11748],{},[17,11749,112],{},[52,11751,11752],{},[17,11753,117],{},[52,11755,11756],{},[17,11757,61],{},[63,11759,11760,11770,11780,11790,11801,11811,11821,11831,11841],{},[49,11761,11762,11764,11767],{},[68,11763,161],{},[68,11765,11766],{},"--number",[68,11768,11769],{},"Alle Zeilen nummerieren",[49,11771,11772,11774,11777],{},[68,11773,11118],{},[68,11775,11776],{},"--number-nonblank",[68,11778,11779],{},"Nur nicht-leere Zeilen nummerieren (überschreibt -n)",[49,11781,11782,11784,11787],{},[68,11783,9935],{},[68,11785,11786],{},"--show-all",[68,11788,11789],{},"Alles anzeigen: entspricht -vET (Tabs als ^I, Zeilenende als $)",[49,11791,11792,11795,11798],{},[68,11793,11794],{},"-T",[68,11796,11797],{},"--show-tabs",[68,11799,11800],{},"Tabs als ^I sichtbar machen",[49,11802,11803,11805,11808],{},[68,11804,4757],{},[68,11806,11807],{},"--show-ends",[68,11809,11810],{},"Zeilenenden als $ anzeigen",[49,11812,11813,11815,11818],{},[68,11814,1176],{},[68,11816,11817],{},"--show-nonprinting",[68,11819,11820],{},"Nicht-druckbare Zeichen sichtbar machen",[49,11822,11823,11825,11828],{},[68,11824,4885],{},[68,11826,11827],{},"--squeeze-blank",[68,11829,11830],{},"Mehrere aufeinanderfolgende Leerzeilen zu einer zusammenfassen",[49,11832,11833,11836,11838],{},[68,11834,11835],{},"-e",[68,11837,9968],{},[68,11839,11840],{},"Entspricht -vE",[49,11842,11843,11845,11847],{},[68,11844,9965],{},[68,11846,9968],{},[68,11848,11849],{},"Entspricht -vT",[14,11851,11852],{},[17,11853,11854],{},"Umleitungsoperatoren",[43,11856,11857,11869],{},[46,11858,11859],{},[49,11860,11861,11865],{},[52,11862,11863],{},[17,11864,6947],{},[52,11866,11867],{},[17,11868,61],{},[63,11870,11871,11879,11887,11895],{},[49,11872,11873,11876],{},[68,11874,11875],{},">",[68,11877,11878],{},"Ausgabe in Datei umleiten (überschreibt!)",[49,11880,11881,11884],{},[68,11882,11883],{},">>",[68,11885,11886],{},"Ausgabe an Datei anhängen",[49,11888,11889,11892],{},[68,11890,11891],{},"\u003C",[68,11893,11894],{},"Eingabe aus Datei lesen",[49,11896,11897,11900],{},[68,11898,11899],{},"\u003C\u003CEOF",[68,11901,11902],{},"Here-Document: mehrzeilige Eingabe direkt im Skript",[38,11904,193],{"id":11905},"beispiele-14",[10,11907,11909],{"id":11908},"datei-ausgeben","Datei ausgeben",[205,11911,11913],{"className":207,"code":11912,"language":209,"meta":210,"style":210},"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",[212,11914,11915,11921,11925,11929,11933,11941,11945,11950,11954,11963,11967,11972,11976,11985,11989,11994,11998,12007,12011,12016,12020,12032,12036,12041,12045,12059,12063,12068,12072,12084,12088,12093,12097],{"__ignoreMap":210},[31,11916,11917,11919],{"class":216,"line":217},[31,11918,11716],{"class":220},[31,11920,1256],{"class":332},[31,11922,11923],{"class":216,"line":227},[31,11924,231],{"emptyLinePlaceholder":230},[31,11926,11927],{"class":216,"line":234},[31,11928,5109],{"class":237},[31,11930,11931],{"class":216,"line":241},[31,11932,231],{"emptyLinePlaceholder":230},[31,11934,11935,11937,11939],{"class":216,"line":246},[31,11936,11716],{"class":220},[31,11938,3877],{"class":223},[31,11940,1256],{"class":332},[31,11942,11943],{"class":216,"line":254},[31,11944,231],{"emptyLinePlaceholder":230},[31,11946,11947],{"class":216,"line":259},[31,11948,11949],{"class":237},"# Nur nicht-leere Zeilen nummerieren\n",[31,11951,11952],{"class":216,"line":265},[31,11953,231],{"emptyLinePlaceholder":230},[31,11955,11956,11958,11961],{"class":216,"line":270},[31,11957,11716],{"class":220},[31,11959,11960],{"class":223}," -b",[31,11962,1256],{"class":332},[31,11964,11965],{"class":216,"line":278},[31,11966,231],{"emptyLinePlaceholder":230},[31,11968,11969],{"class":216,"line":283},[31,11970,11971],{"class":237},"# Tabs und Zeilenenden sichtbar machen (Debugging von Skripten)\n",[31,11973,11974],{"class":216,"line":289},[31,11975,231],{"emptyLinePlaceholder":230},[31,11977,11978,11980,11983],{"class":216,"line":294},[31,11979,11716],{"class":220},[31,11981,11982],{"class":223}," -A",[31,11984,2057],{"class":332},[31,11986,11987],{"class":216,"line":807},[31,11988,231],{"emptyLinePlaceholder":230},[31,11990,11991],{"class":216,"line":812},[31,11992,11993],{"class":237},"# Leerzeilen zusammenfassen\n",[31,11995,11996],{"class":216,"line":821},[31,11997,231],{"emptyLinePlaceholder":230},[31,11999,12000,12002,12005],{"class":216,"line":826},[31,12001,11716],{"class":220},[31,12003,12004],{"class":223}," -s",[31,12006,1256],{"class":332},[31,12008,12009],{"class":216,"line":837},[31,12010,231],{"emptyLinePlaceholder":230},[31,12012,12013],{"class":216,"line":842},[31,12014,12015],{"class":237},"# Mehrere Dateien verketten und ausgeben\n",[31,12017,12018],{"class":216,"line":848},[31,12019,231],{"emptyLinePlaceholder":230},[31,12021,12022,12024,12026,12029],{"class":216,"line":853},[31,12023,11716],{"class":220},[31,12025,4026],{"class":332},[31,12027,12028],{"class":332}," datei2.txt",[31,12030,12031],{"class":332}," datei3.txt\n",[31,12033,12034],{"class":216,"line":868},[31,12035,231],{"emptyLinePlaceholder":230},[31,12037,12038],{"class":216,"line":873},[31,12039,12040],{"class":237},"# Mehrere Dateien zu einer zusammenführen\n",[31,12042,12043],{"class":216,"line":879},[31,12044,231],{"emptyLinePlaceholder":230},[31,12046,12047,12049,12051,12053,12056],{"class":216,"line":884},[31,12048,11716],{"class":220},[31,12050,4026],{"class":332},[31,12052,12028],{"class":332},[31,12054,12055],{"class":336}," >",[31,12057,12058],{"class":332}," gesamt.txt\n",[31,12060,12061],{"class":216,"line":1405},[31,12062,231],{"emptyLinePlaceholder":230},[31,12064,12065],{"class":216,"line":1410},[31,12066,12067],{"class":237},"# Ans Ende einer Datei anhängen\n",[31,12069,12070],{"class":216,"line":1416},[31,12071,231],{"emptyLinePlaceholder":230},[31,12073,12074,12076,12079,12081],{"class":216,"line":1421},[31,12075,11716],{"class":220},[31,12077,12078],{"class":332}," neue_zeilen.txt",[31,12080,862],{"class":336},[31,12082,12083],{"class":332}," bestehend.txt\n",[31,12085,12086],{"class":216,"line":1434},[31,12087,231],{"emptyLinePlaceholder":230},[31,12089,12090],{"class":216,"line":1439},[31,12091,12092],{"class":237},"# Neue Datei interaktiv erstellen (Strg+D = EOF)\n",[31,12094,12095],{"class":216,"line":1445},[31,12096,231],{"emptyLinePlaceholder":230},[31,12098,12099,12101,12103],{"class":216,"line":1450},[31,12100,11716],{"class":220},[31,12102,12055],{"class":336},[31,12104,12105],{"class":332}," neue_datei.txt\n",[14,12107,4140],{},[14,12109,4143],{},[14,12111,12112],{},"^D",[10,12114,12116],{"id":12115},"here-document-mehrzeiligen-text-direkt-in-datei-schreiben","Here-Document – mehrzeiligen Text direkt in Datei schreiben",[205,12118,12120],{"className":207,"code":12119,"language":209,"meta":210,"style":210},"cat > konfiguration.conf \u003C\u003C EOF\n\n# Automatisch generiert\n\nhost=localhost\n\nport=8080\n\ndebug=false\n\n",[212,12121,12122,12137,12141,12146,12150,12155,12159,12164,12168],{"__ignoreMap":210},[31,12123,12124,12126,12128,12131,12134],{"class":216,"line":217},[31,12125,11716],{"class":220},[31,12127,12055],{"class":336},[31,12129,12130],{"class":332}," konfiguration.conf",[31,12132,12133],{"class":336}," \u003C\u003C",[31,12135,12136],{"class":332}," EOF\n",[31,12138,12139],{"class":216,"line":227},[31,12140,231],{"emptyLinePlaceholder":230},[31,12142,12143],{"class":216,"line":234},[31,12144,12145],{"class":332},"# Automatisch generiert\n",[31,12147,12148],{"class":216,"line":241},[31,12149,231],{"emptyLinePlaceholder":230},[31,12151,12152],{"class":216,"line":246},[31,12153,12154],{"class":332},"host=localhost\n",[31,12156,12157],{"class":216,"line":254},[31,12158,231],{"emptyLinePlaceholder":230},[31,12160,12161],{"class":216,"line":259},[31,12162,12163],{"class":332},"port=8080\n",[31,12165,12166],{"class":216,"line":265},[31,12167,231],{"emptyLinePlaceholder":230},[31,12169,12170],{"class":216,"line":270},[31,12171,12172],{"class":332},"debug=false\n",[14,12174,12175],{},"EOF",[10,12177,12179],{"id":12178},"leere-datei-erstellen","Leere Datei erstellen",[205,12181,12183],{"className":207,"code":12182,"language":209,"meta":210,"style":210},"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",[212,12184,12185,12196,12200,12205,12209,12227,12231,12236,12240],{"__ignoreMap":210},[31,12186,12187,12189,12192,12194],{"class":216,"line":217},[31,12188,11716],{"class":220},[31,12190,12191],{"class":332}," \u002Fdev\u002Fnull",[31,12193,12055],{"class":336},[31,12195,1256],{"class":332},[31,12197,12198],{"class":216,"line":227},[31,12199,231],{"emptyLinePlaceholder":230},[31,12201,12202],{"class":216,"line":234},[31,12203,12204],{"class":237},"# Binäre Dateien verketten (z.B. Split-Archive)\n",[31,12206,12207],{"class":216,"line":241},[31,12208,231],{"emptyLinePlaceholder":230},[31,12210,12211,12213,12216,12219,12222,12224],{"class":216,"line":246},[31,12212,11716],{"class":220},[31,12214,12215],{"class":332}," archiv.part1",[31,12217,12218],{"class":332}," archiv.part2",[31,12220,12221],{"class":332}," archiv.part3",[31,12223,12055],{"class":336},[31,12225,12226],{"class":332}," archiv.tar.gz\n",[31,12228,12229],{"class":216,"line":254},[31,12230,231],{"emptyLinePlaceholder":230},[31,12232,12233],{"class":216,"line":259},[31,12234,12235],{"class":237},"# Inhalt einer Datei in eine Variable einlesen\n",[31,12237,12238],{"class":216,"line":265},[31,12239,231],{"emptyLinePlaceholder":230},[31,12241,12242,12245,12247,12249,12251,12253],{"class":216,"line":270},[31,12243,12244],{"class":363},"INHALT",[31,12246,367],{"class":336},[31,12248,10837],{"class":363},[31,12250,11716],{"class":220},[31,12252,12130],{"class":332},[31,12254,432],{"class":363},[38,12256,350],{"id":12257},"ausgabe-14",[10,12259,12261],{"id":12260},"cat-n-dateitxt","cat -n datei.txt",[14,12263,9848],{},[14,12265,9851],{},[14,12267,1713],{},[14,12269,12270],{},"4 Zeile vier",[10,12272,12274],{"id":12273},"cat-b-dateitxt-leere-zeile-bekommt-keine-nummer","cat -b datei.txt (leere Zeile bekommt keine Nummer)",[14,12276,9848],{},[14,12278,9851],{},[14,12280,12281],{},"3 Zeile vier",[10,12283,12285],{"id":12284},"cat-a-skriptsh","cat -A skript.sh",[205,12287,12289],{"className":207,"code":12288,"language":209,"meta":210,"style":210},"#!\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",[212,12290,12291,12296,12300,12310,12314,12324,12328,12333,12337],{"__ignoreMap":210},[31,12292,12293],{"class":216,"line":217},[31,12294,12295],{"class":237},"#!\u002Fbin\u002Fbash$\n",[31,12297,12298],{"class":216,"line":227},[31,12299,231],{"emptyLinePlaceholder":230},[31,12301,12302,12304,12307],{"class":216,"line":234},[31,12303,856],{"class":223},[31,12305,12306],{"class":332}," \"Hallo\"",[31,12308,12309],{"class":363},"$\n",[31,12311,12312],{"class":216,"line":241},[31,12313,231],{"emptyLinePlaceholder":230},[31,12315,12316,12319,12322],{"class":216,"line":246},[31,12317,12318],{"class":220},"^Ieingerückter",[31,12320,12321],{"class":332}," Text",[31,12323,12309],{"class":363},[31,12325,12326],{"class":216,"line":254},[31,12327,231],{"emptyLinePlaceholder":230},[31,12329,12330],{"class":216,"line":259},[31,12331,12332],{"class":237},"# ^I = Tab-Zeichen, $ = Zeilenende\n",[31,12334,12335],{"class":216,"line":265},[31,12336,231],{"emptyLinePlaceholder":230},[31,12338,12339],{"class":216,"line":270},[31,12340,12341],{"class":237},"# cat -s datei.txt (Leerzeilen zusammengefasst)\n",[14,12343,4140],{},[14,12345,4146],{},[10,12347,12349],{"id":12348},"vorher-waren-3-leerzeilen-zwischen-zeile-1-und-3","(vorher waren 3 Leerzeilen zwischen Zeile 1 und 3)",[10,12351,12352],{"id":12352},"tac",[14,12354,12355,12357,12358,12361],{},[17,12356,19],{}," Gibt den Inhalt einer Datei in ",[17,12359,12360],{},"umgekehrter Zeilenreihenfolge"," aus. Der Name ist \"cat\" rückwärts geschrieben.",[14,12363,12364,26,12366],{},[17,12365,25],{},[17,12367,12368,12369,26,12371],{},"tac ",[31,12370,33],{},[31,12372,3263],{},[38,12374,101],{"id":12375},"flags-13",[43,12377,12378,12390],{},[46,12379,12380],{},[49,12381,12382,12386],{},[52,12383,12384],{},[17,12385,112],{},[52,12387,12388],{},[17,12389,61],{},[63,12391,12392,12400,12407],{},[49,12393,12394,12397],{},[68,12395,12396],{},"-s TRENNER",[68,12398,12399],{},"Eigenen Datensatz-Trennzeichen verwenden (statt Newline \\n)",[49,12401,12402,12404],{},[68,12403,172],{},[68,12405,12406],{},"Den Trenner als regulären Ausdruck interpretieren",[49,12408,12409,12411],{},[68,12410,11118],{},[68,12412,12413],{},"Trenner wird an den Anfang statt an das Ende gestellt",[38,12415,193],{"id":12416},"beispiele-15",[10,12418,12420],{"id":12419},"datei-umgekehrt-ausgeben","Datei umgekehrt ausgeben",[14,12422,12423],{},"tac datei.txt",[10,12425,12427],{"id":12426},"log-datei-umgekehrt-anzeigen-neueste-einträge-zuerst","Log-Datei umgekehrt anzeigen: neueste Einträge zuerst",[205,12429,12431],{"className":207,"code":12430,"language":209,"meta":210,"style":210},"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",[212,12432,12433,12444,12448,12453,12457,12471,12475,12480,12484,12501,12505,12510,12514,12530,12534,12539,12543,12555,12559,12564,12568],{"__ignoreMap":210},[31,12434,12435,12437,12439,12441],{"class":216,"line":217},[31,12436,12352],{"class":220},[31,12438,4389],{"class":332},[31,12440,337],{"class":336},[31,12442,12443],{"class":220}," less\n",[31,12445,12446],{"class":216,"line":227},[31,12447,231],{"emptyLinePlaceholder":230},[31,12449,12450],{"class":216,"line":234},[31,12451,12452],{"class":237},"# Nur die letzten 20 Einträge (von hinten)\n",[31,12454,12455],{"class":216,"line":241},[31,12456,231],{"emptyLinePlaceholder":230},[31,12458,12459,12461,12464,12466,12468],{"class":216,"line":246},[31,12460,12352],{"class":220},[31,12462,12463],{"class":332}," \u002Fvar\u002Flog\u002Fauth.log",[31,12465,337],{"class":336},[31,12467,10437],{"class":220},[31,12469,12470],{"class":223}," -20\n",[31,12472,12473],{"class":216,"line":254},[31,12474,231],{"emptyLinePlaceholder":230},[31,12476,12477],{"class":216,"line":259},[31,12478,12479],{"class":237},"# Mit grep kombinieren: letzten Fehler suchen\n",[31,12481,12482],{"class":216,"line":265},[31,12483,231],{"emptyLinePlaceholder":230},[31,12485,12486,12488,12490,12492,12494,12496,12498],{"class":216,"line":270},[31,12487,12352],{"class":220},[31,12489,4389],{"class":332},[31,12491,337],{"class":336},[31,12493,340],{"class":220},[31,12495,3447],{"class":223},[31,12497,2549],{"class":223},[31,12499,12500],{"class":332}," \"ERROR\"\n",[31,12502,12503],{"class":216,"line":278},[31,12504,231],{"emptyLinePlaceholder":230},[31,12506,12507],{"class":216,"line":283},[31,12508,12509],{"class":237},"# History umgekehrt anzeigen (letzter Befehl zuerst)\n",[31,12511,12512],{"class":216,"line":289},[31,12513,231],{"emptyLinePlaceholder":230},[31,12515,12516,12519,12521,12524,12526,12528],{"class":216,"line":294},[31,12517,12518],{"class":223},"history",[31,12520,337],{"class":336},[31,12522,12523],{"class":220}," tac",[31,12525,337],{"class":336},[31,12527,10437],{"class":220},[31,12529,11491],{"class":223},[31,12531,12532],{"class":216,"line":807},[31,12533,231],{"emptyLinePlaceholder":230},[31,12535,12536],{"class":216,"line":812},[31,12537,12538],{"class":237},"# Eigener Trenner (z.B. Datensätze durch \"---\" getrennt)\n",[31,12540,12541],{"class":216,"line":821},[31,12542,231],{"emptyLinePlaceholder":230},[31,12544,12545,12547,12549,12552],{"class":216,"line":826},[31,12546,12352],{"class":220},[31,12548,12004],{"class":223},[31,12550,12551],{"class":332}," \"---\"",[31,12553,12554],{"class":332}," mehrteilig.txt\n",[31,12556,12557],{"class":216,"line":837},[31,12558,231],{"emptyLinePlaceholder":230},[31,12560,12561],{"class":216,"line":842},[31,12562,12563],{"class":237},"# Zeilen umkehren und mit Zeilennummern versehen\n",[31,12565,12566],{"class":216,"line":848},[31,12567,231],{"emptyLinePlaceholder":230},[31,12569,12570,12572,12574,12576,12579],{"class":216,"line":853},[31,12571,12352],{"class":220},[31,12573,8718],{"class":332},[31,12575,337],{"class":336},[31,12577,12578],{"class":220}," cat",[31,12580,12581],{"class":223}," -n\n",[38,12583,350],{"id":12584},"ausgabe-15",[10,12586,12588],{"id":12587},"cat-dateitxt","cat datei.txt",[14,12590,4140],{},[14,12592,4143],{},[14,12594,4146],{},[14,12596,12597],{},"Zeile 4",[10,12599,12423],{"id":12600},"tac-dateitxt",[14,12602,12597],{},[14,12604,4146],{},[14,12606,4143],{},[14,12608,4140],{},[10,12610,12612],{"id":12611},"tac-varlogauthlog-grep-m-1-failed","tac \u002Fvar\u002Flog\u002Fauth.log | grep -m 1 \"Failed\"",[14,12614,12615,12616,12618],{},"Apr 29 09:45:01 server sshd",[31,12617,4581],{},": Failed password for invalid user admin from 10.0.0.5",[10,12620,12622],{"id":12621},"letzter-fehlgeschlagener-login-versuch","\u003C- letzter fehlgeschlagener Login-Versuch",[10,12624,12625],{"id":12625},"passwd",[14,12627,12628,12630,12631,12634,12635,12638,12639,12641],{},[17,12629,19],{}," Verwaltet Benutzerpasswörter. Normale Benutzer können ihr ",[17,12632,12633],{},"eigenes"," Passwort ändern; root kann ",[17,12636,12637],{},"alle"," Passwörter und Konto-Ablaufzeiten verwalten. Das Passwort wird verschlüsselt in ",[17,12640,2387],{}," gespeichert.",[14,12643,12644,26,12646],{},[17,12645,25],{},[17,12647,12648,12649,26,12651],{},"passwd ",[31,12650,33],{},[31,12652,36],{},[38,12654,101],{"id":12655},"flags-14",[43,12657,12658,12674],{},[46,12659,12660],{},[49,12661,12662,12666,12670],{},[52,12663,12664],{},[17,12665,112],{},[52,12667,12668],{},[17,12669,117],{},[52,12671,12672],{},[17,12673,61],{},[63,12675,12676,12686,12696,12706,12716,12727,12738,12749,12760,12770],{},[49,12677,12678,12680,12683],{},[68,12679,3291],{},[68,12681,12682],{},"--lock",[68,12684,12685],{},"Konto sperren – fügt ! vor den Hash in \u002Fetc\u002Fshadow ein (Login mit Passwort nicht mehr möglich, SSH-Key-Login aber weiterhin!)",[49,12687,12688,12690,12693],{},[68,12689,128],{},[68,12691,12692],{},"--unlock",[68,12694,12695],{},"Konto entsperren – entfernt ! aus dem Hash",[49,12697,12698,12700,12703],{},[68,12699,10015],{},[68,12701,12702],{},"--delete",[68,12704,12705],{},"Passwort löschen (leeres Passwort = unsicher!)",[49,12707,12708,12710,12713],{},[68,12709,11835],{},[68,12711,12712],{},"--expire",[68,12714,12715],{},"Passwort sofort ablaufen lassen – Benutzer muss es beim nächsten Login ändern",[49,12717,12718,12721,12724],{},[68,12719,12720],{},"-n TAGE",[68,12722,12723],{},"--minimum=TAGE",[68,12725,12726],{},"Mindestanzahl Tage bis Passwort geändert werden darf (0 = jederzeit)",[49,12728,12729,12732,12735],{},[68,12730,12731],{},"-x TAGE",[68,12733,12734],{},"--maximum=TAGE",[68,12736,12737],{},"Maximale Gültigkeitsdauer in Tagen (99999 = unbegrenzt)",[49,12739,12740,12743,12746],{},[68,12741,12742],{},"-w TAGE",[68,12744,12745],{},"--warning=TAGE",[68,12747,12748],{},"Warnung N Tage vor Ablauf",[49,12750,12751,12754,12757],{},[68,12752,12753],{},"-i TAGE",[68,12755,12756],{},"--inactive=TAGE",[68,12758,12759],{},"Konto wird N Tage nach Ablauf deaktiviert",[49,12761,12762,12764,12767],{},[68,12763,629],{},[68,12765,12766],{},"--status",[68,12768,12769],{},"Passwortstatus anzeigen",[49,12771,12772,12775,12777],{},[68,12773,12774],{},"--stdin",[68,12776,9968],{},[68,12778,12779],{},"Passwort von Standardeingabe lesen (nicht auf allen Systemen verfügbar)",[14,12781,12782],{},[17,12783,12784],{},"Status-Ausgabe (passwd -S)",[14,12786,12787,12788,12790],{},"BENUTZER STATUS DATUM MIN MAX WARN INAKTIV",[584,12789],{},"\nalice P 04\u002F29\u002F2026 0 99999 7 -1",[14,12792,12793],{},"Status-Codes:",[205,12795,12797],{"className":207,"code":12796,"language":209,"meta":210,"style":210},"P = Password (Passwort gesetzt)\nL = Locked (Konto gesperrt)\nNP = No Password (kein Passwort)\n\n",[212,12798,12799,12816,12834],{"__ignoreMap":210},[31,12800,12801,12803,12805,12808,12811,12814],{"class":216,"line":217},[31,12802,8077],{"class":220},[31,12804,2584],{"class":332},[31,12806,12807],{"class":332}," Password",[31,12809,12810],{"class":363}," (Passwort ",[31,12812,12813],{"class":332},"gesetzt",[31,12815,432],{"class":363},[31,12817,12818,12821,12823,12826,12829,12832],{"class":216,"line":227},[31,12819,12820],{"class":220},"L",[31,12822,2584],{"class":332},[31,12824,12825],{"class":332}," Locked",[31,12827,12828],{"class":363}," (Konto ",[31,12830,12831],{"class":332},"gesperrt",[31,12833,432],{"class":363},[31,12835,12836,12839,12841,12844,12846,12849,12852],{"class":216,"line":234},[31,12837,12838],{"class":220},"NP",[31,12840,2584],{"class":332},[31,12842,12843],{"class":332}," No",[31,12845,12807],{"class":332},[31,12847,12848],{"class":363}," (kein ",[31,12850,12851],{"class":332},"Passwort",[31,12853,432],{"class":363},[14,12855,12856],{},[17,12857,12858],{},"Zusammenhang mit chage",[14,12860,12861,12864],{},[17,12862,12863],{},"chage"," bietet erweiterte Kontrolle über Passwort-Ablauf:",[205,12866,12868],{"className":207,"code":12867,"language":209,"meta":210,"style":210},"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",[212,12869,12870,12881,12896,12910],{"__ignoreMap":210},[31,12871,12872,12874,12876,12878],{"class":216,"line":217},[31,12873,12863],{"class":220},[31,12875,832],{"class":223},[31,12877,333],{"class":332},[31,12879,12880],{"class":237}," # Ablaufinformationen anzeigen\n",[31,12882,12883,12885,12888,12891,12893],{"class":216,"line":227},[31,12884,12863],{"class":220},[31,12886,12887],{"class":223}," -M",[31,12889,12890],{"class":223}," 90",[31,12892,333],{"class":332},[31,12894,12895],{"class":237}," # Maximale Gültigkeit 90 Tage\n",[31,12897,12898,12900,12902,12905,12907],{"class":216,"line":234},[31,12899,12863],{"class":220},[31,12901,5231],{"class":223},[31,12903,12904],{"class":332}," 2026-12-31",[31,12906,333],{"class":332},[31,12908,12909],{"class":237}," # Konto-Ablaufdatum setzen\n",[31,12911,12912,12914,12916,12919,12921],{"class":216,"line":241},[31,12913,12863],{"class":220},[31,12915,10501],{"class":223},[31,12917,12918],{"class":223}," 0",[31,12920,333],{"class":332},[31,12922,12923],{"class":237}," # Passwort sofort ablaufen lassen\n",[38,12925,193],{"id":12926},"beispiele-16",[10,12928,12930],{"id":12929},"eigenes-passwort-ändern-interaktiv","Eigenes Passwort ändern (interaktiv)",[14,12932,12625],{},[10,12934,12936],{"id":12935},"passwort-eines-benutzers-ändern-als-root","Passwort eines Benutzers ändern (als root)",[14,12938,12939],{},"passwd alice",[10,12941,12943],{"id":12942},"konto-sperren-root","Konto sperren (root)",[205,12945,12947],{"className":207,"code":12946,"language":209,"meta":210,"style":210},"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",[212,12948,12949,12958,12962,12967,12971,12979,12983,12988,12992,13000,13004,13009,13013,13022,13026,13031,13035,13046,13050,13055,13059,13070,13074,13079,13083,13094,13098,13103,13107,13117,13121,13126,13130],{"__ignoreMap":210},[31,12950,12951,12953,12955],{"class":216,"line":217},[31,12952,12625],{"class":220},[31,12954,832],{"class":223},[31,12956,12957],{"class":332}," alice\n",[31,12959,12960],{"class":216,"line":227},[31,12961,231],{"emptyLinePlaceholder":230},[31,12963,12964],{"class":216,"line":234},[31,12965,12966],{"class":237},"# Konto entsperren\n",[31,12968,12969],{"class":216,"line":241},[31,12970,231],{"emptyLinePlaceholder":230},[31,12972,12973,12975,12977],{"class":216,"line":246},[31,12974,12625],{"class":220},[31,12976,11392],{"class":223},[31,12978,12957],{"class":332},[31,12980,12981],{"class":216,"line":254},[31,12982,231],{"emptyLinePlaceholder":230},[31,12984,12985],{"class":216,"line":259},[31,12986,12987],{"class":237},"# Passwort sofort ablaufen lassen\n",[31,12989,12990],{"class":216,"line":265},[31,12991,231],{"emptyLinePlaceholder":230},[31,12993,12994,12996,12998],{"class":216,"line":270},[31,12995,12625],{"class":220},[31,12997,8595],{"class":223},[31,12999,12957],{"class":332},[31,13001,13002],{"class":216,"line":278},[31,13003,231],{"emptyLinePlaceholder":230},[31,13005,13006],{"class":216,"line":283},[31,13007,13008],{"class":237},"# Passwortstatus anzeigen\n",[31,13010,13011],{"class":216,"line":289},[31,13012,231],{"emptyLinePlaceholder":230},[31,13014,13015,13017,13020],{"class":216,"line":294},[31,13016,12625],{"class":220},[31,13018,13019],{"class":223}," -S",[31,13021,12957],{"class":332},[31,13023,13024],{"class":216,"line":807},[31,13025,231],{"emptyLinePlaceholder":230},[31,13027,13028],{"class":216,"line":812},[31,13029,13030],{"class":237},"# Minimale Gültigkeitsdauer setzen (7 Tage)\n",[31,13032,13033],{"class":216,"line":821},[31,13034,231],{"emptyLinePlaceholder":230},[31,13036,13037,13039,13041,13044],{"class":216,"line":826},[31,13038,12625],{"class":220},[31,13040,3877],{"class":223},[31,13042,13043],{"class":223}," 7",[31,13045,12957],{"class":332},[31,13047,13048],{"class":216,"line":837},[31,13049,231],{"emptyLinePlaceholder":230},[31,13051,13052],{"class":216,"line":842},[31,13053,13054],{"class":237},"# Maximale Gültigkeitsdauer setzen (90 Tage)\n",[31,13056,13057],{"class":216,"line":848},[31,13058,231],{"emptyLinePlaceholder":230},[31,13060,13061,13063,13066,13068],{"class":216,"line":853},[31,13062,12625],{"class":220},[31,13064,13065],{"class":223}," -x",[31,13067,12890],{"class":223},[31,13069,12957],{"class":332},[31,13071,13072],{"class":216,"line":868},[31,13073,231],{"emptyLinePlaceholder":230},[31,13075,13076],{"class":216,"line":873},[31,13077,13078],{"class":237},"# 14 Tage vorher warnen\n",[31,13080,13081],{"class":216,"line":879},[31,13082,231],{"emptyLinePlaceholder":230},[31,13084,13085,13087,13089,13092],{"class":216,"line":884},[31,13086,12625],{"class":220},[31,13088,343],{"class":223},[31,13090,13091],{"class":223}," 14",[31,13093,12957],{"class":332},[31,13095,13096],{"class":216,"line":1405},[31,13097,231],{"emptyLinePlaceholder":230},[31,13099,13100],{"class":216,"line":1410},[31,13101,13102],{"class":237},"# 7 Tage nach Ablauf Konto deaktivieren\n",[31,13104,13105],{"class":216,"line":1416},[31,13106,231],{"emptyLinePlaceholder":230},[31,13108,13109,13111,13113,13115],{"class":216,"line":1421},[31,13110,12625],{"class":220},[31,13112,4396],{"class":223},[31,13114,13043],{"class":223},[31,13116,12957],{"class":332},[31,13118,13119],{"class":216,"line":1434},[31,13120,231],{"emptyLinePlaceholder":230},[31,13122,13123],{"class":216,"line":1439},[31,13124,13125],{"class":237},"# Passwort nicht-interaktiv setzen (sicher via chpasswd)\n",[31,13127,13128],{"class":216,"line":1445},[31,13129,231],{"emptyLinePlaceholder":230},[31,13131,13132,13134,13137,13139],{"class":216,"line":1450},[31,13133,856],{"class":223},[31,13135,13136],{"class":332}," \"alice:neuespasswort\"",[31,13138,337],{"class":336},[31,13140,13141],{"class":220}," chpasswd\n",[38,13143,350],{"id":13144},"ausgabe-16",[10,13146,12939],{"id":13147},"passwd-alice",[14,13149,13150],{},"Neues Passwort:",[14,13152,13153],{},"Neues Passwort wiederholen:",[14,13155,13156],{},"passwd: Passwort erfolgreich aktualisiert",[10,13158,13160],{"id":13159},"passwd-s-alice","passwd -S alice",[14,13162,13163],{},"alice P 04\u002F29\u002F2026 7 90 14 7",[10,13165,13167],{"id":13166},"_7-tage-inaktivität-bis-deaktivierung","| | | | | +-- 7 Tage Inaktivität bis Deaktivierung",[10,13169,13171],{"id":13170},"_14-tage-warnung-vor-ablauf","| | | | +-- 14 Tage Warnung vor Ablauf",[10,13173,13175],{"id":13174},"_90-tage-max-gültigkeit","| | | +-- 90 Tage max. Gültigkeit",[10,13177,13179],{"id":13178},"_7-tage-mindestgültigkeit","| | +-- 7 Tage Mindestgültigkeit",[10,13181,13183],{"id":13182},"datum-der-letzten-änderung","| +-- Datum der letzten Änderung",[10,13185,13187],{"id":13186},"p-passwort-gesetzt","+-- P = Passwort gesetzt",[10,13189,13191],{"id":13190},"passwd-l-alice","passwd -l alice",[14,13193,13194],{},"passwd: Passwort für alice gesperrt.",[10,13196,13198],{"id":13197},"sudo-grep-alice-etcshadow-cut-d-f12","sudo grep alice \u002Fetc\u002Fshadow | cut -d: -f1,2",[14,13200,13201],{},"alice:!$6$hash... \u003C- ! vor dem Hash = gesperrt",[10,13203,13204],{"id":13204},"set",[14,13206,13207,13209,13210,13212],{},[17,13208,19],{}," Das Shell-Built-in ",[17,13211,13204],{}," hat zwei Hauptfunktionen:",[13214,13215,13216,13228],"ol",{},[2368,13217,13218,13221,13222,13224,13225,13227],{},[17,13219,13220],{},"Shell-Optionen setzen"," mit ",[17,13223,1823],{}," (aktivieren) oder ",[17,13226,1815],{}," (deaktivieren)",[2368,13229,13230,13233,13234,1517,13237,13240],{},[17,13231,13232],{},"Positionsparameter"," (",[17,13235,13236],{},"$1",[17,13238,13239],{},"$2",", ...) neu setzen",[14,13242,13243,13245,13246,13249],{},[17,13244,13204],{}," ist ein ",[17,13247,13248],{},"Built-in der Shell"," (bash, sh) – kein externes Programm. Es gilt für den aktuellen Shell-Prozess und alle daraus gestarteten Unterprozesse.",[14,13251,13252],{},[17,13253,25],{},[14,13255,13256,13257,26,13259],{},"set ",[31,13258,33],{},[31,13260,13261],{},"ARGUMENTE",[205,13263,13265],{"className":207,"code":13264,"language":209,"meta":210,"style":210},"set -o OPTIONSNAME \u003C- langer Optionsname aktivieren\nset +o OPTIONSNAME \u003C- Option deaktivieren\n\n",[212,13266,13267,13289],{"__ignoreMap":210},[31,13268,13269,13271,13273,13276,13278,13280,13283,13286],{"class":216,"line":217},[31,13270,13204],{"class":223},[31,13272,6338],{"class":223},[31,13274,13275],{"class":332}," OPTIONSNAME",[31,13277,3545],{"class":336},[31,13279,1823],{"class":332},[31,13281,13282],{"class":332}," langer",[31,13284,13285],{"class":332}," Optionsname",[31,13287,13288],{"class":332}," aktivieren\n",[31,13290,13291,13293,13296,13298,13300,13302,13305],{"class":216,"line":227},[31,13292,13204],{"class":223},[31,13294,13295],{"class":332}," +o",[31,13297,13275],{"class":332},[31,13299,3545],{"class":336},[31,13301,1823],{"class":332},[31,13303,13304],{"class":332}," Option",[31,13306,13307],{"class":332}," deaktivieren\n",[14,13309,13310,13315,13316,26,13321,13324,13325,26,13330],{},[516,13311,13312],{},[17,13313,13314],{},"Merke:","***-***",[516,13317,13318],{},[17,13319,13320],{},"aktiviert",[516,13322,13323],{},"eine Option,"," ***+***",[516,13326,13327],{},[17,13328,13329],{},"deaktiviert",[516,13331,13332],{},"sie – das ist umgekehrt vom Intuitiven!",[38,13334,13336],{"id":13335},"wichtige-optionen-kurzform-langform","Wichtige Optionen (Kurzform \u002F Langform)",[43,13338,13339,13357],{},[46,13340,13341],{},[49,13342,13343,13348,13353],{},[52,13344,13345],{},[17,13346,13347],{},"Kurzform",[52,13349,13350],{},[17,13351,13352],{},"Langform (-o)",[52,13354,13355],{},[17,13356,61],{},[63,13358,13359,13369,13379,13389,13399,13409,13423,13433,13443,13453,13463,13473,13483,13493,13503,13513],{},[49,13360,13361,13363,13366],{},[68,13362,11835],{},[68,13364,13365],{},"errexit",[68,13367,13368],{},"Skript sofort beenden wenn ein Befehl fehlschlägt (Exit-Code != 0)",[49,13370,13371,13373,13376],{},[68,13372,128],{},[68,13374,13375],{},"nounset",[68,13377,13378],{},"Fehler bei nicht gesetzten Variablen statt leerem String",[49,13380,13381,13383,13386],{},[68,13382,4842],{},[68,13384,13385],{},"xtrace",[68,13387,13388],{},"Jeden Befehl vor Ausführung ausgeben (Debugging)",[49,13390,13391,13393,13396],{},[68,13392,1176],{},[68,13394,13395],{},"verbose",[68,13397,13398],{},"Jede gelesene Eingabezeile ausgeben (vor Substitution)",[49,13400,13401,13403,13406],{},[68,13402,161],{},[68,13404,13405],{},"noexec",[68,13407,13408],{},"Befehle lesen und auf Syntaxfehler prüfen, aber nicht ausführen",[49,13410,13411,13413,13416],{},[68,13412,1192],{},[68,13414,13415],{},"noglob",[68,13417,13418,13419,13422],{},"Glob-Expansion deaktivieren (*, ?, ",[31,13420,13421],{},"..."," werden nicht expandiert)",[49,13424,13425,13427,13430],{},[68,13426,11177],{},[68,13428,13429],{},"noclobber",[68,13431,13432],{},"Vorhandene Dateien nicht mit > überschreiben",[49,13434,13435,13437,13440],{},[68,13436,11118],{},[68,13438,13439],{},"notify",[68,13441,13442],{},"Status beendeter Hintergrundprozesse sofort melden",[49,13444,13445,13447,13450],{},[68,13446,1200],{},[68,13448,13449],{},"hashall",[68,13451,13452],{},"Befehlspfade cachen (Standard: aktiviert)",[49,13454,13455,13457,13460],{},[68,13456,3323],{},[68,13458,13459],{},"monitor",[68,13461,13462],{},"Job-Control aktivieren (Standard in interaktiver Shell)",[49,13464,13465,13467,13470],{},[68,13466,9965],{},[68,13468,13469],{},"onecmd",[68,13471,13472],{},"Nach einem Befehl beenden",[49,13474,13475,13477,13480],{},[68,13476,9968],{},[68,13478,13479],{},"pipefail",[68,13481,13482],{},"Pipe schlägt fehl wenn irgendein Befehl in der Pipe fehlschlägt (kein Kurzform!)",[49,13484,13485,13487,13490],{},[68,13486,9968],{},[68,13488,13489],{},"nocaseglob",[68,13491,13492],{},"Glob-Matching ohne Groß-\u002FKleinschreibung",[49,13494,13495,13497,13500],{},[68,13496,9968],{},[68,13498,13499],{},"nullglob",[68,13501,13502],{},"Nicht-passende Globs werden zu leerem String",[49,13504,13505,13507,13510],{},[68,13506,9968],{},[68,13508,13509],{},"extglob",[68,13511,13512],{},"Erweiterte Glob-Muster aktivieren (*(...), +(...), etc.)",[49,13514,13515,13517,13520],{},[68,13516,9968],{},[68,13518,13519],{},"errtrace",[68,13521,13522],{},"-e gilt auch innerhalb von Funktionen",[38,13524,13526],{"id":13525},"die-sichere-skript-präambel","Die \"Sichere Skript-Präambel\"",[205,13528,13530],{"className":207,"code":13529,"language":209,"meta":210,"style":210},"#!\u002Fbin\u002Fbash\n\nset -euo pipefail\n\n",[212,13531,13532,13537,13541],{"__ignoreMap":210},[31,13533,13534],{"class":216,"line":217},[31,13535,13536],{"class":237},"#!\u002Fbin\u002Fbash\n",[31,13538,13539],{"class":216,"line":227},[31,13540,231],{"emptyLinePlaceholder":230},[31,13542,13543,13545,13548],{"class":216,"line":234},[31,13544,13204],{"class":223},[31,13546,13547],{"class":223}," -euo",[31,13549,13550],{"class":332}," pipefail\n",[14,13552,13553,13554,13557],{},"Dies sind die ",[17,13555,13556],{},"drei wichtigsten Optionen"," für robuste Shell-Skripte:",[43,13559,13560,13573],{},[46,13561,13562],{},[49,13563,13564,13568],{},[52,13565,13566],{},[17,13567,5586],{},[52,13569,13570],{},[17,13571,13572],{},"Was sie verhindert",[63,13574,13575,13582,13589],{},[49,13576,13577,13579],{},[68,13578,11835],{},[68,13580,13581],{},"Skript läuft weiter obwohl ein Befehl fehlgeschlagen ist",[49,13583,13584,13586],{},[68,13585,128],{},[68,13587,13588],{},"Eine nicht gesetzte Variable wird stillschweigend als leer behandelt",[49,13590,13591,13593],{},[68,13592,13479],{},[68,13594,13595],{},"Fehler in der Mitte einer Pipe wird ignoriert",[38,13597,13599],{"id":13598},"positionsparameter-setzen","Positionsparameter setzen",[14,13601,13602],{},"set -- alice bob charlie",[205,13604,13606],{"className":207,"code":13605,"language":209,"meta":210,"style":210},"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",[212,13607,13608,13619,13623,13633,13637,13647,13651,13661,13665,13675,13679,13684,13688,13701,13705],{"__ignoreMap":210},[31,13609,13610,13612,13616],{"class":216,"line":217},[31,13611,856],{"class":223},[31,13613,13615],{"class":13614},"s4XuR"," $1",[31,13617,13618],{"class":237}," # alice\n",[31,13620,13621],{"class":216,"line":227},[31,13622,231],{"emptyLinePlaceholder":230},[31,13624,13625,13627,13630],{"class":216,"line":234},[31,13626,856],{"class":223},[31,13628,13629],{"class":13614}," $2",[31,13631,13632],{"class":237}," # bob\n",[31,13634,13635],{"class":216,"line":241},[31,13636,231],{"emptyLinePlaceholder":230},[31,13638,13639,13641,13644],{"class":216,"line":246},[31,13640,856],{"class":223},[31,13642,13643],{"class":13614}," $3",[31,13645,13646],{"class":237}," # charlie\n",[31,13648,13649],{"class":216,"line":254},[31,13650,231],{"emptyLinePlaceholder":230},[31,13652,13653,13655,13658],{"class":216,"line":259},[31,13654,856],{"class":223},[31,13656,13657],{"class":13614}," $@",[31,13659,13660],{"class":237}," # alice bob charlie\n",[31,13662,13663],{"class":216,"line":265},[31,13664,231],{"emptyLinePlaceholder":230},[31,13666,13667,13669,13672],{"class":216,"line":270},[31,13668,856],{"class":223},[31,13670,13671],{"class":223}," $#",[31,13673,13674],{"class":237}," # 3 (Anzahl)\n",[31,13676,13677],{"class":216,"line":278},[31,13678,231],{"emptyLinePlaceholder":230},[31,13680,13681],{"class":216,"line":283},[31,13682,13683],{"class":237},"# \"--\" löst das Problem wenn Argumente mit - beginnen\n",[31,13685,13686],{"class":216,"line":289},[31,13687,231],{"emptyLinePlaceholder":230},[31,13689,13690,13692,13695,13697,13699],{"class":216,"line":294},[31,13691,13204],{"class":223},[31,13693,13694],{"class":223}," --",[31,13696,3877],{"class":223},[31,13698,5144],{"class":223},[31,13700,1256],{"class":332},[31,13702,13703],{"class":216,"line":807},[31,13704,231],{"emptyLinePlaceholder":230},[31,13706,13707,13709,13711],{"class":216,"line":812},[31,13708,856],{"class":223},[31,13710,13615],{"class":13614},[31,13712,13713],{"class":237}," # -n (ohne -- würde das als Option interpretiert)\n",[14,13715,13716],{},[17,13717,13718],{},"Aktuelle Einstellungen anzeigen",[10,13720,13722],{"id":13721},"alle-gesetzten-optionen-anzeigen","Alle gesetzten Optionen anzeigen",[205,13724,13726],{"className":207,"code":13725,"language":209,"meta":210,"style":210},"set -o\n\n",[212,13727,13728],{"__ignoreMap":210},[31,13729,13730,13732],{"class":216,"line":217},[31,13731,13204],{"class":223},[31,13733,13734],{"class":223}," -o\n",[10,13736,13738],{"id":13737},"alle-variablen-und-funktionen-ausgeben","Alle Variablen und Funktionen ausgeben",[14,13740,13204],{},[10,13742,13744],{"id":13743},"aktive-optionen-als-buchstabenstring-prüfen","Aktive Optionen als Buchstabenstring prüfen",[205,13746,13748],{"className":207,"code":13747,"language":209,"meta":210,"style":210},"echo $-\n\n# Prüfen ob eine bestimmte Option aktiv ist\n\n[[ $- == e ]] && echo \"errexit aktiv\"\n\n",[212,13749,13750,13757,13761,13766,13770],{"__ignoreMap":210},[31,13751,13752,13754],{"class":216,"line":217},[31,13753,856],{"class":223},[31,13755,13756],{"class":223}," $-\n",[31,13758,13759],{"class":216,"line":227},[31,13760,231],{"emptyLinePlaceholder":230},[31,13762,13763],{"class":216,"line":234},[31,13764,13765],{"class":237},"# Prüfen ob eine bestimmte Option aktiv ist\n",[31,13767,13768],{"class":216,"line":241},[31,13769,231],{"emptyLinePlaceholder":230},[31,13771,13772,13775,13778,13781,13784,13786],{"class":216,"line":246},[31,13773,13774],{"class":363},"[[ ",[31,13776,13777],{"class":223},"$-",[31,13779,13780],{"class":336}," ==",[31,13782,13783],{"class":363}," e ]] && ",[31,13785,856],{"class":223},[31,13787,13788],{"class":332}," \"errexit aktiv\"\n",[38,13790,193],{"id":13791},"beispiele-17",[10,13793,13795],{"id":13794},"skript-sofort-bei-fehler-beenden","Skript sofort bei Fehler beenden",[205,13797,13799],{"className":207,"code":13798,"language":209,"meta":210,"style":210},"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",[212,13800,13801,13808,13812,13817,13821,13827,13831,13836,13840,13848,13852,13857,13861,13868,13872,13878,13882,13891,13895,13900,13904,13910,13914,13919,13923,13931,13935,13940,13944,13950,13954,13964,13968,13975,13979,13991,13995,14000,14004,14011,14015,14030,14034,14041,14045,14058,14062,14067,14071,14086,14090,14106,14110,14125,14129,14134,14138,14148,14152,14157,14161,14175,14179,14186,14190],{"__ignoreMap":210},[31,13802,13803,13805],{"class":216,"line":217},[31,13804,13204],{"class":223},[31,13806,13807],{"class":223}," -e\n",[31,13809,13810],{"class":216,"line":227},[31,13811,231],{"emptyLinePlaceholder":230},[31,13813,13814],{"class":216,"line":234},[31,13815,13816],{"class":237},"# Fehler bei ungesetzten Variablen\n",[31,13818,13819],{"class":216,"line":241},[31,13820,231],{"emptyLinePlaceholder":230},[31,13822,13823,13825],{"class":216,"line":246},[31,13824,13204],{"class":223},[31,13826,224],{"class":223},[31,13828,13829],{"class":216,"line":254},[31,13830,231],{"emptyLinePlaceholder":230},[31,13832,13833],{"class":216,"line":259},[31,13834,13835],{"class":237},"# Pipe-Fehler aktivieren\n",[31,13837,13838],{"class":216,"line":265},[31,13839,231],{"emptyLinePlaceholder":230},[31,13841,13842,13844,13846],{"class":216,"line":270},[31,13843,13204],{"class":223},[31,13845,6338],{"class":223},[31,13847,13550],{"class":332},[31,13849,13850],{"class":216,"line":278},[31,13851,231],{"emptyLinePlaceholder":230},[31,13853,13854],{"class":216,"line":283},[31,13855,13856],{"class":237},"# Debugging: jeden Befehl vor Ausführung anzeigen\n",[31,13858,13859],{"class":216,"line":289},[31,13860,231],{"emptyLinePlaceholder":230},[31,13862,13863,13865],{"class":216,"line":294},[31,13864,13204],{"class":223},[31,13866,13867],{"class":223}," -x\n",[31,13869,13870],{"class":216,"line":807},[31,13871,231],{"emptyLinePlaceholder":230},[31,13873,13874,13876],{"class":216,"line":812},[31,13875,829],{"class":220},[31,13877,2950],{"class":332},[31,13879,13880],{"class":216,"line":821},[31,13881,231],{"emptyLinePlaceholder":230},[31,13883,13884,13886,13888],{"class":216,"line":826},[31,13885,13204],{"class":223},[31,13887,6435],{"class":332},[31,13889,13890],{"class":237}," # Debugging wieder deaktivieren\n",[31,13892,13893],{"class":216,"line":837},[31,13894,231],{"emptyLinePlaceholder":230},[31,13896,13897],{"class":216,"line":842},[31,13898,13899],{"class":237},"# Syntaxcheck ohne Ausführung\n",[31,13901,13902],{"class":216,"line":848},[31,13903,231],{"emptyLinePlaceholder":230},[31,13905,13906,13908],{"class":216,"line":853},[31,13907,13204],{"class":223},[31,13909,12581],{"class":223},[31,13911,13912],{"class":216,"line":868},[31,13913,231],{"emptyLinePlaceholder":230},[31,13915,13916],{"class":216,"line":873},[31,13917,13918],{"class":237},"# Alle drei auf einmal setzen (empfohlene Praxis)\n",[31,13920,13921],{"class":216,"line":879},[31,13922,231],{"emptyLinePlaceholder":230},[31,13924,13925,13927,13929],{"class":216,"line":884},[31,13926,13204],{"class":223},[31,13928,13547],{"class":223},[31,13930,13550],{"class":332},[31,13932,13933],{"class":216,"line":1405},[31,13934,231],{"emptyLinePlaceholder":230},[31,13936,13937],{"class":216,"line":1410},[31,13938,13939],{"class":237},"# Glob-Expansion deaktivieren (* als Literal behandeln)\n",[31,13941,13942],{"class":216,"line":1416},[31,13943,231],{"emptyLinePlaceholder":230},[31,13945,13946,13948],{"class":216,"line":1421},[31,13947,13204],{"class":223},[31,13949,6516],{"class":223},[31,13951,13952],{"class":216,"line":1434},[31,13953,231],{"emptyLinePlaceholder":230},[31,13955,13956,13958,13961],{"class":216,"line":1439},[31,13957,856],{"class":223},[31,13959,13960],{"class":332}," .txt",[31,13962,13963],{"class":237}," # gibt \".txt\" aus – keine Dateinamen\n",[31,13965,13966],{"class":216,"line":1445},[31,13967,231],{"emptyLinePlaceholder":230},[31,13969,13970,13972],{"class":216,"line":1450},[31,13971,13204],{"class":223},[31,13973,13974],{"class":332}," +f\n",[31,13976,13977],{"class":216,"line":2244},[31,13978,231],{"emptyLinePlaceholder":230},[31,13980,13981,13983,13985,13988],{"class":216,"line":2249},[31,13982,856],{"class":223},[31,13984,2296],{"class":223},[31,13986,13987],{"class":332},".txt",[31,13989,13990],{"class":237}," # gibt Dateinamen aus\n",[31,13992,13993],{"class":216,"line":2255},[31,13994,231],{"emptyLinePlaceholder":230},[31,13996,13997],{"class":216,"line":2260},[31,13998,13999],{"class":237},"# Überschreiben mit > verhindern\n",[31,14001,14002],{"class":216,"line":2270},[31,14003,231],{"emptyLinePlaceholder":230},[31,14005,14006,14008],{"class":216,"line":2275},[31,14007,13204],{"class":223},[31,14009,14010],{"class":223}," -C\n",[31,14012,14013],{"class":216,"line":2281},[31,14014,231],{"emptyLinePlaceholder":230},[31,14016,14017,14019,14022,14024,14027],{"class":216,"line":2286},[31,14018,856],{"class":223},[31,14020,14021],{"class":332}," \"test\"",[31,14023,12055],{"class":336},[31,14025,14026],{"class":332}," bereits_vorhanden.txt",[31,14028,14029],{"class":237}," # Fehler: Datei existiert\n",[31,14031,14032],{"class":216,"line":5316},[31,14033,231],{"emptyLinePlaceholder":230},[31,14035,14036,14038],{"class":216,"line":5321},[31,14037,13204],{"class":223},[31,14039,14040],{"class":332}," +C\n",[31,14042,14043],{"class":216,"line":5327},[31,14044,231],{"emptyLinePlaceholder":230},[31,14046,14047,14049,14051,14053,14055],{"class":216,"line":5332},[31,14048,856],{"class":223},[31,14050,14021],{"class":332},[31,14052,12055],{"class":336},[31,14054,14026],{"class":332},[31,14056,14057],{"class":237}," # Erfolgreich\n",[31,14059,14060],{"class":216,"line":5353},[31,14061,231],{"emptyLinePlaceholder":230},[31,14063,14064],{"class":216,"line":5358},[31,14065,14066],{"class":237},"# Positionsparameter neu setzen\n",[31,14068,14069],{"class":216,"line":5366},[31,14070,231],{"emptyLinePlaceholder":230},[31,14072,14073,14075,14077,14080,14083],{"class":216,"line":5371},[31,14074,13204],{"class":223},[31,14076,13694],{"class":223},[31,14078,14079],{"class":332}," eins",[31,14081,14082],{"class":332}," zwei",[31,14084,14085],{"class":332}," drei\n",[31,14087,14088],{"class":216,"line":5377},[31,14089,231],{"emptyLinePlaceholder":230},[31,14091,14092,14094,14097,14100,14103],{"class":216,"line":5382},[31,14093,856],{"class":223},[31,14095,14096],{"class":332}," \"Anzahl: ",[31,14098,14099],{"class":223},"$#",[31,14101,14102],{"class":332},"\"",[31,14104,14105],{"class":237}," # 3\n",[31,14107,14108],{"class":216,"line":5388},[31,14109,231],{"emptyLinePlaceholder":230},[31,14111,14112,14114,14117,14120,14122],{"class":216,"line":5393},[31,14113,856],{"class":223},[31,14115,14116],{"class":332}," \"Alle: ",[31,14118,14119],{"class":223},"$@",[31,14121,14102],{"class":332},[31,14123,14124],{"class":237}," # eins zwei drei\n",[31,14126,14127],{"class":216,"line":5405},[31,14128,231],{"emptyLinePlaceholder":230},[31,14130,14131],{"class":216,"line":5410},[31,14132,14133],{"class":237},"# Fehler für einen einzelnen Befehl erlauben (|| true verhindert -e-Abbruch)\n",[31,14135,14136],{"class":216,"line":5416},[31,14137,231],{"emptyLinePlaceholder":230},[31,14139,14140,14143,14145],{"class":216,"line":5421},[31,14141,14142],{"class":220},"befehl_der_fehlschlagen_kann",[31,14144,11616],{"class":336},[31,14146,14147],{"class":223}," true\n",[31,14149,14150],{"class":216,"line":5435},[31,14151,231],{"emptyLinePlaceholder":230},[31,14153,14154],{"class":216,"line":5440},[31,14155,14156],{"class":237},"# Alternative: Fehlerbehandlung mit if (ignoriert -e automatisch)\n",[31,14158,14159],{"class":216,"line":5446},[31,14160,231],{"emptyLinePlaceholder":230},[31,14162,14163,14165,14168,14171,14173],{"class":216,"line":5451},[31,14164,5335],{"class":336},[31,14166,14167],{"class":336}," !",[31,14169,14170],{"class":220}," befehl_der_fehlschlagen_kann",[31,14172,5347],{"class":363},[31,14174,5350],{"class":336},[31,14176,14177],{"class":216,"line":6552},[31,14178,231],{"emptyLinePlaceholder":230},[31,14180,14181,14183],{"class":216,"line":6557},[31,14182,856],{"class":223},[31,14184,14185],{"class":332}," \"Fehler aufgetreten, aber Skript läuft weiter\"\n",[31,14187,14188],{"class":216,"line":6563},[31,14189,231],{"emptyLinePlaceholder":230},[31,14191,14192],{"class":216,"line":6568},[31,14193,5374],{"class":336},[38,14195,350],{"id":14196},"ausgabe-17",[10,14198,14200],{"id":14199},"set-x-debugging-aktiv","set -x (Debugging aktiv)",[10,14202,14204],{"id":14203},"jeder-befehl-wird-mit-am-anfang-gezeigt","Jeder Befehl wird mit + am Anfang gezeigt",[205,14206,14208],{"className":207,"code":14207,"language":209,"meta":210,"style":210},"ls \u002Ftmp\n\n",[212,14209,14210],{"__ignoreMap":210},[31,14211,14212,14214],{"class":216,"line":217},[31,14213,829],{"class":220},[31,14215,2950],{"class":332},[2365,14217,14218],{},[2368,14219,14220],{},"ls \u002Ftmp",[14,14222,14223],{},"datei1.txt datei2.txt",[10,14225,14227],{"id":14226},"set-o-alle-optionen-anzeigen","set -o (alle Optionen anzeigen)",[14,14229,14230],{},"allexport off",[14,14232,14233],{},"braceexpand on",[14,14235,14236],{},"errexit off",[14,14238,14239],{},"errtrace off",[14,14241,14242],{},"functrace off",[14,14244,14245],{},"hashall on",[14,14247,14248],{},"histexpand on",[14,14250,14251],{},"history on",[14,14253,14254],{},"ignoreeof off",[14,14256,14257],{},"interactive-comments on",[14,14259,14260],{},"keyword off",[14,14262,14263],{},"monitor on",[14,14265,14266],{},"noclobber off",[14,14268,14269],{},"noexec off",[14,14271,14272],{},"noglob off",[14,14274,14275],{},"nolog off",[14,14277,14278],{},"notify off",[14,14280,14281],{},"nounset off",[14,14283,14284],{},"onecmd off",[14,14286,14287],{},"physical off",[14,14289,14290],{},"pipefail off",[14,14292,14293],{},"posix off",[14,14295,14296],{},"privileged off",[14,14298,14299],{},"verbose off",[14,14301,14302],{},"vi off",[14,14304,14305],{},"xtrace off",[10,14307,14308],{"id":856},"echo $-",[14,14310,14311],{},"himBHs \u003C- aktive Optionen als Buchstaben",[38,14313,14315],{"id":14314},"praxisbeispiel-robustes-backup-skript","Praxisbeispiel: Robustes Backup-Skript",[205,14317,14319],{"className":207,"code":14318,"language":209,"meta":210,"style":210},"#!\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",[212,14320,14321,14325,14329,14341,14345,14355,14359,14369,14373,14391,14395,14400,14404,14418,14422,14427,14431,14467,14471,14478,14482,14531,14535],{"__ignoreMap":210},[31,14322,14323],{"class":216,"line":217},[31,14324,13536],{"class":237},[31,14326,14327],{"class":216,"line":227},[31,14328,231],{"emptyLinePlaceholder":230},[31,14330,14331,14333,14335,14338],{"class":216,"line":234},[31,14332,13204],{"class":223},[31,14334,13547],{"class":223},[31,14336,14337],{"class":332}," pipefail",[31,14339,14340],{"class":237}," # Sicher und robust\n",[31,14342,14343],{"class":216,"line":241},[31,14344,231],{"emptyLinePlaceholder":230},[31,14346,14347,14350,14352],{"class":216,"line":246},[31,14348,14349],{"class":363},"QUELLE",[31,14351,367],{"class":336},[31,14353,14354],{"class":332},"\"\u002Fhome\u002Fmatta\"\n",[31,14356,14357],{"class":216,"line":254},[31,14358,231],{"emptyLinePlaceholder":230},[31,14360,14361,14364,14366],{"class":216,"line":259},[31,14362,14363],{"class":363},"ZIEL",[31,14365,367],{"class":336},[31,14367,14368],{"class":332},"\"\u002Fbackup\u002Fmatta\"\n",[31,14370,14371],{"class":216,"line":265},[31,14372,231],{"emptyLinePlaceholder":230},[31,14374,14375,14377,14380,14383,14386,14389],{"class":216,"line":270},[31,14376,856],{"class":223},[31,14378,14379],{"class":332}," \"Sicherung von ",[31,14381,14382],{"class":363},"$QUELLE",[31,14384,14385],{"class":332}," nach ",[31,14387,14388],{"class":363},"$ZIEL",[31,14390,10884],{"class":332},[31,14392,14393],{"class":216,"line":278},[31,14394,231],{"emptyLinePlaceholder":230},[31,14396,14397],{"class":216,"line":283},[31,14398,14399],{"class":237},"# Ohne -e würde das Skript weiterlaufen auch wenn mkdir fehlschlägt\n",[31,14401,14402],{"class":216,"line":289},[31,14403,231],{"emptyLinePlaceholder":230},[31,14405,14406,14409,14412,14414,14416],{"class":216,"line":294},[31,14407,14408],{"class":220},"mkdir",[31,14410,14411],{"class":223}," -p",[31,14413,10878],{"class":332},[31,14415,14388],{"class":363},[31,14417,10884],{"class":332},[31,14419,14420],{"class":216,"line":807},[31,14421,231],{"emptyLinePlaceholder":230},[31,14423,14424],{"class":216,"line":812},[31,14425,14426],{"class":237},"# Ohne pipefail würde ein Fehler in tar ignoriert wenn gzip funktioniert\n",[31,14428,14429],{"class":216,"line":821},[31,14430,231],{"emptyLinePlaceholder":230},[31,14432,14433,14436,14439,14442,14444,14446,14448,14450,14452,14454,14456,14458,14461,14464],{"class":216,"line":826},[31,14434,14435],{"class":220},"tar",[31,14437,14438],{"class":332}," czf",[31,14440,14441],{"class":332}," -",[31,14443,10878],{"class":332},[31,14445,14382],{"class":363},[31,14447,14102],{"class":332},[31,14449,337],{"class":336},[31,14451,6470],{"class":220},[31,14453,12055],{"class":336},[31,14455,10878],{"class":332},[31,14457,14388],{"class":363},[31,14459,14460],{"class":332},"\u002Fbackup_$(",[31,14462,14463],{"class":220},"date",[31,14465,14466],{"class":332}," +%F).tar.gz\"\n",[31,14468,14469],{"class":216,"line":837},[31,14470,231],{"emptyLinePlaceholder":230},[31,14472,14473,14475],{"class":216,"line":842},[31,14474,856],{"class":223},[31,14476,14477],{"class":332}," \"Fertig!\"\n",[31,14479,14480],{"class":216,"line":848},[31,14481,231],{"emptyLinePlaceholder":230},[31,14483,14484,14487,14489,14492,14495,14498,14501,14503,14506,14509,14512,14515,14517,14520,14523,14525,14528],{"class":216,"line":853},[31,14485,14486],{"class":220},"Wichtig:set",[31,14488,8595],{"class":223},[31,14490,14491],{"class":332}," hat",[31,14493,14494],{"class":332}," Ausnahmen",[31,14496,14497],{"class":332}," –",[31,14499,14500],{"class":332}," Befehle",[31,14502,3737],{"class":332},[31,14504,14505],{"class":332}," if-Bedingungen,",[31,14507,14508],{"class":332}," while-Tests",[31,14510,14511],{"class":332}," sowie",[31,14513,14514],{"class":332}," hinter",[31,14516,11616],{"class":336},[31,14518,14519],{"class":220}," oder",[31,14521,14522],{"class":363}," &&",[31,14524,4959],{"class":336},[31,14526,14527],{"class":363}," lösen keinen Exit aus, da ihr Fehlschlag dort erwartet wird.",[31,14529,14530],{"class":336},"*\n",[31,14532,14533],{"class":216,"line":868},[31,14534,231],{"emptyLinePlaceholder":230},[31,14536,14537],{"class":216,"line":873},[31,14538,14539],{"class":237},"# rsync\n",[14,14541,14542,14544,14545,14548],{},[17,14543,19],{}," rsync (Remote Sync) synchronisiert Dateien und Verzeichnisse lokal oder über Netzwerk. Es überträgt dank ",[17,14546,14547],{},"Delta-Transfer-Algorithmus"," nur die tatsächlich geänderten Teile einer Datei – extrem schnell und bandbreitenschonend.",[14,14550,14551,14553,14554,14556],{},[17,14552,25],{}," rsync ",[31,14555,33],{}," QUELLE ZIEL",[38,14558,14560],{"id":14559},"wie-rsync-intern-funktioniert","Wie rsync intern funktioniert",[13214,14562,14563,14566,14569,14572,14575,14578],{},[2368,14564,14565],{},"Zieldatei → Aufteilung in gleich große Blöcke",[2368,14567,14568],{},"Für jeden Block: schwache Prüfsumme (rolling checksum) + starke Prüfsumme (MD5)",[2368,14570,14571],{},"Prüfsummen → Sender",[2368,14573,14574],{},"Sender gleicht Quelldatei mit den Prüfsummen ab",[2368,14576,14577],{},"Nur NEUE \u002F GEÄNDERTE Blöcke werden übertragen",[2368,14579,14580],{},"Zieldatei wird aus alten + neuen Blöcken zusammengesetzt",[14,14582,14583],{},"Ergebnis: Statt 500 MB werden vielleicht nur 3 KB übertragen.",[38,14585,14587],{"id":14586},"alle-wichtigen-optionen","Alle wichtigen Optionen",[43,14589,14590,14606],{},[46,14591,14592],{},[49,14593,14594,14598,14602],{},[52,14595,14596],{},[17,14597,5586],{},[52,14599,14600],{},[17,14601,117],{},[52,14603,14604],{},[17,14605,61],{},[63,14607,14608,14618,14627,14637,14647,14657,14666,14676,14686,14696,14706,14715,14725,14735,14744,14754,14764,14775,14784,14794,14804,14814,14824,14834,14844,14854,14864,14874,14884,14894,14904,14914,14924,14934,14944,14954,14964,14974,14984,14994,15003,15013,15023,15033],{},[49,14609,14610,14612,14615],{},[68,14611,9924],{},[68,14613,14614],{},"--archive",[68,14616,14617],{},"Archivmodus = -rlptgoD zusammengefasst (empfohlen)",[49,14619,14620,14622,14624],{},[68,14621,172],{},[68,14623,4699],{},[68,14625,14626],{},"Verzeichnisse rekursiv übertragen",[49,14628,14629,14631,14634],{},[68,14630,3291],{},[68,14632,14633],{},"--links",[68,14635,14636],{},"Symlinks als Symlinks übertragen",[49,14638,14639,14641,14644],{},[68,14640,637],{},[68,14642,14643],{},"--perms",[68,14645,14646],{},"Berechtigungen erhalten",[49,14648,14649,14651,14654],{},[68,14650,9965],{},[68,14652,14653],{},"--times",[68,14655,14656],{},"Zeitstempel erhalten",[49,14658,14659,14661,14663],{},[68,14660,139],{},[68,14662,142],{},[68,14664,14665],{},"Gruppeninfos erhalten",[49,14667,14668,14670,14673],{},[68,14669,4788],{},[68,14671,14672],{},"--owner",[68,14674,14675],{},"Eigentümer erhalten (nur root)",[49,14677,14678,14681,14683],{},[68,14679,14680],{},"-D",[68,14682],{},[68,14684,14685],{},"Gerätedateien + Sonderdateien erhalten",[49,14687,14688,14690,14693],{},[68,14689,1176],{},[68,14691,14692],{},"--verbose",[68,14694,14695],{},"Ausführliche Ausgabe",[49,14697,14698,14701,14703],{},[68,14699,14700],{},"-vv",[68,14702],{},[68,14704,14705],{},"Sehr ausführliche Ausgabe",[49,14707,14708,14710,14712],{},[68,14709,3841],{},[68,14711,4877],{},[68,14713,14714],{},"Keine Ausgabe außer Fehlern",[49,14716,14717,14719,14722],{},[68,14718,161],{},[68,14720,14721],{},"--dry-run",[68,14723,14724],{},"Simulation – zeigt was passieren würde, ändert nichts",[49,14726,14727,14729,14732],{},[68,14728,7918],{},[68,14730,14731],{},"--compress",[68,14733,14734],{},"Daten vor Übertragung komprimieren",[49,14736,14737,14739,14741],{},[68,14738,1232],{},[68,14740],{},[68,14742,14743],{},"--partial --progress kombiniert: Fortschritt + Wiederaufnahme",[49,14745,14746,14749,14751],{},[68,14747,14748],{},"--progress",[68,14750],{},[68,14752,14753],{},"Fortschrittsbalken für jede Datei",[49,14755,14756,14759,14761],{},[68,14757,14758],{},"--partial",[68,14760],{},[68,14762,14763],{},"Unvollständige Übertragungen behalten (Wiederaufnahme möglich)",[49,14765,14766,14769,14772],{},[68,14767,14768],{},"-e BEFEHL",[68,14770,14771],{},"--rsh=BEFEHL",[68,14773,14774],{},"Remote-Shell angeben (Standard: ssh)",[49,14776,14777,14779,14781],{},[68,14778,12702],{},[68,14780],{},[68,14782,14783],{},"Dateien im Ziel löschen, die in der Quelle fehlen (echtes Spiegeln)",[49,14785,14786,14789,14791],{},[68,14787,14788],{},"--delete-before",[68,14790],{},[68,14792,14793],{},"Löschen VOR der Übertragung",[49,14795,14796,14799,14801],{},[68,14797,14798],{},"--delete-after",[68,14800],{},[68,14802,14803],{},"Löschen NACH der Übertragung",[49,14805,14806,14809,14811],{},[68,14807,14808],{},"--exclude=MUSTER",[68,14810],{},[68,14812,14813],{},"Dateien\u002FVerzeichnisse ausschließen",[49,14815,14816,14819,14821],{},[68,14817,14818],{},"--exclude-from=DATEI",[68,14820],{},[68,14822,14823],{},"Ausschlussliste aus Datei lesen",[49,14825,14826,14829,14831],{},[68,14827,14828],{},"--include=MUSTER",[68,14830],{},[68,14832,14833],{},"Ausschluss für bestimmtes Muster aufheben",[49,14835,14836,14839,14841],{},[68,14837,14838],{},"--filter=REGEL",[68,14840],{},[68,14842,14843],{},"Flexible Filterregel (+ einschließen, - ausschließen)",[49,14845,14846,14849,14851],{},[68,14847,14848],{},"--backup",[68,14850],{},[68,14852,14853],{},"Backup geänderter Zieldateien anlegen",[49,14855,14856,14859,14861],{},[68,14857,14858],{},"--backup-dir=DIR",[68,14860],{},[68,14862,14863],{},"Backup-Verzeichnis for geänderte Dateien",[49,14865,14866,14869,14871],{},[68,14867,14868],{},"--suffix=SUFFIX",[68,14870],{},[68,14872,14873],{},"Backup-Suffix (Standard: ~)",[49,14875,14876,14878,14881],{},[68,14877,128],{},[68,14879,14880],{},"--update",[68,14882,14883],{},"Neuere Zieldateien nicht überschreiben",[49,14885,14886,14888,14891],{},[68,14887,1184],{},[68,14889,14890],{},"--checksum",[68,14892,14893],{},"Vergleich per Prüfsumme statt Größe + Mtime",[49,14895,14896,14898,14901],{},[68,14897,4905],{},[68,14899,14900],{},"--hard-links",[68,14902,14903],{},"Hardlinks als Hardlinks erhalten",[49,14905,14906,14908,14911],{},[68,14907,9935],{},[68,14909,14910],{},"--acls",[68,14912,14913],{},"ACLs (Access Control Lists) übertragen",[49,14915,14916,14918,14921],{},[68,14917,9995],{},[68,14919,14920],{},"--xattrs",[68,14922,14923],{},"Erweiterte Attribute übertragen",[49,14925,14926,14929,14931],{},[68,14927,14928],{},"--chmod=RECHTE",[68,14930],{},[68,14932,14933],{},"Berechtigungen an Zieldateien setzen",[49,14935,14936,14939,14941],{},[68,14937,14938],{},"--chown=USER:GRP",[68,14940],{},[68,14942,14943],{},"Eigentümer\u002FGruppe an Zieldateien setzen",[49,14945,14946,14949,14951],{},[68,14947,14948],{},"--max-size=GRÖSSE",[68,14950],{},[68,14952,14953],{},"Dateien über dieser Größe überspringen (z.B. 100M)",[49,14955,14956,14959,14961],{},[68,14957,14958],{},"--min-size=GRÖSSE",[68,14960],{},[68,14962,14963],{},"Dateien unter dieser Größe überspringen",[49,14965,14966,14969,14971],{},[68,14967,14968],{},"--bwlimit=KBPS",[68,14970],{},[68,14972,14973],{},"Bandbreitenlimit (KB\u002Fs)",[49,14975,14976,14979,14981],{},[68,14977,14978],{},"--timeout=SEK",[68,14980],{},[68,14982,14983],{},"I\u002FO-Timeout in Sekunden",[49,14985,14986,14989,14991],{},[68,14987,14988],{},"--stats",[68,14990],{},[68,14992,14993],{},"Übertragungsstatistik am Ende anzeigen",[49,14995,14996,14998,15000],{},[68,14997,1200],{},[68,14999,9948],{},[68,15001,15002],{},"Größen lesbar ausgeben (KB, MB, GB)",[49,15004,15005,15008,15010],{},[68,15006,15007],{},"--log-file=DATEI",[68,15009],{},[68,15011,15012],{},"Übertragungsprotokoll in Datei schreiben",[49,15014,15015,15018,15020],{},[68,15016,15017],{},"--password-file=DATEI",[68,15019],{},[68,15021,15022],{},"rsync-Daemon-Passwort aus Datei lesen",[49,15024,15025,15028,15030],{},[68,15026,15027],{},"--port=PORT",[68,15029],{},[68,15031,15032],{},"Alternativen Port angeben (rsync-Daemon)",[49,15034,15035,15038,15040],{},[68,15036,15037],{},"--list-only",[68,15039],{},[68,15041,15042],{},"Nur auflisten, nicht übertragen",[38,15044,15046],{"id":15045},"der-slash-trick-sehr-wichtig","Der Slash-Trick (sehr wichtig!)",[205,15048,15050],{"className":207,"code":15049,"language":209,"meta":210,"style":210},"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",[212,15051,15052,15069,15073,15087,15091],{"__ignoreMap":210},[31,15053,15054,15057,15060,15063,15066],{"class":216,"line":217},[31,15055,15056],{"class":220},"rsync",[31,15058,15059],{"class":223}," -av",[31,15061,15062],{"class":332}," \u002Fquelle",[31,15064,15065],{"class":332}," \u002Fziel",[31,15067,15068],{"class":237}," # ← Kopiert ORDNER \"quelle\" in \"ziel\" → \u002Fziel\u002Fquelle\u002F...\n",[31,15070,15071],{"class":216,"line":227},[31,15072,231],{"emptyLinePlaceholder":230},[31,15074,15075,15077,15079,15082,15084],{"class":216,"line":234},[31,15076,15056],{"class":220},[31,15078,15059],{"class":223},[31,15080,15081],{"class":332}," \u002Fquelle\u002F",[31,15083,15065],{"class":332},[31,15085,15086],{"class":237}," # ← Kopiert INHALT von \"quelle\" → \u002Fziel\u002F...\n",[31,15088,15089],{"class":216,"line":241},[31,15090,231],{"emptyLinePlaceholder":230},[31,15092,15093],{"class":216,"line":246},[31,15094,15095],{"class":237},"# ^\n",[10,15097,15099],{"id":15098},"abschließender-slash-bedeutet-der-inhalt-dieses-ordners","Abschließender Slash bedeutet: \"der Inhalt dieses Ordners\"",[14,15101,15102,15105],{},[17,15103,15104],{},"Faustregel:"," Mit \u002F am Ende der Quelle verhält sich rsync wie cp -r quelle\u002F* ziel\u002F.",[38,15107,193],{"id":15108},"beispiele-18",[10,15110,15112],{"id":15111},"lokal","─── Lokal ───────────────────────────────────────────────────",[10,15114,15116],{"id":15115},"einfache-lokale-synchronisation","Einfache lokale Synchronisation",[205,15118,15120],{"className":207,"code":15119,"language":209,"meta":210,"style":210},"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",[212,15121,15122,15134,15138,15143,15147,15158,15162,15167,15171,15186,15190,15195,15199,15211,15215,15220,15224,15240,15244,15249,15253,15258,15262,15275,15279,15284,15288,15300,15304,15309,15313,15330,15334,15339,15343,15358,15362,15367,15371,15376,15380,15401,15405,15410,15414,15419,15423,15437,15441,15446,15450,15478,15482,15487,15491,15508,15512,15517,15521,15526,15530,15555,15559,15564,15568,15581,15585,15590,15594,15607,15611,15616,15620],{"__ignoreMap":210},[31,15123,15124,15126,15128,15131],{"class":216,"line":217},[31,15125,15056],{"class":220},[31,15127,15059],{"class":223},[31,15129,15130],{"class":332}," \u002Fhome\u002Fuser\u002Fdaten\u002F",[31,15132,15133],{"class":332}," \u002Fbackup\u002Fdaten\u002F\n",[31,15135,15136],{"class":216,"line":227},[31,15137,231],{"emptyLinePlaceholder":230},[31,15139,15140],{"class":216,"line":234},[31,15141,15142],{"class":237},"# Trockenlauf: erst prüfen, dann ausführen\n",[31,15144,15145],{"class":216,"line":241},[31,15146,231],{"emptyLinePlaceholder":230},[31,15148,15149,15151,15154,15156],{"class":216,"line":246},[31,15150,15056],{"class":220},[31,15152,15153],{"class":223}," -avn",[31,15155,15130],{"class":332},[31,15157,15133],{"class":332},[31,15159,15160],{"class":216,"line":254},[31,15161,231],{"emptyLinePlaceholder":230},[31,15163,15164],{"class":216,"line":259},[31,15165,15166],{"class":237},"# Exaktes Spiegeln (überschüssige Zieldateien werden gelöscht)\n",[31,15168,15169],{"class":216,"line":265},[31,15170,231],{"emptyLinePlaceholder":230},[31,15172,15173,15175,15177,15180,15183],{"class":216,"line":270},[31,15174,15056],{"class":220},[31,15176,15059],{"class":223},[31,15178,15179],{"class":223}," --delete",[31,15181,15182],{"class":332}," \u002Fhome\u002Fuser\u002F",[31,15184,15185],{"class":332}," \u002Fbackup\u002Fuser\u002F\n",[31,15187,15188],{"class":216,"line":278},[31,15189,231],{"emptyLinePlaceholder":230},[31,15191,15192],{"class":216,"line":283},[31,15193,15194],{"class":237},"# Mit Fortschrittsanzeige\n",[31,15196,15197],{"class":216,"line":289},[31,15198,231],{"emptyLinePlaceholder":230},[31,15200,15201,15203,15206,15208],{"class":216,"line":294},[31,15202,15056],{"class":220},[31,15204,15205],{"class":223}," -avP",[31,15207,15081],{"class":332},[31,15209,15210],{"class":332}," \u002Fziel\u002F\n",[31,15212,15213],{"class":216,"line":807},[31,15214,231],{"emptyLinePlaceholder":230},[31,15216,15217],{"class":216,"line":812},[31,15218,15219],{"class":237},"# gleichwertig:\n",[31,15221,15222],{"class":216,"line":821},[31,15223,231],{"emptyLinePlaceholder":230},[31,15225,15226,15228,15230,15233,15236,15238],{"class":216,"line":826},[31,15227,15056],{"class":220},[31,15229,15059],{"class":223},[31,15231,15232],{"class":223}," --progress",[31,15234,15235],{"class":223}," --partial",[31,15237,15081],{"class":332},[31,15239,15210],{"class":332},[31,15241,15242],{"class":216,"line":837},[31,15243,231],{"emptyLinePlaceholder":230},[31,15245,15246],{"class":216,"line":842},[31,15247,15248],{"class":237},"# ─── Remote (SSH) ────────────────────────────────────────────\n",[31,15250,15251],{"class":216,"line":848},[31,15252,231],{"emptyLinePlaceholder":230},[31,15254,15255],{"class":216,"line":853},[31,15256,15257],{"class":237},"# Lokal → Remote (push)\n",[31,15259,15260],{"class":216,"line":868},[31,15261,231],{"emptyLinePlaceholder":230},[31,15263,15264,15266,15269,15272],{"class":216,"line":873},[31,15265,15056],{"class":220},[31,15267,15268],{"class":223}," -avz",[31,15270,15271],{"class":332}," \u002Fhome\u002Fuser\u002Fprojekt\u002F",[31,15273,15274],{"class":332}," benutzer@server:\u002Fbackup\u002Fprojekt\u002F\n",[31,15276,15277],{"class":216,"line":879},[31,15278,231],{"emptyLinePlaceholder":230},[31,15280,15281],{"class":216,"line":884},[31,15282,15283],{"class":237},"# Remote → Lokal (pull)\n",[31,15285,15286],{"class":216,"line":1405},[31,15287,231],{"emptyLinePlaceholder":230},[31,15289,15290,15292,15294,15297],{"class":216,"line":1410},[31,15291,15056],{"class":220},[31,15293,15268],{"class":223},[31,15295,15296],{"class":332}," benutzer@server:\u002Fvar\u002Fwww\u002Fhtml\u002F",[31,15298,15299],{"class":332}," \u002Flokal\u002Fwebseite\u002F\n",[31,15301,15302],{"class":216,"line":1416},[31,15303,231],{"emptyLinePlaceholder":230},[31,15305,15306],{"class":216,"line":1421},[31,15307,15308],{"class":237},"# SSH auf Port 2222\n",[31,15310,15311],{"class":216,"line":1434},[31,15312,231],{"emptyLinePlaceholder":230},[31,15314,15315,15317,15319,15321,15324,15327],{"class":216,"line":1439},[31,15316,15056],{"class":220},[31,15318,15268],{"class":223},[31,15320,8595],{"class":223},[31,15322,15323],{"class":332}," \"ssh -p 2222\"",[31,15325,15326],{"class":332}," \u002Fdaten\u002F",[31,15328,15329],{"class":332}," user@server:\u002Fbackup\u002F\n",[31,15331,15332],{"class":216,"line":1445},[31,15333,231],{"emptyLinePlaceholder":230},[31,15335,15336],{"class":216,"line":1450},[31,15337,15338],{"class":237},"# SSH mit spezifischem Key\n",[31,15340,15341],{"class":216,"line":2244},[31,15342,231],{"emptyLinePlaceholder":230},[31,15344,15345,15347,15349,15351,15354,15356],{"class":216,"line":2249},[31,15346,15056],{"class":220},[31,15348,15268],{"class":223},[31,15350,8595],{"class":223},[31,15352,15353],{"class":332}," \"ssh -i ~\u002F.ssh\u002Fdeploy_key\"",[31,15355,15326],{"class":332},[31,15357,15329],{"class":332},[31,15359,15360],{"class":216,"line":2255},[31,15361,231],{"emptyLinePlaceholder":230},[31,15363,15364],{"class":216,"line":2260},[31,15365,15366],{"class":237},"# ─── Filtern ─────────────────────────────────────────────────\n",[31,15368,15369],{"class":216,"line":2270},[31,15370,231],{"emptyLinePlaceholder":230},[31,15372,15373],{"class":216,"line":2275},[31,15374,15375],{"class":237},"# Temporäre Dateien und Logs ausschließen\n",[31,15377,15378],{"class":216,"line":2281},[31,15379,231],{"emptyLinePlaceholder":230},[31,15381,15382,15384,15386,15389,15392,15394,15397,15399],{"class":216,"line":2286},[31,15383,15056],{"class":220},[31,15385,15059],{"class":223},[31,15387,15388],{"class":223}," --exclude=",[31,15390,15391],{"class":332},"\".tmp\"",[31,15393,15388],{"class":223},[31,15395,15396],{"class":332},"\".log\"",[31,15398,15326],{"class":332},[31,15400,15133],{"class":332},[31,15402,15403],{"class":216,"line":5316},[31,15404,231],{"emptyLinePlaceholder":230},[31,15406,15407],{"class":216,"line":5321},[31,15408,15409],{"class":237},"# Ausschlussdatei (eine Regel pro Zeile)\n",[31,15411,15412],{"class":216,"line":5327},[31,15413,231],{"emptyLinePlaceholder":230},[31,15415,15416],{"class":216,"line":5332},[31,15417,15418],{"class":237},"# .rsync-exclude Inhalt: *.tmp \u002F logs\u002F \u002F .git\u002F\n",[31,15420,15421],{"class":216,"line":5353},[31,15422,231],{"emptyLinePlaceholder":230},[31,15424,15425,15427,15429,15432,15434],{"class":216,"line":5358},[31,15426,15056],{"class":220},[31,15428,15059],{"class":223},[31,15430,15431],{"class":223}," --exclude-from=\u002Fhome\u002Fuser\u002F.rsync-exclude",[31,15433,15326],{"class":332},[31,15435,15436],{"class":332}," \u002Fbackup\u002F\n",[31,15438,15439],{"class":216,"line":5366},[31,15440,231],{"emptyLinePlaceholder":230},[31,15442,15443],{"class":216,"line":5371},[31,15444,15445],{"class":237},"# Nur Bilder synchronisieren\n",[31,15447,15448],{"class":216,"line":5377},[31,15449,231],{"emptyLinePlaceholder":230},[31,15451,15452,15454,15456,15459,15462,15464,15467,15469,15472,15475],{"class":216,"line":5382},[31,15453,15056],{"class":220},[31,15455,15059],{"class":223},[31,15457,15458],{"class":223}," --include=",[31,15460,15461],{"class":332},"\".jpg\"",[31,15463,15458],{"class":223},[31,15465,15466],{"class":332},"\".png\"",[31,15468,15388],{"class":223},[31,15470,15471],{"class":332},"\"*\"",[31,15473,15474],{"class":332}," \u002Ffotos\u002F",[31,15476,15477],{"class":332}," \u002Fbackup\u002Ffotos\u002F\n",[31,15479,15480],{"class":216,"line":5388},[31,15481,231],{"emptyLinePlaceholder":230},[31,15483,15484],{"class":216,"line":5393},[31,15485,15486],{"class":237},"# node_modules ausschließen (typisch für Web-Projekte)\n",[31,15488,15489],{"class":216,"line":5405},[31,15490,231],{"emptyLinePlaceholder":230},[31,15492,15493,15495,15497,15499,15502,15505],{"class":216,"line":5410},[31,15494,15056],{"class":220},[31,15496,15059],{"class":223},[31,15498,15388],{"class":223},[31,15500,15501],{"class":332},"\"node_modules\u002F\"",[31,15503,15504],{"class":332}," \u002Fprojekt\u002F",[31,15506,15507],{"class":332}," server:\u002Fdeploy\u002F\n",[31,15509,15510],{"class":216,"line":5416},[31,15511,231],{"emptyLinePlaceholder":230},[31,15513,15514],{"class":216,"line":5421},[31,15515,15516],{"class":237},"# ─── Backup mit Versionierung ────────────────────────────────\n",[31,15518,15519],{"class":216,"line":5435},[31,15520,231],{"emptyLinePlaceholder":230},[31,15522,15523],{"class":216,"line":5440},[31,15524,15525],{"class":237},"# Geänderte Dateien mit Datum in separatem Ordner sichern\n",[31,15527,15528],{"class":216,"line":5446},[31,15529,231],{"emptyLinePlaceholder":230},[31,15531,15532,15534,15536,15539,15542,15544,15547,15549,15552],{"class":216,"line":5451},[31,15533,15056],{"class":220},[31,15535,15059],{"class":223},[31,15537,15538],{"class":223}," --backup",[31,15540,15541],{"class":223}," --backup-dir=\u002Fbackup\u002F$(",[31,15543,14463],{"class":220},[31,15545,15546],{"class":332}," %Y-%m-%d",[31,15548,401],{"class":223},[31,15550,15551],{"class":332}," \u002Fhome\u002F",[31,15553,15554],{"class":332}," \u002Fbackup\u002Faktuell\u002F\n",[31,15556,15557],{"class":216,"line":6552},[31,15558,231],{"emptyLinePlaceholder":230},[31,15560,15561],{"class":216,"line":6557},[31,15562,15563],{"class":237},"# Bandbreite begrenzen (500 KB\u002Fs)\n",[31,15565,15566],{"class":216,"line":6563},[31,15567,231],{"emptyLinePlaceholder":230},[31,15569,15570,15572,15574,15577,15579],{"class":216,"line":6568},[31,15571,15056],{"class":220},[31,15573,15268],{"class":223},[31,15575,15576],{"class":223}," --bwlimit=500",[31,15578,15326],{"class":332},[31,15580,15329],{"class":332},[31,15582,15583],{"class":216,"line":6589},[31,15584,231],{"emptyLinePlaceholder":230},[31,15586,15587],{"class":216,"line":6594},[31,15588,15589],{"class":237},"# Statistiken anzeigen\n",[31,15591,15592],{"class":216,"line":6600},[31,15593,231],{"emptyLinePlaceholder":230},[31,15595,15596,15598,15600,15603,15605],{"class":216,"line":6605},[31,15597,15056],{"class":220},[31,15599,15059],{"class":223},[31,15601,15602],{"class":223}," --stats",[31,15604,15081],{"class":332},[31,15606,15210],{"class":332},[31,15608,15609],{"class":216,"line":6638},[31,15610,231],{"emptyLinePlaceholder":230},[31,15612,15613],{"class":216,"line":6643},[31,15614,15615],{"class":237},"# Nur nach Prüfsumme vergleichen (langsamer, aber genauer)\n",[31,15617,15618],{"class":216,"line":6649},[31,15619,231],{"emptyLinePlaceholder":230},[31,15621,15622,15624,15627,15629],{"class":216,"line":6654},[31,15623,15056],{"class":220},[31,15625,15626],{"class":223}," -avc",[31,15628,15081],{"class":332},[31,15630,15210],{"class":332},[38,15632,350],{"id":15633},"ausgabe-18",[10,15635,15637],{"id":15636},"rsync-avp-homeuser-backup","rsync -avP \u002Fhome\u002Fuser\u002F \u002Fbackup\u002F",[14,15639,15640,15641,15643,15644,15646,15647,15649,15650,15652,15653,15655,15656,15658,15659,15661],{},"sending incremental file list",[584,15642],{},"\n.\u002F",[584,15645],{},"\ndokumente\u002F",[584,15648],{},"\ndokumente\u002Fbericht.pdf",[584,15651],{},"\n1,234,567 100% 12.34MB\u002Fs 0:00:00 (xfr#1, to-chk=23\u002F47)",[584,15654],{},"\nfotos\u002Ffoto1.jpg",[584,15657],{},"\n987,654 100% 9.87MB\u002Fs 0:00:00 (xfr#2, to-chk=22\u002F47)",[584,15660],{},"\n...",[14,15663,15664,15665,15667],{},"sent 2,345,678 bytes received 1,234 bytes 1,234,567.00 bytes\u002Fsec",[584,15666],{},"\ntotal size is 45,678,901 speedup is 19.48",[14,15669,15670,15672],{},[17,15671,1016],{}," Bei regelmäßigen Backups ist rsync -avz --delete --backup --backup-dir=\u002Fbackup\u002F$(date +%F) eine einfache aber effektive Incremental-Backup-Strategie.",[10,15674,15675],{"id":15675},"basename",[14,15677,15678,15680,15681,15684],{},[17,15679,19],{}," Entfernt den Verzeichnispfad aus einem Dateipfad und gibt nur den ",[17,15682,15683],{},"Dateinamen"," zurück. Optional kann auch die Dateiendung abgeschnitten werden. Gegenstück: dirname (gibt den Verzeichnispfad zurück).",[14,15686,15687],{},[17,15688,25],{},[14,15690,15691,15692],{},"basename PFAD ",[31,15693,7883],{},[205,15695,15697],{"className":207,"code":15696,"language":209,"meta":210,"style":210},"basename -a PFAD... -s SUFFIX\n\n",[212,15698,15699],{"__ignoreMap":210},[31,15700,15701,15703,15706,15709,15711],{"class":216,"line":217},[31,15702,15675],{"class":220},[31,15704,15705],{"class":223}," -a",[31,15707,15708],{"class":332}," PFAD...",[31,15710,12004],{"class":223},[31,15712,15713],{"class":332}," SUFFIX\n",[38,15715,15717],{"id":15716},"alle-optionen","Alle Optionen",[43,15719,15720,15736],{},[46,15721,15722],{},[49,15723,15724,15728,15732],{},[52,15725,15726],{},[17,15727,5586],{},[52,15729,15730],{},[17,15731,117],{},[52,15733,15734],{},[17,15735,61],{},[63,15737,15738,15748,15758,15768],{},[49,15739,15740,15742,15745],{},[68,15741,9924],{},[68,15743,15744],{},"--multiple",[68,15746,15747],{},"Mehrere Pfade in einem Aufruf verarbeiten",[49,15749,15750,15753,15755],{},[68,15751,15752],{},"-s SUFFIX",[68,15754,14868],{},[68,15756,15757],{},"Dieses Suffix vom Ergebnis entfernen",[49,15759,15760,15763,15765],{},[68,15761,15762],{},"--help",[68,15764],{},[68,15766,15767],{},"Hilfe anzeigen",[49,15769,15770,15773,15775],{},[68,15771,15772],{},"--version",[68,15774],{},[68,15776,15777],{},"Versionsnummer anzeigen",[38,15779,193],{"id":15780},"beispiele-19",[10,15782,15784],{"id":15783},"grundlegende-verwendung","─── Grundlegende Verwendung ─────────────────────────────────",[10,15786,15788],{"id":15787},"nur-dateiname-ohne-pfad","Nur Dateiname (ohne Pfad)",[205,15790,15792],{"className":207,"code":15791,"language":209,"meta":210,"style":210},"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",[212,15793,15794,15801,15805,15810,15814,15819,15823,15833,15837,15842,15846,15851,15855,15862,15866,15871,15875,15882,15886,15891,15895,15900,15904,15909,15913,15924,15928,15933,15937,15942,15946,15956,15960,15965,15969,15974,15978,15993,15997,16002,16006,16011,16015,16020,16024,16029,16033,16050,16054,16059,16063,16068,16072,16077,16081,16086,16090,16109,16113,16129,16133,16138,16142,16163,16167,16182,16186,16205,16209,16222,16226,16232,16236,16240,16244,16254,16258,16274,16278,16283,16287,16304,16308,16330,16334,16346,16350,16355,16359,16364,16368,16378,16382,16407,16411,16429,16433,16444,16448,16453,16457,16466,16470,16494,16498,16523,16527,16539,16543,16555,16559],{"__ignoreMap":210},[31,15795,15796,15798],{"class":216,"line":217},[31,15797,15675],{"class":220},[31,15799,15800],{"class":332}," \u002Fhome\u002Fuser\u002Fdokumente\u002Fbericht.pdf\n",[31,15802,15803],{"class":216,"line":227},[31,15804,231],{"emptyLinePlaceholder":230},[31,15806,15807],{"class":216,"line":234},[31,15808,15809],{"class":237},"# → bericht.pdf\n",[31,15811,15812],{"class":216,"line":241},[31,15813,231],{"emptyLinePlaceholder":230},[31,15815,15816],{"class":216,"line":246},[31,15817,15818],{"class":237},"# Dateiname ohne Endung\n",[31,15820,15821],{"class":216,"line":254},[31,15822,231],{"emptyLinePlaceholder":230},[31,15824,15825,15827,15830],{"class":216,"line":259},[31,15826,15675],{"class":220},[31,15828,15829],{"class":332}," \u002Fhome\u002Fuser\u002Fdokumente\u002Fbericht.pdf",[31,15831,15832],{"class":332}," .pdf\n",[31,15834,15835],{"class":216,"line":265},[31,15836,231],{"emptyLinePlaceholder":230},[31,15838,15839],{"class":216,"line":270},[31,15840,15841],{"class":237},"# → bericht\n",[31,15843,15844],{"class":216,"line":278},[31,15845,231],{"emptyLinePlaceholder":230},[31,15847,15848],{"class":216,"line":283},[31,15849,15850],{"class":237},"# Nur mit Programmname (Pfad egal)\n",[31,15852,15853],{"class":216,"line":289},[31,15854,231],{"emptyLinePlaceholder":230},[31,15856,15857,15859],{"class":216,"line":294},[31,15858,15675],{"class":220},[31,15860,15861],{"class":332}," \u002Fusr\u002Fbin\u002Fpython3\n",[31,15863,15864],{"class":216,"line":807},[31,15865,231],{"emptyLinePlaceholder":230},[31,15867,15868],{"class":216,"line":812},[31,15869,15870],{"class":237},"# → python3\n",[31,15872,15873],{"class":216,"line":821},[31,15874,231],{"emptyLinePlaceholder":230},[31,15876,15877,15879],{"class":216,"line":826},[31,15878,15675],{"class":220},[31,15880,15881],{"class":332}," \u002Fusr\u002Flib\u002Fsystemd\u002Fsystemd-journald\n",[31,15883,15884],{"class":216,"line":837},[31,15885,231],{"emptyLinePlaceholder":230},[31,15887,15888],{"class":216,"line":842},[31,15889,15890],{"class":237},"# → systemd-journald\n",[31,15892,15893],{"class":216,"line":848},[31,15894,231],{"emptyLinePlaceholder":230},[31,15896,15897],{"class":216,"line":853},[31,15898,15899],{"class":237},"# ─── Suffix entfernen (-s) ───────────────────────────────────\n",[31,15901,15902],{"class":216,"line":868},[31,15903,231],{"emptyLinePlaceholder":230},[31,15905,15906],{"class":216,"line":873},[31,15907,15908],{"class":237},"# Endung .txt entfernen\n",[31,15910,15911],{"class":216,"line":879},[31,15912,231],{"emptyLinePlaceholder":230},[31,15914,15915,15917,15919,15921],{"class":216,"line":884},[31,15916,15675],{"class":220},[31,15918,12004],{"class":223},[31,15920,13960],{"class":332},[31,15922,15923],{"class":332}," \u002Fpfad\u002Fzur\u002Fdatei.txt\n",[31,15925,15926],{"class":216,"line":1405},[31,15927,231],{"emptyLinePlaceholder":230},[31,15929,15930],{"class":216,"line":1410},[31,15931,15932],{"class":237},"# → datei\n",[31,15934,15935],{"class":216,"line":1416},[31,15936,231],{"emptyLinePlaceholder":230},[31,15938,15939],{"class":216,"line":1421},[31,15940,15941],{"class":237},"# Doppeltes Suffix .tar.gz\n",[31,15943,15944],{"class":216,"line":1434},[31,15945,231],{"emptyLinePlaceholder":230},[31,15947,15948,15950,15953],{"class":216,"line":1439},[31,15949,15675],{"class":220},[31,15951,15952],{"class":332}," \u002Fbackup\u002Farchiv.tar.gz",[31,15954,15955],{"class":332}," .tar.gz\n",[31,15957,15958],{"class":216,"line":1445},[31,15959,231],{"emptyLinePlaceholder":230},[31,15961,15962],{"class":216,"line":1450},[31,15963,15964],{"class":237},"# → archiv\n",[31,15966,15967],{"class":216,"line":2244},[31,15968,231],{"emptyLinePlaceholder":230},[31,15970,15971],{"class":216,"line":2249},[31,15972,15973],{"class":237},"# ─── Mehrere Dateien auf einmal (-a) ────────────────────────\n",[31,15975,15976],{"class":216,"line":2255},[31,15977,231],{"emptyLinePlaceholder":230},[31,15979,15980,15982,15984,15987,15990],{"class":216,"line":2260},[31,15981,15675],{"class":220},[31,15983,15705],{"class":223},[31,15985,15986],{"class":332}," \u002Fetc\u002Fhosts",[31,15988,15989],{"class":332}," \u002Fetc\u002Fpasswd",[31,15991,15992],{"class":332}," \u002Fetc\u002Fshadow\n",[31,15994,15995],{"class":216,"line":2270},[31,15996,231],{"emptyLinePlaceholder":230},[31,15998,15999],{"class":216,"line":2275},[31,16000,16001],{"class":237},"# → hosts\n",[31,16003,16004],{"class":216,"line":2281},[31,16005,231],{"emptyLinePlaceholder":230},[31,16007,16008],{"class":216,"line":2286},[31,16009,16010],{"class":237},"# passwd\n",[31,16012,16013],{"class":216,"line":5316},[31,16014,231],{"emptyLinePlaceholder":230},[31,16016,16017],{"class":216,"line":5321},[31,16018,16019],{"class":237},"# shadow\n",[31,16021,16022],{"class":216,"line":5327},[31,16023,231],{"emptyLinePlaceholder":230},[31,16025,16026],{"class":216,"line":5332},[31,16027,16028],{"class":237},"# Mehrere Dateien Suffix entfernen\n",[31,16030,16031],{"class":216,"line":5353},[31,16032,231],{"emptyLinePlaceholder":230},[31,16034,16035,16037,16039,16041,16044,16047],{"class":216,"line":5358},[31,16036,15675],{"class":220},[31,16038,15705],{"class":223},[31,16040,12004],{"class":223},[31,16042,16043],{"class":332}," .conf",[31,16045,16046],{"class":332}," \u002Fetc\u002Fssh\u002Fsshd_config.conf",[31,16048,16049],{"class":332}," \u002Fetc\u002Fnginx\u002Fnginx.conf\n",[31,16051,16052],{"class":216,"line":5366},[31,16053,231],{"emptyLinePlaceholder":230},[31,16055,16056],{"class":216,"line":5371},[31,16057,16058],{"class":237},"# → sshd_config\n",[31,16060,16061],{"class":216,"line":5377},[31,16062,231],{"emptyLinePlaceholder":230},[31,16064,16065],{"class":216,"line":5382},[31,16066,16067],{"class":237},"# nginx\n",[31,16069,16070],{"class":216,"line":5388},[31,16071,231],{"emptyLinePlaceholder":230},[31,16073,16074],{"class":216,"line":5393},[31,16075,16076],{"class":237},"# ─── In Skripten ─────────────────────────────────────────────\n",[31,16078,16079],{"class":216,"line":5405},[31,16080,231],{"emptyLinePlaceholder":230},[31,16082,16083],{"class":216,"line":5410},[31,16084,16085],{"class":237},"# Skriptname ohne Pfad (für Fehlermeldungen)\n",[31,16087,16088],{"class":216,"line":5416},[31,16089,231],{"emptyLinePlaceholder":230},[31,16091,16092,16095,16097,16099,16101,16103,16105,16107],{"class":216,"line":5421},[31,16093,16094],{"class":363},"PROG",[31,16096,367],{"class":336},[31,16098,10837],{"class":363},[31,16100,15675],{"class":220},[31,16102,10878],{"class":332},[31,16104,6813],{"class":223},[31,16106,14102],{"class":332},[31,16108,432],{"class":363},[31,16110,16111],{"class":216,"line":5435},[31,16112,231],{"emptyLinePlaceholder":230},[31,16114,16115,16117,16120,16123,16126],{"class":216,"line":5440},[31,16116,856],{"class":223},[31,16118,16119],{"class":332}," \"Verwendung: ",[31,16121,16122],{"class":363},"$PROG",[31,16124,16125],{"class":332}," [OPTIONEN]\"",[31,16127,16128],{"class":336}," >&2\n",[31,16130,16131],{"class":216,"line":5446},[31,16132,231],{"emptyLinePlaceholder":230},[31,16134,16135],{"class":216,"line":5451},[31,16136,16137],{"class":237},"# Lock-Datei basierend auf Skriptname\n",[31,16139,16140],{"class":216,"line":6552},[31,16141,231],{"emptyLinePlaceholder":230},[31,16143,16144,16146,16148,16150,16152,16154,16156,16158,16161],{"class":216,"line":6557},[31,16145,16094],{"class":363},[31,16147,367],{"class":336},[31,16149,10837],{"class":363},[31,16151,15675],{"class":220},[31,16153,10878],{"class":332},[31,16155,6813],{"class":223},[31,16157,14102],{"class":332},[31,16159,16160],{"class":332}," .sh",[31,16162,432],{"class":363},[31,16164,16165],{"class":216,"line":6563},[31,16166,231],{"emptyLinePlaceholder":230},[31,16168,16169,16172,16174,16177,16179],{"class":216,"line":6568},[31,16170,16171],{"class":363},"LOCKFILE",[31,16173,367],{"class":336},[31,16175,16176],{"class":332},"\"\u002Ftmp\u002F${",[31,16178,16094],{"class":363},[31,16180,16181],{"class":332},"}.lock\"\n",[31,16183,16184],{"class":216,"line":6589},[31,16185,231],{"emptyLinePlaceholder":230},[31,16187,16188,16190,16192,16194,16196,16199,16201,16203],{"class":216,"line":6594},[31,16189,5335],{"class":336},[31,16191,10919],{"class":363},[31,16193,1192],{"class":336},[31,16195,10878],{"class":332},[31,16197,16198],{"class":363},"$LOCKFILE",[31,16200,14102],{"class":332},[31,16202,10936],{"class":363},[31,16204,5350],{"class":336},[31,16206,16207],{"class":216,"line":6600},[31,16208,231],{"emptyLinePlaceholder":230},[31,16210,16211,16213,16215,16217,16220],{"class":216,"line":6605},[31,16212,856],{"class":223},[31,16214,10878],{"class":332},[31,16216,16122],{"class":363},[31,16218,16219],{"class":332}," läuft bereits!\"",[31,16221,16128],{"class":336},[31,16223,16224],{"class":216,"line":6638},[31,16225,231],{"emptyLinePlaceholder":230},[31,16227,16228,16230],{"class":216,"line":6643},[31,16229,10958],{"class":223},[31,16231,10961],{"class":223},[31,16233,16234],{"class":216,"line":6649},[31,16235,231],{"emptyLinePlaceholder":230},[31,16237,16238],{"class":216,"line":6654},[31,16239,5374],{"class":336},[31,16241,16242],{"class":216,"line":8874},[31,16243,231],{"emptyLinePlaceholder":230},[31,16245,16246,16248,16250,16252],{"class":216,"line":8879},[31,16247,815],{"class":220},[31,16249,10878],{"class":332},[31,16251,16198],{"class":363},[31,16253,10884],{"class":332},[31,16255,16256],{"class":216,"line":8891},[31,16257,231],{"emptyLinePlaceholder":230},[31,16259,16260,16263,16266,16268,16271],{"class":216,"line":8896},[31,16261,16262],{"class":223},"trap",[31,16264,16265],{"class":332}," \"rm -f '",[31,16267,16198],{"class":363},[31,16269,16270],{"class":332},"'\"",[31,16272,16273],{"class":332}," EXIT\n",[31,16275,16276],{"class":216,"line":8902},[31,16277,231],{"emptyLinePlaceholder":230},[31,16279,16280],{"class":216,"line":8907},[31,16281,16282],{"class":237},"# Alle .sh-Dateien ohne Endung verarbeiten\n",[31,16284,16285],{"class":216,"line":8919},[31,16286,231],{"emptyLinePlaceholder":230},[31,16288,16289,16291,16294,16296,16299,16301],{"class":216,"line":8924},[31,16290,7276],{"class":336},[31,16292,16293],{"class":363}," f ",[31,16295,7290],{"class":336},[31,16297,16298],{"class":332}," \u002Fskripte\u002F*.sh",[31,16300,5347],{"class":363},[31,16302,16303],{"class":336},"do\n",[31,16305,16306],{"class":216,"line":8930},[31,16307,231],{"emptyLinePlaceholder":230},[31,16309,16310,16313,16315,16317,16319,16321,16324,16326,16328],{"class":216,"line":8935},[31,16311,16312],{"class":363},"name",[31,16314,367],{"class":336},[31,16316,10837],{"class":363},[31,16318,15675],{"class":220},[31,16320,10878],{"class":332},[31,16322,16323],{"class":363},"$f",[31,16325,14102],{"class":332},[31,16327,16160],{"class":332},[31,16329,432],{"class":363},[31,16331,16332],{"class":216,"line":8947},[31,16333,231],{"emptyLinePlaceholder":230},[31,16335,16336,16338,16341,16344],{"class":216,"line":8952},[31,16337,856],{"class":223},[31,16339,16340],{"class":332}," \"Verarbeite Skript: ",[31,16342,16343],{"class":363},"$name",[31,16345,10884],{"class":332},[31,16347,16348],{"class":216,"line":8958},[31,16349,231],{"emptyLinePlaceholder":230},[31,16351,16352],{"class":216,"line":8963},[31,16353,16354],{"class":336},"done\n",[31,16356,16357],{"class":216,"line":8975},[31,16358,231],{"emptyLinePlaceholder":230},[31,16360,16361],{"class":216,"line":8980},[31,16362,16363],{"class":237},"# Backup mit Datum und originalem Dateinamen\n",[31,16365,16366],{"class":216,"line":8986},[31,16367,231],{"emptyLinePlaceholder":230},[31,16369,16370,16373,16375],{"class":216,"line":8991},[31,16371,16372],{"class":363},"DATEI",[31,16374,367],{"class":336},[31,16376,16377],{"class":332},"\"\u002Fetc\u002Fnginx\u002Fnginx.conf\"\n",[31,16379,16380],{"class":216,"line":9003},[31,16381,231],{"emptyLinePlaceholder":230},[31,16383,16384,16387,16389,16392,16394,16396,16399,16402,16404],{"class":216,"line":9008},[31,16385,16386],{"class":363},"BACKUP",[31,16388,367],{"class":336},[31,16390,16391],{"class":332},"\"\u002Fbackup\u002F$(",[31,16393,15675],{"class":220},[31,16395,10878],{"class":332},[31,16397,16398],{"class":363},"$DATEI",[31,16400,16401],{"class":332},"\").$(",[31,16403,14463],{"class":220},[31,16405,16406],{"class":332}," %Y%m%d)\"\n",[31,16408,16409],{"class":216,"line":9014},[31,16410,231],{"emptyLinePlaceholder":230},[31,16412,16413,16416,16418,16420,16422,16424,16427],{"class":216,"line":9019},[31,16414,16415],{"class":220},"cp",[31,16417,10878],{"class":332},[31,16419,16398],{"class":363},[31,16421,14102],{"class":332},[31,16423,10878],{"class":332},[31,16425,16426],{"class":363},"$BACKUP",[31,16428,10884],{"class":332},[31,16430,16431],{"class":216,"line":9025},[31,16432,231],{"emptyLinePlaceholder":230},[31,16434,16435,16437,16440,16442],{"class":216,"line":9030},[31,16436,856],{"class":223},[31,16438,16439],{"class":332}," \"Backup: ",[31,16441,16426],{"class":363},[31,16443,10884],{"class":332},[31,16445,16446],{"class":216,"line":9040},[31,16447,231],{"emptyLinePlaceholder":230},[31,16449,16450],{"class":216,"line":9045},[31,16451,16452],{"class":237},"# ─── dirname als Gegenstück ──────────────────────────────────\n",[31,16454,16455],{"class":216,"line":9051},[31,16456,231],{"emptyLinePlaceholder":230},[31,16458,16459,16461,16463],{"class":216,"line":9056},[31,16460,16372],{"class":363},[31,16462,367],{"class":336},[31,16464,16465],{"class":332},"\"\u002Fhome\u002Fuser\u002Fdaten\u002Freport.csv\"\n",[31,16467,16468],{"class":216,"line":9066},[31,16469,231],{"emptyLinePlaceholder":230},[31,16471,16472,16475,16477,16479,16482,16484,16486,16488,16491],{"class":216,"line":9071},[31,16473,16474],{"class":363},"DIR",[31,16476,367],{"class":336},[31,16478,10837],{"class":363},[31,16480,16481],{"class":220},"dirname",[31,16483,10878],{"class":332},[31,16485,16398],{"class":363},[31,16487,14102],{"class":332},[31,16489,16490],{"class":363},") ",[31,16492,16493],{"class":237},"# → \u002Fhome\u002Fuser\u002Fdaten\n",[31,16495,16496],{"class":216,"line":9077},[31,16497,231],{"emptyLinePlaceholder":230},[31,16499,16500,16503,16505,16507,16509,16511,16513,16515,16518,16520],{"class":216,"line":9082},[31,16501,16502],{"class":363},"NAME",[31,16504,367],{"class":336},[31,16506,10837],{"class":363},[31,16508,15675],{"class":220},[31,16510,10878],{"class":332},[31,16512,16398],{"class":363},[31,16514,14102],{"class":332},[31,16516,16517],{"class":332}," .csv",[31,16519,16490],{"class":363},[31,16521,16522],{"class":237},"# → report\n",[31,16524,16525],{"class":216,"line":9092},[31,16526,231],{"emptyLinePlaceholder":230},[31,16528,16529,16531,16534,16537],{"class":216,"line":9097},[31,16530,856],{"class":223},[31,16532,16533],{"class":332}," \"Verzeichnis: ",[31,16535,16536],{"class":363},"$DIR",[31,16538,10884],{"class":332},[31,16540,16541],{"class":216,"line":9103},[31,16542,231],{"emptyLinePlaceholder":230},[31,16544,16545,16547,16550,16553],{"class":216,"line":9108},[31,16546,856],{"class":223},[31,16548,16549],{"class":332}," \"Dateiname: ",[31,16551,16552],{"class":363},"$NAME",[31,16554,10884],{"class":332},[31,16556,16557],{"class":216,"line":9118},[31,16558,231],{"emptyLinePlaceholder":230},[31,16560,16561,16563,16566,16568,16570,16572],{"class":216,"line":9123},[31,16562,856],{"class":223},[31,16564,16565],{"class":332}," \"Voller Pfad: ",[31,16567,16536],{"class":363},[31,16569,1035],{"class":332},[31,16571,16552],{"class":363},[31,16573,16574],{"class":332},".csv\"\n",[38,16576,350],{"id":16577},"ausgabe-19",[10,16579,16581],{"id":16580},"basename-homemattaprojektskriptsh","basename \u002Fhome\u002Fmatta\u002Fprojekt\u002Fskript.sh",[14,16583,16584],{},"skript.sh",[10,16586,16588],{"id":16587},"basename-homemattaprojektskriptsh-sh","basename \u002Fhome\u002Fmatta\u002Fprojekt\u002Fskript.sh .sh",[14,16590,16591],{},"skript",[10,16593,16595],{"id":16594},"basename-a-varlogsyslog-varlogauthlog-varlogkernlog","basename -a \u002Fvar\u002Flog\u002Fsyslog \u002Fvar\u002Flog\u002Fauth.log \u002Fvar\u002Flog\u002Fkern.log",[14,16597,16598],{},"syslog",[14,16600,16601],{},"auth.log",[14,16603,16604],{},"kern.log",[10,16606,16608],{"id":16607},"basename-a-s-log-varlogsyslog-varlogauthlog","basename -a -s .log \u002Fvar\u002Flog\u002Fsyslog \u002Fvar\u002Flog\u002Fauth.log",[14,16610,16598],{},[14,16612,16613],{},"auth",[10,16615,16617],{"id":16616},"dirname-homemattaprojektskriptsh","dirname \u002Fhome\u002Fmatta\u002Fprojekt\u002Fskript.sh",[14,16619,16620],{},"\u002Fhome\u002Fmatta\u002Fprojekt",[10,16622,429],{"id":429},[14,16624,16625,16627,16628,16631],{},[17,16626,19],{}," Docker ist eine Plattform zur ",[17,16629,16630],{},"Containerisierung von Anwendungen",". Ein Container ist eine isolierte, portable Ausführungsumgebung mit allem was die Anwendung benötigt (Code, Bibliotheken, Konfiguration).",[14,16633,16634,16636,16637,16639],{},[17,16635,25],{}," docker ",[31,16638,33],{}," BEFEHL",[38,16641,16643],{"id":16642},"grundkonzepte","Grundkonzepte",[43,16645,16646,16659],{},[46,16647,16648],{},[49,16649,16650,16655],{},[52,16651,16652],{},[17,16653,16654],{},"Begriff",[52,16656,16657],{},[17,16658,61],{},[63,16660,16661,16669,16677,16685,16693,16701,16709],{},[49,16662,16663,16666],{},[68,16664,16665],{},"Image",[68,16667,16668],{},"Unveränderliche Vorlage\u002FBauplan für Container",[49,16670,16671,16674],{},[68,16672,16673],{},"Container",[68,16675,16676],{},"Laufende (oder gestoppte) Instanz eines Images",[49,16678,16679,16682],{},[68,16680,16681],{},"Dockerfile",[68,16683,16684],{},"Textdatei mit Anweisungen zum Bauen eines Images",[49,16686,16687,16690],{},[68,16688,16689],{},"Registry",[68,16691,16692],{},"Speicher für Images (Docker Hub, ghcr.io, eigene)",[49,16694,16695,16698],{},[68,16696,16697],{},"Layer",[68,16699,16700],{},"Jede Dockerfile-Anweisung erzeugt eine unveränderliche Schicht",[49,16702,16703,16706],{},[68,16704,16705],{},"Volume",[68,16707,16708],{},"Persistenter Datenspeicher außerhalb des Containers",[49,16710,16711,16714],{},[68,16712,16713],{},"Network",[68,16715,16716],{},"Virtuelles Netzwerk für Container-Kommunikation",[38,16718,16720],{"id":16719},"wichtige-docker-befehle","Wichtige docker-Befehle",[2355,16722,16724],{"id":16723},"images","Images",[43,16726,16727,16739],{},[46,16728,16729],{},[49,16730,16731,16735],{},[52,16732,16733],{},[17,16734,7959],{},[52,16736,16737],{},[17,16738,61],{},[63,16740,16741,16754,16766,16774,16782,16790,16798,16806,16814,16822,16830],{},[49,16742,16743,16751],{},[68,16744,16745,16746],{},"docker pull IMAGE",[31,16747,16748],{},[16749,16750],"tag",{},[68,16752,16753],{},"Image von Registry herunterladen",[49,16755,16756,16763],{},[68,16757,16758,16759],{},"docker push IMAGE",[31,16760,16761],{},[16749,16762],{},[68,16764,16765],{},"Image in Registry hochladen",[49,16767,16768,16771],{},[68,16769,16770],{},"docker build -t NAME .",[68,16772,16773],{},"Image aus Dockerfile im aktuellen Verzeichnis bauen",[49,16775,16776,16779],{},[68,16777,16778],{},"docker images",[68,16780,16781],{},"Alle lokalen Images auflisten",[49,16783,16784,16787],{},[68,16785,16786],{},"docker rmi IMAGE",[68,16788,16789],{},"Image löschen",[49,16791,16792,16795],{},[68,16793,16794],{},"docker tag QUELLE ZIEL",[68,16796,16797],{},"Image neu taggen",[49,16799,16800,16803],{},[68,16801,16802],{},"docker image prune",[68,16804,16805],{},"Unbenutzte Images löschen",[49,16807,16808,16811],{},[68,16809,16810],{},"docker image inspect IMAGE",[68,16812,16813],{},"Detaillierte Image-Infos",[49,16815,16816,16819],{},[68,16817,16818],{},"docker image history IMAGE",[68,16820,16821],{},"Layer-Historie anzeigen",[49,16823,16824,16827],{},[68,16825,16826],{},"docker save -o datei.tar IMAGE",[68,16828,16829],{},"Image als Tar-Archiv exportieren",[49,16831,16832,16835],{},[68,16833,16834],{},"docker load -i datei.tar",[68,16836,16837],{},"Image aus Tar-Archiv laden",[2355,16839,16673],{"id":16840},"container",[43,16842,16843,16855],{},[46,16844,16845],{},[49,16846,16847,16851],{},[52,16848,16849],{},[17,16850,7959],{},[52,16852,16853],{},[17,16854,61],{},[63,16856,16857,16865,16873,16881,16889,16897,16905,16913,16921,16929,16937,16945,16953,16961,16969,16977],{},[49,16858,16859,16862],{},[68,16860,16861],{},"docker run IMAGE",[68,16863,16864],{},"Container aus Image starten (erstellt neuen Container)",[49,16866,16867,16870],{},[68,16868,16869],{},"docker start CONTAINER",[68,16871,16872],{},"Gestoppten Container starten",[49,16874,16875,16878],{},[68,16876,16877],{},"docker stop CONTAINER",[68,16879,16880],{},"Container graceful stoppen (SIGTERM → SIGKILL)",[49,16882,16883,16886],{},[68,16884,16885],{},"docker restart CONTAINER",[68,16887,16888],{},"Container neu starten",[49,16890,16891,16894],{},[68,16892,16893],{},"docker kill CONTAINER",[68,16895,16896],{},"Container sofort beenden (SIGKILL)",[49,16898,16899,16902],{},[68,16900,16901],{},"docker rm CONTAINER",[68,16903,16904],{},"Gestoppten Container entfernen",[49,16906,16907,16910],{},[68,16908,16909],{},"docker ps",[68,16911,16912],{},"Laufende Container anzeigen",[49,16914,16915,16918],{},[68,16916,16917],{},"docker ps -a",[68,16919,16920],{},"Alle Container (auch gestoppte)",[49,16922,16923,16926],{},[68,16924,16925],{},"docker exec CONTAINER BEFEHL",[68,16927,16928],{},"Befehl in laufendem Container ausführen",[49,16930,16931,16934],{},[68,16932,16933],{},"docker logs CONTAINER",[68,16935,16936],{},"Container-Logs anzeigen",[49,16938,16939,16942],{},[68,16940,16941],{},"docker inspect CONTAINER",[68,16943,16944],{},"Detaillierte Container-Infos (JSON)",[49,16946,16947,16950],{},[68,16948,16949],{},"docker stats",[68,16951,16952],{},"Ressourcenverbrauch live anzeigen",[49,16954,16955,16958],{},[68,16956,16957],{},"docker top CONTAINER",[68,16959,16960],{},"Prozesse im Container anzeigen",[49,16962,16963,16966],{},[68,16964,16965],{},"docker diff CONTAINER",[68,16967,16968],{},"Dateisystemänderungen seit Start",[49,16970,16971,16974],{},[68,16972,16973],{},"docker cp CONTAINER:PFAD LOKAL",[68,16975,16976],{},"Datei aus Container kopieren",[49,16978,16979,16982],{},[68,16980,16981],{},"docker commit CONTAINER IMAGE",[68,16983,16984],{},"Container in Image umwandeln",[2355,16986,16988],{"id":16987},"volumes-und-netzwerke","Volumes und Netzwerke",[43,16990,16991,17003],{},[46,16992,16993],{},[49,16994,16995,16999],{},[52,16996,16997],{},[17,16998,7959],{},[52,17000,17001],{},[17,17002,61],{},[63,17004,17005,17013,17021,17029,17037,17045,17053,17061,17069,17077],{},[49,17006,17007,17010],{},[68,17008,17009],{},"docker volume create NAME",[68,17011,17012],{},"Volume erstellen",[49,17014,17015,17018],{},[68,17016,17017],{},"docker volume ls",[68,17019,17020],{},"Volumes auflisten",[49,17022,17023,17026],{},[68,17024,17025],{},"docker volume rm NAME",[68,17027,17028],{},"Volume löschen",[49,17030,17031,17034],{},[68,17032,17033],{},"docker volume inspect NAME",[68,17035,17036],{},"Volume-Details",[49,17038,17039,17042],{},[68,17040,17041],{},"docker volume prune",[68,17043,17044],{},"Unbenutzte Volumes löschen",[49,17046,17047,17050],{},[68,17048,17049],{},"docker network create NAME",[68,17051,17052],{},"Netzwerk erstellen",[49,17054,17055,17058],{},[68,17056,17057],{},"docker network ls",[68,17059,17060],{},"Netzwerke auflisten",[49,17062,17063,17066],{},[68,17064,17065],{},"docker network rm NAME",[68,17067,17068],{},"Netzwerk löschen",[49,17070,17071,17074],{},[68,17072,17073],{},"docker network inspect NAME",[68,17075,17076],{},"Netzwerk-Details",[49,17078,17079,17082],{},[68,17080,17081],{},"docker network connect NET CONT",[68,17083,17084],{},"Container zu Netzwerk hinzufügen",[38,17086,17088],{"id":17087},"docker-run-optionen-wichtigste","docker run Optionen (wichtigste)",[43,17090,17091,17103],{},[46,17092,17093],{},[49,17094,17095,17099],{},[52,17096,17097],{},[17,17098,5586],{},[52,17100,17101],{},[17,17102,61],{},[63,17104,17105,17113,17121,17129,17137,17145,17153,17161,17169,17177,17185,17193,17201,17214,17222,17230,17238,17246,17254,17262,17270],{},[49,17106,17107,17110],{},[68,17108,17109],{},"-d \u002F --detach",[68,17111,17112],{},"Im Hintergrund starten",[49,17114,17115,17118],{},[68,17116,17117],{},"-it",[68,17119,17120],{},"Interaktives Terminal (-i: stdin offen, -t: TTY)",[49,17122,17123,17126],{},[68,17124,17125],{},"--name NAME",[68,17127,17128],{},"Container benennen",[49,17130,17131,17134],{},[68,17132,17133],{},"-p HOST:CONT",[68,17135,17136],{},"Port-Weiterleitung (z.B. -p 8080:80)",[49,17138,17139,17142],{},[68,17140,17141],{},"-v HOST:CONT",[68,17143,17144],{},"Volume \u002F Bind-Mount (-v \u002Flokal:\u002Fcontainer)",[49,17146,17147,17150],{},[68,17148,17149],{},"--volume=vol:\u002Fpfad",[68,17151,17152],{},"Named Volume einbinden",[49,17154,17155,17158],{},[68,17156,17157],{},"-e VAR=WERT",[68,17159,17160],{},"Umgebungsvariable setzen",[49,17162,17163,17166],{},[68,17164,17165],{},"--env-file DATEI",[68,17167,17168],{},"Umgebungsvariablen aus Datei",[49,17170,17171,17174],{},[68,17172,17173],{},"--rm",[68,17175,17176],{},"Container nach Beenden automatisch löschen",[49,17178,17179,17182],{},[68,17180,17181],{},"--restart POLICY",[68,17183,17184],{},"Neustart-Policy (no, always, on-failure, unless-stopped)",[49,17186,17187,17190],{},[68,17188,17189],{},"--network NETZWERK",[68,17191,17192],{},"Container in Netzwerk einbinden",[49,17194,17195,17198],{},[68,17196,17197],{},"--network=host",[68,17199,17200],{},"Host-Netzwerk direkt nutzen",[49,17202,17203,17211],{},[68,17204,17205,17206],{},"-u USER",[31,17207,17208],{},[17209,17210],"grp",{},[68,17212,17213],{},"Als bestimmten Benutzer ausführen",[49,17215,17216,17219],{},[68,17217,17218],{},"-w DIR",[68,17220,17221],{},"Arbeitsverzeichnis im Container",[49,17223,17224,17227],{},[68,17225,17226],{},"--entrypoint CMD",[68,17228,17229],{},"Standard-Entrypoint überschreiben",[49,17231,17232,17235],{},[68,17233,17234],{},"--memory=512m",[68,17236,17237],{},"RAM-Limit setzen",[49,17239,17240,17243],{},[68,17241,17242],{},"--cpus=1.5",[68,17244,17245],{},"CPU-Limit setzen",[49,17247,17248,17251],{},[68,17249,17250],{},"--read-only",[68,17252,17253],{},"Dateisystem des Containers schreibgeschützt",[49,17255,17256,17259],{},[68,17257,17258],{},"--tmpfs \u002Ftmp",[68,17260,17261],{},"In-Memory-Dateisystem für bestimmten Pfad",[49,17263,17264,17267],{},[68,17265,17266],{},"-l KEY=WERT",[68,17268,17269],{},"Label setzen",[49,17271,17272,17275],{},[68,17273,17274],{},"--hostname NAME",[68,17276,17277],{},"Hostname im Container",[38,17279,17281],{"id":17280},"dockerfile-aufbau","Dockerfile Aufbau",[205,17283,17287],{"className":17284,"code":17285,"language":17286,"meta":210,"style":210},"language-dockerfile shiki shiki-themes github-light github-dark","# ─── 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","dockerfile",[212,17288,17289,17294,17298,17306,17310,17315,17319,17326,17330,17337,17341,17346,17350,17360,17364,17374,17378,17388,17392,17397,17401],{"__ignoreMap":210},[31,17290,17291],{"class":216,"line":217},[31,17292,17293],{"class":237},"# ─── Basisimage ───────────────────────────────────────────────\n",[31,17295,17296],{"class":216,"line":227},[31,17297,231],{"emptyLinePlaceholder":230},[31,17299,17300,17303],{"class":216,"line":234},[31,17301,17302],{"class":336},"FROM",[31,17304,17305],{"class":363}," ubuntu:22.04\n",[31,17307,17308],{"class":216,"line":241},[31,17309,231],{"emptyLinePlaceholder":230},[31,17311,17312],{"class":216,"line":246},[31,17313,17314],{"class":237},"# oder für kleinere Images:\n",[31,17316,17317],{"class":216,"line":254},[31,17318,231],{"emptyLinePlaceholder":230},[31,17320,17321,17323],{"class":216,"line":259},[31,17322,17302],{"class":336},[31,17324,17325],{"class":363}," alpine:3.19\n",[31,17327,17328],{"class":216,"line":265},[31,17329,231],{"emptyLinePlaceholder":230},[31,17331,17332,17334],{"class":216,"line":270},[31,17333,17302],{"class":336},[31,17335,17336],{"class":363}," debian:bookworm-slim\n",[31,17338,17339],{"class":216,"line":278},[31,17340,231],{"emptyLinePlaceholder":230},[31,17342,17343],{"class":216,"line":283},[31,17344,17345],{"class":237},"# ─── Metadaten ────────────────────────────────────────────────\n",[31,17347,17348],{"class":216,"line":289},[31,17349,231],{"emptyLinePlaceholder":230},[31,17351,17352,17354,17357],{"class":216,"line":294},[31,17353,8136],{"class":336},[31,17355,17356],{"class":363}," maintainer=",[31,17358,17359],{"class":332},"\"admin@example.com\"\n",[31,17361,17362],{"class":216,"line":807},[31,17363,231],{"emptyLinePlaceholder":230},[31,17365,17366,17368,17371],{"class":216,"line":812},[31,17367,8136],{"class":336},[31,17369,17370],{"class":363}," version=",[31,17372,17373],{"class":332},"\"1.0\"\n",[31,17375,17376],{"class":216,"line":821},[31,17377,231],{"emptyLinePlaceholder":230},[31,17379,17380,17382,17385],{"class":216,"line":826},[31,17381,8136],{"class":336},[31,17383,17384],{"class":363}," description=",[31,17386,17387],{"class":332},"\"Meine Anwendung\"\n",[31,17389,17390],{"class":216,"line":837},[31,17391,231],{"emptyLinePlaceholder":230},[31,17393,17394],{"class":216,"line":842},[31,17395,17396],{"class":237},"# ─── Umgebungsvariablen ───────────────────────────────────────\n",[31,17398,17399],{"class":216,"line":848},[31,17400,231],{"emptyLinePlaceholder":230},[31,17402,17403,17406],{"class":216,"line":853},[31,17404,17405],{"class":336},"ENV",[31,17407,17408],{"class":363}," APP_VERSION=1.0 \\\n",[205,17410,17412],{"className":207,"code":17411,"language":209,"meta":210,"style":210},"NODE_ENV=production \\\n\nPORT=3000\n\n# ─── Build-Argumente (nur zur Build-Zeit verfügbar) ───────────\n\n",[212,17413,17414,17427,17431,17436,17440],{"__ignoreMap":210},[31,17415,17416,17419,17421,17424],{"class":216,"line":217},[31,17417,17418],{"class":363},"NODE_ENV",[31,17420,367],{"class":336},[31,17422,17423],{"class":332},"production",[31,17425,17426],{"class":220}," \\\n",[31,17428,17429],{"class":216,"line":227},[31,17430,231],{"emptyLinePlaceholder":230},[31,17432,17433],{"class":216,"line":234},[31,17434,17435],{"class":363},"PORT=3000\n",[31,17437,17438],{"class":216,"line":241},[31,17439,231],{"emptyLinePlaceholder":230},[31,17441,17442],{"class":216,"line":246},[31,17443,17444],{"class":237},"# ─── Build-Argumente (nur zur Build-Zeit verfügbar) ───────────\n",[205,17446,17448],{"className":17284,"code":17447,"language":17286,"meta":210,"style":210},"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",[212,17449,17450,17458,17462,17469,17473,17478,17482,17490,17494,17502,17506,17511,17515],{"__ignoreMap":210},[31,17451,17452,17455],{"class":216,"line":217},[31,17453,17454],{"class":336},"ARG",[31,17456,17457],{"class":363}," BUILD_DATE\n",[31,17459,17460],{"class":216,"line":227},[31,17461,231],{"emptyLinePlaceholder":230},[31,17463,17464,17466],{"class":216,"line":234},[31,17465,17454],{"class":336},[31,17467,17468],{"class":363}," GIT_COMMIT\n",[31,17470,17471],{"class":216,"line":241},[31,17472,231],{"emptyLinePlaceholder":230},[31,17474,17475],{"class":216,"line":246},[31,17476,17477],{"class":237},"# ─── Benutzer und Arbeitsverzeichnis ──────────────────────────\n",[31,17479,17480],{"class":216,"line":254},[31,17481,231],{"emptyLinePlaceholder":230},[31,17483,17484,17487],{"class":216,"line":259},[31,17485,17486],{"class":336},"RUN",[31,17488,17489],{"class":363}," groupadd -r appuser && useradd -r -g appuser appuser\n",[31,17491,17492],{"class":216,"line":265},[31,17493,231],{"emptyLinePlaceholder":230},[31,17495,17496,17499],{"class":216,"line":270},[31,17497,17498],{"class":336},"WORKDIR",[31,17500,17501],{"class":363}," \u002Fapp\n",[31,17503,17504],{"class":216,"line":278},[31,17505,231],{"emptyLinePlaceholder":230},[31,17507,17508],{"class":216,"line":283},[31,17509,17510],{"class":237},"# ─── Pakete installieren ──────────────────────────────────────\n",[31,17512,17513],{"class":216,"line":289},[31,17514,231],{"emptyLinePlaceholder":230},[31,17516,17517,17519],{"class":216,"line":294},[31,17518,17486],{"class":336},[31,17520,17521],{"class":363}," apt-get update && apt-get install -y \\\n",[205,17523,17525],{"className":207,"code":17524,"language":209,"meta":210,"style":210},"curl \\\n\n",[212,17526,17527],{"__ignoreMap":210},[31,17528,17529,17532],{"class":216,"line":217},[31,17530,17531],{"class":220},"curl",[31,17533,17426],{"class":223},[14,17535,17536],{},"nginx \\",[14,17538,17539],{},"&& rm -rf \u002Fvar\u002Flib\u002Fapt\u002Flists\u002F* # Image-Größe reduzieren!",[205,17541,17543],{"className":17284,"code":17542,"language":17286,"meta":210,"style":210},"# ─── 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",[212,17544,17545,17550,17554,17562,17566,17573,17577,17584,17588,17595,17599,17607,17611,17616,17620,17628,17632,17639,17643,17650,17654,17659,17663,17682,17686,17691,17695,17703,17707,17715,17719,17724,17728,17736,17740,17745,17749,17754,17758,17763,17767,17779,17783,17794,17798,17803,17807,17812,17816,17821,17825,17830,17834],{"__ignoreMap":210},[31,17546,17547],{"class":216,"line":217},[31,17548,17549],{"class":237},"# ─── Dateien kopieren ─────────────────────────────────────────\n",[31,17551,17552],{"class":216,"line":227},[31,17553,231],{"emptyLinePlaceholder":230},[31,17555,17556,17559],{"class":216,"line":234},[31,17557,17558],{"class":336},"COPY",[31,17560,17561],{"class":363}," . . # Alles aus Build-Kontext kopieren\n",[31,17563,17564],{"class":216,"line":241},[31,17565,231],{"emptyLinePlaceholder":230},[31,17567,17568,17570],{"class":216,"line":246},[31,17569,17558],{"class":336},[31,17571,17572],{"class":363}," package.json package-lock.json .\u002F # Zuerst nur package-Dateien\n",[31,17574,17575],{"class":216,"line":254},[31,17576,231],{"emptyLinePlaceholder":230},[31,17578,17579,17581],{"class":216,"line":259},[31,17580,17486],{"class":336},[31,17582,17583],{"class":363}," npm ci --only=production # Cache-freundlich: nur bei Paket-Änderung\n",[31,17585,17586],{"class":216,"line":265},[31,17587,231],{"emptyLinePlaceholder":230},[31,17589,17590,17592],{"class":216,"line":270},[31,17591,17558],{"class":336},[31,17593,17594],{"class":363}," src\u002F .\u002Fsrc\u002F # Dann den Rest\n",[31,17596,17597],{"class":216,"line":278},[31,17598,231],{"emptyLinePlaceholder":230},[31,17600,17601,17604],{"class":216,"line":283},[31,17602,17603],{"class":336},"ADD",[31,17605,17606],{"class":363}," archiv.tar.gz \u002Fapp\u002F # ADD kann auch Archive entpacken\n",[31,17608,17609],{"class":216,"line":289},[31,17610,231],{"emptyLinePlaceholder":230},[31,17612,17613],{"class":216,"line":294},[31,17614,17615],{"class":237},"# ─── Port deklarieren (Dokumentation, keine echte Weiterleitung) ─\n",[31,17617,17618],{"class":216,"line":807},[31,17619,231],{"emptyLinePlaceholder":230},[31,17621,17622,17625],{"class":216,"line":812},[31,17623,17624],{"class":336},"EXPOSE",[31,17626,17627],{"class":363}," 3000\n",[31,17629,17630],{"class":216,"line":821},[31,17631,231],{"emptyLinePlaceholder":230},[31,17633,17634,17636],{"class":216,"line":826},[31,17635,17624],{"class":336},[31,17637,17638],{"class":363}," 80\u002Ftcp\n",[31,17640,17641],{"class":216,"line":837},[31,17642,231],{"emptyLinePlaceholder":230},[31,17644,17645,17647],{"class":216,"line":842},[31,17646,17624],{"class":336},[31,17648,17649],{"class":363}," 53\u002Fudp\n",[31,17651,17652],{"class":216,"line":848},[31,17653,231],{"emptyLinePlaceholder":230},[31,17655,17656],{"class":216,"line":853},[31,17657,17658],{"class":237},"# ─── Volume deklarieren ───────────────────────────────────────\n",[31,17660,17661],{"class":216,"line":868},[31,17662,231],{"emptyLinePlaceholder":230},[31,17664,17665,17668,17671,17674,17676,17679],{"class":216,"line":873},[31,17666,17667],{"class":336},"VOLUME",[31,17669,17670],{"class":363}," [",[31,17672,17673],{"class":332},"\"\u002Fapp\u002Fdata\"",[31,17675,1517],{"class":363},[31,17677,17678],{"class":332},"\"\u002Fapp\u002Flogs\"",[31,17680,17681],{"class":363},"]\n",[31,17683,17684],{"class":216,"line":879},[31,17685,231],{"emptyLinePlaceholder":230},[31,17687,17688],{"class":216,"line":884},[31,17689,17690],{"class":237},"# ─── Gesundheitscheck ─────────────────────────────────────────\n",[31,17692,17693],{"class":216,"line":1405},[31,17694,231],{"emptyLinePlaceholder":230},[31,17696,17697,17700],{"class":216,"line":1410},[31,17698,17699],{"class":336},"HEALTHCHECK",[31,17701,17702],{"class":363}," --interval=30s --timeout=10s --retries=3 \\\n",[31,17704,17705],{"class":216,"line":1416},[31,17706,231],{"emptyLinePlaceholder":230},[31,17708,17709,17712],{"class":216,"line":1421},[31,17710,17711],{"class":336},"CMD",[31,17713,17714],{"class":363}," curl -f http:\u002F\u002Flocalhost:3000\u002Fhealth || exit 1\n",[31,17716,17717],{"class":216,"line":1434},[31,17718,231],{"emptyLinePlaceholder":230},[31,17720,17721],{"class":216,"line":1439},[31,17722,17723],{"class":237},"# ─── Benutzer wechseln (nie als root laufen!) ─────────────────\n",[31,17725,17726],{"class":216,"line":1445},[31,17727,231],{"emptyLinePlaceholder":230},[31,17729,17730,17733],{"class":216,"line":1450},[31,17731,17732],{"class":336},"USER",[31,17734,17735],{"class":363}," appuser\n",[31,17737,17738],{"class":216,"line":2244},[31,17739,231],{"emptyLinePlaceholder":230},[31,17741,17742],{"class":216,"line":2249},[31,17743,17744],{"class":237},"# ─── Entrypoint vs CMD ────────────────────────────────────────\n",[31,17746,17747],{"class":216,"line":2255},[31,17748,231],{"emptyLinePlaceholder":230},[31,17750,17751],{"class":216,"line":2260},[31,17752,17753],{"class":237},"# ENTRYPOINT: unveränderlicher Hauptbefehl\n",[31,17755,17756],{"class":216,"line":2270},[31,17757,231],{"emptyLinePlaceholder":230},[31,17759,17760],{"class":216,"line":2275},[31,17761,17762],{"class":237},"# CMD: Standardargumente (überschreibbar mit docker run ... BEFEHL)\n",[31,17764,17765],{"class":216,"line":2281},[31,17766,231],{"emptyLinePlaceholder":230},[31,17768,17769,17772,17774,17777],{"class":216,"line":2286},[31,17770,17771],{"class":336},"ENTRYPOINT",[31,17773,17670],{"class":363},[31,17775,17776],{"class":332},"\"node\"",[31,17778,17681],{"class":363},[31,17780,17781],{"class":216,"line":5316},[31,17782,231],{"emptyLinePlaceholder":230},[31,17784,17785,17787,17789,17792],{"class":216,"line":5321},[31,17786,17711],{"class":336},[31,17788,17670],{"class":363},[31,17790,17791],{"class":332},"\"server.js\"",[31,17793,17681],{"class":363},[31,17795,17796],{"class":216,"line":5327},[31,17797,231],{"emptyLinePlaceholder":230},[31,17799,17800],{"class":216,"line":5332},[31,17801,17802],{"class":237},"# → docker run image → node server.js\n",[31,17804,17805],{"class":216,"line":5353},[31,17806,231],{"emptyLinePlaceholder":230},[31,17808,17809],{"class":216,"line":5358},[31,17810,17811],{"class":237},"# → docker run image app.js → node app.js\n",[31,17813,17814],{"class":216,"line":5366},[31,17815,231],{"emptyLinePlaceholder":230},[31,17817,17818],{"class":216,"line":5371},[31,17819,17820],{"class":237},"# → docker run --entrypoint sh image → sh\n",[31,17822,17823],{"class":216,"line":5377},[31,17824,231],{"emptyLinePlaceholder":230},[31,17826,17827],{"class":216,"line":5382},[31,17828,17829],{"class":237},"# Nur CMD (kein Entrypoint):\n",[31,17831,17832],{"class":216,"line":5388},[31,17833,231],{"emptyLinePlaceholder":230},[31,17835,17836,17838,17840,17843,17845,17848,17850,17853],{"class":216,"line":5393},[31,17837,17711],{"class":336},[31,17839,17670],{"class":363},[31,17841,17842],{"class":332},"\"nginx\"",[31,17844,1517],{"class":363},[31,17846,17847],{"class":332},"\"-g\"",[31,17849,1517],{"class":363},[31,17851,17852],{"class":332},"\"daemon off;\"",[31,17854,17681],{"class":363},[38,17856,193],{"id":17857},"beispiele-20",[10,17859,17861],{"id":17860},"einfacher-container-start","Einfacher Container-Start",[205,17863,17865],{"className":207,"code":17864,"language":209,"meta":210,"style":210},"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",[212,17866,17867,17877,17881,17886,17890,17912,17916,17921,17925,17943,17947,17952,17956,17971,17975,17992,17996,18001,18005,18017,18021,18026,18030,18044,18048,18064,18068,18073,18077,18086,18090,18095,18099,18115,18119,18124,18128,18138,18142,18147,18151,18169,18173],{"__ignoreMap":210},[31,17868,17869,17871,17874],{"class":216,"line":217},[31,17870,429],{"class":220},[31,17872,17873],{"class":332}," run",[31,17875,17876],{"class":332}," hello-world\n",[31,17878,17879],{"class":216,"line":227},[31,17880,231],{"emptyLinePlaceholder":230},[31,17882,17883],{"class":216,"line":234},[31,17884,17885],{"class":237},"# Nginx-Webserver auf Port 8080\n",[31,17887,17888],{"class":216,"line":241},[31,17889,231],{"emptyLinePlaceholder":230},[31,17891,17892,17894,17896,17898,17900,17903,17906,17909],{"class":216,"line":246},[31,17893,429],{"class":220},[31,17895,17873],{"class":332},[31,17897,10501],{"class":223},[31,17899,14411],{"class":223},[31,17901,17902],{"class":332}," 8080:80",[31,17904,17905],{"class":223}," --name",[31,17907,17908],{"class":332}," mein-nginx",[31,17910,17911],{"class":332}," nginx:alpine\n",[31,17913,17914],{"class":216,"line":254},[31,17915,231],{"emptyLinePlaceholder":230},[31,17917,17918],{"class":216,"line":259},[31,17919,17920],{"class":237},"# Interaktive Shell in Ubuntu\n",[31,17922,17923],{"class":216,"line":265},[31,17924,231],{"emptyLinePlaceholder":230},[31,17926,17927,17929,17931,17934,17937,17940],{"class":216,"line":270},[31,17928,429],{"class":220},[31,17930,17873],{"class":332},[31,17932,17933],{"class":223}," -it",[31,17935,17936],{"class":223}," --rm",[31,17938,17939],{"class":332}," ubuntu:22.04",[31,17941,17942],{"class":332}," bash\n",[31,17944,17945],{"class":216,"line":278},[31,17946,231],{"emptyLinePlaceholder":230},[31,17948,17949],{"class":216,"line":283},[31,17950,17951],{"class":237},"# Image bauen\n",[31,17953,17954],{"class":216,"line":289},[31,17955,231],{"emptyLinePlaceholder":230},[31,17957,17958,17960,17963,17965,17968],{"class":216,"line":294},[31,17959,429],{"class":220},[31,17961,17962],{"class":332}," build",[31,17964,2926],{"class":223},[31,17966,17967],{"class":332}," meine-app:1.0",[31,17969,17970],{"class":332}," .\n",[31,17972,17973],{"class":216,"line":807},[31,17974,231],{"emptyLinePlaceholder":230},[31,17976,17977,17979,17981,17983,17985,17987,17990],{"class":216,"line":812},[31,17978,429],{"class":220},[31,17980,17962],{"class":332},[31,17982,2926],{"class":223},[31,17984,17967],{"class":332},[31,17986,4341],{"class":223},[31,17988,17989],{"class":332}," Dockerfile.prod",[31,17991,17970],{"class":332},[31,17993,17994],{"class":216,"line":821},[31,17995,231],{"emptyLinePlaceholder":230},[31,17997,17998],{"class":216,"line":826},[31,17999,18000],{"class":237},"# Container-Logs verfolgen\n",[31,18002,18003],{"class":216,"line":837},[31,18004,231],{"emptyLinePlaceholder":230},[31,18006,18007,18009,18012,18014],{"class":216,"line":842},[31,18008,429],{"class":220},[31,18010,18011],{"class":332}," logs",[31,18013,4341],{"class":223},[31,18015,18016],{"class":332}," mein-container\n",[31,18018,18019],{"class":216,"line":848},[31,18020,231],{"emptyLinePlaceholder":230},[31,18022,18023],{"class":216,"line":853},[31,18024,18025],{"class":237},"# In laufenden Container einsteigen\n",[31,18027,18028],{"class":216,"line":868},[31,18029,231],{"emptyLinePlaceholder":230},[31,18031,18032,18034,18037,18039,18042],{"class":216,"line":873},[31,18033,429],{"class":220},[31,18035,18036],{"class":332}," exec",[31,18038,17933],{"class":223},[31,18040,18041],{"class":332}," mein-container",[31,18043,17942],{"class":332},[31,18045,18046],{"class":216,"line":879},[31,18047,231],{"emptyLinePlaceholder":230},[31,18049,18050,18052,18054,18056,18058,18061],{"class":216,"line":884},[31,18051,429],{"class":220},[31,18053,18036],{"class":332},[31,18055,17933],{"class":223},[31,18057,18041],{"class":332},[31,18059,18060],{"class":332}," sh",[31,18062,18063],{"class":237}," # für Alpine-Images\n",[31,18065,18066],{"class":216,"line":1405},[31,18067,231],{"emptyLinePlaceholder":230},[31,18069,18070],{"class":216,"line":1410},[31,18071,18072],{"class":237},"# Port-Info anzeigen\n",[31,18074,18075],{"class":216,"line":1416},[31,18076,231],{"emptyLinePlaceholder":230},[31,18078,18079,18081,18084],{"class":216,"line":1421},[31,18080,429],{"class":220},[31,18082,18083],{"class":332}," port",[31,18085,18016],{"class":332},[31,18087,18088],{"class":216,"line":1434},[31,18089,231],{"emptyLinePlaceholder":230},[31,18091,18092],{"class":216,"line":1439},[31,18093,18094],{"class":237},"# Alle Container und Images aufräumen\n",[31,18096,18097],{"class":216,"line":1445},[31,18098,231],{"emptyLinePlaceholder":230},[31,18100,18101,18103,18106,18109,18112],{"class":216,"line":1450},[31,18102,429],{"class":220},[31,18104,18105],{"class":332}," system",[31,18107,18108],{"class":332}," prune",[31,18110,18111],{"class":223}," -af",[31,18113,18114],{"class":223}," --volumes\n",[31,18116,18117],{"class":216,"line":2244},[31,18118,231],{"emptyLinePlaceholder":230},[31,18120,18121],{"class":216,"line":2249},[31,18122,18123],{"class":237},"# Ressourcen aller laufenden Container\n",[31,18125,18126],{"class":216,"line":2255},[31,18127,231],{"emptyLinePlaceholder":230},[31,18129,18130,18132,18135],{"class":216,"line":2260},[31,18131,429],{"class":220},[31,18133,18134],{"class":332}," stats",[31,18136,18137],{"class":223}," --no-stream\n",[31,18139,18140],{"class":216,"line":2270},[31,18141,231],{"emptyLinePlaceholder":230},[31,18143,18144],{"class":216,"line":2275},[31,18145,18146],{"class":237},"# Container-IP-Adresse\n",[31,18148,18149],{"class":216,"line":2281},[31,18150,231],{"emptyLinePlaceholder":230},[31,18152,18153,18155,18158,18160,18162,18164,18166],{"class":216,"line":2286},[31,18154,429],{"class":220},[31,18156,18157],{"class":332}," inspect",[31,18159,18041],{"class":332},[31,18161,337],{"class":336},[31,18163,340],{"class":220},[31,18165,4396],{"class":223},[31,18167,18168],{"class":332}," ipaddress\n",[31,18170,18171],{"class":216,"line":5316},[31,18172,231],{"emptyLinePlaceholder":230},[31,18174,18175],{"class":216,"line":5321},[31,18176,18177],{"class":237},"# docker compose\n",[14,18179,18180,18182,18183,18186],{},[17,18181,19],{}," docker compose (früher docker-compose) verwaltet ",[17,18184,18185],{},"Multi-Container-Anwendungen"," über eine einzige YAML-Datei. Es orchestriert das gemeinsame Starten, Stoppen und Konfigurieren mehrerer zusammengehöriger Container.",[14,18188,18189,18191,18192,18194,18195,18198,18200,18203],{},[17,18190,25],{}," docker compose ",[31,18193,33],{}," BEFEHL ",[31,18196,18197],{},"SERVICE...",[584,18199],{},[17,18201,18202],{},"Standarddatei:"," docker-compose.yml (oder docker-compose.yaml)",[38,18205,18207],{"id":18206},"alle-docker-compose-befehle","Alle docker compose Befehle",[43,18209,18210,18222],{},[46,18211,18212],{},[49,18213,18214,18218],{},[52,18215,18216],{},[17,18217,7959],{},[52,18219,18220],{},[17,18221,61],{},[63,18223,18224,18232,18240,18248,18256,18263,18271,18279,18287,18295,18303,18310,18318,18325,18333,18341,18348,18356,18364,18372,18380,18388,18395,18403,18411],{},[49,18225,18226,18229],{},[68,18227,18228],{},"up",[68,18230,18231],{},"Container erstellen und starten",[49,18233,18234,18237],{},[68,18235,18236],{},"down",[68,18238,18239],{},"Container stoppen und entfernen",[49,18241,18242,18245],{},[68,18243,18244],{},"start",[68,18246,18247],{},"Gestoppte Container starten (ohne neu zu erstellen)",[49,18249,18250,18253],{},[68,18251,18252],{},"stop",[68,18254,18255],{},"Container graceful stoppen (SIGTERM)",[49,18257,18258,18261],{},[68,18259,18260],{},"restart",[68,18262,16888],{},[49,18264,18265,18268],{},[68,18266,18267],{},"pause",[68,18269,18270],{},"Container einfrieren (SIGSTOP)",[49,18272,18273,18276],{},[68,18274,18275],{},"unpause",[68,18277,18278],{},"Eingefrorene Container fortsetzen",[49,18280,18281,18284],{},[68,18282,18283],{},"build",[68,18285,18286],{},"Images (neu) bauen",[49,18288,18289,18292],{},[68,18290,18291],{},"pull",[68,18293,18294],{},"Images aller Services herunterladen",[49,18296,18297,18300],{},[68,18298,18299],{},"push",[68,18301,18302],{},"Images in Registry hochladen",[49,18304,18305,18307],{},[68,18306,3512],{},[68,18308,18309],{},"Status aller Container",[49,18311,18312,18315],{},[68,18313,18314],{},"logs",[68,18316,18317],{},"Logs aller oder bestimmter Services",[49,18319,18320,18323],{},[68,18321,18322],{},"exec",[68,18324,16928],{},[49,18326,18327,18330],{},[68,18328,18329],{},"run",[68,18331,18332],{},"Einmaligen Befehl in neuem Container ausführen",[49,18334,18335,18338],{},[68,18336,18337],{},"config",[68,18339,18340],{},"Konfiguration ausgeben \u002F validieren",[49,18342,18343,18345],{},[68,18344,16723],{},[68,18346,18347],{},"Images der definierten Services auflisten",[49,18349,18350,18353],{},[68,18351,18352],{},"rm",[68,18354,18355],{},"Gestoppte Container entfernen",[49,18357,18358,18361],{},[68,18359,18360],{},"kill",[68,18362,18363],{},"Container sofort mit Signal beenden",[49,18365,18366,18369],{},[68,18367,18368],{},"top",[68,18370,18371],{},"Prozesse in laufenden Containern",[49,18373,18374,18377],{},[68,18375,18376],{},"events",[68,18378,18379],{},"Echtzeit-Ereignisstream ausgeben",[49,18381,18382,18385],{},[68,18383,18384],{},"port",[68,18386,18387],{},"Published Port eines Services anzeigen",[49,18389,18390,18392],{},[68,18391,16415],{},[68,18393,18394],{},"Dateien zwischen Host und Container kopieren",[49,18396,18397,18400],{},[68,18398,18399],{},"wait",[68,18401,18402],{},"Warten bis Container beendet sind",[49,18404,18405,18408],{},[68,18406,18407],{},"watch",[68,18409,18410],{},"Quellcode-Änderungen live in Container übertragen",[49,18412,18413,18416],{},[68,18414,18415],{},"version",[68,18417,18418],{},"Versionsinformationen",[38,18420,18422],{"id":18421},"optionen-für-docker-compose-up","Optionen für docker compose up",[43,18424,18425,18437],{},[46,18426,18427],{},[49,18428,18429,18433],{},[52,18430,18431],{},[17,18432,5586],{},[52,18434,18435],{},[17,18436,61],{},[63,18438,18439,18446,18454,18462,18470,18478,18486,18494,18502,18510,18518,18526,18534],{},[49,18440,18441,18443],{},[68,18442,17109],{},[68,18444,18445],{},"Im Hintergrund starten (detached mode)",[49,18447,18448,18451],{},[68,18449,18450],{},"--build",[68,18452,18453],{},"Images neu bauen vor dem Start",[49,18455,18456,18459],{},[68,18457,18458],{},"--no-build",[68,18460,18461],{},"Images nicht bauen (auch wenn Dockerfile neuer)",[49,18463,18464,18467],{},[68,18465,18466],{},"--no-recreate",[68,18468,18469],{},"Existierende Container nicht neu erstellen",[49,18471,18472,18475],{},[68,18473,18474],{},"--force-recreate",[68,18476,18477],{},"Container immer neu erstellen",[49,18479,18480,18483],{},[68,18481,18482],{},"--always-recreate-deps",[68,18484,18485],{},"Abhängigkeiten immer neu erstellen",[49,18487,18488,18491],{},[68,18489,18490],{},"--remove-orphans",[68,18492,18493],{},"Container für nicht mehr definierte Services entfernen",[49,18495,18496,18499],{},[68,18497,18498],{},"--scale SERVICE=N",[68,18500,18501],{},"Service auf N Instanzen skalieren",[49,18503,18504,18507],{},[68,18505,18506],{},"-t N \u002F --timeout N",[68,18508,18509],{},"Stop-Timeout in Sekunden (Standard: 10)",[49,18511,18512,18515],{},[68,18513,18514],{},"--wait",[68,18516,18517],{},"Warten bis alle Container healthy sind",[49,18519,18520,18523],{},[68,18521,18522],{},"--wait-timeout N",[68,18524,18525],{},"Timeout für --wait",[49,18527,18528,18531],{},[68,18529,18530],{},"--no-attach SERVICE",[68,18532,18533],{},"Logs dieses Services nicht anzeigen",[49,18535,18536,18539],{},[68,18537,18538],{},"--pull always\u002Fmissing\u002Fnever",[68,18540,18541],{},"Pull-Policy für Images",[38,18543,18545],{"id":18544},"optionen-für-docker-compose-down","Optionen für docker compose down",[43,18547,18548,18560],{},[46,18549,18550],{},[49,18551,18552,18556],{},[52,18553,18554],{},[17,18555,5586],{},[52,18557,18558],{},[17,18559,61],{},[63,18561,18562,18570,18578,18586,18593],{},[49,18563,18564,18567],{},[68,18565,18566],{},"-v \u002F --volumes",[68,18568,18569],{},"Named Volumes und anonyme Volumes ebenfalls löschen",[49,18571,18572,18575],{},[68,18573,18574],{},"--rmi all",[68,18576,18577],{},"Alle Images der Services entfernen",[49,18579,18580,18583],{},[68,18581,18582],{},"--rmi local",[68,18584,18585],{},"Nur lokal gebaute Images entfernen",[49,18587,18588,18590],{},[68,18589,18490],{},[68,18591,18592],{},"Orphan-Container entfernen",[49,18594,18595,18597],{},[68,18596,18506],{},[68,18598,18599],{},"Stop-Timeout",[38,18601,18603],{"id":18602},"optionen-für-docker-compose-logs","Optionen für docker compose logs",[43,18605,18606,18618],{},[46,18607,18608],{},[49,18609,18610,18614],{},[52,18611,18612],{},[17,18613,5586],{},[52,18615,18616],{},[17,18617,61],{},[63,18619,18620,18628,18636,18644,18652,18660],{},[49,18621,18622,18625],{},[68,18623,18624],{},"-f \u002F --follow",[68,18626,18627],{},"Logs live verfolgen",[49,18629,18630,18633],{},[68,18631,18632],{},"--tail=N",[68,18634,18635],{},"Nur letzte N Zeilen anzeigen",[49,18637,18638,18641],{},[68,18639,18640],{},"-t \u002F --timestamps",[68,18642,18643],{},"Zeitstempel voranstellen",[49,18645,18646,18649],{},[68,18647,18648],{},"--no-log-prefix",[68,18650,18651],{},"Service-Namen nicht voranstellen",[49,18653,18654,18657],{},[68,18655,18656],{},"--since ZEIT",[68,18658,18659],{},"Logs ab bestimmtem Zeitpunkt (z.B. 1h, 2024-01-01)",[49,18661,18662,18665],{},[68,18663,18664],{},"--until ZEIT",[68,18666,18667],{},"Logs bis zu bestimmtem Zeitpunkt",[38,18669,18671],{"id":18670},"optionen-für-docker-compose-exec","Optionen für docker compose exec",[43,18673,18674,18686],{},[46,18675,18676],{},[49,18677,18678,18682],{},[52,18679,18680],{},[17,18681,5586],{},[52,18683,18684],{},[17,18685,61],{},[63,18687,18688,18695,18702,18708,18715,18723],{},[49,18689,18690,18692],{},[68,18691,17117],{},[68,18693,18694],{},"Interaktives Terminal",[49,18696,18697,18699],{},[68,18698,17205],{},[68,18700,18701],{},"Als Benutzer ausführen",[49,18703,18704,18706],{},[68,18705,17157],{},[68,18707,17160],{},[49,18709,18710,18712],{},[68,18711,17218],{},[68,18713,18714],{},"Arbeitsverzeichnis setzen",[49,18716,18717,18720],{},[68,18718,18719],{},"--no-TTY",[68,18721,18722],{},"Kein TTY",[49,18724,18725,18728],{},[68,18726,18727],{},"--index=N",[68,18729,18730],{},"Bei skaliertem Service: N-te Instanz (Standard: 1)",[38,18732,18734],{"id":18733},"allgemeine-optionen-vor-dem-befehl","Allgemeine Optionen (vor dem Befehl)",[43,18736,18737,18749],{},[46,18738,18739],{},[49,18740,18741,18745],{},[52,18742,18743],{},[17,18744,5586],{},[52,18746,18747],{},[17,18748,61],{},[63,18750,18751,18758,18766,18774,18781,18789,18797],{},[49,18752,18753,18755],{},[68,18754,6928],{},[68,18756,18757],{},"Andere Compose-Datei verwenden",[49,18759,18760,18763],{},[68,18761,18762],{},"-p NAME",[68,18764,18765],{},"Projektname festlegen (Standard: Verzeichnisname)",[49,18767,18768,18771],{},[68,18769,18770],{},"--profile PROFIL",[68,18772,18773],{},"Service-Profile aktivieren",[49,18775,18776,18778],{},[68,18777,17165],{},[68,18779,18780],{},"Andere .env-Datei verwenden",[49,18782,18783,18786],{},[68,18784,18785],{},"--no-ansi",[68,18787,18788],{},"Keine Farb-Ausgabe",[49,18790,18791,18794],{},[68,18792,18793],{},"--progress auto\u002Ftty\u002Fplain\u002Fquiet",[68,18795,18796],{},"Ausgabe-Stil",[49,18798,18799,18802],{},[68,18800,18801],{},"--ansi auto\u002Fnever\u002Falways",[68,18803,18804],{},"ANSI-Farben steuern",[38,18806,18808],{"id":18807},"aufbau-einer-docker-composeyml-vollständiges-beispiel","Aufbau einer docker-compose.yml – vollständiges Beispiel",[205,18810,18814],{"className":18811,"code":18812,"language":18813,"meta":210,"style":210},"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",[212,18815,18816,18827,18831,18839,18843,18850,18854,18860,18864,18874,18878,18887,18891,18898,18902,18910,18914,18924,18928,18938,18942,18951,18955,18964,18968,18975,18979,18986,18990,18997,19001,19008,19012,19019,19023,19030,19034,19041,19045,19054,19058,19068,19072,19079,19083,19090,19094,19101,19105,19112,19116,19123,19127,19134,19138,19145,19149,19159,19163,19170,19174,19181,19185,19192,19196,19203,19207,19214,19218,19225,19229,19239,19243,19253,19257,19267,19271,19281,19285,19292,19296,19306,19310,19317,19321,19331,19335,19345,19349,19356,19360,19367,19371,19378,19382,19389,19393,19400,19404,19411,19415,19425,19429,19439,19443,19450,19454,19463,19467,19473,19477,19483,19487,19496,19500,19509,19513,19519,19523,19530,19534,19540,19544,19551,19555,19562,19566,19573,19577,19584,19588,19595,19599,19605,19609,19615,19619,19626,19630,19636,19640,19647,19651,19659,19663,19669,19673,19679,19683,19690,19694,19701,19705,19713,19717,19726,19730,19739,19743,19751,19755,19761,19765,19774,19778,19786,19790,19796,19800,19807,19811,19818,19822,19828,19832,19842,19846,19856,19860,19870,19874,19880,19884,19890,19894,19900,19904,19910,19914,19920,19924,19931,19935,19943,19947,19955,19959,19967,19971,19978,19982,19989,19993,20000,20004,20013,20017,20025,20029,20039,20043,20049,20053,20060,20065,20072,20077,20084,20089,20097,20102,20110,20115,20122,20127,20135,20140,20150,20155,20166,20171,20179,20184,20193,20198,20206,20211,20222,20227,20237,20242,20253,20258,20265,20270,20278,20283,20293,20298,20306,20311,20320,20325,20336,20341,20349,20354,20364,20369],{"__ignoreMap":210},[31,18817,18818,18821,18824],{"class":216,"line":217},[31,18819,18415],{"class":18820},"s9eBZ",[31,18822,18823],{"class":363},": ",[31,18825,18826],{"class":332},"'3.9'\n",[31,18828,18829],{"class":216,"line":227},[31,18830,231],{"emptyLinePlaceholder":230},[31,18832,18833,18836],{"class":216,"line":234},[31,18834,18835],{"class":18820},"services",[31,18837,18838],{"class":363},":\n",[31,18840,18841],{"class":216,"line":241},[31,18842,231],{"emptyLinePlaceholder":230},[31,18844,18845,18848],{"class":216,"line":246},[31,18846,18847],{"class":18820},"frontend",[31,18849,18838],{"class":363},[31,18851,18852],{"class":216,"line":254},[31,18853,231],{"emptyLinePlaceholder":230},[31,18855,18856,18858],{"class":216,"line":259},[31,18857,18283],{"class":18820},[31,18859,18838],{"class":363},[31,18861,18862],{"class":216,"line":265},[31,18863,231],{"emptyLinePlaceholder":230},[31,18865,18866,18869,18871],{"class":216,"line":270},[31,18867,18868],{"class":18820},"context",[31,18870,18823],{"class":363},[31,18872,18873],{"class":332},".\u002Fclient-react\n",[31,18875,18876],{"class":216,"line":278},[31,18877,231],{"emptyLinePlaceholder":230},[31,18879,18880,18882,18884],{"class":216,"line":283},[31,18881,17286],{"class":18820},[31,18883,18823],{"class":363},[31,18885,18886],{"class":332},"Dockerfile\n",[31,18888,18889],{"class":216,"line":289},[31,18890,231],{"emptyLinePlaceholder":230},[31,18892,18893,18896],{"class":216,"line":294},[31,18894,18895],{"class":18820},"args",[31,18897,18838],{"class":363},[31,18899,18900],{"class":216,"line":807},[31,18901,231],{"emptyLinePlaceholder":230},[31,18903,18904,18907],{"class":216,"line":812},[31,18905,18906],{"class":363},"- ",[31,18908,18909],{"class":332},"REACT_APP_VERSION=1.0.0\n",[31,18911,18912],{"class":216,"line":821},[31,18913,231],{"emptyLinePlaceholder":230},[31,18915,18916,18919,18921],{"class":216,"line":826},[31,18917,18918],{"class":18820},"image",[31,18920,18823],{"class":363},[31,18922,18923],{"class":332},"'mein-frontend:latest'\n",[31,18925,18926],{"class":216,"line":837},[31,18927,231],{"emptyLinePlaceholder":230},[31,18929,18930,18933,18935],{"class":216,"line":842},[31,18931,18932],{"class":18820},"container_name",[31,18934,18823],{"class":363},[31,18936,18937],{"class":332},"frontend\n",[31,18939,18940],{"class":216,"line":848},[31,18941,231],{"emptyLinePlaceholder":230},[31,18943,18944,18947,18949],{"class":216,"line":853},[31,18945,18946],{"class":18820},"hostname",[31,18948,18823],{"class":363},[31,18950,18937],{"class":332},[31,18952,18953],{"class":216,"line":868},[31,18954,231],{"emptyLinePlaceholder":230},[31,18956,18957,18959,18961],{"class":216,"line":873},[31,18958,18260],{"class":18820},[31,18960,18823],{"class":363},[31,18962,18963],{"class":332},"unless-stopped\n",[31,18965,18966],{"class":216,"line":879},[31,18967,231],{"emptyLinePlaceholder":230},[31,18969,18970,18973],{"class":216,"line":884},[31,18971,18972],{"class":18820},"ports",[31,18974,18838],{"class":363},[31,18976,18977],{"class":216,"line":1405},[31,18978,231],{"emptyLinePlaceholder":230},[31,18980,18981,18983],{"class":216,"line":1410},[31,18982,18906],{"class":363},[31,18984,18985],{"class":332},"'3000:3000'\n",[31,18987,18988],{"class":216,"line":1416},[31,18989,231],{"emptyLinePlaceholder":230},[31,18991,18992,18994],{"class":216,"line":1421},[31,18993,18906],{"class":363},[31,18995,18996],{"class":332},"'127.0.0.1:4000:4000'\n",[31,18998,18999],{"class":216,"line":1434},[31,19000,231],{"emptyLinePlaceholder":230},[31,19002,19003,19006],{"class":216,"line":1439},[31,19004,19005],{"class":18820},"volumes",[31,19007,18838],{"class":363},[31,19009,19010],{"class":216,"line":1445},[31,19011,231],{"emptyLinePlaceholder":230},[31,19013,19014,19016],{"class":216,"line":1450},[31,19015,18906],{"class":363},[31,19017,19018],{"class":332},"'.\u002Fsrc:\u002Fapp\u002Fsrc'\n",[31,19020,19021],{"class":216,"line":2244},[31,19022,231],{"emptyLinePlaceholder":230},[31,19024,19025,19027],{"class":216,"line":2249},[31,19026,18906],{"class":363},[31,19028,19029],{"class":332},"\u002Fapp\u002Fnode_modules\n",[31,19031,19032],{"class":216,"line":2255},[31,19033,231],{"emptyLinePlaceholder":230},[31,19035,19036,19039],{"class":216,"line":2260},[31,19037,19038],{"class":18820},"environment",[31,19040,18838],{"class":363},[31,19042,19043],{"class":216,"line":2270},[31,19044,231],{"emptyLinePlaceholder":230},[31,19046,19047,19049,19051],{"class":216,"line":2275},[31,19048,17418],{"class":18820},[31,19050,18823],{"class":363},[31,19052,19053],{"class":332},"development\n",[31,19055,19056],{"class":216,"line":2281},[31,19057,231],{"emptyLinePlaceholder":230},[31,19059,19060,19063,19065],{"class":216,"line":2286},[31,19061,19062],{"class":18820},"API_URL",[31,19064,18823],{"class":363},[31,19066,19067],{"class":332},"'http:\u002F\u002Fbackend:8080'\n",[31,19069,19070],{"class":216,"line":5316},[31,19071,231],{"emptyLinePlaceholder":230},[31,19073,19074,19077],{"class":216,"line":5321},[31,19075,19076],{"class":18820},"env_file",[31,19078,18838],{"class":363},[31,19080,19081],{"class":216,"line":5327},[31,19082,231],{"emptyLinePlaceholder":230},[31,19084,19085,19087],{"class":216,"line":5332},[31,19086,18906],{"class":363},[31,19088,19089],{"class":332},".env\n",[31,19091,19092],{"class":216,"line":5353},[31,19093,231],{"emptyLinePlaceholder":230},[31,19095,19096,19098],{"class":216,"line":5358},[31,19097,18906],{"class":363},[31,19099,19100],{"class":332},".env.local\n",[31,19102,19103],{"class":216,"line":5366},[31,19104,231],{"emptyLinePlaceholder":230},[31,19106,19107,19110],{"class":216,"line":5371},[31,19108,19109],{"class":18820},"networks",[31,19111,18838],{"class":363},[31,19113,19114],{"class":216,"line":5377},[31,19115,231],{"emptyLinePlaceholder":230},[31,19117,19118,19120],{"class":216,"line":5382},[31,19119,18906],{"class":363},[31,19121,19122],{"class":332},"frontend-net\n",[31,19124,19125],{"class":216,"line":5388},[31,19126,231],{"emptyLinePlaceholder":230},[31,19128,19129,19132],{"class":216,"line":5393},[31,19130,19131],{"class":18820},"depends_on",[31,19133,18838],{"class":363},[31,19135,19136],{"class":216,"line":5405},[31,19137,231],{"emptyLinePlaceholder":230},[31,19139,19140,19143],{"class":216,"line":5410},[31,19141,19142],{"class":18820},"backend",[31,19144,18838],{"class":363},[31,19146,19147],{"class":216,"line":5416},[31,19148,231],{"emptyLinePlaceholder":230},[31,19150,19151,19154,19156],{"class":216,"line":5421},[31,19152,19153],{"class":18820},"condition",[31,19155,18823],{"class":363},[31,19157,19158],{"class":332},"service_healthy\n",[31,19160,19161],{"class":216,"line":5435},[31,19162,231],{"emptyLinePlaceholder":230},[31,19164,19165,19168],{"class":216,"line":5440},[31,19166,19167],{"class":18820},"healthcheck",[31,19169,18838],{"class":363},[31,19171,19172],{"class":216,"line":5446},[31,19173,231],{"emptyLinePlaceholder":230},[31,19175,19176,19179],{"class":216,"line":5451},[31,19177,19178],{"class":18820},"test",[31,19180,18838],{"class":363},[31,19182,19183],{"class":216,"line":6552},[31,19184,231],{"emptyLinePlaceholder":230},[31,19186,19187,19189],{"class":216,"line":6557},[31,19188,18906],{"class":363},[31,19190,19191],{"class":332},"CMD\n",[31,19193,19194],{"class":216,"line":6563},[31,19195,231],{"emptyLinePlaceholder":230},[31,19197,19198,19200],{"class":216,"line":6568},[31,19199,18906],{"class":363},[31,19201,19202],{"class":332},"curl\n",[31,19204,19205],{"class":216,"line":6589},[31,19206,231],{"emptyLinePlaceholder":230},[31,19208,19209,19211],{"class":216,"line":6594},[31,19210,18906],{"class":363},[31,19212,19213],{"class":332},"'-f'\n",[31,19215,19216],{"class":216,"line":6600},[31,19217,231],{"emptyLinePlaceholder":230},[31,19219,19220,19222],{"class":216,"line":6605},[31,19221,18906],{"class":363},[31,19223,19224],{"class":332},"'http:\u002F\u002Flocalhost:3000'\n",[31,19226,19227],{"class":216,"line":6638},[31,19228,231],{"emptyLinePlaceholder":230},[31,19230,19231,19234,19236],{"class":216,"line":6643},[31,19232,19233],{"class":18820},"interval",[31,19235,18823],{"class":363},[31,19237,19238],{"class":332},"30s\n",[31,19240,19241],{"class":216,"line":6649},[31,19242,231],{"emptyLinePlaceholder":230},[31,19244,19245,19248,19250],{"class":216,"line":6654},[31,19246,19247],{"class":18820},"timeout",[31,19249,18823],{"class":363},[31,19251,19252],{"class":332},"10s\n",[31,19254,19255],{"class":216,"line":8874},[31,19256,231],{"emptyLinePlaceholder":230},[31,19258,19259,19262,19264],{"class":216,"line":8879},[31,19260,19261],{"class":18820},"retries",[31,19263,18823],{"class":363},[31,19265,19266],{"class":223},"3\n",[31,19268,19269],{"class":216,"line":8891},[31,19270,231],{"emptyLinePlaceholder":230},[31,19272,19273,19276,19278],{"class":216,"line":8896},[31,19274,19275],{"class":18820},"start_period",[31,19277,18823],{"class":363},[31,19279,19280],{"class":332},"60s\n",[31,19282,19283],{"class":216,"line":8902},[31,19284,231],{"emptyLinePlaceholder":230},[31,19286,19287,19290],{"class":216,"line":8907},[31,19288,19289],{"class":18820},"logging",[31,19291,18838],{"class":363},[31,19293,19294],{"class":216,"line":8919},[31,19295,231],{"emptyLinePlaceholder":230},[31,19297,19298,19301,19303],{"class":216,"line":8924},[31,19299,19300],{"class":18820},"driver",[31,19302,18823],{"class":363},[31,19304,19305],{"class":332},"json-file\n",[31,19307,19308],{"class":216,"line":8930},[31,19309,231],{"emptyLinePlaceholder":230},[31,19311,19312,19315],{"class":216,"line":8935},[31,19313,19314],{"class":18820},"options",[31,19316,18838],{"class":363},[31,19318,19319],{"class":216,"line":8947},[31,19320,231],{"emptyLinePlaceholder":230},[31,19322,19323,19326,19328],{"class":216,"line":8952},[31,19324,19325],{"class":18820},"max-size",[31,19327,18823],{"class":363},[31,19329,19330],{"class":332},"10m\n",[31,19332,19333],{"class":216,"line":8958},[31,19334,231],{"emptyLinePlaceholder":230},[31,19336,19337,19340,19342],{"class":216,"line":8963},[31,19338,19339],{"class":18820},"max-file",[31,19341,18823],{"class":363},[31,19343,19344],{"class":332},"'3'\n",[31,19346,19347],{"class":216,"line":8975},[31,19348,231],{"emptyLinePlaceholder":230},[31,19350,19351,19354],{"class":216,"line":8980},[31,19352,19353],{"class":18820},"labels",[31,19355,18838],{"class":363},[31,19357,19358],{"class":216,"line":8986},[31,19359,231],{"emptyLinePlaceholder":230},[31,19361,19362,19364],{"class":216,"line":8991},[31,19363,18906],{"class":363},[31,19365,19366],{"class":332},"traefik.enable=true\n",[31,19368,19369],{"class":216,"line":9003},[31,19370,231],{"emptyLinePlaceholder":230},[31,19372,19373,19375],{"class":216,"line":9008},[31,19374,18906],{"class":363},[31,19376,19377],{"class":332},"traefik.http.routers.frontend.rule=Host(`app.example.com`)\n",[31,19379,19380],{"class":216,"line":9014},[31,19381,231],{"emptyLinePlaceholder":230},[31,19383,19384,19387],{"class":216,"line":9019},[31,19385,19386],{"class":18820},"deploy",[31,19388,18838],{"class":363},[31,19390,19391],{"class":216,"line":9025},[31,19392,231],{"emptyLinePlaceholder":230},[31,19394,19395,19398],{"class":216,"line":9030},[31,19396,19397],{"class":18820},"resources",[31,19399,18838],{"class":363},[31,19401,19402],{"class":216,"line":9040},[31,19403,231],{"emptyLinePlaceholder":230},[31,19405,19406,19409],{"class":216,"line":9045},[31,19407,19408],{"class":18820},"limits",[31,19410,18838],{"class":363},[31,19412,19413],{"class":216,"line":9051},[31,19414,231],{"emptyLinePlaceholder":230},[31,19416,19417,19420,19422],{"class":216,"line":9056},[31,19418,19419],{"class":18820},"cpus",[31,19421,18823],{"class":363},[31,19423,19424],{"class":332},"'0.5'\n",[31,19426,19427],{"class":216,"line":9066},[31,19428,231],{"emptyLinePlaceholder":230},[31,19430,19431,19434,19436],{"class":216,"line":9071},[31,19432,19433],{"class":18820},"memory",[31,19435,18823],{"class":363},[31,19437,19438],{"class":332},"256M\n",[31,19440,19441],{"class":216,"line":9077},[31,19442,231],{"emptyLinePlaceholder":230},[31,19444,19445,19448],{"class":216,"line":9082},[31,19446,19447],{"class":18820},"reservations",[31,19449,18838],{"class":363},[31,19451,19452],{"class":216,"line":9092},[31,19453,231],{"emptyLinePlaceholder":230},[31,19455,19456,19458,19460],{"class":216,"line":9097},[31,19457,19433],{"class":18820},[31,19459,18823],{"class":363},[31,19461,19462],{"class":332},"128M\n",[31,19464,19465],{"class":216,"line":9103},[31,19466,231],{"emptyLinePlaceholder":230},[31,19468,19469,19471],{"class":216,"line":9108},[31,19470,19142],{"class":18820},[31,19472,18838],{"class":363},[31,19474,19475],{"class":216,"line":9118},[31,19476,231],{"emptyLinePlaceholder":230},[31,19478,19479,19481],{"class":216,"line":9123},[31,19480,18283],{"class":18820},[31,19482,18838],{"class":363},[31,19484,19485],{"class":216,"line":9129},[31,19486,231],{"emptyLinePlaceholder":230},[31,19488,19489,19491,19493],{"class":216,"line":9134},[31,19490,18868],{"class":18820},[31,19492,18823],{"class":363},[31,19494,19495],{"class":332},".\u002Fapi-golang\n",[31,19497,19498],{"class":216,"line":9144},[31,19499,231],{"emptyLinePlaceholder":230},[31,19501,19502,19504,19506],{"class":216,"line":9149},[31,19503,18260],{"class":18820},[31,19505,18823],{"class":363},[31,19507,19508],{"class":332},"always\n",[31,19510,19511],{"class":216,"line":9155},[31,19512,231],{"emptyLinePlaceholder":230},[31,19514,19515,19517],{"class":216,"line":9160},[31,19516,18972],{"class":18820},[31,19518,18838],{"class":363},[31,19520,19521],{"class":216,"line":9166},[31,19522,231],{"emptyLinePlaceholder":230},[31,19524,19525,19527],{"class":216,"line":9171},[31,19526,18906],{"class":363},[31,19528,19529],{"class":332},"'8080:8080'\n",[31,19531,19532],{"class":216,"line":9181},[31,19533,231],{"emptyLinePlaceholder":230},[31,19535,19536,19538],{"class":216,"line":9186},[31,19537,19038],{"class":18820},[31,19539,18838],{"class":363},[31,19541,19542],{"class":216,"line":9192},[31,19543,231],{"emptyLinePlaceholder":230},[31,19545,19546,19548],{"class":216,"line":9197},[31,19547,18906],{"class":363},[31,19549,19550],{"class":332},"DB_HOST=database\n",[31,19552,19553],{"class":216,"line":9207},[31,19554,231],{"emptyLinePlaceholder":230},[31,19556,19557,19559],{"class":216,"line":9212},[31,19558,18906],{"class":363},[31,19560,19561],{"class":332},"DB_PORT=5432\n",[31,19563,19564],{"class":216,"line":9218},[31,19565,231],{"emptyLinePlaceholder":230},[31,19567,19568,19570],{"class":216,"line":9223},[31,19569,18906],{"class":363},[31,19571,19572],{"class":332},"'DB_NAME=${POSTGRES_DB}'\n",[31,19574,19575],{"class":216,"line":9233},[31,19576,231],{"emptyLinePlaceholder":230},[31,19578,19579,19581],{"class":216,"line":9238},[31,19580,18906],{"class":363},[31,19582,19583],{"class":332},"'DB_USER=${POSTGRES_USER}'\n",[31,19585,19586],{"class":216,"line":9244},[31,19587,231],{"emptyLinePlaceholder":230},[31,19589,19590,19592],{"class":216,"line":9249},[31,19591,18906],{"class":363},[31,19593,19594],{"class":332},"'DB_PASSWORD=${POSTGRES_PASSWORD}'\n",[31,19596,19597],{"class":216,"line":9259},[31,19598,231],{"emptyLinePlaceholder":230},[31,19600,19601,19603],{"class":216,"line":9264},[31,19602,19109],{"class":18820},[31,19604,18838],{"class":363},[31,19606,19607],{"class":216,"line":9270},[31,19608,231],{"emptyLinePlaceholder":230},[31,19610,19611,19613],{"class":216,"line":9275},[31,19612,18906],{"class":363},[31,19614,19122],{"class":332},[31,19616,19617],{"class":216,"line":9281},[31,19618,231],{"emptyLinePlaceholder":230},[31,19620,19621,19623],{"class":216,"line":9286},[31,19622,18906],{"class":363},[31,19624,19625],{"class":332},"backend-net\n",[31,19627,19628],{"class":216,"line":9304},[31,19629,231],{"emptyLinePlaceholder":230},[31,19631,19632,19634],{"class":216,"line":9309},[31,19633,19131],{"class":18820},[31,19635,18838],{"class":363},[31,19637,19638],{"class":216,"line":9315},[31,19639,231],{"emptyLinePlaceholder":230},[31,19641,19642,19645],{"class":216,"line":9320},[31,19643,19644],{"class":18820},"database",[31,19646,18838],{"class":363},[31,19648,19649],{"class":216,"line":9332},[31,19650,231],{"emptyLinePlaceholder":230},[31,19652,19653,19655,19657],{"class":216,"line":9337},[31,19654,19153],{"class":18820},[31,19656,18823],{"class":363},[31,19658,19158],{"class":332},[31,19660,19661],{"class":216,"line":9343},[31,19662,231],{"emptyLinePlaceholder":230},[31,19664,19665,19667],{"class":216,"line":9348},[31,19666,19167],{"class":18820},[31,19668,18838],{"class":363},[31,19670,19671],{"class":216,"line":9358},[31,19672,231],{"emptyLinePlaceholder":230},[31,19674,19675,19677],{"class":216,"line":9363},[31,19676,19178],{"class":18820},[31,19678,18838],{"class":363},[31,19680,19681],{"class":216,"line":9369},[31,19682,231],{"emptyLinePlaceholder":230},[31,19684,19685,19687],{"class":216,"line":9374},[31,19686,18906],{"class":363},[31,19688,19689],{"class":332},"CMD-SHELL\n",[31,19691,19692],{"class":216,"line":9384},[31,19693,231],{"emptyLinePlaceholder":230},[31,19695,19696,19698],{"class":216,"line":9389},[31,19697,18906],{"class":363},[31,19699,19700],{"class":332},"'wget -q --spider http:\u002F\u002Flocalhost:8080\u002Fhealth || exit 1'\n",[31,19702,19703],{"class":216,"line":9395},[31,19704,231],{"emptyLinePlaceholder":230},[31,19706,19707,19709,19711],{"class":216,"line":9400},[31,19708,19233],{"class":18820},[31,19710,18823],{"class":363},[31,19712,19252],{"class":332},[31,19714,19715],{"class":216,"line":9410},[31,19716,231],{"emptyLinePlaceholder":230},[31,19718,19719,19721,19723],{"class":216,"line":9415},[31,19720,19247],{"class":18820},[31,19722,18823],{"class":363},[31,19724,19725],{"class":332},"5s\n",[31,19727,19728],{"class":216,"line":9421},[31,19729,231],{"emptyLinePlaceholder":230},[31,19731,19732,19734,19736],{"class":216,"line":9426},[31,19733,19261],{"class":18820},[31,19735,18823],{"class":363},[31,19737,19738],{"class":223},"5\n",[31,19740,19741],{"class":216,"line":9432},[31,19742,231],{"emptyLinePlaceholder":230},[31,19744,19745,19747,19749],{"class":216,"line":9437},[31,19746,19275],{"class":18820},[31,19748,18823],{"class":363},[31,19750,19238],{"class":332},[31,19752,19753],{"class":216,"line":9447},[31,19754,231],{"emptyLinePlaceholder":230},[31,19756,19757,19759],{"class":216,"line":9452},[31,19758,19644],{"class":18820},[31,19760,18838],{"class":363},[31,19762,19763],{"class":216,"line":9458},[31,19764,231],{"emptyLinePlaceholder":230},[31,19766,19767,19769,19771],{"class":216,"line":9463},[31,19768,18918],{"class":18820},[31,19770,18823],{"class":363},[31,19772,19773],{"class":332},"'postgres:15-alpine'\n",[31,19775,19776],{"class":216,"line":9474},[31,19777,231],{"emptyLinePlaceholder":230},[31,19779,19780,19782,19784],{"class":216,"line":9479},[31,19781,18260],{"class":18820},[31,19783,18823],{"class":363},[31,19785,19508],{"class":332},[31,19787,19788],{"class":216,"line":9485},[31,19789,231],{"emptyLinePlaceholder":230},[31,19791,19792,19794],{"class":216,"line":9490},[31,19793,19005],{"class":18820},[31,19795,18838],{"class":363},[31,19797,19798],{"class":216,"line":9502},[31,19799,231],{"emptyLinePlaceholder":230},[31,19801,19802,19804],{"class":216,"line":9507},[31,19803,18906],{"class":363},[31,19805,19806],{"class":332},"'db_data:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata'\n",[31,19808,19809],{"class":216,"line":9513},[31,19810,231],{"emptyLinePlaceholder":230},[31,19812,19813,19815],{"class":216,"line":9518},[31,19814,18906],{"class":363},[31,19816,19817],{"class":332},"'.\u002Finit.sql:\u002Fdocker-entrypoint-initdb.d\u002Finit.sql'\n",[31,19819,19820],{"class":216,"line":9531},[31,19821,231],{"emptyLinePlaceholder":230},[31,19823,19824,19826],{"class":216,"line":9536},[31,19825,19038],{"class":18820},[31,19827,18838],{"class":363},[31,19829,19830],{"class":216,"line":9542},[31,19831,231],{"emptyLinePlaceholder":230},[31,19833,19834,19837,19839],{"class":216,"line":9547},[31,19835,19836],{"class":18820},"POSTGRES_DB",[31,19838,18823],{"class":363},[31,19840,19841],{"class":332},"'${POSTGRES_DB:-myapp}'\n",[31,19843,19844],{"class":216,"line":9553},[31,19845,231],{"emptyLinePlaceholder":230},[31,19847,19848,19851,19853],{"class":216,"line":9558},[31,19849,19850],{"class":18820},"POSTGRES_USER",[31,19852,18823],{"class":363},[31,19854,19855],{"class":332},"'${POSTGRES_USER:-user}'\n",[31,19857,19858],{"class":216,"line":9568},[31,19859,231],{"emptyLinePlaceholder":230},[31,19861,19862,19865,19867],{"class":216,"line":9573},[31,19863,19864],{"class":18820},"POSTGRES_PASSWORD",[31,19866,18823],{"class":363},[31,19868,19869],{"class":332},"'${POSTGRES_PASSWORD:?DB-Passwort erforderlich!}'\n",[31,19871,19872],{"class":216,"line":9579},[31,19873,231],{"emptyLinePlaceholder":230},[31,19875,19876,19878],{"class":216,"line":9584},[31,19877,19109],{"class":18820},[31,19879,18838],{"class":363},[31,19881,19882],{"class":216,"line":9594},[31,19883,231],{"emptyLinePlaceholder":230},[31,19885,19886,19888],{"class":216,"line":9599},[31,19887,18906],{"class":363},[31,19889,19625],{"class":332},[31,19891,19892],{"class":216,"line":9605},[31,19893,231],{"emptyLinePlaceholder":230},[31,19895,19896,19898],{"class":216,"line":9610},[31,19897,19167],{"class":18820},[31,19899,18838],{"class":363},[31,19901,19902],{"class":216,"line":9616},[31,19903,231],{"emptyLinePlaceholder":230},[31,19905,19906,19908],{"class":216,"line":9621},[31,19907,19178],{"class":18820},[31,19909,18838],{"class":363},[31,19911,19912],{"class":216,"line":9631},[31,19913,231],{"emptyLinePlaceholder":230},[31,19915,19916,19918],{"class":216,"line":9636},[31,19917,18906],{"class":363},[31,19919,19689],{"class":332},[31,19921,19922],{"class":216,"line":9642},[31,19923,231],{"emptyLinePlaceholder":230},[31,19925,19926,19928],{"class":216,"line":9647},[31,19927,18906],{"class":363},[31,19929,19930],{"class":332},"'pg_isready -U ${POSTGRES_USER:-user}'\n",[31,19932,19933],{"class":216,"line":9653},[31,19934,231],{"emptyLinePlaceholder":230},[31,19936,19937,19939,19941],{"class":216,"line":9658},[31,19938,19233],{"class":18820},[31,19940,18823],{"class":363},[31,19942,19252],{"class":332},[31,19944,19945],{"class":216,"line":9669},[31,19946,231],{"emptyLinePlaceholder":230},[31,19948,19949,19951,19953],{"class":216,"line":9674},[31,19950,19247],{"class":18820},[31,19952,18823],{"class":363},[31,19954,19725],{"class":332},[31,19956,19957],{"class":216,"line":9680},[31,19958,231],{"emptyLinePlaceholder":230},[31,19960,19961,19963,19965],{"class":216,"line":9685},[31,19962,19261],{"class":18820},[31,19964,18823],{"class":363},[31,19966,19738],{"class":223},[31,19968,19969],{"class":216,"line":9695},[31,19970,231],{"emptyLinePlaceholder":230},[31,19972,19973,19976],{"class":216,"line":9700},[31,19974,19975],{"class":18820},"expose",[31,19977,18838],{"class":363},[31,19979,19980],{"class":216,"line":9706},[31,19981,231],{"emptyLinePlaceholder":230},[31,19983,19984,19986],{"class":216,"line":9711},[31,19985,18906],{"class":363},[31,19987,19988],{"class":332},"'5432'\n",[31,19990,19991],{"class":216,"line":9723},[31,19992,231],{"emptyLinePlaceholder":230},[31,19994,19995,19998],{"class":216,"line":9728},[31,19996,19997],{"class":18820},"cache",[31,19999,18838],{"class":363},[31,20001,20002],{"class":216,"line":9734},[31,20003,231],{"emptyLinePlaceholder":230},[31,20005,20006,20008,20010],{"class":216,"line":9739},[31,20007,18918],{"class":18820},[31,20009,18823],{"class":363},[31,20011,20012],{"class":332},"'redis:7-alpine'\n",[31,20014,20015],{"class":216,"line":9752},[31,20016,231],{"emptyLinePlaceholder":230},[31,20018,20019,20021,20023],{"class":216,"line":9757},[31,20020,18260],{"class":18820},[31,20022,18823],{"class":363},[31,20024,18963],{"class":332},[31,20026,20027],{"class":216,"line":9763},[31,20028,231],{"emptyLinePlaceholder":230},[31,20030,20031,20034,20036],{"class":216,"line":9768},[31,20032,20033],{"class":18820},"command",[31,20035,18823],{"class":363},[31,20037,20038],{"class":332},"redis-server --appendonly yes\n",[31,20040,20041],{"class":216,"line":9778},[31,20042,231],{"emptyLinePlaceholder":230},[31,20044,20045,20047],{"class":216,"line":9783},[31,20046,19005],{"class":18820},[31,20048,18838],{"class":363},[31,20050,20051],{"class":216,"line":9789},[31,20052,231],{"emptyLinePlaceholder":230},[31,20054,20055,20057],{"class":216,"line":9794},[31,20056,18906],{"class":363},[31,20058,20059],{"class":332},"'redis_data:\u002Fdata'\n",[31,20061,20063],{"class":216,"line":20062},214,[31,20064,231],{"emptyLinePlaceholder":230},[31,20066,20068,20070],{"class":216,"line":20067},215,[31,20069,19109],{"class":18820},[31,20071,18838],{"class":363},[31,20073,20075],{"class":216,"line":20074},216,[31,20076,231],{"emptyLinePlaceholder":230},[31,20078,20080,20082],{"class":216,"line":20079},217,[31,20081,18906],{"class":363},[31,20083,19625],{"class":332},[31,20085,20087],{"class":216,"line":20086},218,[31,20088,231],{"emptyLinePlaceholder":230},[31,20090,20092,20095],{"class":216,"line":20091},219,[31,20093,20094],{"class":18820},"profiles",[31,20096,18838],{"class":363},[31,20098,20100],{"class":216,"line":20099},220,[31,20101,231],{"emptyLinePlaceholder":230},[31,20103,20105,20107],{"class":216,"line":20104},221,[31,20106,18906],{"class":363},[31,20108,20109],{"class":332},"cache\n",[31,20111,20113],{"class":216,"line":20112},222,[31,20114,231],{"emptyLinePlaceholder":230},[31,20116,20118,20120],{"class":216,"line":20117},223,[31,20119,19005],{"class":18820},[31,20121,18838],{"class":363},[31,20123,20125],{"class":216,"line":20124},224,[31,20126,231],{"emptyLinePlaceholder":230},[31,20128,20130,20133],{"class":216,"line":20129},225,[31,20131,20132],{"class":18820},"db_data",[31,20134,18838],{"class":363},[31,20136,20138],{"class":216,"line":20137},226,[31,20139,231],{"emptyLinePlaceholder":230},[31,20141,20143,20145,20147],{"class":216,"line":20142},227,[31,20144,19300],{"class":18820},[31,20146,18823],{"class":363},[31,20148,20149],{"class":332},"local\n",[31,20151,20153],{"class":216,"line":20152},228,[31,20154,231],{"emptyLinePlaceholder":230},[31,20156,20158,20161,20163],{"class":216,"line":20157},229,[31,20159,20160],{"class":18820},"redis_data",[31,20162,18823],{"class":363},[31,20164,20165],{"class":223},"null\n",[31,20167,20169],{"class":216,"line":20168},230,[31,20170,231],{"emptyLinePlaceholder":230},[31,20172,20174,20177],{"class":216,"line":20173},231,[31,20175,20176],{"class":18820},"nginx_logs",[31,20178,18838],{"class":363},[31,20180,20182],{"class":216,"line":20181},232,[31,20183,231],{"emptyLinePlaceholder":230},[31,20185,20187,20189,20191],{"class":216,"line":20186},233,[31,20188,19300],{"class":18820},[31,20190,18823],{"class":363},[31,20192,20149],{"class":332},[31,20194,20196],{"class":216,"line":20195},234,[31,20197,231],{"emptyLinePlaceholder":230},[31,20199,20201,20204],{"class":216,"line":20200},235,[31,20202,20203],{"class":18820},"driver_opts",[31,20205,18838],{"class":363},[31,20207,20209],{"class":216,"line":20208},236,[31,20210,231],{"emptyLinePlaceholder":230},[31,20212,20214,20217,20219],{"class":216,"line":20213},237,[31,20215,20216],{"class":18820},"type",[31,20218,18823],{"class":363},[31,20220,20221],{"class":332},"none\n",[31,20223,20225],{"class":216,"line":20224},238,[31,20226,231],{"emptyLinePlaceholder":230},[31,20228,20230,20232,20234],{"class":216,"line":20229},239,[31,20231,934],{"class":18820},[31,20233,18823],{"class":363},[31,20235,20236],{"class":332},"bind\n",[31,20238,20240],{"class":216,"line":20239},240,[31,20241,231],{"emptyLinePlaceholder":230},[31,20243,20245,20248,20250],{"class":216,"line":20244},241,[31,20246,20247],{"class":18820},"device",[31,20249,18823],{"class":363},[31,20251,20252],{"class":332},"\u002Fsrv\u002Flogs\u002Fnginx\n",[31,20254,20256],{"class":216,"line":20255},242,[31,20257,231],{"emptyLinePlaceholder":230},[31,20259,20261,20263],{"class":216,"line":20260},243,[31,20262,19109],{"class":18820},[31,20264,18838],{"class":363},[31,20266,20268],{"class":216,"line":20267},244,[31,20269,231],{"emptyLinePlaceholder":230},[31,20271,20273,20276],{"class":216,"line":20272},245,[31,20274,20275],{"class":18820},"frontend-net",[31,20277,18838],{"class":363},[31,20279,20281],{"class":216,"line":20280},246,[31,20282,231],{"emptyLinePlaceholder":230},[31,20284,20286,20288,20290],{"class":216,"line":20285},247,[31,20287,19300],{"class":18820},[31,20289,18823],{"class":363},[31,20291,20292],{"class":332},"bridge\n",[31,20294,20296],{"class":216,"line":20295},248,[31,20297,231],{"emptyLinePlaceholder":230},[31,20299,20301,20304],{"class":216,"line":20300},249,[31,20302,20303],{"class":18820},"backend-net",[31,20305,18838],{"class":363},[31,20307,20309],{"class":216,"line":20308},250,[31,20310,231],{"emptyLinePlaceholder":230},[31,20312,20314,20316,20318],{"class":216,"line":20313},251,[31,20315,19300],{"class":18820},[31,20317,18823],{"class":363},[31,20319,20292],{"class":332},[31,20321,20323],{"class":216,"line":20322},252,[31,20324,231],{"emptyLinePlaceholder":230},[31,20326,20328,20331,20333],{"class":216,"line":20327},253,[31,20329,20330],{"class":18820},"internal",[31,20332,18823],{"class":363},[31,20334,20335],{"class":223},"true\n",[31,20337,20339],{"class":216,"line":20338},254,[31,20340,231],{"emptyLinePlaceholder":230},[31,20342,20344,20347],{"class":216,"line":20343},255,[31,20345,20346],{"class":18820},"monitoring",[31,20348,18838],{"class":363},[31,20350,20352],{"class":216,"line":20351},256,[31,20353,231],{"emptyLinePlaceholder":230},[31,20355,20357,20360,20362],{"class":216,"line":20356},257,[31,20358,20359],{"class":18820},"external",[31,20361,18823],{"class":363},[31,20363,20335],{"class":223},[31,20365,20367],{"class":216,"line":20366},258,[31,20368,231],{"emptyLinePlaceholder":230},[31,20370,20372,20374,20376],{"class":216,"line":20371},259,[31,20373,16312],{"class":18820},[31,20375,18823],{"class":363},[31,20377,20378],{"class":332},"monitoring_net\n",[38,20380,20382],{"id":20381},"restart-policies","restart-Policies",[43,20384,20385,20398],{},[46,20386,20387],{},[49,20388,20389,20394],{},[52,20390,20391],{},[17,20392,20393],{},"Wert",[52,20395,20396],{},[17,20397,61],{},[63,20399,20400,20408,20416,20424],{},[49,20401,20402,20405],{},[68,20403,20404],{},"no",[68,20406,20407],{},"Niemals neu starten (Standard)",[49,20409,20410,20413],{},[68,20411,20412],{},"always",[68,20414,20415],{},"Immer neu starten – auch nach manuellem Stopp",[49,20417,20418,20421],{},[68,20419,20420],{},"on-failure",[68,20422,20423],{},"Nur bei Fehler (Exit-Code ≠ 0) neu starten",[49,20425,20426,20429],{},[68,20427,20428],{},"unless-stopped",[68,20430,20431],{},"Immer neu starten, außer wenn manuell gestoppt",[38,20433,20435],{"id":20434},"depends_on-condition-werte","depends_on – condition-Werte",[43,20437,20438,20450],{},[46,20439,20440],{},[49,20441,20442,20446],{},[52,20443,20444],{},[17,20445,20393],{},[52,20447,20448],{},[17,20449,61],{},[63,20451,20452,20460,20468],{},[49,20453,20454,20457],{},[68,20455,20456],{},"service_started",[68,20458,20459],{},"Warten bis der Container gestartet ist (Standard)",[49,20461,20462,20465],{},[68,20463,20464],{},"service_healthy",[68,20466,20467],{},"Warten bis der Container healthy ist (Healthcheck nötig!)",[49,20469,20470,20473],{},[68,20471,20472],{},"service_completed_successfully",[68,20474,20475],{},"Warten bis der Container mit Exit 0 beendet wurde",[38,20477,20479],{"id":20478},"env-datei",".env-Datei",[10,20481,20483],{"id":20482},"env-im-selben-verzeichnis-wie-docker-composeyml",".env (im selben Verzeichnis wie docker-compose.yml)",[10,20485,20487],{"id":20486},"automatisch-von-docker-compose-geladen","Automatisch von docker compose geladen",[205,20489,20491],{"className":207,"code":20490,"language":209,"meta":210,"style":210},"POSTGRES_DB=myapp\nPOSTGRES_USER=app_user\nPOSTGRES_PASSWORD=sicheres_passwort_123\nIMAGE_TAG=1.5.2\nAPP_PORT=3000\n\n",[212,20492,20493,20502,20511,20520,20530],{"__ignoreMap":210},[31,20494,20495,20497,20499],{"class":216,"line":217},[31,20496,19836],{"class":363},[31,20498,367],{"class":336},[31,20500,20501],{"class":332},"myapp\n",[31,20503,20504,20506,20508],{"class":216,"line":227},[31,20505,19850],{"class":363},[31,20507,367],{"class":336},[31,20509,20510],{"class":332},"app_user\n",[31,20512,20513,20515,20517],{"class":216,"line":234},[31,20514,19864],{"class":363},[31,20516,367],{"class":336},[31,20518,20519],{"class":332},"sicheres_passwort_123\n",[31,20521,20522,20525,20527],{"class":216,"line":241},[31,20523,20524],{"class":363},"IMAGE_TAG",[31,20526,367],{"class":336},[31,20528,20529],{"class":332},"1.5.2\n",[31,20531,20532,20535,20537],{"class":216,"line":246},[31,20533,20534],{"class":363},"APP_PORT",[31,20536,367],{"class":336},[31,20538,20539],{"class":332},"3000\n",[14,20541,20542],{},"Verwendung im docker-compose.yml:",[205,20544,20546],{"className":18811,"code":20545,"language":18813,"meta":210,"style":210},"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",[212,20547,20548,20554,20558,20565,20569,20578,20582,20588,20592,20599,20603,20609,20613],{"__ignoreMap":210},[31,20549,20550,20552],{"class":216,"line":217},[31,20551,18835],{"class":18820},[31,20553,18838],{"class":363},[31,20555,20556],{"class":216,"line":227},[31,20557,231],{"emptyLinePlaceholder":230},[31,20559,20560,20563],{"class":216,"line":234},[31,20561,20562],{"class":18820},"app",[31,20564,18838],{"class":363},[31,20566,20567],{"class":216,"line":241},[31,20568,231],{"emptyLinePlaceholder":230},[31,20570,20571,20573,20575],{"class":216,"line":246},[31,20572,18918],{"class":18820},[31,20574,18823],{"class":363},[31,20576,20577],{"class":332},"'meineapp:${IMAGE_TAG:-latest}'\n",[31,20579,20580],{"class":216,"line":254},[31,20581,231],{"emptyLinePlaceholder":230},[31,20583,20584,20586],{"class":216,"line":259},[31,20585,18972],{"class":18820},[31,20587,18838],{"class":363},[31,20589,20590],{"class":216,"line":265},[31,20591,231],{"emptyLinePlaceholder":230},[31,20593,20594,20596],{"class":216,"line":270},[31,20595,18906],{"class":363},[31,20597,20598],{"class":332},"'${APP_PORT}:3000'\n",[31,20600,20601],{"class":216,"line":278},[31,20602,231],{"emptyLinePlaceholder":230},[31,20604,20605,20607],{"class":216,"line":283},[31,20606,19038],{"class":18820},[31,20608,18838],{"class":363},[31,20610,20611],{"class":216,"line":289},[31,20612,231],{"emptyLinePlaceholder":230},[31,20614,20615,20618,20620],{"class":216,"line":294},[31,20616,20617],{"class":18820},"DB_PASS",[31,20619,18823],{"class":363},[31,20621,20622],{"class":332},"'${POSTGRES_PASSWORD:?Passwort muss gesetzt sein!}'\n",[38,20624,20626],{"id":20625},"praktische-beispiele","Praktische Beispiele",[10,20628,20630],{"id":20629},"starten","─── Starten ─────────────────────────────────────────────────",[10,20632,20634],{"id":20633},"alle-services-im-hintergrund-starten","Alle Services im Hintergrund starten",[205,20636,20638],{"className":207,"code":20637,"language":209,"meta":210,"style":210},"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",[212,20639,20640,20653,20657,20662,20666,20675,20679,20684,20688,20701,20705,20710,20714,20730,20734,20739,20743,20759,20763,20768,20772,20785,20789,20794,20798,20803,20807,20817,20821,20826,20830,20846,20850,20855,20859,20870,20874,20879,20883,20888,20892,20905,20909,20914,20918,20942,20946,20951,20955,20971,20975,20980,20984,21002,21006,21027,21031,21036,21040,21045,21049,21058,21062,21067,21071,21083,21087,21092,21096,21115,21119,21124,21128,21137,21141,21146,21150,21159,21163,21168,21172,21177,21181,21190,21194,21199,21203,21212,21216,21221,21225,21237,21241,21246,21250,21264,21268,21273,21277,21288,21292,21297,21301,21306,21310,21328,21332,21337,21341,21346,21350,21370,21374,21379,21383,21398,21402,21407,21411],{"__ignoreMap":210},[31,20641,20642,20644,20647,20650],{"class":216,"line":217},[31,20643,429],{"class":220},[31,20645,20646],{"class":332}," compose",[31,20648,20649],{"class":332}," up",[31,20651,20652],{"class":223}," -d\n",[31,20654,20655],{"class":216,"line":227},[31,20656,231],{"emptyLinePlaceholder":230},[31,20658,20659],{"class":216,"line":234},[31,20660,20661],{"class":237},"# Starten und Live-Logs beobachten (kein -d)\n",[31,20663,20664],{"class":216,"line":241},[31,20665,231],{"emptyLinePlaceholder":230},[31,20667,20668,20670,20672],{"class":216,"line":246},[31,20669,429],{"class":220},[31,20671,20646],{"class":332},[31,20673,20674],{"class":332}," up\n",[31,20676,20677],{"class":216,"line":254},[31,20678,231],{"emptyLinePlaceholder":230},[31,20680,20681],{"class":216,"line":259},[31,20682,20683],{"class":237},"# Images neu bauen und dann starten\n",[31,20685,20686],{"class":216,"line":265},[31,20687,231],{"emptyLinePlaceholder":230},[31,20689,20690,20692,20694,20696,20698],{"class":216,"line":270},[31,20691,429],{"class":220},[31,20693,20646],{"class":332},[31,20695,20649],{"class":332},[31,20697,10501],{"class":223},[31,20699,20700],{"class":223}," --build\n",[31,20702,20703],{"class":216,"line":278},[31,20704,231],{"emptyLinePlaceholder":230},[31,20706,20707],{"class":216,"line":283},[31,20708,20709],{"class":237},"# Nur bestimmte Services starten\n",[31,20711,20712],{"class":216,"line":289},[31,20713,231],{"emptyLinePlaceholder":230},[31,20715,20716,20718,20720,20722,20724,20727],{"class":216,"line":294},[31,20717,429],{"class":220},[31,20719,20646],{"class":332},[31,20721,20649],{"class":332},[31,20723,10501],{"class":223},[31,20725,20726],{"class":332}," database",[31,20728,20729],{"class":332}," cache\n",[31,20731,20732],{"class":216,"line":807},[31,20733,231],{"emptyLinePlaceholder":230},[31,20735,20736],{"class":216,"line":812},[31,20737,20738],{"class":237},"# Mit einem Profil starten\n",[31,20740,20741],{"class":216,"line":821},[31,20742,231],{"emptyLinePlaceholder":230},[31,20744,20745,20747,20749,20752,20755,20757],{"class":216,"line":826},[31,20746,429],{"class":220},[31,20748,20646],{"class":332},[31,20750,20751],{"class":223}," --profile",[31,20753,20754],{"class":332}," cache",[31,20756,20649],{"class":332},[31,20758,20652],{"class":223},[31,20760,20761],{"class":216,"line":837},[31,20762,231],{"emptyLinePlaceholder":230},[31,20764,20765],{"class":216,"line":842},[31,20766,20767],{"class":237},"# Warten bis alle Container healthy sind\n",[31,20769,20770],{"class":216,"line":848},[31,20771,231],{"emptyLinePlaceholder":230},[31,20773,20774,20776,20778,20780,20782],{"class":216,"line":853},[31,20775,429],{"class":220},[31,20777,20646],{"class":332},[31,20779,20649],{"class":332},[31,20781,10501],{"class":223},[31,20783,20784],{"class":223}," --wait\n",[31,20786,20787],{"class":216,"line":868},[31,20788,231],{"emptyLinePlaceholder":230},[31,20790,20791],{"class":216,"line":873},[31,20792,20793],{"class":237},"# ─── Logs ────────────────────────────────────────────────────\n",[31,20795,20796],{"class":216,"line":879},[31,20797,231],{"emptyLinePlaceholder":230},[31,20799,20800],{"class":216,"line":884},[31,20801,20802],{"class":237},"# Alle Logs live verfolgen\n",[31,20804,20805],{"class":216,"line":1405},[31,20806,231],{"emptyLinePlaceholder":230},[31,20808,20809,20811,20813,20815],{"class":216,"line":1410},[31,20810,429],{"class":220},[31,20812,20646],{"class":332},[31,20814,18011],{"class":332},[31,20816,6516],{"class":223},[31,20818,20819],{"class":216,"line":1416},[31,20820,231],{"emptyLinePlaceholder":230},[31,20822,20823],{"class":216,"line":1421},[31,20824,20825],{"class":237},"# Nur Backend-Logs, letzte 100 Zeilen\n",[31,20827,20828],{"class":216,"line":1434},[31,20829,231],{"emptyLinePlaceholder":230},[31,20831,20832,20834,20836,20838,20841,20843],{"class":216,"line":1439},[31,20833,429],{"class":220},[31,20835,20646],{"class":332},[31,20837,18011],{"class":332},[31,20839,20840],{"class":223}," --tail=100",[31,20842,4341],{"class":223},[31,20844,20845],{"class":332}," backend\n",[31,20847,20848],{"class":216,"line":1445},[31,20849,231],{"emptyLinePlaceholder":230},[31,20851,20852],{"class":216,"line":1450},[31,20853,20854],{"class":237},"# Logs mit Zeitstempel\n",[31,20856,20857],{"class":216,"line":2244},[31,20858,231],{"emptyLinePlaceholder":230},[31,20860,20861,20863,20865,20867],{"class":216,"line":2249},[31,20862,429],{"class":220},[31,20864,20646],{"class":332},[31,20866,18011],{"class":332},[31,20868,20869],{"class":223}," -t\n",[31,20871,20872],{"class":216,"line":2255},[31,20873,231],{"emptyLinePlaceholder":230},[31,20875,20876],{"class":216,"line":2260},[31,20877,20878],{"class":237},"# ─── Befehle ausführen ───────────────────────────────────────\n",[31,20880,20881],{"class":216,"line":2270},[31,20882,231],{"emptyLinePlaceholder":230},[31,20884,20885],{"class":216,"line":2275},[31,20886,20887],{"class":237},"# Bash im Backend-Container\n",[31,20889,20890],{"class":216,"line":2281},[31,20891,231],{"emptyLinePlaceholder":230},[31,20893,20894,20896,20898,20900,20903],{"class":216,"line":2286},[31,20895,429],{"class":220},[31,20897,20646],{"class":332},[31,20899,18036],{"class":332},[31,20901,20902],{"class":332}," backend",[31,20904,17942],{"class":332},[31,20906,20907],{"class":216,"line":5316},[31,20908,231],{"emptyLinePlaceholder":230},[31,20910,20911],{"class":216,"line":5321},[31,20912,20913],{"class":237},"# Datenbankzugriff\n",[31,20915,20916],{"class":216,"line":5327},[31,20917,231],{"emptyLinePlaceholder":230},[31,20919,20920,20922,20924,20926,20928,20931,20934,20937,20939],{"class":216,"line":5332},[31,20921,429],{"class":220},[31,20923,20646],{"class":332},[31,20925,18036],{"class":332},[31,20927,20726],{"class":332},[31,20929,20930],{"class":332}," psql",[31,20932,20933],{"class":223}," -U",[31,20935,20936],{"class":332}," app_user",[31,20938,10501],{"class":223},[31,20940,20941],{"class":332}," myapp\n",[31,20943,20944],{"class":216,"line":5353},[31,20945,231],{"emptyLinePlaceholder":230},[31,20947,20948],{"class":216,"line":5358},[31,20949,20950],{"class":237},"# HTTP-Anfrage aus dem Container\n",[31,20952,20953],{"class":216,"line":5366},[31,20954,231],{"emptyLinePlaceholder":230},[31,20956,20957,20959,20961,20963,20965,20968],{"class":216,"line":5371},[31,20958,429],{"class":220},[31,20960,20646],{"class":332},[31,20962,18036],{"class":332},[31,20964,20902],{"class":332},[31,20966,20967],{"class":332}," curl",[31,20969,20970],{"class":332}," http:\u002F\u002Fdatabase:5432\n",[31,20972,20973],{"class":216,"line":5377},[31,20974,231],{"emptyLinePlaceholder":230},[31,20976,20977],{"class":216,"line":5382},[31,20978,20979],{"class":237},"# Einmaliger Befehl (neuer Container, wird danach gelöscht)\n",[31,20981,20982],{"class":216,"line":5388},[31,20983,231],{"emptyLinePlaceholder":230},[31,20985,20986,20988,20990,20992,20994,20996,20999],{"class":216,"line":5393},[31,20987,429],{"class":220},[31,20989,20646],{"class":332},[31,20991,17873],{"class":332},[31,20993,17936],{"class":223},[31,20995,20902],{"class":332},[31,20997,20998],{"class":332}," npm",[31,21000,21001],{"class":332}," test\n",[31,21003,21004],{"class":216,"line":5405},[31,21005,231],{"emptyLinePlaceholder":230},[31,21007,21008,21010,21012,21014,21016,21018,21021,21024],{"class":216,"line":5410},[31,21009,429],{"class":220},[31,21011,20646],{"class":332},[31,21013,17873],{"class":332},[31,21015,17936],{"class":223},[31,21017,20902],{"class":332},[31,21019,21020],{"class":332}," python",[31,21022,21023],{"class":332}," manage.py",[31,21025,21026],{"class":332}," migrate\n",[31,21028,21029],{"class":216,"line":5416},[31,21030,231],{"emptyLinePlaceholder":230},[31,21032,21033],{"class":216,"line":5421},[31,21034,21035],{"class":237},"# ─── Status und Diagnose ──────────────────────────────────────\n",[31,21037,21038],{"class":216,"line":5435},[31,21039,231],{"emptyLinePlaceholder":230},[31,21041,21042],{"class":216,"line":5440},[31,21043,21044],{"class":237},"# Status aller Container\n",[31,21046,21047],{"class":216,"line":5446},[31,21048,231],{"emptyLinePlaceholder":230},[31,21050,21051,21053,21055],{"class":216,"line":5451},[31,21052,429],{"class":220},[31,21054,20646],{"class":332},[31,21056,21057],{"class":332}," ps\n",[31,21059,21060],{"class":216,"line":6552},[31,21061,231],{"emptyLinePlaceholder":230},[31,21063,21064],{"class":216,"line":6557},[31,21065,21066],{"class":237},"# Mit Ports und Healthcheck\n",[31,21068,21069],{"class":216,"line":6563},[31,21070,231],{"emptyLinePlaceholder":230},[31,21072,21073,21075,21077,21080],{"class":216,"line":6568},[31,21074,429],{"class":220},[31,21076,20646],{"class":332},[31,21078,21079],{"class":332}," ps",[31,21081,21082],{"class":223}," -a\n",[31,21084,21085],{"class":216,"line":6589},[31,21086,231],{"emptyLinePlaceholder":230},[31,21088,21089],{"class":216,"line":6594},[31,21090,21091],{"class":237},"# Ressourcenverbrauch\n",[31,21093,21094],{"class":216,"line":6600},[31,21095,231],{"emptyLinePlaceholder":230},[31,21097,21098,21100,21102,21105,21107,21109,21111,21113],{"class":216,"line":6605},[31,21099,429],{"class":220},[31,21101,18134],{"class":332},[31,21103,21104],{"class":363}," $(",[31,21106,429],{"class":220},[31,21108,20646],{"class":332},[31,21110,21079],{"class":332},[31,21112,4049],{"class":223},[31,21114,432],{"class":363},[31,21116,21117],{"class":216,"line":6638},[31,21118,231],{"emptyLinePlaceholder":230},[31,21120,21121],{"class":216,"line":6643},[31,21122,21123],{"class":237},"# Prozesse in Containern\n",[31,21125,21126],{"class":216,"line":6649},[31,21127,231],{"emptyLinePlaceholder":230},[31,21129,21130,21132,21134],{"class":216,"line":6654},[31,21131,429],{"class":220},[31,21133,20646],{"class":332},[31,21135,21136],{"class":332}," top\n",[31,21138,21139],{"class":216,"line":8874},[31,21140,231],{"emptyLinePlaceholder":230},[31,21142,21143],{"class":216,"line":8879},[31,21144,21145],{"class":237},"# Konfiguration validieren und anzeigen\n",[31,21147,21148],{"class":216,"line":8891},[31,21149,231],{"emptyLinePlaceholder":230},[31,21151,21152,21154,21156],{"class":216,"line":8896},[31,21153,429],{"class":220},[31,21155,20646],{"class":332},[31,21157,21158],{"class":332}," config\n",[31,21160,21161],{"class":216,"line":8902},[31,21162,231],{"emptyLinePlaceholder":230},[31,21164,21165],{"class":216,"line":8907},[31,21166,21167],{"class":237},"# ─── Stoppen und Aufräumen ────────────────────────────────────\n",[31,21169,21170],{"class":216,"line":8919},[31,21171,231],{"emptyLinePlaceholder":230},[31,21173,21174],{"class":216,"line":8924},[31,21175,21176],{"class":237},"# Stoppen (Container bleiben erhalten)\n",[31,21178,21179],{"class":216,"line":8930},[31,21180,231],{"emptyLinePlaceholder":230},[31,21182,21183,21185,21187],{"class":216,"line":8935},[31,21184,429],{"class":220},[31,21186,20646],{"class":332},[31,21188,21189],{"class":332}," stop\n",[31,21191,21192],{"class":216,"line":8947},[31,21193,231],{"emptyLinePlaceholder":230},[31,21195,21196],{"class":216,"line":8952},[31,21197,21198],{"class":237},"# Stoppen und Container entfernen\n",[31,21200,21201],{"class":216,"line":8958},[31,21202,231],{"emptyLinePlaceholder":230},[31,21204,21205,21207,21209],{"class":216,"line":8963},[31,21206,429],{"class":220},[31,21208,20646],{"class":332},[31,21210,21211],{"class":332}," down\n",[31,21213,21214],{"class":216,"line":8975},[31,21215,231],{"emptyLinePlaceholder":230},[31,21217,21218],{"class":216,"line":8980},[31,21219,21220],{"class":237},"# Stoppen, Container UND Volumes entfernen (VORSICHT: Datenverlust!)\n",[31,21222,21223],{"class":216,"line":8986},[31,21224,231],{"emptyLinePlaceholder":230},[31,21226,21227,21229,21231,21234],{"class":216,"line":8991},[31,21228,429],{"class":220},[31,21230,20646],{"class":332},[31,21232,21233],{"class":332}," down",[31,21235,21236],{"class":223}," -v\n",[31,21238,21239],{"class":216,"line":9003},[31,21240,231],{"emptyLinePlaceholder":230},[31,21242,21243],{"class":216,"line":9008},[31,21244,21245],{"class":237},"# Stoppen und auch Images entfernen\n",[31,21247,21248],{"class":216,"line":9014},[31,21249,231],{"emptyLinePlaceholder":230},[31,21251,21252,21254,21256,21258,21261],{"class":216,"line":9019},[31,21253,429],{"class":220},[31,21255,20646],{"class":332},[31,21257,21233],{"class":332},[31,21259,21260],{"class":223}," --rmi",[31,21262,21263],{"class":332}," all\n",[31,21265,21266],{"class":216,"line":9025},[31,21267,231],{"emptyLinePlaceholder":230},[31,21269,21270],{"class":216,"line":9030},[31,21271,21272],{"class":237},"# Nur bestimmte Services neu starten\n",[31,21274,21275],{"class":216,"line":9040},[31,21276,231],{"emptyLinePlaceholder":230},[31,21278,21279,21281,21283,21286],{"class":216,"line":9045},[31,21280,429],{"class":220},[31,21282,20646],{"class":332},[31,21284,21285],{"class":332}," restart",[31,21287,20845],{"class":332},[31,21289,21290],{"class":216,"line":9051},[31,21291,231],{"emptyLinePlaceholder":230},[31,21293,21294],{"class":216,"line":9056},[31,21295,21296],{"class":237},"# ─── Skalieren ───────────────────────────────────────────────\n",[31,21298,21299],{"class":216,"line":9066},[31,21300,231],{"emptyLinePlaceholder":230},[31,21302,21303],{"class":216,"line":9071},[31,21304,21305],{"class":237},"# Backend auf 3 Instanzen skalieren\n",[31,21307,21308],{"class":216,"line":9077},[31,21309,231],{"emptyLinePlaceholder":230},[31,21311,21312,21314,21316,21318,21320,21323,21326],{"class":216,"line":9082},[31,21313,429],{"class":220},[31,21315,20646],{"class":332},[31,21317,20649],{"class":332},[31,21319,10501],{"class":223},[31,21321,21322],{"class":223}," --scale",[31,21324,21325],{"class":332}," backend=",[31,21327,19266],{"class":223},[31,21329,21330],{"class":216,"line":9092},[31,21331,231],{"emptyLinePlaceholder":230},[31,21333,21334],{"class":216,"line":9097},[31,21335,21336],{"class":237},"# ─── Mehrere Compose-Dateien ──────────────────────────────────\n",[31,21338,21339],{"class":216,"line":9103},[31,21340,231],{"emptyLinePlaceholder":230},[31,21342,21343],{"class":216,"line":9108},[31,21344,21345],{"class":237},"# Produktion mit Überschreibungs-Datei\n",[31,21347,21348],{"class":216,"line":9118},[31,21349,231],{"emptyLinePlaceholder":230},[31,21351,21352,21354,21356,21358,21361,21363,21366,21368],{"class":216,"line":9123},[31,21353,429],{"class":220},[31,21355,20646],{"class":332},[31,21357,4341],{"class":223},[31,21359,21360],{"class":332}," docker-compose.yml",[31,21362,4341],{"class":223},[31,21364,21365],{"class":332}," docker-compose.prod.yml",[31,21367,20649],{"class":332},[31,21369,20652],{"class":223},[31,21371,21372],{"class":216,"line":9129},[31,21373,231],{"emptyLinePlaceholder":230},[31,21375,21376],{"class":216,"line":9134},[31,21377,21378],{"class":237},"# Mit eigenem Projektname\n",[31,21380,21381],{"class":216,"line":9144},[31,21382,231],{"emptyLinePlaceholder":230},[31,21384,21385,21387,21389,21391,21394,21396],{"class":216,"line":9149},[31,21386,429],{"class":220},[31,21388,20646],{"class":332},[31,21390,14411],{"class":223},[31,21392,21393],{"class":332}," mein-projekt",[31,21395,20649],{"class":332},[31,21397,20652],{"class":223},[31,21399,21400],{"class":216,"line":9155},[31,21401,231],{"emptyLinePlaceholder":230},[31,21403,21404],{"class":216,"line":9160},[31,21405,21406],{"class":237},"# Mit anderer .env-Datei\n",[31,21408,21409],{"class":216,"line":9166},[31,21410,231],{"emptyLinePlaceholder":230},[31,21412,21413,21415,21417,21420,21423,21425],{"class":216,"line":9171},[31,21414,429],{"class":220},[31,21416,20646],{"class":332},[31,21418,21419],{"class":223}," --env-file",[31,21421,21422],{"class":332}," .env.production",[31,21424,20649],{"class":332},[31,21426,20652],{"class":223},[38,21428,350],{"id":21429},"ausgabe-20",[10,21431,21433],{"id":21432},"docker-compose-ps","docker compose ps",[14,21435,21436,21437,21439,21440,21442,21443,21445],{},"NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS",[584,21438],{},"\nmein-projekt-backend-1 backend:latest \".\u002Fserver\" backend 2 hours ago Up 2 hours (healthy) 0.0.0.0:8080->8080\u002Ftcp",[584,21441],{},"\nmein-projekt-frontend-1 frontend:latest \"nginx -g 'daemon of…\" frontend 2 hours ago Up 2 hours 0.0.0.0:3000->3000\u002Ftcp",[584,21444],{},"\nmein-projekt-database-1 postgres:15-alpine \"docker-entrypoint.s…\" database 2 hours ago Up 2 hours (healthy)",[14,21447,21448,21451],{},[17,21449,21450],{},"Best Practice:"," Niemals Passwörter direkt in docker-compose.yml schreiben – immer .env-Datei verwenden und .env in .gitignore eintragen!",[10,21453,2387],{"id":21454},"etcshadow",[14,21456,21457,21459,21460,21463,21464,21466,21467,21470],{},[17,21458,19],{}," Enthält die ",[17,21461,21462],{},"verschlüsselten Passwörter"," und Passwort-Ablaufinformationen aller Systembenutzer. Nur ",[17,21465,1062],{}," (und die Gruppe ",[17,21468,21469],{},"shadow",") kann diese Datei lesen.",[14,21472,21473],{},[17,21474,21475],{},"Berechtigungen:",[14,21477,21478,21479,21481],{},"-rw-r----- 1 root shadow \u003C- auf Debian\u002FUbuntu",[584,21480],{},"\n-rw------- 1 root root \u003C- auf RHEL\u002FCentOS",[14,21483,21484],{},[17,21485,21486],{},"Format (9 Felder, Trenner: :)",[14,21488,21489],{},"benutzername:passwort-hash:letzte-änderung:min-tage:max-tage:warn-tage:inaktiv-tage:ablauf:reserviert",[38,21491,21493],{"id":21492},"feldübersicht","Feldübersicht",[43,21495,21496,21514],{},[46,21497,21498],{},[49,21499,21500,21505,21509],{},[52,21501,21502],{},[17,21503,21504],{},"Feld-Nr.",[52,21506,21507],{},[17,21508,3052],{},[52,21510,21511],{},[17,21512,21513],{},"Beschreibung",[63,21515,21516,21526,21536,21546,21556,21566,21576,21586,21596],{},[49,21517,21518,21520,21523],{},[68,21519,1617],{},[68,21521,21522],{},"benutzername",[68,21524,21525],{},"Login-Name (muss mit \u002Fetc\u002Fpasswd übereinstimmen)",[49,21527,21528,21530,21533],{},[68,21529,1600],{},[68,21531,21532],{},"passwort-hash",[68,21534,21535],{},"Gehashtes Passwort mit Algorithmus-Kennung",[49,21537,21538,21540,21543],{},[68,21539,1713],{},[68,21541,21542],{},"letzte-änderung",[68,21544,21545],{},"Tage seit 01.01.1970 der letzten Passwortänderung. 0 = muss bei nächstem Login geändert werden",[49,21547,21548,21550,21553],{},[68,21549,1583],{},[68,21551,21552],{},"min-tage",[68,21554,21555],{},"Minimum-Tage bis Passwort geändert werden darf (0 = jederzeit)",[49,21557,21558,21560,21563],{},[68,21559,1686],{},[68,21561,21562],{},"max-tage",[68,21564,21565],{},"Maximum-Gültigkeit in Tagen (99999 = läuft nie ab)",[49,21567,21568,21570,21573],{},[68,21569,1672],{},[68,21571,21572],{},"warn-tage",[68,21574,21575],{},"Warnung N Tage vor Ablauf (leer = keine Warnung)",[49,21577,21578,21580,21583],{},[68,21579,1658],{},[68,21581,21582],{},"inaktiv-tage",[68,21584,21585],{},"Tage nach Ablauf bis Konto deaktiviert wird (leer = nie)",[49,21587,21588,21590,21593],{},[68,21589,3715],{},[68,21591,21592],{},"ablauf",[68,21594,21595],{},"Absolutes Ablaufdatum (Tage seit 01.01.1970, leer = nie)",[49,21597,21598,21601,21604],{},[68,21599,21600],{},"9",[68,21602,21603],{},"reserviert",[68,21605,21606],{},"Für zukünftige Verwendung reserviert, immer leer",[38,21608,21610],{"id":21609},"passwort-hash-formate","Passwort-Hash Formate",[43,21612,21613,21632],{},[46,21614,21615],{},[49,21616,21617,21622,21627],{},[52,21618,21619],{},[17,21620,21621],{},"Präfix",[52,21623,21624],{},[17,21625,21626],{},"Algorithmus",[52,21628,21629],{},[17,21630,21631],{},"Sicherheit",[63,21633,21634,21645,21656,21666,21677,21688,21699,21708,21718,21727],{},[49,21635,21636,21639,21642],{},[68,21637,21638],{},"$1$",[68,21640,21641],{},"MD5",[68,21643,21644],{},"Veraltet, unsicher!",[49,21646,21647,21650,21653],{},[68,21648,21649],{},"$2a$ \u002F $2b$",[68,21651,21652],{},"bcrypt",[68,21654,21655],{},"Gut",[49,21657,21658,21661,21664],{},[68,21659,21660],{},"$5$",[68,21662,21663],{},"SHA-256",[68,21665,21655],{},[49,21667,21668,21671,21674],{},[68,21669,21670],{},"$6$",[68,21672,21673],{},"SHA-512",[68,21675,21676],{},"Empfohlen (Standard auf vielen Systemen)",[49,21678,21679,21682,21685],{},[68,21680,21681],{},"$y$",[68,21683,21684],{},"yescrypt",[68,21686,21687],{},"Modern, sehr sicher (Standard Debian 11+)",[49,21689,21690,21693,21696],{},[68,21691,21692],{},"$7$",[68,21694,21695],{},"scrypt",[68,21697,21698],{},"Modern, sicher",[49,21700,21701,21703,21705],{},[68,21702,8309],{},[68,21704,9968],{},[68,21706,21707],{},"Konto gesperrt (passwd -l), ! vor dem Hash",[49,21709,21710,21713,21715],{},[68,21711,21712],{},"!!",[68,21714,9968],{},[68,21716,21717],{},"Konto gesperrt und nie ein Passwort gesetzt",[49,21719,21720,21722,21724],{},[68,21721,4959],{},[68,21723,9968],{},[68,21725,21726],{},"Kein Login möglich (Systemkonten wie daemon, bin)",[49,21728,21729,21732,21734],{},[68,21730,21731],{},"leer",[68,21733,9968],{},[68,21735,21736],{},"Kein Passwort – Login ohne Passwort möglich (sehr unsicher!)",[38,21738,21740],{"id":21739},"sha-512-hash-struktur","SHA-512-Hash-Struktur",[14,21742,21743,21744,21746,21747,21749,21750,21752,21753,21755,21756,21758],{},"$6$rounds=65536$saltwert$eigentlicher_hash",[584,21745],{},"\n| | | |",[584,21748],{},"\n| | | +-- Base64-kodierter Hash (86 Zeichen)",[584,21751],{},"\n| | +-- Salt (zufälliger Wert, bis 16 Zeichen)",[584,21754],{},"\n| +-- rounds: Anzahl der Iterationen (Standard: 5000)",[584,21757],{},"\n+-- Algorithmus: 6 = SHA-512",[38,21760,21762],{"id":21761},"vollständige-beispielzeilen","Vollständige Beispielzeilen",[10,21764,21766],{"id":21765},"normales-konto-mit-sha-512-passwort","Normales Konto mit SHA-512-Passwort",[14,21768,21769],{},"alice:$6$rounds=65536$abc123xyz$HashHashHash...:19845:0:99999:7:::",[14,21771,21772],{},"| | | | | | |",[14,21774,21775],{},"| | | | | | +-- 7 Tage Warnung",[14,21777,21778],{},"| | | | | +-- max 99999 Tage",[14,21780,21781],{},"| | | | +-- min 0 Tage",[14,21783,21784],{},"| | | +-- letzte Änderung",[14,21786,21787],{},"| | +-- Hash",[14,21789,21790],{},"| +-- $6$ = SHA-512",[14,21792,21793],{},"+-- Benutzername",[10,21795,21797],{"id":21796},"gesperrtes-konto","Gesperrtes Konto",[14,21799,21800],{},"bob:!$6$hash...:19845:0:99999:7:::",[14,21802,21803],{},"^-- ! = gesperrt",[10,21805,21807],{"id":21806},"noch-nie-passwort-gesetzt","Noch nie Passwort gesetzt",[14,21809,21810],{},"newuser:!!:19845:0:99999:7:::",[14,21812,21813],{},"^^-- !! = kein Passwort, gesperrt",[10,21815,21817],{"id":21816},"systemkonto","Systemkonto",[14,21819,21820],{},"daemon:*:19845:0:99999:7:::",[14,21822,21823],{},"^-- * = kein Login möglich",[38,21825,21827],{"id":21826},"nützliche-befehle","Nützliche Befehle",[10,21829,21831],{"id":21830},"anzeigen-nur-als-root","Anzeigen (nur als root)",[205,21833,21835],{"className":207,"code":21834,"language":209,"meta":210,"style":210},"sudo cat \u002Fetc\u002Fshadow\n\n",[212,21836,21837],{"__ignoreMap":210},[31,21838,21839,21841,21843],{"class":216,"line":217},[31,21840,419],{"class":220},[31,21842,12578],{"class":332},[31,21844,15992],{"class":332},[10,21846,21848],{"id":21847},"einzelnen-benutzer-abfragen","Einzelnen Benutzer abfragen",[14,21850,21851],{},"sudo getent shadow alice",[10,21853,12769],{"id":21854},"passwortstatus-anzeigen",[14,21856,21857],{},"sudo passwd -S alice",[10,21859,21861],{"id":21860},"ausführliche-ablaufinformationen","Ausführliche Ablaufinformationen",[14,21863,21864],{},"sudo chage -l alice",[10,21866,21868],{"id":21867},"feld-3-tage-in-datum-umrechnen","Feld 3 (Tage) in Datum umrechnen",[205,21870,21872],{"className":207,"code":21871,"language":209,"meta":210,"style":210},"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",[212,21873,21874,21883,21887,21892,21896,21910,21914,21919,21923,21936,21940,21945,21949,21962,21966],{"__ignoreMap":210},[31,21875,21876,21878,21880],{"class":216,"line":217},[31,21877,14463],{"class":220},[31,21879,10501],{"class":223},[31,21881,21882],{"class":332}," \"1970-01-01 + 19845 days\"\n",[31,21884,21885],{"class":216,"line":227},[31,21886,231],{"emptyLinePlaceholder":230},[31,21888,21889],{"class":216,"line":234},[31,21890,21891],{"class":237},"# Konten ohne Passwort finden (Sicherheitscheck!)\n",[31,21893,21894],{"class":216,"line":241},[31,21895,231],{"emptyLinePlaceholder":230},[31,21897,21898,21900,21903,21905,21908],{"class":216,"line":246},[31,21899,419],{"class":220},[31,21901,21902],{"class":332}," awk",[31,21904,7400],{"class":223},[31,21906,21907],{"class":332}," '$2 == \"\" {print $1}'",[31,21909,15992],{"class":332},[31,21911,21912],{"class":216,"line":254},[31,21913,231],{"emptyLinePlaceholder":230},[31,21915,21916],{"class":216,"line":259},[31,21917,21918],{"class":237},"# Gesperrte Konten finden\n",[31,21920,21921],{"class":216,"line":265},[31,21922,231],{"emptyLinePlaceholder":230},[31,21924,21925,21927,21929,21931,21934],{"class":216,"line":270},[31,21926,419],{"class":220},[31,21928,21902],{"class":332},[31,21930,7400],{"class":223},[31,21932,21933],{"class":332}," '$2 ~ \u002F^!\u002F {print $1}'",[31,21935,15992],{"class":332},[31,21937,21938],{"class":216,"line":278},[31,21939,231],{"emptyLinePlaceholder":230},[31,21941,21942],{"class":216,"line":283},[31,21943,21944],{"class":237},"# Konten mit niemals ablaufendem Passwort\n",[31,21946,21947],{"class":216,"line":289},[31,21948,231],{"emptyLinePlaceholder":230},[31,21950,21951,21953,21955,21957,21960],{"class":216,"line":294},[31,21952,419],{"class":220},[31,21954,21902],{"class":332},[31,21956,7400],{"class":223},[31,21958,21959],{"class":332}," '$5 == 99999 {print $1}'",[31,21961,15992],{"class":332},[31,21963,21964],{"class":216,"line":807},[31,21965,231],{"emptyLinePlaceholder":230},[31,21967,21968],{"class":216,"line":812},[31,21969,21970],{"class":237},"# \u002Fetc\u002Fgroup\n",[14,21972,21973,21975,21976,21979,21980,21982,21983,21986],{},[17,21974,19],{}," Enthält alle Gruppen des Systems mit ihren GIDs und Mitgliedern. Jeder Benutzer hat eine ",[17,21977,21978],{},"primäre Gruppe"," (in ",[17,21981,6723],{}," gespeichert) sowie beliebig viele ",[17,21984,21985],{},"sekundäre Gruppen"," (hier eingetragen).",[14,21988,21989,26,21991,21994],{},[17,21990,21475],{},[17,21992,21993],{},"-rw-r--r-- 1 root root"," (von allen lesbar)",[14,21996,21997],{},[17,21998,21999],{},"Format (4 Felder, Trenner: :)",[14,22001,22002],{},"gruppenname:passwort:GID:mitglieder",[38,22004,21493],{"id":22005},"feldübersicht-1",[43,22007,22008,22024],{},[46,22009,22010],{},[49,22011,22012,22016,22020],{},[52,22013,22014],{},[17,22015,21504],{},[52,22017,22018],{},[17,22019,3052],{},[52,22021,22022],{},[17,22023,21513],{},[63,22025,22026,22036,22046,22056],{},[49,22027,22028,22030,22033],{},[68,22029,1617],{},[68,22031,22032],{},"gruppenname",[68,22034,22035],{},"Name der Gruppe",[49,22037,22038,22040,22043],{},[68,22039,1600],{},[68,22041,22042],{},"passwort",[68,22044,22045],{},"x = Passwort in \u002Fetc\u002Fgshadow; leer = kein Passwort",[49,22047,22048,22050,22053],{},[68,22049,1713],{},[68,22051,22052],{},"GID",[68,22054,22055],{},"Gruppen-ID (numerisch). 0 = root, 1-999 = System, 1000+ = normal",[49,22057,22058,22060,22063],{},[68,22059,1583],{},[68,22061,22062],{},"mitglieder",[68,22064,22065],{},"Kommagetrennte Liste der sekundären Mitglieder",[38,22067,22069],{"id":22068},"gid-bereiche-konvention","GID-Bereiche (Konvention)",[43,22071,22072,22084],{},[46,22073,22074],{},[49,22075,22076,22080],{},[52,22077,22078],{},[17,22079,56],{},[52,22081,22082],{},[17,22083,1956],{},[63,22085,22086,22093,22101,22109],{},[49,22087,22088,22090],{},[68,22089,70],{},[68,22091,22092],{},"root-Gruppe",[49,22094,22095,22098],{},[68,22096,22097],{},"1 – 99",[68,22099,22100],{},"Statische System-Gruppen",[49,22102,22103,22106],{},[68,22104,22105],{},"100 – 999",[68,22107,22108],{},"Dynamische System-\u002FDienst-Gruppen",[49,22110,22111,22114],{},[68,22112,22113],{},"1000+",[68,22115,22116],{},"Normale Benutzergruppen",[38,22118,22120],{"id":22119},"vollständiges-beispiel","Vollständiges Beispiel",[14,22122,22123],{},"root❌0:",[14,22125,22126],{},"daemon❌1:",[14,22128,22129],{},"adm❌4:syslog,matta",[14,22131,22132],{},"sudo❌27:matta,alice",[14,22134,22135],{},"cdrom❌24:matta",[14,22137,22138],{},"plugdev❌46:matta",[14,22140,22141],{},"docker❌999:matta,alice",[14,22143,22144],{},"entwickler❌1001:alice,bob,charlie",[14,22146,22147],{},"webteam❌1002:bob,diana",[38,22149,22151],{"id":22150},"unterschied-primäre-vs-sekundäre-gruppe","Unterschied: Primäre vs. Sekundäre Gruppe",[10,22153,6723],{"id":22154},"etcpasswd",[14,22156,22157],{},"alice❌1001:1001:Alice:\u002Fhome\u002Falice:\u002Fbin\u002Fbash",[14,22159,22160],{},"^^^^ GID 1001 = primäre Gruppe von alice",[10,22162,22164],{"id":22163},"etcgroup","\u002Fetc\u002Fgroup",[14,22166,22167],{},"entwickler❌1001:alice,bob",[10,22169,22171],{"id":22170},"alice-taucht-hier-als-sekundäres-mitglied-auf","alice taucht hier als sekundäres Mitglied auf",[10,22173,22175],{"id":22174},"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",[38,22177,21827],{"id":22178},"nützliche-befehle-1",[10,22180,22182],{"id":22181},"datei-anzeigen","Datei anzeigen",[205,22184,22186],{"className":207,"code":22185,"language":209,"meta":210,"style":210},"cat \u002Fetc\u002Fgroup\n\n",[212,22187,22188],{"__ignoreMap":210},[31,22189,22190,22192],{"class":216,"line":217},[31,22191,11716],{"class":220},[31,22193,22194],{"class":332}," \u002Fetc\u002Fgroup\n",[10,22196,22198],{"id":22197},"alle-gruppen-des-aktuellen-benutzers","Alle Gruppen des aktuellen Benutzers",[14,22200,22201],{},"groups",[10,22203,22205],{"id":22204},"alle-gruppen-eines-bestimmten-benutzers","Alle Gruppen eines bestimmten Benutzers",[14,22207,22208],{},"groups alice",[205,22210,22212],{"className":207,"code":22211,"language":209,"meta":210,"style":210},"id -Gn alice\n\n# Alle GIDs numerisch\n\nid -G alice\n\n",[212,22213,22214,22222,22226,22231,22235],{"__ignoreMap":210},[31,22215,22216,22218,22220],{"class":216,"line":217},[31,22217,12],{"class":220},[31,22219,329],{"class":223},[31,22221,12957],{"class":332},[31,22223,22224],{"class":216,"line":227},[31,22225,231],{"emptyLinePlaceholder":230},[31,22227,22228],{"class":216,"line":234},[31,22229,22230],{"class":237},"# Alle GIDs numerisch\n",[31,22232,22233],{"class":216,"line":241},[31,22234,231],{"emptyLinePlaceholder":230},[31,22236,22237,22239,22242],{"class":216,"line":246},[31,22238,12],{"class":220},[31,22240,22241],{"class":223}," -G",[31,22243,12957],{"class":332},[10,22245,22247],{"id":22246},"gruppeninformationen-abfragen","Gruppeninformationen abfragen",[14,22249,22250],{},"getent group entwickler",[14,22252,22253],{},"getent group 1001",[10,22255,22257],{"id":22256},"benutzer-zu-gruppe-hinzufügen-gilt-ab-nächstem-login","Benutzer zu Gruppe hinzufügen (gilt ab nächstem Login)",[14,22259,22260],{},"sudo usermod -aG entwickler alice",[10,22262,22264],{"id":22263},"wichtig-ohne-a-werden-alle-bisherigen-gruppen-ersetzt","WICHTIG: ohne -a werden alle bisherigen Gruppen ersetzt!",[10,22266,22268],{"id":22267},"benutzer-aus-gruppe-entfernen","Benutzer aus Gruppe entfernen",[14,22270,22271],{},"sudo gpasswd -d alice entwickler",[10,22273,22275],{"id":22274},"neue-gruppe-erstellen","Neue Gruppe erstellen",[14,22277,22278],{},"sudo groupadd projektteam",[10,22280,22282],{"id":22281},"neue-gruppe-mit-spezifischer-gid","Neue Gruppe mit spezifischer GID",[14,22284,22285],{},"sudo groupadd -g 2000 ops",[10,22287,22289],{"id":22288},"gruppe-umbenennen","Gruppe umbenennen",[14,22291,22292],{},"sudo groupmod -n neuername altername",[10,22294,22296],{"id":22295},"gruppe-löschen","Gruppe löschen",[14,22298,22299],{},"sudo groupdel altername",[10,22301,22303],{"id":22302},"alle-mitglieder-der-sudo-gruppe","Alle Mitglieder der sudo-Gruppe",[14,22305,22306],{},"getent group sudo | cut -d: -f4",[38,22308,350],{"id":22309},"ausgabe-21",[10,22311,22250],{"id":22312},"getent-group-entwickler",[14,22314,22144],{},[10,22316,22318],{"id":22317},"sekundäre-mitglieder-kommagetrennt","| | +-- sekundäre Mitglieder (kommagetrennt)",[10,22320,22322],{"id":22321},"gid","| +-- GID",[10,22324,22326],{"id":22325},"x-passwort-in-etcgshadow","+-- x = Passwort in \u002Fetc\u002Fgshadow",[10,22328,22208],{"id":22329},"groups-alice",[14,22331,22332],{},"alice : alice adm sudo entwickler docker",[10,22334,22336],{"id":22335},"primäre-gruppe","^^^^^ primäre Gruppe",[10,22338,22340],{"id":22339},"sekundäre-gruppen","^^^^^^^^^^^^^^^^^^^^^^^^^ sekundäre Gruppen",[10,22342,22344],{"id":22343},"etcgshadow","\u002Fetc\u002Fgshadow",[14,22346,22347,22349,22350,22353,22354,22356,22357,22359],{},[17,22348,19],{}," Enthält verschlüsselte ",[17,22351,22352],{},"Gruppenpasswörter"," sowie Informationen zu Gruppenadministratoren. Nur ",[17,22355,1062],{}," und die Gruppe ",[17,22358,21469],{}," können diese Datei lesen.",[14,22361,22362,26,22364],{},[17,22363,21475],{},[17,22365,22366],{},"-rw-r----- 1 root shadow",[14,22368,22369],{},[17,22370,21999],{},[14,22372,22373],{},"gruppenname:passwort-hash:administratoren:mitglieder",[38,22375,21493],{"id":22376},"feldübersicht-2",[43,22378,22379,22395],{},[46,22380,22381],{},[49,22382,22383,22387,22391],{},[52,22384,22385],{},[17,22386,21504],{},[52,22388,22389],{},[17,22390,3052],{},[52,22392,22393],{},[17,22394,21513],{},[63,22396,22397,22406,22415,22425],{},[49,22398,22399,22401,22403],{},[68,22400,1617],{},[68,22402,22032],{},[68,22404,22405],{},"Name der Gruppe (muss mit \u002Fetc\u002Fgroup übereinstimmen)",[49,22407,22408,22410,22412],{},[68,22409,1600],{},[68,22411,21532],{},[68,22413,22414],{},"Gehashtes Gruppenpasswort. ! \u002F !! = kein Passwort \u002F gesperrt; leer = kein Passwort",[49,22416,22417,22419,22422],{},[68,22418,1713],{},[68,22420,22421],{},"administratoren",[68,22423,22424],{},"Kommagetrennte Liste von Gruppenadmins – können Mitglieder hinzufügen\u002Fentfernen ohne root zu sein",[49,22426,22427,22429,22431],{},[68,22428,1583],{},[68,22430,22062],{},[68,22432,22433],{},"Kommagetrennte Liste der Mitglieder (spiegelt \u002Fetc\u002Fgroup Feld 4)",[38,22435,22437],{"id":22436},"gruppenpasswort-wofür","Gruppenpasswort – Wofür?",[14,22439,22440,22441,22444,22445,22448],{},"Gruppenpasswörter erlauben es einem Benutzer, der ",[17,22442,22443],{},"nicht Mitglied"," einer Gruppe ist, mittels ",[17,22446,22447],{},"newgrp \u003Cgruppe>"," temporär die Gruppe zu wechseln – wenn er das Gruppenpasswort kennt.",[10,22450,22452],{"id":22451},"gruppenpasswort-setzen","Gruppenpasswort setzen",[14,22454,22455],{},"sudo gpasswd entwickler",[10,22457,22459],{"id":22458},"nicht-mitglied-kann-beitreten-wenn-er-das-passwort-kennt","Nicht-Mitglied kann beitreten wenn er das Passwort kennt",[14,22461,22462],{},"newgrp entwickler",[10,22464,22465],{"id":22042},"Passwort:",[38,22467,22469],{"id":22468},"vollständiger-beispielinhalt","Vollständiger Beispielinhalt",[14,22471,22472],{},"root:::",[14,22474,22475],{},"daemon:::",[14,22477,22478],{},"sudo:!:root:matta,alice",[14,22480,22481],{},"entwickler:$6$AbcDef...:alice:alice,bob,charlie",[10,22483,22485],{"id":22484},"normale-mitglieder","| | +-- normale Mitglieder",[10,22487,22489],{"id":22488},"alice-ist-gruppenadmin","| +-- alice ist Gruppenadmin",[10,22491,22493],{"id":22492},"gehashtes-gruppenpasswort","+-- gehashtes Gruppenpasswort",[14,22495,22496],{},"webteam:!!::bob,diana",[10,22498,22500],{"id":22499},"kein-passwort-gesperrt","^^-- kein Passwort + gesperrt",[38,22502,21827],{"id":22503},"nützliche-befehle-2",[10,22505,21831],{"id":22506},"anzeigen-nur-als-root-1",[205,22508,22510],{"className":207,"code":22509,"language":209,"meta":210,"style":210},"sudo cat \u002Fetc\u002Fgshadow\n\n",[212,22511,22512],{"__ignoreMap":210},[31,22513,22514,22516,22518],{"class":216,"line":217},[31,22515,419],{"class":220},[31,22517,12578],{"class":332},[31,22519,22520],{"class":332}," \u002Fetc\u002Fgshadow\n",[10,22522,22524],{"id":22523},"einzelnen-eintrag-abfragen","Einzelnen Eintrag abfragen",[14,22526,22527],{},"sudo getent gshadow entwickler",[10,22529,22452],{"id":22530},"gruppenpasswort-setzen-1",[14,22532,22455],{},[10,22534,22536],{"id":22535},"gruppenpasswort-entfernen-jeder-kann-beitreten","Gruppenpasswort entfernen (jeder kann beitreten)",[14,22538,22539],{},"sudo gpasswd -r entwickler",[10,22541,22543],{"id":22542},"gruppenadmin-hinzufügen","Gruppenadmin hinzufügen",[14,22545,22546],{},"sudo gpasswd -A alice entwickler",[10,22548,22550],{"id":22549},"mitglied-hinzufügen-als-gruppenadmin-oder-root","Mitglied hinzufügen (als Gruppenadmin oder root)",[14,22552,22553],{},"sudo gpasswd -a bob entwickler",[10,22555,22557],{"id":22556},"mitglied-entfernen","Mitglied entfernen",[14,22559,22560],{},"sudo gpasswd -d charlie entwickler",[10,22562,22564],{"id":22563},"mitglieder-komplett-ersetzen","Mitglieder komplett ersetzen",[14,22566,22567],{},"sudo gpasswd -M alice,bob entwickler",[10,22569,22571],{"id":22570},"als-gruppenadmin-die-gruppe-temporär-wechseln","Als Gruppenadmin die Gruppe temporär wechseln",[14,22573,22462],{},[38,22575,350],{"id":22576},"ausgabe-22",[10,22578,22527],{"id":22579},"sudo-getent-gshadow-entwickler",[14,22581,22481],{},[10,22583,22584],{"id":22062},"| | +-- Mitglieder",[10,22586,22588],{"id":22587},"admin-alice","| +-- Admin: alice",[10,22590,22592],{"id":22591},"hash-des-gruppenpassworts","+-- Hash des Gruppenpassworts",[10,22594,22596],{"id":22595},"sudo-gpasswd-a-diana-entwickler","sudo gpasswd -a diana entwickler",[14,22598,22599],{},"Benutzer diana wurde zur Gruppe entwickler hinzugefügt.",[10,22601,22603],{"id":22602},"schnellreferenz-berechtigungen","Schnellreferenz: Berechtigungen",[38,22605,22607],{"id":22606},"vollständige-oktal-tabelle","Vollständige Oktal-Tabelle",[43,22609,22610,22626],{},[46,22611,22612],{},[49,22613,22614,22618,22622],{},[52,22615,22616],{},[17,22617,1560],{},[52,22619,22620],{},[17,22621,1647],{},[52,22623,22624],{},[17,22625,21513],{},[63,22627,22628,22636,22645,22656,22665,22674,22683,22691,22700,22711,22722,22733,22744,22755,22766],{},[49,22629,22630,22632,22634],{},[68,22631,2018],{},[68,22633,2021],{},[68,22635,2024],{},[49,22637,22638,22640,22642],{},[68,22639,1974],{},[68,22641,1977],{},[68,22643,22644],{},"Standard für Verzeichnisse und Skripte",[49,22646,22647,22650,22653],{},[68,22648,22649],{},"750",[68,22651,22652],{},"rwxr-x---",[68,22654,22655],{},"Gruppe kann lesen, Andere nichts",[49,22657,22658,22660,22662],{},[68,22659,1996],{},[68,22661,1999],{},[68,22663,22664],{},"Nur Eigentümer darf alles",[49,22666,22667,22669,22671],{},[68,22668,2007],{},[68,22670,2010],{},[68,22672,22673],{},"Kollaborativer Dateizugriff",[49,22675,22676,22678,22680],{},[68,22677,1963],{},[68,22679,1966],{},[68,22681,22682],{},"Standard für Dateien",[49,22684,22685,22687,22689],{},[68,22686,2029],{},[68,22688,2032],{},[68,22690,2035],{},[49,22692,22693,22695,22697],{},[68,22694,1985],{},[68,22696,1988],{},[68,22698,22699],{},"Private Schlüssel (z.B. ~\u002F.ssh\u002Fid_rsa)",[49,22701,22702,22705,22708],{},[68,22703,22704],{},"444",[68,22706,22707],{},"r--r--r--",[68,22709,22710],{},"Nur-Lesen für alle",[49,22712,22713,22716,22719],{},[68,22714,22715],{},"400",[68,22717,22718],{},"r--------",[68,22720,22721],{},"Nur Eigentümer kann lesen",[49,22723,22724,22727,22730],{},[68,22725,22726],{},"4755",[68,22728,22729],{},"rwsr-xr-x",[68,22731,22732],{},"SUID gesetzt",[49,22734,22735,22738,22741],{},[68,22736,22737],{},"4750",[68,22739,22740],{},"rwsr-x---",[68,22742,22743],{},"SUID + Gruppe kann ausführen",[49,22745,22746,22749,22752],{},[68,22747,22748],{},"2775",[68,22750,22751],{},"rwxrwsr-x",[68,22753,22754],{},"SGID auf Verzeichnis (Gruppe vererbt sich)",[49,22756,22757,22760,22763],{},[68,22758,22759],{},"1777",[68,22761,22762],{},"rwxrwxrwt",[68,22764,22765],{},"Sticky Bit (wie \u002Ftmp)",[49,22767,22768,22771,22774],{},[68,22769,22770],{},"1755",[68,22772,22773],{},"rwxr-xr-t",[68,22775,22776],{},"Sticky Bit + normaler Zugriff",[38,22778,22780],{"id":22779},"rechte-struktur","Rechte-Struktur",[14,22782,22783],{},"Typ Eigentümer Gruppe Andere",[2365,22785,22786],{},[2368,22787,22788,22789,22791],{},"r w x r w x r w x",[584,22790],{},"\n4 2 1 4 2 1 4 2 1",[2355,22793,22795],{"id":22794},"dateitypen-in-ls-l","Dateitypen in ls -l",[43,22797,22798,22810],{},[46,22799,22800],{},[49,22801,22802,22806],{},[52,22803,22804],{},[17,22805,1555],{},[52,22807,22808],{},[17,22809,10227],{},[63,22811,22812,22818,22825,22831,22838,22845,22852],{},[49,22813,22814,22816],{},[68,22815,1823],{},[68,22817,10237],{},[49,22819,22820,22822],{},[68,22821,7978],{},[68,22823,22824],{},"Verzeichnis (directory)",[49,22826,22827,22829],{},[68,22828,8109],{},[68,22830,10253],{},[49,22832,22833,22835],{},[68,22834,10171],{},[68,22836,22837],{},"Zeichengerät (character device)",[49,22839,22840,22842],{},[68,22841,10181],{},[68,22843,22844],{},"Blockgerät (block device)",[49,22846,22847,22849],{},[68,22848,14],{},[68,22850,22851],{},"Named Pipe (FIFO)",[49,22853,22854,22856],{},[68,22855,1867],{},[68,22857,22858],{},"Unix-Socket",[38,22860,22862],{"id":22861},"spezialbit-anzeige-in-ls-l","Spezialbit-Anzeige in ls -l",[43,22864,22865,22888],{},[46,22866,22867],{},[49,22868,22869,22874,22879,22884],{},[52,22870,22871],{},[17,22872,22873],{},"Position",[52,22875,22876],{},[17,22877,22878],{},"Gesetzt + x",[52,22880,22881],{},[17,22882,22883],{},"Gesetzt, kein x",[52,22885,22886],{},[17,22887,3047],{},[63,22889,22890,22901,22912],{},[49,22891,22892,22895,22897,22899],{},[68,22893,22894],{},"Eigentümer-x",[68,22896,1867],{},[68,22898,2411],{},[68,22900,2345],{},[49,22902,22903,22906,22908,22910],{},[68,22904,22905],{},"Gruppen-x",[68,22907,1867],{},[68,22909,2411],{},[68,22911,2348],{},[49,22913,22914,22917,22919,22921],{},[68,22915,22916],{},"Andere-x",[68,22918,1875],{},[68,22920,2870],{},[68,22922,3113],{},[38,22924,22926],{"id":22925},"wichtige-systemdateien-und-ihre-rechte","Wichtige Systemdateien und ihre Rechte",[43,22928,22929,22953],{},[46,22930,22931],{},[49,22932,22933,22938,22943,22948],{},[52,22934,22935],{},[17,22936,22937],{},"Datei",[52,22939,22940],{},[17,22941,22942],{},"Rechte",[52,22944,22945],{},[17,22946,22947],{},"Eigentümer",[52,22949,22950],{},[17,22951,22952],{},"Warum",[63,22954,22955,22967,22979,22989,22999,23011,23024,23035,23046,23056],{},[49,22956,22957,22959,22961,22964],{},[68,22958,6723],{},[68,22960,1963],{},[68,22962,22963],{},"root:root",[68,22965,22966],{},"Jeder kann lesen",[49,22968,22969,22971,22973,22976],{},[68,22970,2387],{},[68,22972,2029],{},[68,22974,22975],{},"root:shadow",[68,22977,22978],{},"Nur root\u002Fshadow",[49,22980,22981,22983,22985,22987],{},[68,22982,22164],{},[68,22984,1963],{},[68,22986,22963],{},[68,22988,22966],{},[49,22990,22991,22993,22995,22997],{},[68,22992,22344],{},[68,22994,2029],{},[68,22996,22975],{},[68,22998,22978],{},[49,23000,23001,23004,23007,23009],{},[68,23002,23003],{},"\u002Fetc\u002Fsudoers",[68,23005,23006],{},"440",[68,23008,22963],{},[68,23010,1708],{},[49,23012,23013,23016,23018,23021],{},[68,23014,23015],{},"~\u002F.ssh\u002F",[68,23017,1996],{},[68,23019,23020],{},"user:user",[68,23022,23023],{},"Nur Eigentümer",[49,23025,23026,23029,23031,23033],{},[68,23027,23028],{},"~\u002F.ssh\u002Fid_rsa",[68,23030,1985],{},[68,23032,23020],{},[68,23034,23023],{},[49,23036,23037,23040,23042,23044],{},[68,23038,23039],{},"~\u002F.ssh\u002Fauthorized_keys",[68,23041,1985],{},[68,23043,23020],{},[68,23045,23023],{},[49,23047,23048,23050,23052,23054],{},[68,23049,2849],{},[68,23051,22759],{},[68,23053,22963],{},[68,23055,2352],{},[49,23057,23058,23060,23062,23064],{},[68,23059,2380],{},[68,23061,22726],{},[68,23063,22963],{},[68,23065,2345],{},[38,23067,23069],{"id":23068},"umask-berechnung","umask-Berechnung",[38,23071,23073,23074,23076],{"id":23072},"neue-datei-666minus-umask-022","Neue Datei: 666",[584,23075],{},"\nminus umask: -022",[14,23078,23079],{},"Ergebnis: 644 (rw-r--r--)",[38,23081,23083,23084,23076],{"id":23082},"neues-verzeichnis-777minus-umask-022","Neues Verzeichnis: 777",[584,23085],{},[14,23087,23088],{},"Ergebnis: 755 (rwxr-xr-x)",[23090,23091,23092],"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 .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":210,"searchDepth":227,"depth":227,"links":23094},[23095,23096,23097,23098,23099,23100,23101,23102,23103,23104,23105,23106,23107,23108,23109,23110,23111,23112,23113,23114,23115,23122,23123,23124,23125,23126,23127,23128,23129,23130,23131,23132,23133,23134,23135,23143,23144,23145,23146,23147,23148,23149,23150,23151,23152,23153,23154,23155,23156,23157,23158,23159,23160,23161,23162,23163,23164,23165,23166,23167,23168,23169,23170,23171,23172,23173,23174,23175,23176,23177,23178,23179,23180,23181,23182,23183,23184,23185,23186,23187,23188,23189,23190,23191,23192,23193,23194,23195,23200,23201,23202,23203,23204,23205,23206,23207,23208,23209,23210,23211,23212,23213,23214,23215,23216,23217,23218,23219,23220,23221,23222,23223,23224,23225,23226,23227,23228,23229,23230,23231,23232,23235,23236,23237,23238,23240],{"id":40,"depth":227,"text":41},{"id":100,"depth":227,"text":101},{"id":192,"depth":227,"text":193},{"id":349,"depth":227,"text":350},{"id":571,"depth":227,"text":572},{"id":608,"depth":227,"text":101},{"id":643,"depth":227,"text":644},{"id":730,"depth":227,"text":193},{"id":899,"depth":227,"text":350},{"id":1082,"depth":227,"text":1083},{"id":1147,"depth":227,"text":101},{"id":1238,"depth":227,"text":193},{"id":1460,"depth":227,"text":350},{"id":1538,"depth":227,"text":1539},{"id":1626,"depth":227,"text":1627},{"id":1764,"depth":227,"text":1765},{"id":1881,"depth":227,"text":101},{"id":1936,"depth":227,"text":1937},{"id":2038,"depth":227,"text":193},{"id":2302,"depth":227,"text":350},{"id":2333,"depth":227,"text":2334,"children":23116},[23117,23118,23119,23120,23121],{"id":2357,"depth":234,"text":2358},{"id":2596,"depth":234,"text":2597},{"id":2825,"depth":234,"text":2826},{"id":3035,"depth":234,"text":3036},{"id":3129,"depth":234,"text":3130},{"id":3266,"depth":227,"text":101},{"id":3360,"depth":227,"text":193},{"id":3628,"depth":227,"text":350},{"id":3788,"depth":227,"text":101},{"id":3854,"depth":227,"text":193},{"id":4092,"depth":227,"text":350},{"id":4177,"depth":227,"text":101},{"id":4271,"depth":227,"text":193},{"id":4544,"depth":227,"text":350},{"id":4651,"depth":227,"text":101},{"id":4914,"depth":227,"text":4915},{"id":5034,"depth":227,"text":193},{"id":5465,"depth":227,"text":350},{"id":5570,"depth":227,"text":5571,"children":23136},[23137,23138,23139,23140,23141,23142],{"id":5574,"depth":234,"text":5575},{"id":5666,"depth":234,"text":5667},{"id":5777,"depth":234,"text":5778},{"id":5869,"depth":234,"text":5870},{"id":5921,"depth":234,"text":5922},{"id":5997,"depth":234,"text":5998},{"id":6049,"depth":227,"text":193},{"id":6671,"depth":227,"text":350},{"id":6790,"depth":227,"text":6791},{"id":6891,"depth":227,"text":101},{"id":7004,"depth":227,"text":7005},{"id":7138,"depth":227,"text":7139},{"id":7225,"depth":227,"text":7226},{"id":7336,"depth":227,"text":7337},{"id":7340,"depth":227,"text":193},{"id":7759,"depth":227,"text":350},{"id":7824,"depth":227,"text":7825},{"id":7947,"depth":227,"text":7948},{"id":8162,"depth":227,"text":8163},{"id":8224,"depth":227,"text":8225},{"id":8315,"depth":227,"text":8316},{"id":8440,"depth":227,"text":193},{"id":9806,"depth":227,"text":350},{"id":9889,"depth":227,"text":101},{"id":10091,"depth":227,"text":10092},{"id":10210,"depth":227,"text":10211},{"id":10296,"depth":227,"text":193},{"id":10628,"depth":227,"text":350},{"id":10703,"depth":227,"text":101},{"id":10793,"depth":227,"text":193},{"id":11000,"depth":227,"text":350},{"id":11046,"depth":227,"text":101},{"id":11285,"depth":227,"text":193},{"id":11632,"depth":227,"text":350},{"id":11739,"depth":227,"text":101},{"id":11905,"depth":227,"text":193},{"id":12257,"depth":227,"text":350},{"id":12375,"depth":227,"text":101},{"id":12416,"depth":227,"text":193},{"id":12584,"depth":227,"text":350},{"id":12655,"depth":227,"text":101},{"id":12926,"depth":227,"text":193},{"id":13144,"depth":227,"text":350},{"id":13335,"depth":227,"text":13336},{"id":13525,"depth":227,"text":13526},{"id":13598,"depth":227,"text":13599},{"id":13791,"depth":227,"text":193},{"id":14196,"depth":227,"text":350},{"id":14314,"depth":227,"text":14315},{"id":14559,"depth":227,"text":14560},{"id":14586,"depth":227,"text":14587},{"id":15045,"depth":227,"text":15046},{"id":15108,"depth":227,"text":193},{"id":15633,"depth":227,"text":350},{"id":15716,"depth":227,"text":15717},{"id":15780,"depth":227,"text":193},{"id":16577,"depth":227,"text":350},{"id":16642,"depth":227,"text":16643},{"id":16719,"depth":227,"text":16720,"children":23196},[23197,23198,23199],{"id":16723,"depth":234,"text":16724},{"id":16840,"depth":234,"text":16673},{"id":16987,"depth":234,"text":16988},{"id":17087,"depth":227,"text":17088},{"id":17280,"depth":227,"text":17281},{"id":17857,"depth":227,"text":193},{"id":18206,"depth":227,"text":18207},{"id":18421,"depth":227,"text":18422},{"id":18544,"depth":227,"text":18545},{"id":18602,"depth":227,"text":18603},{"id":18670,"depth":227,"text":18671},{"id":18733,"depth":227,"text":18734},{"id":18807,"depth":227,"text":18808},{"id":20381,"depth":227,"text":20382},{"id":20434,"depth":227,"text":20435},{"id":20478,"depth":227,"text":20479},{"id":20625,"depth":227,"text":20626},{"id":21429,"depth":227,"text":350},{"id":21492,"depth":227,"text":21493},{"id":21609,"depth":227,"text":21610},{"id":21739,"depth":227,"text":21740},{"id":21761,"depth":227,"text":21762},{"id":21826,"depth":227,"text":21827},{"id":22005,"depth":227,"text":21493},{"id":22068,"depth":227,"text":22069},{"id":22119,"depth":227,"text":22120},{"id":22150,"depth":227,"text":22151},{"id":22178,"depth":227,"text":21827},{"id":22309,"depth":227,"text":350},{"id":22376,"depth":227,"text":21493},{"id":22436,"depth":227,"text":22437},{"id":22468,"depth":227,"text":22469},{"id":22503,"depth":227,"text":21827},{"id":22576,"depth":227,"text":350},{"id":22606,"depth":227,"text":22607},{"id":22779,"depth":227,"text":22780,"children":23233},[23234],{"id":22794,"depth":234,"text":22795},{"id":22861,"depth":227,"text":22862},{"id":22925,"depth":227,"text":22926},{"id":23068,"depth":227,"text":23069},{"id":23072,"depth":227,"text":23239},"Neue Datei: 666\nminus umask: -022",{"id":23082,"depth":227,"text":23241},"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.","md",{},{"title":5},"\u002Ffaecher\u002Fbsa\u002Fap-cs","\u002Fdownloads\u002FBSA\u002FBSA_CS_AP.pdf","Abschlussprüfung",{"title":5,"description":23243},"faecher\u002Fbsa\u002Fap-cs","BSA","Betriebssysteme und Administration","CS","Cheat-Sheet","rFDzXMIoGjN86_jOnsHvVNZUbvuF2nIkZ3hidFDvVmY",1778676319962]