Linuxtools für Developer


Martin Brotzeller I 28.07.2011




                                 © Mayflower GmbH 2011
RTFM


       Mayflower GmbH I 2
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
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
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
Beispiele: History



vi config.php

svn diff !$

^diff^commit




tar tzvf datei.tgz

^tz^xz




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



I Überall verfügbar
I Schnelles, ressourcenschonendes Editieren
I Mächtige Kommandos für Textersetzungen




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


Fragen?

           Mayflower GmbH I 23

Linuxtools fuer Developer

  • 1.
    Linuxtools für Developer MartinBrotzeller I 28.07.2011 © Mayflower GmbH 2011
  • 2.
    RTFM Mayflower GmbH I 2
  • 3.
    Bash - Umleitungen Umleitungenund 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 Beispielezu 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 DieHistory 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
  • 6.
    Beispiele: History vi config.php svndiff !$ ^diff^commit tar tzvf datei.tgz ^tz^xz Mayflower GmbH I 6
  • 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 kurzfü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 psuxaw | 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 Dateienzur 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 Werkzeugzur 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 gehtauch 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) IStream-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 Ils -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 ISchnelles, ressourcenschonendes Editieren I Mächtige Kommandos für Textersetzungen Mayflower GmbH I 20
  • 21.
    Screen I „Container“ fürShells 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ürIhre 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
  • 23.
    Beispiel Fragen? Mayflower GmbH I 23