PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : schlauere Bash



Seiten : [1] 2

SeeksTheMoon
28.01.03, 22:10
HIer gibt es etwas interessantes, mit dem man die bash aufmotzen kann:
http://www.caliban.org/bash/index.shtml

Das Teil heißt bash-completion und hilft uns TAB-Tasten-Junkies.
z.B. werden manpages ja normalerweise nicht per TAB angezeigt, man muss raten, wie der Befehl/die Funktion heißt, die man sucht.
Jetzt beginnt man den Befehl zu schreiben, drückt nur noch TAB und sieht allle möglichen manpages:

z.B. will ich ein C-Programm schreiben und dort String-Funktionen einbauen, hab aber vergessen, wie die Funktion genau heißt, weiß aber, dass sie mit "str" anfängt.
Also:
~>man str TAB TAB
strace strcspn strict strncpy strsignal strtold
strange strdup string strndup strspn strtoll
strcasecmp strdupa strings strndupa strstr strtoq
strcat strerror strip strnlen strtod strtoul
strchr strerror_r strlen strpbrk strtof strtoull
strcmp strfmon strncasecmp strptime strtok strtouq
strcoll strfry strncat strrchr strtok_r strverscmp
strcpy strftime strncmp strsep strtol strxfrm

Aha! strcpy hab ich gesucht...

Dann noch was, das für Java-Lover ganz nett ist: Wenn man eine Java-Klasse ausführen will und java TAB drückt, wird das .class (oder .java) am Ende automatisch weggelassen.

Wer sich mit ssh irgendwo einloggt, bekommt mit TAB eine Vervollständigung aller Hostnamen aus der known_hosts Datei. Dies klappt auch mit NFS, p4, cvs, ...

Schaut es euch an, das Ding ist Hammer!

Installhilfe:

Die im tarball enthaltene Datei bash_completion nach /etc kopieren und im .bashrc File folgende Eintraege hinzufuegen:
# START bash completion -- do not remove this line
bash=${BASH_VERSION%.*}; bmajor=${bash%.*}; bminor=${bash#*.}
if [ "$PS1" ] && [ $bmajor -eq 2 ] && [ $bminor '>' 04 ]
&&[ -f /etc/bash_completion ]; then # interactive shell
# Source completion code
. /etc/bash_completion
fi
unset bash bmajor bminor
# END bash completion -- do not remove this line

Xonic
29.01.03, 23:14
Seit ich Knoppix 3.1 auf meiner kiste fahre, ist das bei mir von Haus aus da.

es ist echt nützlich. besonders in verbindung mit _man_

Flightbase
29.01.03, 23:43
*unterschreib*
möchte ich nicht missen.

xare
30.01.03, 00:09
Bei der aktuellen Suse werden die man-pages auch vervollständigt.
Den Java-hack könnt ich allerdings gut gebrauchen...

MfG Xare

prostetnik
30.01.03, 22:16
... bei SuSE 8.0 auch
gruß
prostetnik

joey.brunner
30.01.03, 22:27
das ist ja dick.... ich hab schon mla sowas gesehen, also ne shell, die von fsat jedem boardtool die optionen kanntte... ganz dick sowas

joey

Xonic
01.02.03, 11:51
ist das eigentlich normal, dass wenn ich "apt-get i" gefolgt von TAB eingebe, es zu "apt-get install" autovervollständigt wird?

SeeksTheMoon
01.02.03, 12:54
Ja, das Prog kennt die Parameter der wichtigsten Befehle und vervollständigt diese

leifg
07.02.03, 18:23
also bash_completion is eht geil. weiss gar nicht wie ich vorher ohne ausgekommen bin

nur: "man <tab> <tab>" dauert etwas lange ( Display all 7550 possibilities? (y or n) ) ;)

ansonsten super

sogar apt-get install x <tab> <tab> klappt

mfg

leifg

Schamane
21.02.03, 13:09
Original geschrieben von leifg

nur: "man <tab> <tab>" dauert etwas lange ( Display all 7550 possibilities? (y or n) ) ;)



da is aber jemand nicht geizig beim installieren gewesen ;)

dragon's might
21.02.03, 13:21
Original geschrieben von leifg

sogar apt-get install x <tab> <tab> klappt

wow! das hat mir noch gefehlt!:)

Discipulus
21.02.03, 14:10
hm ... doofe Frage: Wie installiere ich diese unter Debian? Das RPM kann ich nicht installieren, und wenn ich ein deb-Paket daraus erstelle (mit alien) kommt:
bash kollidiert mit bash-completion

gENOZIDe
22.02.03, 02:55
Hi,

ich bekomme das irgendwie nicht hin. Ich habe die Datei 'bash_completion' unter /etc/ mit den Zugriffsrechten 777 abgelegt (777 deshalb, damit mir jetzt bloss ja nix wegen den Rechten dazwischen funkt ;)). Danach noch die paar Zeilen zum Starten in die /etc/.bashrc gepastet aber es will nicht laufen... habe mich schon mehrere Male ausgeloggt und wieder eingeloggt. Ich habe die Datei 'bash_completion' auch manuell ausgefuehrt... nix! :confused:

leifg
22.02.03, 15:51
Original geschrieben von gENOZIDe
Hi,

ich bekomme das irgendwie nicht hin. Ich habe die Datei 'bash_completion' unter /etc/ mit den Zugriffsrechten 777 abgelegt (777 deshalb, damit mir jetzt bloss ja nix wegen den Rechten dazwischen funkt ;)). Danach noch die paar Zeilen zum Starten in die /etc/.bashrc gepastet aber es will nicht laufen... habe mich schon mehrere Male ausgeloggt und wieder eingeloggt. Ich habe die Datei 'bash_completion' auch manuell ausgefuehrt... nix! :confused:

machs so wie ich:

leg dir ein file an in dem du alles einfügst was du brauchst (u.a. auch bash_completion) und dann bindest du das file mit "test -e <absoluter pfad zum file> && . <absoluter pfad zum file>" in /etc/profile /etc/bash.bashrc, ~/.bashrc und sonstige configs file ein.

mfg

leifg

Schamane
05.03.03, 17:31
habe gerade mein Debian ma auf unstable umgestellt, und siehe da, es ist jetzt auch dabei ;)

Pixcy
05.03.03, 18:24
Original geschrieben von Xonic
ist das eigentlich normal, dass wenn ich "apt-get i" gefolgt von TAB eingebe, es zu "apt-get install" autovervollständigt wird?
Du kannst ja einfach alles vervollständigen lassen! Der macht auch jede Datei und jedes Verzeichnis!

z.B. cd /usr/src/l TAB ergibt cd /usr/src/linux-2.4.19-. Da muss man dann nurnoch seinen Senf dazugeben. Wow! So macht das fixe Arbeiten Spass.

Einfach rumprobieren, sag ich da nur! Wenn man nur cd /usr TAB TAB macht, zeigt der einem alle Möglichkeiten an, die man hat! Und löscht die Zeile dann ncht, sondern übernimmt die bis nach der Auflistung!

Schamane
05.03.03, 18:26
@pixcy

das ging normal auch schon vorher

gENOZIDe
05.03.03, 22:45
Es funktioniert immer noch nicht bei mir. Noch einen Tipp wie man das einbindet oder installieren kann?
Achja, und fuer euch hab ich auch noch nen Hinweis. Und zwar kann man sich das 2x TAB sparen indem man folgendes in die Datei /etc/inputrc hinzufuegt:

set show-all-if-ambiguous on

hf, geno

Discipulus
06.03.03, 13:45
Was hast du den für ne Distri?

gENOZIDe
06.03.03, 13:54
Original geschrieben von Discipulus
Was hast du den für ne Distri?

Ich habe Debian Woody 3.0 unstable/testing.

Discipulus
06.03.03, 13:55
Ist nur ein Detail: Woody ist stable. Da gibt es noch sid und sarge, welche unstable und testing sind. Aber eben...nur ein Detail.
Ich kann dir leider auch nicht helfen, da ich es auch nicht hinbekomme mit Debian Woody, wie auch schon gepostet.

gENOZIDe
06.03.03, 14:00
hm... komisch ist nur, dass ich es schon mal geschafft habe. Dann habe ich nur leider noch mal alles installieren wollen und schwubs war ich das schoene Features los ;). Ausserdem, bei Knoppix, ebenfalls Debian Woody 3.0, funktioniert es ja auch. Ich kapier es einfach nicht. Aber nur dafuer neu zu installieren habe ich auch (noch) keine lust.

ProfBunny
06.03.03, 15:11
Hallo Leute,

bei debian woody ist das schon drin, man muß nur in der /etc/bash.bashrc
die auskommentierung entfernen.


Grüße Profbunny

gENOZIDe
06.03.03, 15:15
Original geschrieben von ProfBunny
Hallo Leute,

bei debian woody ist das schon drin, man muß nur in der /etc/bash.bashrc
die auskommentierung entfernen.


Grüße Profbunny

das habe ich auch schon gemacht.... nix :ugly:


EDIT:

Krass0rst :eek: Es funktioniert jetzt ja doch !!! THX 1000 MAL !!!!! :D :D :D

Discipulus
07.03.03, 10:29
Juhu ..... läuft auch bei mir :D

xcelsior
18.03.03, 13:41
bei mir auch!! danke!

dragon's might
25.03.03, 16:04
btw.:
Unter Debian ist's ganz einfach!

Kopiert die entpackte Datei nach /etc/
Dann editiert die /etc/bash.bashrc. Da steht drin :



# System-wide .bashrc file for interactive bash(1) shells.

shopt -s checkwinsize

# enable bash completion in interactive shells

#if [ "$PS1" -a -f /etc/bash_completion ]; then
# . /etc/bash_completion
#fi


Einfach auskomentieren, also sieht es dann so aus:




# System-wide .bashrc file for interactive bash(1) shells.

shopt -s checkwinsize

# enable bash completion in interactive shells

if [ "$PS1" -a -f /etc/bash_completion ]; then
. /etc/bash_completion
fi


That's it ! :cool:

Ybbus
27.06.03, 17:07
Hi!

Hab das Kommentar entfernt, aber klappt nicht.
Muss ich noch irgendwas machen, damit die bash.bashrc verarbeitet wird, oder sollte das so gehen?

Wie kann ich das Testen, ob ich diese completion funktionalität überhaupt habe?

also das bash_completion existiert bei mir...

Nur war es bei Knoppix so, dass er z.B. bei iptables -A P [TAB] [TAB] das POSTROUTING erkannt hat.
Macht er jetzt aber nich :(

Gibts dafür ein apt-get-Paket?

ThorstenS
27.06.03, 19:34
debian woody hat die Version 2.0.5a und die /etc/bash_completion ist immer da.
Nur in der /etc/bash.bashrc muß die # vor dem ". /etc/bash_completion" entfernt werden.
Dann funktioniert es.

Bei meiner SuSE 6.4 hatte ich mal nen geilen Hack in der inputrc
Dort habe ich nach einem langen iptables Befehl nur ipt[Pfeil nach oben] gedrückt und er ist durch die history und hat die ganzen Befehle angezeigt, die mit ipt anfangen.
Das war eine imense Arbeitserleichterung, leider finde ich das nicht mehr :(

EDIT: iptables ist nur ein Beispiel, das gabs damals natürlich noch nicht.

neonknight
27.06.03, 19:39
danke für den hinweis
gibt's übrigens auch als gentoo-ebuild