Shell: Navigation und Editieren der aktuellen Zeile

Ich hätte nicht gedacht, dass sich so viele auf meinen Aufruf melden würden, anscheinend ist wirklich ein Bedürfnis und Interesse da, was mich natürlich freut. Ich hoffe, ich habe nicht allzu grosse Erwartungen geweckt. Es werden bestimmt auch ein paar Leute mitlesen, die viel mehr Wissen als ich, wenn etwas also mal noch einfacher geht oder nicht ganz korrekt ist, bitte ich darum korrigiert zu werden.

Vielleicht zuerst noch was zum Thema Shell: Ich selbst benutze Zsh, da sie sehr viele praktische Features bietet, die ich z.B. von der Bash nicht kenne. Ich möchte aber keine Flamewars zu dem Thema lostreten, eine schöne Liste von Vorteilen findet man hier. Wer nur deshalb die Bash benutzt, weil die einfach schon als Standardshell eingerichtet ist, dem empfehle ich einfach mal auf die Zsh zu wechseln:

$ sudo aptitude install zsh
oder
$ sudo emerge zsh
als default setzen:
$ chsh -s /bin/zsh #oder wo auch immer zsh liegt

Achtung, falls Einstellungen (z.B. Aliasse) in .bashrc gemacht wurden, müssen diese nach .zshrc migriert werden, die Syntax ist meistens ziemlich gleich. Ausserdem wird beim ersten Start ein Wizard der Zsh starten, wer Lust und Zeit sollte ruhig mal ein bisschen damit rumspielen.

Ok, nun aber zurück zum Hauptthema: Navigation. Dass man mit Cursor-Up die vorherigen Befehle “holen” kann ist (hoffentlich) allen klar. Vielleicht hat man einen Tippfehler gemacht oder ein sudo vergessen und muss noch was ändern. Natürlich kann man dazu die Cursortasten nehmen, an den Anfang der Zeile kommt man aber am einfachsten mit Ctrl^A (Achtung, das ist eigenltich ein kleines a, also ohne Shift). Ans Ende wiederum mit Ctrl^E (man muss sich aber nicht am Ende der Zeile befinden, um einen Befehl abzusetzen). Natürlich kann man das gleiche auch mit den Home und End-Tasten erreichen.

Nützlicher ist die Navigation mit Alt^B sowieo Alt^F, damit springt der Cursor vor (bzw. nach) das letzte (bzw. das nächste) Leerzeichen. Mit Ctrl^B und F bewegt man den Cursor bloss um ein Zeichen, was ich nicht besonders nützlich finde, deshalb habe ich diese Tasten mit der gleichen Funktion wie Alt^B / F belegt:

#In .zshrc
bindkey ^F forward-word
bindkey ^B backward-word

Nun können wir uns also schon ganz gut bewegen, allerdings wollen wir häufig auch noch was ändern. Mit Ctrl^W löscht man von der Cursorposition bis zum vorherigen Leerzeichen, das Umgekehrte, also “nach vorne” löschen geschieht mit Alt^D. Mit Ctrl^U löscht man gleich bis zum Anfang und mit Ctrl^K bis ans Ende der Zeile.

Machen wir doch ein Beispiel. Wir haben zuvor folgenden Befehl ausgeführt:
$ less /etc/apache2/httpd.conf
Nun wollen wir die Datei bearbeiten, dazu drücken wir einfach Cursor-Up (oder Ctrl^P), Ctrl^BW (oder Ctrl^AFW, Ctrl^A Alt^D): “less” ist weg und kann mit einem anderen Befehl ersetzt werden.

Ziemlich simpel, aber einiges schneller als Zeichen-für-Zeichen zu navigieren. Einfach immer, wenn man sich dabei ertappt wie man ein dutzend Mal auf die Cursortasten haut, kurz an die paar Shortcuts erinnern und anwenden. Auch wenn man so zu Beginn vielleicht nicht schneller ist, wird man das mit der Zeit wieder rausholen. Ist im Prinzip dasselbe wie mit Vi :) .

[ratings]

2 comments »

Einfach Eclipse Plug-in Buildskripte erstellen mit pluginbuilder

Pluginbuilder ist ein Eclipse Plug-in (wie könnte es auch anders sein), mit dem man relativ leicht Ant-Skripts zum erstellen von Eclipse-Plug-ins generieren kann.

Für “normale” Java-Projekte mag es ja noch gehen, build.xml Dateien von Hand zu schreiben, sobald man aber Eclipse Plug-ins schreibt, ist man auf den PDE (Plug-in Development Environment) build angewiesen. Zumindest ist es empfehlenswert. Jeder der das mal versucht hat weiss, wie mühsam das ist. Mit dem Pluginbuilder kann man sich die Konfiguration einfach zusammen klicken und generieren lassen, in rund 10 Minuten hatte ich alle nötigen Ant-Dateien um RDT erstellen zu können.

Ein weiteres Feature ist die automatische Ausführung von JUnit-Tests, ich hatte allerdings noch Probleme mit unseren Plug-in-Tests, aber ein Versuch ist es allemal Wert. Und ansonsten lassen sich die Scripts ja auch Problemlos von Hand erweitern.

Wenn man nun also so ein schönes Skript zusammen hat, liegt es nahe das ganze mit CruiseControl auf einem Server auszuführen, dafür dient der ‘main-cc’-Task, den man von CruiseControl aus ausführen kann.

Insgesamt also ein recht interessantes Projekt, das einem viel mühsame Arbeit ersparen kann.

2 comments »

Shell-Workshop gewünscht?

Mal ein etwas anderer Beitrag hier, und zwar möchte ich wissen, ob es jemanden interessieren würde, wenn ich hier ab und zu ein paar Hinweise zur Shell-Benutzung geben würde? Also eine Art Mini-Workshop.

Shell-Benutzung? Gibt es nicht schon genügend Seiten im Netz die sich damit befassen? Und abgesehen davon, RTFM! Nun, das mag stimmen, allerdings möchte ich eher die Leute ansprechen, die solche Dinge nicht wirklich suchen und sich dann damit befassen, sondern diejenigen, die nichts gegen kleine (vielleicht wöchentliche) Häppchen haben die sie nach und nach anwenden und so lernen (und hoffentlich verinnerlichen) können.

Alte Hasen und schon mehr oder weniger Erfahrene werden wahrscheinlich gelangweilt sein, aber ich kenne genug Leute, die zwar regelmässig eine Shell benutzen, aber kaum mehr machen als Text eintippen, mit den Cursortasten von links nach rechts navigieren und wenns gut kommt mal mit Cursor-Up den letzten Befehl holen. Mich juckt es dann jeweils in den Fingern und ich muss mich hüten, dass ich nicht “dazwischenfunke” (ok, manchmal kann ich mich auch nicht beherrschen ;) ).

Thematisch werden wohl alle möglichen Themen angeschnitten werden, es müssen auch nicht unbedingt nur shell built-in commands vorkommen, sondern auch andere Unix-Utilities (find und grep beispielsweise).

Da ich mir die Arbeit nicht gern umsonst mache (vielleicht interessiert es ja wirklich niemanden), möchte ich darum bitten, einen kurzen Kommentar zu hinterlassen wenn Interesse besteht. Ein einfaches “+1″ reicht mir schon :) . Wenn sich mindestens zwei Leute melden dann lohnt sich das schon für mich.

13 comments »