23
© Mayflower GmbH 2011 Linuxtools für Developer Martin Brotzeller I 28.07.2011

Linuxtools fuer Developer

Embed Size (px)

Citation preview

© Mayflower GmbH 2011

Linuxtools für Developer

Martin Brotzeller I 28.07.2011

Mayflower GmbH I 2

RTFM

Vorführender
Präsentationsnotizen
Das Manual ist die erste Anlaufstelle bei Fragen� Wer das nicht bedienen kann, liest „man man“� Manpages gibts heutzutage auch online

Mayflower GmbH I 3

Bash - Umleitungen

> 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<<2> leitet die Fehlerausgabe um2>&1 leitet die Fehlerausgabe in die Standardausgabe( ) kapselt eine Subshell` `

ermöglicht Eingabe über ein Here-Dokument wie in PHP

(Backticks) kapseln einen Befehl dessen Ausgabe direkt als Kom-mandozeilenargument verwendet wird

Umleitungen und Datenfluss bei Verknüpfungen

Mayflower GmbH I 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 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 :pam Ende des Kommandos verhindert Ausführung

I :gs/string1/string2/ersetzt string1 mit string2, aus beliebigem Historyeintrag

Vorführender
Präsentationsnotizen
Nebeb !$ kann auch noch die ganze Zeile, alles bis auf das erste Argument, oder bestimmte Argumente refer3enziert werden

Mayflower GmbH I 6

Beispiele: History

vi config.php

svn diff !$

^diff^commit

tar tzvf datei.tgz

^tz^xz

Mayflower GmbH I 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 8

Tools

I wcZählt Zeichen, Wörter und Zeilen. Mit -l werden nur Zeilen gezählt

I fmtFormatiert (Plain-)Texte – Zeilenumbrüche, Absätze, etc

I cat / tacAusgabe von Dateien vorwärts und rückwärts

I psZeigt Prozesse an. Mit Optionen axuw erwischt man alle Prozesse

Mayflower GmbH I 9

Tools II

I head / tailAnzeige von Beginn oder Ende einer Datei, -f bei tail fortlaufend

I cutSpaltenweise 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 10

Tools III

I sortsortiert zeilenweise

I uniqentfernt doppelte aufeinanderfolgende Zeilen

I bcKommandozeilen-Taschenrechner

I odOktal/Hexadezimaler Dump

I seqErzeugt Reihe von Zahlen

Mayflower GmbH I 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 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)“ *.phpsuche alle Zeilen mit include oder require in den PHP-Dateien des aktuellen Verzeichnis

Mayflower GmbH I 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 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 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 barund gibt das Ergebnis aus.

Mayflower GmbH I 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)

Vorführender
Präsentationsnotizen
Bricht alle HTML-Dateien im aktuellen Verzeichnis vor jedem Tag um, sucht dann nur genau alle Anker, ersetzt die Anker mit href durch ihre URL und filtert die Anker ohne href aus (Einschränkung: Tags in Kleinbuchstaben, nur doppelte Anführungszeichen für href)�� Sed kann noch viel mehr, aber das sprengt den Rahmen (Merken von Teilstrings, bedingte Verzweigungen...).

Mayflower GmbH I 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

Vorführender
Präsentationsnotizen
Jede Regel folgt der Form <Pattern>{<Code>} Pattern ist entweder BEGIN, END oder ein Regulärer Ausdruck Das leere Pattern passt auf alle Zeilen Gibt es nur BEGIN, so wird die Regel genau einmal durchgeführt Gibt es nur END, wird die Regel einmal ausgeführt nachdem Input kam Libraries sind möglich

Mayflower GmbH I 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(“%i\n“,0x37ab); }'

Einfach nur mal 0x37ab in dezimal ausgeben

Mayflower GmbH I 19

Beispiele: AWK II

I ls -l | awk '

BEGIN{ x=0; }

{ x+=$5; }

END{ printf(„x is %s\n“,x); }'

Zusammenzählen der Dateigrössen im aktuellen Verzeichnis

Mayflower GmbH I 20

Vi

I Überall verfügbar

I Schnelles, ressourcenschonendes Editieren

I Mächtige Kommandos für Textersetzungen

Vorführender
Präsentationsnotizen
Vi ist ein wichtiges Werkzeug, nicht immer steht der Editor der Wahl zur Verfügung� Vim steht für „Vi Improved“ Visual mode Mehrfaches Undo Mehr Skriptingfähigkeit Syntax Highlightning� Vi besitzt 3 Grundmodi, „Command Mode“, „Input Mode“ und „Colon Mode“ Im Command Mode bedeutet jeder Tastendruck ein Kommando Im Input Mode werden alle druckbaren Zeichen normalerweise in die editierte Datei geschrieben Im Colon Mode können komplizierte Kommandos ausgeführt werden

Mayflower GmbH I 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

Vorführender
Präsentationsnotizen
Screen ermöglicht, Programme vom Terminalfenster abgekoppelt zu verwenden�Control-a d schickt eine Session in den Hintergrund�screen -r holt eine bestehende Session zurück� Screen ermöglicht, in einer Shell mehrere Tasks laufen zu lassen zwischen denen hin- und hergewechselt werden kann.�Auch eine horizontale Teilung ist möglich� Screen schützt vor Verbindungsabbrüchen und damit verbundenen Problemen bei der Ausführung von Programmen� Wie vi hat Screen einen Colon mode in dem komplizierte Kommandos eingegeben werden können�

29.07.2011 Mayflower GmbH 22

Vielen Dank für Ihre Aufmerksamkeit!

Referent Martin Brotzeller

[email protected]

+49 931 35965 16

Mayflower GmbH

Pleichertorstr. 2

97070 Würzburg

Mayflower GmbH I 23

Beispiel

Fragen?