Shell Fu for Developers

Post on 28-Nov-2014

2.658 views 0 download

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

© Mayflower GmbH 2011

Shell-Fu for Developers

Franz Pletz I 15. September 2011

Mayflower GmbH I 2

Kung Fu?

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

Mayflower GmbH I 3

Shell Fu!

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

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

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!

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

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

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

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/

Mayflower GmbH I 10

ack – Das bessere grep (2)

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

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

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;photo=@lolcat.jpg" mysocialnetwork.com/profile

Cookies, Headers, Formularfelder, Dateiupload!

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

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

Mayflower GmbH I 16

git – git it up (2)

I $ git log --oneline --decorate

Mayflower GmbH I 17

git – git it up (3)

I $ git diff --word-diff

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/

Mayflower GmbH I 19

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

29.09.11 Mayflower GmbH 20

Vielen Dank für eure Aufmerksamkeit!

Kontakt Franz Pletz

franz.pletz@mayflower.de

+49 89 242054 1173

Mayflower GmbH

Mannhardtstrasse 6

80538 München