5 WIP
This commit is contained in:
248
5.html
248
5.html
@@ -61,7 +61,6 @@
|
||||
|
||||
<p>http://programmingexamples.wikidot.com/bash-scripting#toc24
|
||||
|
||||
<p>https://wiki.ubuntuusers.de/Shell/Bash-Skripting-Guide_für_Anfänger/#Quoting
|
||||
|
||||
<div>
|
||||
- script kontrolle ( strg-z etc )
|
||||
@@ -84,7 +83,9 @@ X=20 #variablen sind Case Sensitive
|
||||
$y= #NULL variable
|
||||
echo "x = $x"
|
||||
echo "X = $X"
|
||||
echo "y = $y"</code></pre>
|
||||
echo "y = $y"
|
||||
unset x #variable löschen
|
||||
echo $x</code></pre>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
@@ -105,58 +106,225 @@ echo $(( 2#101011 )) # Base conversion, not a comment.
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>Quotes</h3>
|
||||
|
||||
<ul>
|
||||
<li class="fragment ">Double Quotes: " " -Anything enclose in double quotes removed meaning of that characters (except \ and $).</li>
|
||||
<li class="fragment ">Single quotes: ' ' - Enclosed in single quotes remains unchanged.</li>
|
||||
<li class="fragment ">Back quote: ` ` - To execute command</li>
|
||||
<h3>Quoting</h3>
|
||||
<ul style="font-size: .8em ">
|
||||
<li class="fragment "><code>" "</code> (Anführungszeichen) Alles zwischen diesen Zeichen ist buchstabengetreu zu interpretieren. Ausnahmen :<code> $ ` " \ </code></li>
|
||||
<li class="fragment "><code>' ' </code>(Ticks) Alles zwischen diesen Zeichen wird wörtlich genommen, mit Ausnahme eines weiteren <code>'</code>.</li>
|
||||
<li class="fragment "><code>\</code> (Backslash) Das Zeichen nach einem <code>\</code> wird wörtlich genommen. Anwendung z. B. innerhalb von " ", um ", $ und ` zu entwerten.</li>
|
||||
<li class="fragment "><code>` `</code> (Backticks) Alles innerhalb wird als Kommando interpretiert.</li>
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<pre><code>$ echo 'Ticks "schützen" Anführungszeichen'
|
||||
Ticks "schützen" Anführungszeichen
|
||||
|
||||
$ echo "Ist dies ein \"Sonderfall\"?"
|
||||
Ist dies ein "Sonderfall"?
|
||||
|
||||
$ echo "Sie haben `ls | wc -l` Dateien in `pwd`"
|
||||
Sie haben 43 Dateien in /home/dany
|
||||
|
||||
$ echo "Der Wert von \$x ist $x"
|
||||
Der Wert von $x ist 100
|
||||
|
||||
# Maskierung der Leerstelle mit \
|
||||
message="hallo Welt"
|
||||
message=hello\ Welt
|
||||
</code></pre>
|
||||
</section>
|
||||
<section><pre><code>echo 'So sprach'"'"'s und ging ohne einen Backslash (\) weiter.'
|
||||
└────┬────┘└┬┘└─────────────────────┬─────────────────────┘
|
||||
│ │ │
|
||||
│ │ └ Dritter Bereich: Wieder
|
||||
│ │ von ' umschlossen, der
|
||||
│ │ Backlash verliert
|
||||
│ │ seine Sonderbedeutung.
|
||||
│ │
|
||||
│ └ Zweiter Bereich: Von " umschlossen, enthält ein
|
||||
│ einzelnes '.
|
||||
│
|
||||
└ Erster Bereich: Von ' umschlossen.</code></pre></section>
|
||||
|
||||
<section>
|
||||
<h3>Input - Output redirection</h3>
|
||||
|
||||
<ul>
|
||||
<li class="fragment "> > : output in Datei. Best. Datei wird überschrieben!</li>
|
||||
<li class="fragment "> >> : output an Datei anhängen.</li>
|
||||
<li class="fragment "> < : Kommando Input aus Datei lesen</li>
|
||||
</ul>
|
||||
<pre><code>#!/bin/bash
|
||||
echo "ls > file_list"
|
||||
# > : output in Datei. Best. Datei wird überschrieben!
|
||||
ls > file_list
|
||||
|
||||
echo "ls -la >> file_list"
|
||||
|
||||
# >> : output an Datei anhängen.
|
||||
ls -la >> file_list
|
||||
|
||||
echo "cat < file_list"
|
||||
# < : Kommando Input aus Datei lesen
|
||||
cat < file_list</code></pre>
|
||||
|
||||
|
||||
</section>
|
||||
<section>
|
||||
- arithmetik
|
||||
Man kann Kommandos auch verkettten:
|
||||
<table style="font-size: .5em">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td >Kommando1; Kommando2
|
||||
</td>
|
||||
<td >fühert die Kommandos hintereinander aus
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td >Kommando1 && Kommando2
|
||||
</td>
|
||||
<td >führt Kommando2 aus, wenn kommando1 erfolgreich war
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td >Kommando1 || Kommando2
|
||||
</td>
|
||||
<td >führt Kommando2 aus, wenn kommando1 NICHT erfolgreich war
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td >Kommado &
|
||||
</td>
|
||||
<td >Führt Kommando im Hintergrund aus
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td >Kommando1 & Kommando2
|
||||
</td>
|
||||
<td >startet Kommando1 im Hintergrund, Kommando2 im Vordergrund
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td >( Kommando1; Kommando2 )
|
||||
</td>
|
||||
<td >Führt die beiden K. nacheinander in einer Subshell aus
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
let "m = 4 * 1024";echo $m
|
||||
<pre class="fragment"><code>sudo apt-get update && sudo apt-get upgrade -y
|
||||
|
||||
let "m += 15"
|
||||
let "m -= 3"
|
||||
let "m /= 5"
|
||||
let "m %= 10"
|
||||
let "m++"
|
||||
let "m--"
|
||||
tar cf archiv.tar && rm *.doc || echo "fehler"</code></pre>
|
||||
</section>
|
||||
|
||||
let "k = (m < 9) ? 0 : 1"
|
||||
condition ? value-if-true : value-if-false
|
||||
<section>
|
||||
<span style="color: orange">Aufgabe:</span> Erstellt ein script, das den Inhalt eures home in eine Variable <code>liste</code> schreibt, und gebt den Inhalt dieser Variablen in eine Textdatei <code>liste.txt</code> aus.<br />
|
||||
Hinweis: ls , tee
|
||||
<pre class="fragment"><code>#!/bin/bash
|
||||
OUTFILE="liste.txt"
|
||||
|
||||
Floating Poin:
|
||||
echo "32.0 + 1.4" | bc
|
||||
liste=`ls | tee $OUTFILE `
|
||||
|
||||
echo `expr $m + 18`
|
||||
m=`expr $m + 18`
|
||||
echo $liste
|
||||
|
||||
(( m *= 4 ))
|
||||
cat $OUTFILE
|
||||
</code></pre>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h3>exit status</h3>
|
||||
<pre><code>exit 0</code></pre>
|
||||
heisst : alles gut gelaufen
|
||||
<pre><code>exit 1</code></pre>
|
||||
heisst : kommando fehlgeschlagen
|
||||
|
||||
<p> der exit code in scripten kann beliebig gesetzt werden
|
||||
<p>Standard: exit 0 -> alles fein
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>Funktionen</h3>
|
||||
<pre><code>#!/bin/bash
|
||||
|
||||
#Funktions Deklaration:
|
||||
count () {
|
||||
ls | wc -l
|
||||
|
||||
# ls: Liste aller Objekte im Verzeichnis
|
||||
# wc: Word-Count; mit Attribut -l werden Zeilen gezählt
|
||||
# in Verbindung mit ls werden also die (nicht versteckten) Objekte gezählt
|
||||
}
|
||||
|
||||
count # Aufruf der Funktion
|
||||
</code></pre>
|
||||
</section>
|
||||
<section>
|
||||
<pre><code>#!/bin/bash
|
||||
count2 () {
|
||||
# überprüfen, ob der erste Parameter ein Verzeichnis ist
|
||||
if [ -d "$1" ]; then
|
||||
ls $1 | wc -l
|
||||
exit 0 # alles OK
|
||||
else
|
||||
echo "Ungültiges Verzeichnis: $1"
|
||||
exit 1 # Fehler
|
||||
fi
|
||||
}
|
||||
count2 "/gibt/es/garnicht" # Aufrufe der Funktion count2
|
||||
echo "Status: $?"
|
||||
|
||||
count2 "/etc"
|
||||
echo "Status: $?"</code></pre>
|
||||
</section>
|
||||
<section>
|
||||
<div class="fragment"><pre><code>#!/bin/bash
|
||||
tar -czf myhome_directory.tar.gz /home/$USER
|
||||
mkdir archiv
|
||||
mv myhome_directory.tar.gz archiv/
|
||||
|
||||
</code></pre>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<pre><code>
|
||||
Integer Berechnungen
|
||||
let "m = 4 * 1024";echo $m
|
||||
|
||||
let "m += 15"
|
||||
let "m -= 3"
|
||||
let "m /= 5"
|
||||
let "m %= 10"
|
||||
let "m++"
|
||||
let "m--"
|
||||
</code></pre>
|
||||
|
||||
let "k = (m < 9) ? 0 : 1"
|
||||
condition ? value-if-true : value-if-false
|
||||
|
||||
<pre><code>
|
||||
Floating Poin:
|
||||
echo "32.0 + 1.4" | bc
|
||||
|
||||
echo `expr $m + 18`
|
||||
m=`expr $m + 18`
|
||||
|
||||
(( m *= 4 ))
|
||||
</code></pre>
|
||||
</section>
|
||||
<section data-transition="slide" data-background="#4d7e65" data-background-transition="zoom">
|
||||
|
||||
@@ -164,17 +332,7 @@ cat < file_list</code></pre>
|
||||
|
||||
|
||||
|
||||
<section>
|
||||
<h3>Die 5 Level eines Vim Magiers</h3>
|
||||
<ul>
|
||||
<li>Level 0: nichts über vim wissen
|
||||
<li>Level 1: vim basics kennen
|
||||
<li>Level 2: den visual mode kennen
|
||||
<li>Level 3: diverse „motions“ kennen
|
||||
<li>Level 4: den visual mode nicht brauchen
|
||||
</ul>
|
||||
<p>https://danielmiessler.com/study/vim/
|
||||
</section>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
Reference in New Issue
Block a user