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

Download

   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 

New Attachment

File to upload
Rename to
Overwrite existing attachment of same name
Rock, paper, scissors: make your choice:

Attached Files

To refer to attachments on a page, use attachment:filename, as shown below in the list of files. Do NOT use the URL of the [get] link, since this is subject to change and can break easily.
  • [get | view] (2020-01-01 19:42:40, 580.1 KB) [[attachment:my-way-to-shell.pdf]]
  • [get | view] (2020-01-01 19:43:38, 16.9 KB) [[attachment:my-way-to-shell.tex]]
  • [get | view] (2020-01-01 19:36:25, 1.9 KB) [[attachment:way-to-shell-Adventskalender.sh]]
  • [get | view] (2020-01-01 19:41:17, 2.8 KB) [[attachment:way-to-shell-when-congress.sh]]
 All files | Selected Files: delete move to page