
Wenn ich versuche, die Tab-Vervollständigung mit zu verwenden rake
, werden nur Dateien vorgeschlagen:
$ rails test-app | grep -v create; cd test-app
$ rake <TAB><TAB>
app/ db/ lib/ public/ README test/ vendor/
config/ doc/ log/ Rakefile script/ tmp/
Das Paket rake-0.8.7-2
enthält eine Konfigurationsdatei zur Bash-Vervollständigung.
$ debsums -e rake
/etc/bash_completion.d/rake OK
daher gehe ich davon aus, dass durch Drücken der Tabulatortaste die zum Rake verfügbaren Aufgaben vorgeschlagen werden:
$ rake --tasks
(in ~/sandbox/test-app)
rake db:abort_if_pending_migrations # Raises an error if there are pending migrations
rake db:charset # Retrieves the charset for the current environment's database
rake db:collation # Retrieves the collation for the current environment's database
rake db:create # Create the database defined in config/database.yml for the current RAIL...
rake db:create:all # Create all the local databases defined in config/database.yml
rake db:drop # Drops the database for the current RAILS_ENV
...
Was mache ich falsch?
Das Problem besteht weiterhin, nachdem ich Rake neu installiert und meinen Computer neu gestartet habe. Mein ~/.bashrc
Inhalt:
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
. /etc/bash_completion
fi
aber die Vervollständigung für rake
scheint nicht registriert zu sein:
$ complete | grep rake
$
Das explizite Ausführen . /etc/bash_completion
in der Shell löst das Problem nicht, aber das Ausführen des folgenden Befehls aktiviert die Vervollständigung rake
vorübergehend:
$ grep complete /etc/bash_completion.d/rake
[ -n "${have:-}" ] && complete -F _rake $filenames rake
$ complete -F _rake rake
$ rake <TAB><TAB>
db:abort_if_pending_migrations db:version rails:update
db:charset doc:app rails:update:application_controller
db:collation doc:clobber_app rails:update:configs
db:create doc:clobber_plugins rails:update:generate_dispatchers
db:create:all doc:clobber_rails rails:update:javascripts
db:drop doc:guides rails:update:scripts
...
Antwort1
Tab-Vervollständigungen werden beim Öffnen einer Shell geladen. Wenn Sie eine Anwendung installieren, müssen Sie entweder Ihre Shell erneut öffnen oder den nächsten Befehl ausführen, um die neuen Bash-Vervollständigungen zu laden:
. /etc/bash_completion
Sieht aus wie es istein Käferin rake
. [ -n "${have:-}" ]
prüft, ob eine Variable mit dem Namen $have
gesetzt ist. Dies funktioniert nicht, wenn der vorherige Aufruf fehlgeschlagen ist. Ersetzen Sie es durch have rake
:
have rake && complete -F _rake $filenames rake