Shell Fu for Developers

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

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.

Transcript of Shell Fu for Developers

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