Martin Brotzeller erklärt Tools und Features der Shell, mit denen Programmierer sich das Leben einfacher machen können. Der Schwerpunkt liegt beim Arbeiten mit der History sowie gängigen Tools.
3. Bash - Umleitungen
Umleitungen und Datenfluss bei Verknüpfungen
> leitet die Ausgabe in eine Datei um
< holt die Eingabe aus einer Datei
| leite die Ausgabe an ein weiteres Kommando
>> hängt die Ausgabe an eine Datei an
<< ermöglicht Eingabe über ein Here-Dokument wie in PHP
2> leitet die Fehlerausgabe um
2>&1 leitet die Fehlerausgabe in die Standardausgabe
( ) kapselt eine Subshell
` ` (Backticks) kapseln einen Befehl dessen Ausgabe direkt als Kom-
mandozeilenargument verwendet wird
Mayflower GmbH I 3
4. Beispiele: Umleitungen
Beispiele zu Umleitungen
ls | wc -l
Zählt die Dateien im aktuellen Verzeichnis
find 2>&1 | grep „.php“ > phpfiles.txt
Leitet die Fehler- und Standardausgabe weiter an grep. Der ganze Befehl erstellt
eine Liste von PHP-Dateien (ja, das geht auch einfacher)
Mayflower GmbH I 4
5. Bash - History
Die History kann auf verschiedene Weise bedient werden. Am schnellsten geht das mit
dem Expansionssymbol (normalerweise '!')
I !$
wird zum letzten Argument des vorigen Befehls
I !!
wiederholt das letzte Kommando (kombinierbar)
I !?
sucht nach einem String in der History
I ^string1^string2^
ersetzt string1 mit string2 im vorhergehenden Kommando
I :p
am Ende des Kommandos verhindert Ausführung
I :gs/string1/string2/
ersetzt string1 mit string2, aus beliebigem Historyeintrag
Mayflower GmbH I 5
7. Beispiele: History II
cp /www/htdocs1/datei1.php /www/htdocs2/datei1-foo.php
!!:gs/datei1/datei2/
!!:gs/datei2/datei3/
Drei Dateien nach dem selben Muster kopieren
Mayflower GmbH I 7
8. Tools
I wc
Zählt Zeichen, Wörter und Zeilen. Mit -l werden nur Zeilen gezählt
I fmt
Formatiert (Plain-)Texte – Zeilenumbrüche, Absätze, etc
I cat / tac
Ausgabe von Dateien vorwärts und rückwärts
I ps
Zeigt Prozesse an. Mit Optionen axuw erwischt man alle Prozesse
Mayflower GmbH I 8
9. Tools II
I head / tail
Anzeige von Beginn oder Ende einer Datei, -f bei tail fortlaufend
I cut
Spaltenweise Ausfiltern der Eingabe anhand von einem Trennzeichen
cut -d “:” -f 1 /etc/passwd
Zeigt alle (lokalen) Nutzername des Systems an
I xargs
Übergibt Eingabe als Reihe von Parametern an ein Kommando
find -name ”*php“ | xargs grep ”require“
grept nach „require“ in allen PHP-Dateien
Mayflower GmbH I 9
10. Tools III
I sort
sortiert zeilenweise
I uniq
entfernt doppelte aufeinanderfolgende Zeilen
I bc
Kommandozeilen-Taschenrechner
I od
Oktal/Hexadezimaler Dump
I seq
Erzeugt Reihe von Zahlen
Mayflower GmbH I 10
11. Grep
grep steht kurz für “Global Regular Expression Parser“ - Suche nach
Eingabemustern die auf reguläre Ausdrücke passen. Statt der
Standardeingabe kann auch eine Liste von Dateien übergeben werden
I Nützliche Optionen
· -i (case insensitive)
· -l (nur Dateiname zeigen)
· -c (count)
· -r (rekursiv)
· -A/-B-/C <num> Anzahl Zeilen Kontext
· -E “extended“ ermöglicht Alternativen
Mayflower GmbH I 11
12. Beispiele: Grep
I ps uxaw | grep “http“ | grep -v “grep”
finde alle Prozesse mit “http” im Pfad
I find -type d | grep -v “.svn”
finde Verzeichnisse die nicht “.svn“ im Pfad enthalten
I grep -E “(include|require)“ *.php
suche alle Zeilen mit include oder require in den PHP-Dateien des aktuellen
Verzeichnis
Mayflower GmbH I 12
13. Find
Finden von Dateien zur Weitergabe an andere Tools
I find /www/ -name “*.php“
Zeigt alle PHP-Dateien unterhalb von /www an (-iname für case insensitive
Suche)
I find /www/ -type d ( -name CVS -o -name SVN )
-exec safe-rm -r {} ;
sucht alle Verzeichnisse namens CVS oder SVN und löscht diese
Mayflower GmbH I 13
14. Beispiele: Find
I find . -newer <Dateiname> -print
Zeigt alle Dateien, die editiert wurden, nachdem Dateiname zum
letzten mal editiert wurde
I find -name “*.sql“ | xargs rm
Sucht alle Dateien die auf .sql enden und übergibt sie an rm als
Kommandozeilenargument
Mayflower GmbH I 14
15. Sed
I Mächtiges Werkzeug zur Textmanipulation
I Agiert zeilenweise
I Versteht Reguläre Ausdrücke
I sed -e 's/foo/bar/' datei.txt
Ersetzt in der Datei auf jeder Zeile jeweils das erste foo mit bar
und gibt das Ergebnis aus.
Mayflower GmbH I 15
16. Beispiele: Sed
Es geht auch komplizierter:
sed -e 's/</n</g' *.html |
grep '^<a' |
sed -e 's/.*href=“([^“]*)“.*/1/'
grep -v '^<a'
(...und das ist noch nicht das Ende der Fahnenstange)
Mayflower GmbH I 16
17. AWK
I „AhWehKah“ (Aho-Weinberger-Kernighan)
I Stream-basiert
I Beginnt, wo Sed nicht mehr ausreicht
I Jede Regel hat ein Muster
I Pro Zeile wird die Regel ausgeführt, deren Muster passt
Mayflower GmbH I 17
18. Beispiele: AWK
I ls -l | awk '{print $6 “ “ $7 “ “ $8 “ “ $9 “ “ $5}'
Besseres „cut“, hier wird unabhängig von der Anzahl der
Leerzeichen immer die selbe Spalte ausgegeben – konkret hier
Datum, Uhrzeit, Dateiname und danach Dateigrösse
I awk 'BEGIN{ printf(“%in“,0x37ab); }'
Einfach nur mal 0x37ab in dezimal ausgeben
Mayflower GmbH I 18
19. Beispiele: AWK II
I ls -l | awk '
BEGIN{ x=0; }
{ x+=$5; }
END{ printf(„x is %sn“,x); }'
Zusammenzählen der Dateigrössen im aktuellen Verzeichnis
Mayflower GmbH I 19
20. Vi
I Überall verfügbar
I Schnelles, ressourcenschonendes Editieren
I Mächtige Kommandos für Textersetzungen
Mayflower GmbH I 20
21. Screen
I „Container“ für Shells
I Session nicht an Verbindung geknüpft
I Schnelles wechseln von Tasks
I Arbeiten auf mehreren Rechnern
I Teilen des sichtbaren Bereichs
Mayflower GmbH I 21
22. Vielen Dank für Ihre Aufmerksamkeit!
Referent Martin Brotzeller
martin.brotzeller@mayflower.de
+49 931 35965 16
Mayflower GmbH
Pleichertorstr. 2
97070 Würzburg
29.07.2011 Mayflower GmbH 22