Il completamento automatico del terminale non funziona correttamente


56

Se comincio a digitare un comando come apt-gdopo aver premuto tab, la shell completa il comando apt-get, ma per la seconda parte del comando mi piace install, se inserisco alcuni caratteri come insta, colpire tab, non lo completa install.

Un altro esempio: dopo che ho inserito sudocolpire tabnon completa nulla. ad esempio: sudo apt-ge[ tab] e niente.

Ho installato Ubuntu usando mini iso (programma di installazione di rete da 40 MB), quindi forse c'è una configurazione che mi è sfuggita!

Ho aggiunto questo codice al mio .bashrcma non funziona ancora:

if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

Ho anche controllato il permesso di .bashrced è -rw-r--r--.

Apporto anche le .bashrcmodifiche successive usando source .bashrcper applicare le modifiche al nuovo ambiente ma ancora senza effetti.

Lo uso xfce4-terminalquindi ho pensato che potesse essere il terminale e non il bash.

Ma modifica:

~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml

E cambiando:

<property name="&lt;Super&gt;Tab" type="string" value="switch_window_key"/>

per:

<property name="&lt;Super&gt;Tab" type="string" value="empty"/>

Anche non fa alcuna differenza.

Risposte:


84

bash-completion è un insieme di script bash che consente il completamento personalizzato per comandi specifici.

Questo non è solo per file e directory, ma anche per i comandi. Quindi si digita parziale di comandi e premendo si Tabottiene un completamento automatico dei comandi.

Installazione

Passaggio 1: installare bash-completamento

$ sudo apt-get install bash-completion

E a volte funziona se lo abbiamo reinstallato con il comando seguente:

$ sudo apt-get install --reinstall bash-completion

Passaggio 2: abilita il completamento bash nel tuo .bashrcfile

Apri il tuo gedit ~/.bashrce se questi contenuti non esistono lì, aggiungili alla fine e salvali.

# enable bash completion in interactive shells
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

Importante: Dopo le modifiche è necessario per ottenere il tuo ~/.bashrccon source ~/.bashrco riaprire il Terminal. Ora dovrebbe essere risolto.


1
Vorrei confermare che l'aggiunta del blocco di codice sopra al file ~ / .bashrc ha funzionato per me. Solo un commento; non hai davvero bisogno di disconnetterti e riconnetterti per farlo funzionare (potresti non voler terminare ciò in cui lavori), potresti semplicemente eseguire source ~/.bashrc.
nullgeppetto,

Ho dovuto riaprire il Terminale affinché funzionasse!
Gilberto Albino,

2
Il completamento ha improvvisamente smesso di funzionare per me, i passaggi precedenti non risolvono il problema. Qualche idea su come risolvere il problema? Su ubuntu 16.04
Gudlaugur Egilsson,

1
Il passaggio 2 lo fa per me. O ottenere il modello da/etc/skel/.bashrc
Hendy Irawan,

1
@SergioIvanuzzo non è sicuro di quale problema stai affrontando potresti guardare questo unix.stackexchange.com/q/219342/72456 aiuta, altrimenti aprire la tua domanda per il problema che hai.
αғsнιη

27

Se il caso in cui la scheda del terminale non funziona sotto Xfce,

La soluzione è la seguente:

  1. Aprire Application Menu> Settings> Window Manager.
  2. Fare clic sulla Keyboardscheda
  3. Cancella l' Switch window for same applicationimpostazione.

Screenshot di Window Manager come cancellare la finestra di commutazione per la stessa applicazione

Ho trovato la soluzione qui


Ho provato a prendere il sole, ma era già tutto a posto. Questa è stata davvero la soluzione per me.
user1226868,

Idem. Ottimo suggerimento
cerebrou,

Grazie mille, stavo davvero perdendo la testa su questo.
Dustin Cowles,

2
Ancora la soluzione di cui avevo bisogno a partire da maggio 2018.
clifgray,

Grazie ha funzionato per me
MMH il

3

Potresti anche trovarti in una shell che non supporta il completamento automatico (ad esempio: Bourne Shell | SH). Se vuoi che BASH si completi automaticamente devi cambiare shell, dì a BASH (Bourne Again SHell) invece con il comando

chsh -s /bin/bash

Fonte: Ubuntu Wiki - Cambio delle conchiglie


1

Nel mio caso, stavo cercando di eseguire uno script ./myScript.she la digitazione ./my[tab]non si completava automaticamente.

Ho dovuto aggiungere le autorizzazioni di esecuzione al file e il completamento automatico ha funzionato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.