Bash Tab-Completion 2.0

hoi.

als ik van een debian (testing) machine iets naar mn mac kopieer (scp) kan bash tab-completion lokaal paden van de remote mac expanden.(…)
dus bv. door dit te typen:

[code:1:56670795da]scp loca[TAB] plop[TAB]/Lib[TAB]Web[TAB]Doc[TAB]test[TAB][ENTER][/code:1:56670795da]
kan ik dit commando wil uitvoeren:

[code:1:56670795da]scp localfile.tgz plopmac.local:/Library/Webserver/Documents/testsite/[/code:1:56670795da]

elke keer dat ik [TAB] is er een kleine latency en netwerk activiteit.
de debian machine doet dus een soort remote path-lookup/-completion… en heeft ook de hostname (plopmac.local: ) inclusief ‘:’ in zn PATH…

hoe kan ik dit de andere kant op ook voor elkaar krijgen?
dus dat bash op de mac hetzelfde doet?

en waar is dit in debian geconfigureerd?
ik was een beetje (blij) verbaasd toen ik deze functionaliteit ontdekte.
maar heb het dus niet zelf ingesteld…

Mount gewoon de schijf aan de andere kant, b.v. als een NFS-share. Stel je voor dat hij onder /Volumes/debian zit, dan kun je dus heel eenvoudig: [code:1:0c5c8edc49]ls /V[tab]deb[tab]ho[tab]ikke[/code:1:0c5c8edc49] Hiervoor moet je wel een NFS-server draaien op de Debian-PC; of een Mac automatisch NFS-shares mount weet ik niet, maar anders is het eenvoudig handmatig te doen (en makkelijker te maken door /etc/hosts aan te passen).

maarja, de hele grap is juist dat ik niets [b:df064a7eac]hoef[/b:df064a7eac] te mounten, en [i:df064a7eac]toch[/i:df064a7eac] tab-completion heb van debian naar mac. (en ook van lokaal debian naar mn server) de vraag is, hoe ditzelfde andersom te bereiken? en de tweede; waar zit deze config in debian - dit helpt om het op de mac ook werkend te krijgen.

ik heb ssh-keys geshared tussen de machines, en bash als shell. zou dus moeten kunnen…

ik had wrslk poep in mijn ogen ofzo, het is nl. erg eenvoudig…

• download+untar bash-completion-20060301.tar.gz
• kopieer [i:36fe6781fe]bash_completion[/i:36fe6781fe] naar [i:36fe6781fe]/etc/[/i:36fe6781fe] (of waar je wilt)
• voeg het volgende toe aan [i:36fe6781fe]/etc/bashrc[/i:36fe6781fe], [i:36fe6781fe]~/.bashrc[/i:36fe6781fe] of [i:36fe6781fe]~/.profile[/i:36fe6781fe] etc:

[code:1:36fe6781fe]# Check for bash (and that we haven’t already been sourced).
[ -z “$BASH_VERSION” -o -n “$BASH_COMPLETION” ] && return

Check for recent enough version of bash.

bash=${BASH_VERSION%.}; bmajor=${bash%.}; bminor=${bash#*.}

Check for interactive shell.

if [ -n “$PS1” ]; then
if [ $bmajor -eq 2 -a $bminor ‘>’ 04 ] || [ $bmajor -gt 2 ]; then
if [ -r /etc/bash_completion ]; then
# Source completion code.
. /etc/bash_completion
fi
fi
fi
unset bash bminor bmajor
[/code:1:36fe6781fe]voila!

lees uitgebreider op http://www.caliban.org/bash/index.shtml#completion
en in de README in de tarball.