[Terminal] Intelligente Bash-Completion

R

rullator

Aktives Mitglied
Thread Starter
Dabei seit
17.07.2007
Beiträge
356
Reaktionspunkte
57
ich hatte die frage bereits im anfaenger/spontane fragen-thread gestellt. aber hier nochmal im richtigen board:


gibt es eine intelligente bash-completion im terminal? so dass beispielsweise beim "cd" befehl mit der tab-taste nur directories ergaenzt werden und nicht auch dateien?

beispiel:

Code:
/tmp/mu > bash --version
GNU bash, version 3.2.17(1)-release (i386-apple-darwin9.0)
Copyright (C) 2005 Free Software Foundation, Inc.
/tmp/mu > ls -la
-rw-r--r--  1 username  wheel   0  1 Sep 12:25 version.txt
drwxr-xr-x  2 username  wheel  68  1 Sep 12:25 verzeichnis
/tmp/mu > cd ver<TAB>
version.txt  verzeichnis/

warum wird hier als alternative "version.txt" angezeigt? macht doch eigentlich keinen sinn, da es kein directory ist.

gibts fuer sowas eine loesung oder eine einstellung?
 
Meiner Meinung nach verhält sich bash-completion richtig.. du suchst ja nach Pointer, die mit ver* anfangen.. dazu zählt auch version.txt

Hast Du das in einer anderen Umgebung etwa anders?
 
Ich kenne keine Shell, die da zwischen Dateien und Ordnern unterscheidet.

EDIT: Jedes weitere Verhalten würde erfordern, dass die Shell genau weiss, welche Argumente für einen Befehl zulässig sind. Woher soll die Shell das wissen?

Alex
 
evtl. wäre ls -d das Richtige für dich? Du kanst dir ja ein Alias setzen.
 
ja, ich kenne das anders. hier habe ich zum beispiel debian laufen, da funktioniert das, beim "cd" befehl jedenfalls.
> more /etc/debian_version
lenny/sid
> bash --version
GNU bash, version 3.2.39(1)-release (x86_64-pc-linux-gnu)
Copyright (C) 2007 Free Software Foundation, Inc.

ich weiss nicht, ob ich mich recht erinnere aber, ich daechte, dass das unter ubuntu auch wie gewuenscht geht.
 
ja, ich kenne das anders. hier habe ich zum beispiel debian laufen, da funktioniert das, beim "cd" befehl jedenfalls.


ich weiss nicht, ob ich mich recht erinnere aber, ich daechte, dass das unter ubuntu auch wie gewuenscht geht.

Das Beispiel verwirrt mich.

Alex
 
schon mal die man page gelesen?
speziell den punkt Programmable Completion?
 
ich seh grad, bei debian steht in der bashrc:

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi

und in der bash_completion unter anderem:

# Make directory commands see only directories
complete -d pushd

ich hab die bash_completion nicht komplett angeschaut, da steht jedenfalls viel drin..

es gibt in darwin ports auch ein "bash-completion".
hab es grad installiert und es geht.. juhu :)
 
Ich kenne keine Shell, die da zwischen Dateien und Ordnern unterscheidet.

EDIT: Jedes weitere Verhalten würde erfordern, dass die Shell genau weiss, welche Argumente für einen Befehl zulässig sind. Woher soll die Shell das wissen?
Wirf mal einen Blick in "man zshcompsys" ;).
"man zshcompctl" ist in dem Zusammenhang auch interessant.

Gruß
maceis
 
Probiers mal hiermit und der zsh. Fahre damit seit einigen Jahren sehr gut mit

so long
 
Zurück
Oben Unten