20
© Mayflower GmbH 2011 Shell-Fu for Developers Franz Pletz I 15. September 2011

Shell Fu for Developers

Embed Size (px)

DESCRIPTION

Franz Pletz möchte mit seinem Vortrag, nachdem vor einigen Wochen bereits Martin Brotzeller in die grundlegende Shell- und UNIX-Tools-Benutzung eingeführt hat, in die Customization der eigenen Shell und in sinnvollen weiteren Tools, die den Developer-Alltag erleichtern, einführen. Dies sind einerseits Standardtools mit ungeahnter Zusatzfunktionalität, die allerdings häufig nicht bekannt sind aber auch Zusatztools, die erst neu zu installieren sind.

Citation preview

Page 1: Shell Fu for Developers

© Mayflower GmbH 2011

Shell-Fu for Developers

Franz Pletz I 15. September 2011

Page 2: Shell Fu for Developers

Mayflower GmbH I 2

Kung Fu?

Quelle: http://www.flickr.com/photos/stopherjones/707077871/

Page 3: Shell Fu for Developers

Mayflower GmbH I 3

Shell Fu!

Quelle: http://www.flickr.com/photos/tom_focus/5710555681/

Page 4: Shell Fu for Developers

Mayflower GmbH I 4

Ziele

I Sehr subjektiver Vortrag ;-)

I Aus meinem Linux-Sysadmin Alltag ein paar nützliche Tools und Tipps vorstellen

I In der Shell sind fast alle Dinge viel schneller erledigt, als mit jeder general purpose GUI

I Ihr sollt mehr Console benutzen!!!!11elf1

Page 5: Shell Fu for Developers

Mayflower GmbH I 5

Die Shell – first things first

I Tipp: zshZum Anfang Config von grml: http://grml.org/zsh/

I Viele nützliche Features von bash, ksh, tcsh und eigene, z.B.Globbing: Negierung, Grouping, RangesDirectory Stacking: pushd, popd, AUTOPUSHDProcess Substitution: =()Erweiterte Command Line Editing und Completion

I Egal welche Shell man nutzt, Manpage komplett lesen und nach eigenen Vorlieben konfigurieren!

Page 6: Shell Fu for Developers

Mayflower GmbH I 6

vim/emacs – Dateien editieren mit Style

I Tipp: Münzwurf um sich zwischen vim oder emacs zu entscheidenVergleich beider Editoren am besten gar nicht anfangenReligionskriege!

I Mindestens eine Woche Zeit nehmen, einarbeiten und benutzen!Painful, aber schnelleres editieren garantiert

Page 7: Shell Fu for Developers

Mayflower GmbH I 7

most – more or less enhanced pager

I Pager: Langen Text in Console als Seiten anzeigenmore: einfacher Pagerless: more mit forward/backward, vi Keybindings

I FeaturesWindows!Binary FilesLine Wrapping

Page 8: Shell Fu for Developers

Mayflower GmbH I 8

pgrep & pkill – Prozesse brauchen Pflege

I Wer kennt das nicht? ps aux | grep fooProbleme: nicht weiterverwendbar, taucht selbst in Liste auf

I $ pgrep zsh314531483174

I Weitere Optionen zum filtern nach z.B.-u, -g User & Gruppen-n, -o newest, oldest

I pkill mit gleichen Parametern als Alternative zu killall

Page 9: Shell Fu for Developers

Mayflower GmbH I 9

ack – Das bessere grep

I Komplett in Perl geschrieben, auf Suche in Quellcode optimiert

I Schneller, da nur Source Code Files durchsucht werdenKeine VCS-Verzeichnisse, Backup-Files, Core Dumps etc.

I Angabe von Dateitypen einfach$ ack –-php --js

I Syntax Highlighting!

I Viele GNU grep Parameter werden supportet

I 25% weniger Zeichen zu tippen!

I http://betterthangrep.com/

Page 10: Shell Fu for Developers

Mayflower GmbH I 10

ack – Das bessere grep (2)

Page 11: Shell Fu for Developers

Mayflower GmbH I 11

pv – stalking the pipes

I Verlauf von Daten durch Pipes beobachten

I $ tar c dir | pv | nc fnordhost 234264kB 0:00:00 [71.4MB/s] [ <=> ]

I Viele Optionen, z.B.-p Progress Bar anzeigen-r Datenrate anzeigen-a durchschnittliche Datenrate anzeigen-s BYTES Dateigröße angeben-L RATE Datenrate begrenzen-R PID Commandline eines laufenden pv modifizieren

Page 12: Shell Fu for Developers

Mayflower GmbH I 12

ngrep – Grepping Network Traffic

I Wireshark ist toll, aber oft einfach Overkill

I # ngrep -W byline "^(GET|POST) .*"Mal schnell alle GET und POST Requests anzeigen

I # ngrep -q -W byline "search" host www.google.com and port 80

Alle Google-Suchanfragen ausgeben

Page 13: Shell Fu for Developers

Mayflower GmbH I 13

curl – HTTP Magic for the masses

I $ curl ifconfig.me88.217.134.114

I $ curl -s -I nyan.cat | head -n1HTTP/1.1 200 OK

Nur die Headers bitte!

I $ curl -c cookies.txt -H "User-Agent: Mozilla/5.0" -F "name=test;[email protected]" mysocialnetwork.com/profile

Cookies, Headers, Formularfelder, Dateiupload!

Page 14: Shell Fu for Developers

Mayflower GmbH I 14

openssh – fun with remote servers

I Der openssh Client hat eine Config-File: ~/.ssh/configMan kann Optionen global oder auf Host-Basis festlegen

I Connection SharingControlMaster autoControlPath /tmp/ssh-%h-%p-%r

I Hostname Aliases, Local ForwardsHost dev

HostName dev.foobar.deLocalForward 5433 localhost:5432

I Restriktive Proxies bezwingen (sshd auf Port 443)ProxyCommand corkscrew proxy.org 8080 %h %p

Page 15: Shell Fu for Developers

Mayflower GmbH I 15

git – git it up

I Pull mit rebase statt merge$ git pull –rebase

oder$ git config branch.master.rebase true

I Letzter Commit mit Message Regex Matching$ git show :/fix$ git show :/^Merge

I Einfaches Tracking von Remote Branches$ git checkout -t origin/feature

Page 16: Shell Fu for Developers

Mayflower GmbH I 16

git – git it up (2)

I $ git log --oneline --decorate

Page 17: Shell Fu for Developers

Mayflower GmbH I 17

git – git it up (3)

I $ git diff --word-diff

Page 18: Shell Fu for Developers

Mayflower GmbH I 18

tmux – modern terminal multiplexing

I Prinzip: mehere Terminals in einem darstellen, wie GNU screen

I Features:Client/Server-ModellTransfer/Linking von Terminals in andere SessionsCopy/Paste mit mehreren BuffersWindows mit horizontal und vertikal splittenFreies verschieben, resizen oder einpassen in LayoutsTerminal LockingGute Dokumentation

I Quickstart fuer screen-User: Ctrl+B statt Ctrl+A ;-)

I http://tmux.sourceforge.net/

Page 19: Shell Fu for Developers

Mayflower GmbH I 19

Fragen?Quelle: http://www.flickr.com/photos/ericarhiannon/3591044454/

Page 20: Shell Fu for Developers

29.09.11 Mayflower GmbH 20

Vielen Dank für eure Aufmerksamkeit!

Kontakt Franz Pletz

[email protected]

+49 89 242054 1173

Mayflower GmbH

Mannhardtstrasse 6

80538 München