Dateianhang 'my-way-to-shell.tex'

Herunterladen

   1 \documentclass[xcolor,graphicx,handout]{beamer}
   2 
   3 \usepackage[ngerman]{babel}
   4 \usepackage[utf8]{inputenc}
   5 %\usepackage{graphicx}
   6 \usepackage{tipa}
   7 
   8 \usetheme{Marburg}
   9 \usecolortheme{albatross}
  10 
  11 \setbeamertemplate{navigation symbols}{}
  12 \setbeamertemplate{footer}{\insertslidenumber}
  13 \setbeamertemplate{itemize items}[triangle] 
  14 
  15 \setbeamertemplate{page number in head/foot}[totalframenumber]
  16 
  17 \begin{document}
  18 
  19 \setbeamercolor{author}{fg=black}
  20 \setbeamercolor{institute}{fg=green}
  21 \setbeamercolor{date}{fg=black}
  22 \setbeamercolor{title}{fg=black}
  23 \setbeamercolor{subtitle}{fg=blue}
  24 
  25 \title[My Way to (S)HELL]{A Way to HELL}
  26 \subtitle{Einführung in die Programmierung mit bash}
  27 
  28 \author{Bücherratten}
  29 \institute{LinuxWorks!}
  30 \date{19.12.2019}
  31 
  32 {
  33 \usebackgroundtemplate{\includegraphics[height=\paperheight]{/home/ratten/igitt/doku/Vortrag/bash-Vortrag/bash-on-fire.png}}
  34 
  35 \begin{frame}
  36 \maketitle
  37 \end{frame}
  38 
  39 \title{MY Way to (S)HELL}
  40 \subtitle{Einführung in die Programmierung mit bash}
  41 
  42 \author{Bücherratten}
  43 \institute{LinuxWorks!}
  44 \date{19.12.2019}
  45 
  46 \begin{frame}
  47 \maketitle
  48 \end{frame}
  49 }
  50 \section{RTFM}
  51 \begin{frame}
  52   \frametitle{lese das Handbuch}
  53   \framesubtitle{rtfm}
  54   \Huge{man man
  55     \pause
  56     \\ man bash\\
  57     \pause
  58     apropos\\}  
  59   \pause
  60   \normalsize
  61 \textcolor{red}{Disklaimer: Dieser Vortrag hat keinen Anspruch auf Vollständigkeit! Sondern Spaß!}
  62 \end{frame}
  63 
  64 \section{Liste}
  65 
  66 \begin{frame}
  67   \frametitle{Einkaufsliste}
  68   \framesubtitle{Was wird gebraucht?}
  69 
  70   \begin{itemize}
  71   \item{aktuelles Linux}
  72   \item{Terminal}
  73     \pause
  74     \item{Packages}
  75     \begin{itemize}
  76     \item{sl}
  77     \item{ascii-quarium (komplizierter, weil kein fertiges Package für Debian-basierende Systeme)}
  78     \item{cowsay}
  79     \item{figlet}
  80     \item{feh}
  81     \item{ssh}
  82     \item{script}
  83     \item{fortune}
  84     \end{itemize}
  85   \end{itemize}    
  86 \end{frame}
  87 
  88 \section{Bash-Exkurse}
  89 \begin{frame}[shrink]
  90   \frametitle{bash}
  91   \framesubtitle{Unser Werkzeugkasten}
  92   \large{kleiner Exkurs zur Bash}
  93   \normalsize{
  94   \begin{itemize}
  95   \item{erster Release war 1989}
  96   \item{name ist ein Akkronym für Bourne-Again Shell}
  97   \item{ist der Ersatz für die Bourne Shell}
  98   \item{Steht unter GPLv3 (bei macOS wurde deswegen auf zsh umgestellt)}
  99     \pause
 100   \item{es ist nicht die einzige Shell unter Unix-Systemen (es gibt sehr viel mehr), aber Default}
 101   \item{Die Shell ist eine der Schnittstelle zwischen Benutzer und Betriebssystem}
 102     \pause
 103   \item{es gibt ziemlich viel Unterstützung für die einzelnen Befehle}
 104   \item{sehr mächtig, (kann fast alles, bis auf kaffee kochen)}
 105   \item{Erreichbarkeit: mit dem Shortcut: ALT STRG F1 oder ihr nutzt das pseudo-terminal eurer Wahl}
 106      \pause
 107    \item{was wir nicht machen können - aus Zeitlichen Gründen}
 108      \begin{itemize}
 109      \item{mit Farben spielen} 
 110      \item{Ostereier auch Eastereggs genannt suchen}
 111      \item{SubShells in der SubShell}
 112      \end{itemize}
 113   \end{itemize}}        
 114 \end{frame}
 115 
 116 \section{step by step}
 117 
 118 \begin{frame}
 119   \frametitle{Wer brauch schon Erklährungen im Code?}
 120   \framesubtitle{Kommentare}
 121 
 122   \#Niemand hat die Absicht, Hash-Tags als Kommentar zu missbrauchen \\
 123   \pause
 124   \#Die Kommentare waren zu erst da!
 125 \end{frame}
 126 
 127 \section{Pipe}
 128 \begin{frame}[fragile]
 129   \frametitle{Auf der Leitung stehen}
 130   \framesubtitle{Was ist eine Pipe?}
 131   \begin{itemize}
 132   \item{Die Ausgabe eines Befehls an einen anderen weiter geben}
 133     \pause
 134   \item{\Huge{\textpipe}}
 135   \end{itemize}
 136   \pause
 137 \begin{verbatim}
 138     fortune | cowsay
 139 \end{verbatim}  
 140 \end{frame}
 141 
 142 \section{Kisten packen}
 143 
 144 \begin{frame}[fragile]
 145   \frametitle{Das Kurz-Zeit-Gedächnis}
 146   \framesubtitle{Kisten, für alles und nicht's}
 147   \large{Was sind Variablen?}
 148   \normalsize{
 149   \begin{itemize}
 150   \item{denk dir ein Wort oder Buchstaben aus, der kein Shell-Befehl ist}
 151     \pause
 152   \item{weise diesem Wort oder Buchstaben etwas zu}
 153     \pause
 154     \item{Es muss kein Datentyp deklariert werden}
 155   \end{itemize}
 156   \pause
 157 \begin{verbatim}
 158     var=10
 159     Name=HeyDu
 160     cmd=$(figlet -tf block Immer diese Menschen)
 161 \end{verbatim}
 162   \pause
 163   Das ganze wird mit
 164 \begin{verbatim}
 165     $Variabelnname
 166 \end{verbatim}
 167   benutzt.}
 168 \end{frame}
 169 
 170 \begin{frame}[fragile]
 171   \frametitle{Das Kurz-Zeit-Gedächnis}
 172   \framesubtitle{Kisten, für alles und nicht's}
 173   
 174   \large{Was sind Arrays?}\\
 175   \normalsize{
 176     eine Box für mehrere Werte, mit indexiertem Inhaltsverzeichnis
 177     \pause
 178 \begin{verbatim}
 179    declare -a wort
 180    wort=(hier steht irgendwas drin)
 181    echo $wort
 182    #mit index
 183    echo ${wort[2]}
 184    #gesamtes Array
 185    echo ${wort[*]}
 186    echo ${wort[@]}
 187 \end{verbatim}
 188     \pause
 189     \small{
 190       hint: Der Unterschied zwischen * und @ ist das newline beim @ (wird beim looping fliegen relevant)
 191     }
 192   }
 193 \end{frame}
 194 
 195 \section{Zwischen-Prüfung}
 196 
 197 \begin{frame}[fragile]
 198   \frametitle{Das Leben besteht aus Prüfungen}
 199   \framesubtitle{diese verdammt Logik und ihre Tests}
 200   \large{Wofür macht man Tests?}
 201   \pause
 202   \normalsize{
 203   \begin{itemize}
 204   \item{ich will wissen, ob etwas richtig ist}
 205   \item{ich will abhänig vom Wert einer Variable etwas tun}
 206   \item{ich will etwas nicht tun wenn...}
 207   \end{itemize}
 208   \pause
 209 \begin{verbatim}
 210     var=11
 211     test $var == "10"
 212     echo $?
 213 \end{verbatim}
 214   \pause
 215   \begin{description}
 216   \item[var=11] setz die Variable var auf 11
 217   \item[test \$var == ''10''] prüf mal ob in der Variable 10 steht
 218   \item[echo \$?] was ist das ergebnis des letzten Befehls?
 219   \end{description}
 220   }
 221 \end{frame}
 222 
 223 \section{Logisch}
 224 
 225 \begin{frame}[fragile]
 226   \frametitle{Das Leben besteht aus Prüfungen}
 227   \framesubtitle{diese verdammt Logik und ihre Tests}
 228   \large{Logik}
 229   \pause
 230   \normalsize{
 231   \begin{description}
 232   \item[UND] Prüfen ob alles Tests wahr sind
 233 \begin{verbatim}
 234       i="Du"
 235       j="Hallo"
 236       test $i == "Du" && \
 237       test $j == "Hallo"
 238       echo $?
 239 \end{verbatim}
 240     \pause
 241   \item[ODER] Prüfen, ob ein Test von mehreren wahr ist
 242 \begin{verbatim}
 243       i="Name"
 244       j="Hallo"
 245       test $i == "1x" ||\
 246       test $j == "Hallo"
 247       echo $?
 248 \end{verbatim}
 249     \pause
 250   \item[nicht] Prüfen, ob ein Test falsch ist
 251 \begin{verbatim}
 252      i="Falsch ist falsch"
 253      test $i != "richtig"
 254      echo $?
 255 \end{verbatim}
 256   \end{description}
 257   \pause
 258   Das ganz kann belibig verknüpft werden - Also viel Spaß
 259   }
 260 \end{frame}
 261 
 262 \section{Wenn...}
 263 \begin{frame}[fragile]
 264   \frametitle{Wenn Du nicht sofort tust was ich sage, Dann ...}
 265   \framesubtitle{Verzweigungen}
 266   \large{if}\\
 267   \normalsize{
 268     Wenn, prüfe ob das wahr ist, dann...
 269     \pause
 270 \begin{verbatim}
 271       if test $var == "10"; then figlet "Das\
 272       ist wahr"; fi
 273 
 274       if [[ $var == "10" ]] ; then echo "Das\
 275       ist echt wahr"; figlet "knapp vorbei \
 276       ist auch daneben";fi
 277 \end{verbatim}
 278     \pause
 279     \begin{description}
 280     \item[= vs ==] ist egal, solange darum leerzeichen verwendet werden
 281       \pause
 282     \item[else] muss nicht unbedingt verwendet werden
 283       \pause
 284     \item[mehrfach] verschachtelungen gehen auch
 285     \end{description}
 286     \large ifelse [[Bedingung]]
 287   }
 288 \end{frame}
 289 
 290 \section{Wenn...}
 291 
 292 \begin{frame}[fragile]
 293   \frametitle{Wenn Du nicht sofort tust was ich sage, Dann ...}
 294   \framesubtitle{Verzweigungen}
 295   Wenn die Verschachtelungen unübersichtlich werden:
 296 \begin{verbatim}
 297      case $var in
 298      10)
 299      cowsay -f tux "ich hab 10 gefunden"
 300      ;;
 301      11)
 302      cowsay -f tutle "ich hab 11 gefunden"
 303      ;;
 304      *)
 305      cowsay -f ghostbusters "ich hab irgendwas\
 306      gefunden"
 307      ;;
 308      esac
 309 \end{verbatim}  
 310 \end{frame}
 311 
 312 \section{Rechenmeister}
 313 
 314 \begin{frame}[fragile]
 315   \frametitle{Mathe und bash}
 316   \framesubtitle{Rechnen in der Shell}
 317   einfach auf der shell loslegen is zu einfach
 318   \pause
 319 \begin{verbatim}
 320 x=$(expr $var * $var)
 321 \end{verbatim}
 322 Weise der Variable x das Ergebnis der Berechnung aus var mal var zu.
 323 \end{frame}  
 324 
 325 \section{Test}
 326 
 327 \begin{frame}
 328   \frametitle{die Prüfung beginnt}
 329   \framesubtitle{das erste Script}
 330   ...and action in a shell
 331   \pause
 332   \begin{description}
 333   \item[cut] zerschneide etwas (-d) am Zeichen (-f) speichere Feld
 334   \item[echo] gib etwas aus (-e) erkenne Escape-Sequenzen
 335   \item[date] gib das Datum aus (+\%) Format
 336   \end{description}
 337 \end{frame}
 338 
 339 
 340 \section{Loopings}
 341 
 342 \begin{frame}[fragile]
 343   \frametitle{Schleifen binden und durch loopings fliegen}
 344   \framesubtitle{while}
 345 
 346   \large{solage etwas stimmt}\\
 347   \normalsize{
 348     mach etwas
 349 
 350 \begin{verbatim}
 351   while [[ $var -eq "10" ]]
 352   do
 353     fortune       
 354   done
 355 \end{verbatim}
 356   }
 357 \end{frame}
 358 
 359 \begin{frame}[fragile]
 360   \frametitle{Schleifen binden und durch loopings fliegen}
 361   \framesubtitle{until}
 362 
 363   \large{bis etwas stimmt}\\
 364   \normalsize{
 365     die Bedingung wird erst nach der ersten rund ein der Schliefe geprüft\\
 366     mach etwas
 367 \begin{verbatim}
 368    i=0
 369 
 370    until [[ $i -eq 10 ]]
 371    do
 372       ((i++))
 373       whereis brain?
 374    done
 375 \end{verbatim}
 376 }
 377 \end{frame}
 378 
 379 
 380 \begin{frame}[fragile]
 381   \frametitle{Schleifen binden und durch loopings fliegen}
 382   \framesubtitle{for}
 383 
 384   \large{bis etwas die Zahl n erreicht hat} \\
 385   \normalsize{
 386   mach etwas\\
 387   wird häufig für Arrays benutzt\\
 388   \pause
 389   dafür sind Inkrement (hoch zählen um 1) ((i++))\\
 390   und Dekrement (runter zählen um 1) ((i- -))\\
 391   hilfreich.
 392   \pause
 393 \begin{verbatim}
 394   declare -a blubb
 395 
 396   j=0
 397   blubb=(aber nun reicht es mir)
 398   for $i in ${blubb[@]}
 399   do
 400     ((j++))
 401     echo $i $j
 402   done
 403 \end{verbatim}
 404   }
 405 \end{frame}
 406 
 407 \section{Wenn Programmierer diskutieren}
 408 \begin{frame}[fragile,shrink]
 409   \frametitle{f(x)}
 410   \framesubtitle{Funktionen}
 411   \large{Teile und Herscher}
 412   \newline
 413   \normalsize{mit Funktionen können Code-Wiederholungen vermieden werden.}
 414   \pause
 415   \scriptsize{
 416 \begin{verbatim}
 417 #/bin/bash
 418 datumsfrage()
 419 {
 420   read -p "Welches Datum haben wir?" datVari
 421   if [[ $datVari -eq date ]]
 422   then
 423     figlet "stimmt"
 424   else
 425     echo "nee, stimmt nicht - nochmal"
 426     datumsfrage()
 427   fi
 428 }
 429 
 430 echo "ich frag mal nach dem Datum"
 431 datumsfrage()
 432 \end{verbatim}
 433   }
 434 \end{frame}
 435 
 436 
 437 \section{Advent Advent}
 438 \begin{frame}
 439   \frametitle{die zweite Prüfung}
 440   \framesubtitle{noch ein Script}
 441    ...and action in a shell\\
 442   \pause
 443   \begin{description}
 444   \item[sleep] bitte mal für \$n Sekunden einschlafen
 445   \item[read] frag mal den User (-p) die Frage (variabelnname) (-e) mit bash-complition
 446   \item[RANDOM] für die Zufallsberechnung (\%) bis
 447   \item[exit] breche hier mal und gib mir meine Shell zurück
 448   \end{description}
 449 \end{frame}
 450   
 451   
 452 \section{Rezepte erstellen}
 453 \begin{frame}[fragile]
 454   \frametitle{Schreibe ein Rezept}
 455   \framesubtitle{Not to Do}
 456 
 457   \large{Befehle zusammenpacken}
 458 \normalsize{
 459   \pause
 460   \begin{itemize}
 461   \item{Nimm den deinen lieblings-Texteditor}
 462     \pause
 463   \item{schreib deine Befehle in der Reihenfolge auf in der sie ausgeführt werden sollen}
 464     \pause
 465   \item{vergiss die Einrückungen von Code-Zeilen - das ist nur was für DAUs}
 466     \pause
 467   \item{speichere dein Werk unter einem Namen, aber auf keine Fall mit der Endung .~sh (es läßt sich auch ohne Datei-extention unter Linux ausführen)}
 468     \pause
 469   \item{teste auf keinen Fall, ob es funktioniert}
 470     \pause
 471   \item{ausführen und Spaß haben}
 472   \end{itemize}
 473 
 474   \pause
 475 \begin{verbatim}
 476 ./name    #sourcen ! es müssen Aufführrechte 
 477           #gesetzt sein
 478 bash name #bash führ das mal aus
 479 \end{verbatim}
 480 }
 481 \end{frame}
 482 
 483 
 484 \begin{frame}[fragile]
 485   \frametitle{bang!bang!bang!}
 486   \framesubtitle{Was macht das shebang?}
 487   \large{keinem die Script-sprache verraten}
 488   \newline
 489   \normalsize{
 490     \pause
 491     \begin{itemize}
 492     \item{Das shebang ist wichtig, wenn Irrtümer vermieden werden sollen}
 493     \item{Das Script nicht unbedingt mit der Scriptsprache vorne weg gestartet wird}
 494     \end{itemize}
 495     \pause
 496     Wie sieht das aus?
 497 \begin{verbatim}
 498 #!/bin/bash     
 499 \end{verbatim}
 500   }
 501 \end{frame}
 502 
 503 \section{The End of Talk}
 504 
 505 \begin{frame}
 506   \frametitle{Tipps und Tricks}
 507   \begin{description}
 508   \item[script] zeichnet auf, was in der shell passiert (inklusive der Typos)
 509   \item[scriptreplay] spielt wieder ab, was ihr auf gezeichnet habt, wenn ihr vorher eine timing-datei angelegt habt, dann in Echtzeit
 510   \item[bash -x] hilfreich fürs debugging von Scripten, weil es anzeigt, wie die Variabeln aufgelöst werden
 511   \end{description}
 512   
 513   \pause
 514   Bitte vergesst nicht Fehler einzubauen, das hat den Größten Lerneffekt  
 515 \end{frame}
 516 
 517 
 518 \begin{frame}
 519   \frametitle{Ende}
 520   \large{Vielen Dank fürs zuhören! \\ Habt ihr noch Fragen?}\hfill \break
 521   \normalsize{
 522     \colorbox{blue}{\textcolor{white}{Susanne (Bücherratten)}} \\
 523     \colorbox{blue}{\textcolor{white}{ratten@buecherratten.in-berlin.de}} \\
 524     \colorbox{blue}{\textcolor{white}{friendica:buecherratte@snarl.de}} \\
 525     \colorbox{blue}{\textcolor{white}{gpg:fingerprint:}} \\
 526     \colorbox{blue}{\textcolor{white}{0E42 3FA3 838E E7ED 5AA2}} \\
 527     \colorbox{blue}{\textcolor{white}{20E7 ACA3 EA4A C038 CCFD}} \\
 528   }
 529 \end{frame}
 530 
 531 %% #!/bin/bash
 532 
 533 %% #Answer to the question:
 534 %% # When is Congress?
 535 
 536 %% Tage=0
 537 
 538 %% Datum=$(date +%d-%m)
 539 %% #Datum=
 540 %% gruen="\e[32m"
 541 %% blau="\e[34m"
 542 %% rot="\033[1;31m" 
 543 %% nc="\033[0m"
 544 
 545 %% Tag=$(echo $Datum | cut -d'-' -f1)
 546 %% Monat=$(echo $Datum |cut -d'-' -f2)
 547 
 548 
 549 
 550 %% if [[ $Monat == 12 ]]
 551 %%    then
 552 
 553 %%        if [[ $Tag > 26 && $Tag < 30 ]]
 554 %%        then
 555 %% 	   echo "It's congress time"
 556 %% 	   echo -e $blau "visit congress or one of the Congress-Everywhere-stations"$nc
 557 %%        fi
 558        
 559 %%        if [[ $Tag -lt 26 ]]
 560 %%        then
 561 %% 	   Tage=$(expr 26 - $Tag)
 562 %% 	   echo -e $gruen "Es sind noch " $Tage " zum Congress, be prepaired"$nc 
 563 %%        elif [[ $Tag == 31 ]]
 564 %%        then
 565 %% 	   echo -e $rot "Congress is over :-( \n wish you a happy new Year" $nc
 566 %%        fi
 567 
 568 %%        if [[ $Tag == 24 ]]
 569 %%        then
 570 %% 	   echo "It's Chrissmess-Time"
 571 %%        fi
 572        
 573 %% fi
 574 
 575 %% case $Monat in
 576 
 577 %%     11)
 578 %% 	Tage=$(expr 30 - $Tag + 26)
 579 %% 	echo "Es sind noch " $Tage " zum Congress"
 580 %% 	;;
 581 %%     10)
 582 %% 	Tage=$(expr 61 - $Tag + 26)
 583 %% 	echo "Es sind noch " $Tage " zum Congress"
 584 %% 	;;
 585 %%     9)
 586 %% 	Tage=$(expr 91 - $Tag + 26)
 587 %% 	echo "Es sind noch " $Tage " zum Congress"
 588 %% 	;;
 589 %%     8)
 590 %% 	Tage=$(expr 122 - $Tag + 26)
 591 %% 	echo "Es sind noch " $Tage " zum Congress"
 592 %%     ;;
 593 %%     7)
 594 %% 	Tage=$(expr 153 - $Tag + 26)
 595 %% 	echo "Es sind noch " $Tage " zum Congress"
 596 %%     ;;
 597 %%     6)
 598 %% 	Tage=$(expr 183 - $Tag + 26)
 599 %% 	echo "Es sind noch " $Tage " zum Congress"
 600 %%     ;;
 601 %%     5)
 602 %% 	Tage=$(expr 214 - $Tag + 26)
 603 %% 	echo "Es sind noch " $Tage " zum Congress"
 604 %%     ;;
 605 %%     4)
 606 %% 	Tage=$(expr 244 - $Tag + 26)
 607 %% 	echo "Es sind noch " $Tage " zum Congress"
 608 %%     ;;
 609 %%     3)
 610 %% 	Tage=$(expr 275 - $Tag + 26)
 611 %% 	echo "Es sind noch " $Tage " zum Congress"
 612 %%     ;;
 613 %%     2)
 614 %% 	Schaltjahr=$(date --date='31 Dec' +%j)
 615 %% 	if [[ $Schaltjahr == 366 ]]
 616 %% 	then
 617 %% 	    Tage=$(expr 304 - $Tag + 26)
 618 %% 	    echo "Es sind noch " $Tage " zum Congress"
 619 %% 	else
 620 %% 	    Tage=$(expr 303 - $Tag + 26)
 621 %% 	    echo "Es sind noch " $Tage " zum Congress"
 622 %% 	fi
 623 %%     ;;
 624 %%     1)
 625 %% 	Schaltjahr=$(date --date='31 Dec' +%j)
 626 %% 	if [[ $Schaltjahr == 366 ]]
 627 %% 	then
 628 %% 	    Tage=$(expr 335 - $Tag + 26)
 629 %% 	    echo "Es sind noch " $Tage " zum Congress"
 630 %% 	else
 631 %% 	    Tage=$(expr 334 - $Tag + 26)
 632 %% 	    echo "Es sind noch " $Tage " zum Congress"
 633 %% 	fi
 634 %%     ;;
 635 	
 636 %% esac
 637 
 638 %% #!/bin/bash
 639 
 640 %% # Der Adventskalender für die Shell
 641 
 642 %% #array deklaration
 643 %% declare -a xmessup
 644 
 645 %% cccTime()
 646 %% {
 647 %%     xmessup=($ls congress/*)
 648     
 649 %%     while [[ $Tage != 0 ]]
 650 %%     do
 651 %% 	figlet -t waiting for Congress   
 652 %% 	echo "Es sind noch " $Tage " bis zum Congress"
 653 %% 	fortune
 654 %% 	zahl=$(expr $day / 2)
 655 %% 	if [[ $zahl < 2 ]]
 656 %% 	then
 657 %% 	    zahl=1
 658 %% 	fi		
 659 %% 	feh ${xmessup[$zahl]}
 660 %% 	break
 661 %%     done
 662 
 663 %%     if [[ $Tage == 0 ]]
 664 %%     then
 665 %% 	figlet -t "It's congress time"
 666 %% 	echo "make sure to have your ticket available or use the Congress-Everywhere-Stations of Congress"
 667 
 668 %% 	for i in $xmessup
 669 %% 	do
 670 %% 	    feh $i
 671 %% 	    sleep 5
 672 %% 	done
 673 	
 674 %% 	sleep 5
 675 %% 	figlet -tf block "Be exelent to each other"
 676 %% 	asciiquarium
 677 %% 	exit
 678 %%    fi
 679 %% }
 680 
 681 %% xmess()
 682 %% {
 683 %%     xmessup=($ls xmessup/*)
 684 %%     figlet -tf block Advent Advent
 685 %%     if [[ $Tage != 0 ]]
 686 %%     then
 687 %% 	random=$((RANDOM%17))
 688 %% 	if [[ random == 0 ]]
 689 %% 	then
 690 %% 	    fortune
 691 %% 	else
 692 %% 	    zahl=$(expr $day / 2)
 693 %% 	    if [[ $zahl < 2 ]]
 694 %% 	    then
 695 %% 		zahl=1
 696 %% 	    fi	
 697 %% 	feh ${xmessup[$zahl]}
 698 %% 	fi   
 699 %% 	cowsay -f tux "Have a nice Xmess-Time"
 700 %% 	exit
 701 %%     else
 702 %% 	figlet -tf block marry chrismess
 703 %% 	echo "hier is a shell-present for you:"
 704 %% 	ascciquarium
 705 %% 	exit
 706 %%     fi    
 707 %% }
 708 
 709 
 710 %% choose()
 711 %% {
 712 %%     read -p "Soll der Adventskalender bis Weihnachten (w) oder bis zum Congress (c) gehen? " Endpunkt
 713     
 714 %%     if [[ $Endpunkt == "w" ]]
 715 %%     then
 716 %% 	Tage=$(expr 24 - $day)
 717 %% 	xmess      
 718 %%     elif [[ $Endpunkt == "c" ]]
 719 %%     then
 720 %% 	Tage=$(expr 26 - $day)
 721 %% 	cccTime
 722 %%     else
 723 %% 	echo "Sorry, I dont understand your answer, please use >>w<< or >>c<< to answer"
 724 %% 	choose
 725 %%     fi
 726 %% }
 727 
 728 %% main()
 729 %% {
 730 %%     month=$(date +%m)
 731 %%     day=$(date +%d)
 732 %%     if [[ $month == 12 && $day < 27 ]]
 733 %%     then
 734 %% 	choose
 735 %%     else
 736 %% 	echo "This is only working in December and until 26th of December"
 737 %% 	exit
 738 %%    fi    
 739 %% }
 740 
 741 %% main
 742 
 743 
 744 
 745 
 746 \end{document}
 747 

Neuer Dateianhang

Neuer Dateianhang
Umbenennen auf
Anhänge gleichen Namens überschreiben
Stein, Schere, Papier: triff deine Wahl:

Gespeicherte Dateianhänge

Um Dateianhänge in eine Seite einzufügen sollte unbedingt eine Angabe wie attachment:dateiname benutzt werden, wie sie auch in der folgenden Liste der Dateien erscheint. Es sollte niemals die URL des Verweises ("laden") kopiert werden, da sich diese jederzeit ändern kann und damit der Verweis auf die Datei brechen würde.
  • [laden | anzeigen] (2020-01-01 19:42:40, 580.1 KB) [[attachment:my-way-to-shell.pdf]]
  • [laden | anzeigen] (2020-01-01 19:43:38, 16.9 KB) [[attachment:my-way-to-shell.tex]]
  • [laden | anzeigen] (2020-01-01 19:36:25, 1.9 KB) [[attachment:way-to-shell-Adventskalender.sh]]
  • [laden | anzeigen] (2020-01-01 19:41:17, 2.8 KB) [[attachment:way-to-shell-when-congress.sh]]
 Alle Dateien | Ausgewählte Dateien: löschen verschieben auf Seite