Liquidprompt ...
Zur Abwechslung mal wieder etwas technisches.
"Drüben" in Google+ hat Christian das Repository liquidprompt empfohlen. Liquidprompt setzt sehr komfortabel den Shell-Prompt für die bash oder zsh. Dabei sammelt sie Informationen aus vielen verschiedenen Quellen, beispielsweise die Uhrzeit, den Batteriestatus (von grün nach rot), die Systemlast (load), Temperatur, den Status des Versionskontrollsystems, einen grünen Doppelpunkt für Schreibrechte im aktuellen Verzeichnis (sonst rot), und, und, und ...
Die "Installation" ist sehr einfach (bei mir sind alle Repositories unterhalb von workspace
):
git clone https://github.com/nojhan/liquidprompt.git liquidprompt.git
Ich folge damit auch einer Anregung von Federico, der alle Verzeichnisse, die git-Repositories enthalten auf .git
enden lässt.
Aktiviert wird liquidprompt durch
Sollte man mit den Einstellungen einverstanden sein, ist nichts weiter zu tun.
Wenn man aber Änderungen vornehmen will, kopiert man die Datei mit den Voreinstellungen und nimmt dort Änderungen vor.
vim ~/.liquidpromptrc
source ~/workspace/liquidprompt.git/liquidprompt
So, habe ich beispielsweise, die Uhrzeit mittels LP_ENABLE_TIME=1
aktiviert und Versionskontrollsysteme, die ich nicht benutze deaktiviert. Es macht sich besonders unter Cygwin bemerkbar, wenn zu viele Optionen aktiv sind, unter Linux ist das meiner Beobachtung nach kein Problem.
Wenn alle Einstellungen zur Zufriedenheit getroffen sind, braucht nur die Zeile an die ~/.bashrc
oder ~/.zshrc
angehängt werden. Die Webseite enthält eine ausführliche Beschreibung aller Optionen und auch eine Beschreibung, wie man die Farben anpassen kann.
Kommentare
Ansicht der Kommentare: Linear | Verschachtelt
Christian M. Grube am :
Das ist Nett von Dir.
Die Idee mit der Endung auf .git übernehme ich doch glatt, auch wenn sie der Link bei mir Leider nicht öffnet.
Sehr gute Idee
Dirk Deimeke am :
Das schöne mit der Endung auf .git ist, dass Du leicht ein Skript darüber laufen lassen kannst.
Christian M. Grube am :
Script, mach mich neugierig.... Hast Du, okay.
Nun möchte ich mehr Wissen, vielleicht einen Artikel?
Christian
Dirk Deimeke am :
Frakturfreund am :
Ich finde das etas doppelt gemoppelt, das eigentliche Verzeichnis mit den Git-Daten liegt dann ja unter project.git/.git … ich kenne diese Konvention eigentlich nur von Bare-Repositories (git init --bare) auf Servern, also Git-Repos ohne lokalen Checkout. Da macht der Name project.git/ Sinn, weil in diesem Order die Git-Daten direkt liegen und es keinen .git/ Unterordner gibt.
Und wenn man die Pfade seine lokalen Git-Repos für ein Skript brucht, reicht auch ein find ~ -type d -name .git .
PS: Der Link unten zu zu »BBCode-Formatierung erlaubt« führt grade auf ein »502 Bad Gateway« .
Dirk Deimeke am :
Im Verzeichnis selbst ist die ausgecheckte Arbeitskopie zu finden.
Der Link hat jetzt gerade funktioniert, eventuell hatte phpBB einen Engpass.
Frakturfreund am :
find . -type d -name .git -execdir sh -c "pwd && git pull --rebase" \;
Für .svn oder .hg entsprechend . Tatsächlich, jetzt funktioniert der BB-Link wieder . Ich bin mit Foren nie so wirklich warm geworden, so dass mir die Synax weniger vertraut ist als z.B. Markdown oder Mediawiki.
Dirk Deimeke am :
do
case $i in
*.git) echo "Git $i"
;;
*.svn) echo "Subversion $i"
;;
*.hg) echo "Mercurial $i"
;;
*.bzr) echo "Bazaar $i"
;;
*) echo "Weiss nicht $i"
;;
esac
done
Mir gefällt das besser und ich finde das übersichtlicher.
Frakturfreund am :
Dirk Deimeke am :
Axel Beckert am :
Wobei ich das selten nachschauen muss, denn im Normalfall zeigt's mir auch der Prompt.
Und eine Schleife über alle Verzeichnisse, die ein Unterverzeichnis namens .git haben, machen, ist auch kein Hexenwerk:
for i in $(find . -name .git -type d); do echo ${i:h}; done
Aber zurück zum eigentlichen Thema: Liquidprompt muss ich mir definitiv auch mal anschauen. Alleine schon um neue Ideen zu bekommen, wie man den Prompt gestalten könnte, denn momentan bin ich ein wenig unzufrieden mit meinem Prompt-Layout:
!520 Z2 ?0 L1 ssh abe@kiva6:~/pkg-perl/git/packages/ack-grep (pts/3 -zsh 5.0.2-test-3 sid) 2:42:44 (git) [master| ✔ ]
[…]it/packages/ack-grep →
Denn eigentlich habe ich zwei gegensätzliche Anforderungen:
1. Prompt muss "user@host:voller/pfad" zum schnellen Copy&Paste für scp oder rsync enthalten.
2. Prompt sollte kurz sein und direkt vor der Eingabe den Pfad anzeigen.
Momentan löse ich das, indem mein Prompt zweizeilig ist und die hintersten 20 Zeichen des Pfades doppelt angezeigt werden. Und genau das doppelte missfällt mir, auch wenn es alleine schon rein logisch nicht anders geht. Deswegen will ich Ausschau nach neuen Ideen halten.
Und ja, o.g. Prompt zeigt mir u.a. an, _wie_ ich zur Shell kam. In diesem Fall per ssh. Aber er kann auch screen, tmux, mosh, sudo, etc. anzeigen.
Dirk Deimeke am :
Die "Arbeit" in welchem Repository ich mich befinde, nimmt mir Liquidprompt ab. Das zeigt auch den Branch an, das ist mir wichtig, damit Commits nicht an der falschen Stelle landen.
Die Schleife benutze ich auch, allerdings in einem repack- und in einem Aktualisierungsskript.
Mir wäre Dein Prompt deutlich zu lang. Die Informationen, die ich sofort brauche, sehe ich jetzt und ich brauche nicht so viele Informationen sofort wie Du. Das hat auch damit zu tun, wie häufig bestimmte Aufgaben ausgeführt werden.
Mit einem zweizeiligen Prompt konnte ich mich nie anfreunden.
Tmux und screen kann liquidprompt übrigens auch