El autocompletado de terminal no funciona correctamente

56

Si empiezo a escribir un comando como apt-gdespués de presionar tab, el shell completa el comando para apt-get, pero para la segunda parte del comando install, si ingreso algunos caracteres como insta, presionar tab, no lo completa install.

Otro ejemplo: después de entrar, sudogolpear tabno completa nada. por ejemplo: sudo apt-ge[ tab] y nada.

Instalé Ubuntu usando mini iso (instalador de red de 40MB), ¡así que tal vez haya una configuración que me perdí!

He agregado este código a mi .bashrcpero aún no funciona:

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

También he verificado el permiso de .bashrcy es -rw-r--r--.

También uso los .bashrccambios posteriores source .bashrcpara aplicar los cambios al nuevo entorno, pero todavía no tengo efectos.

Lo uso, xfce4-terminalasí que pensé que podría ser el terminal y no el bash.

Pero editando:

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

Y cambiando:

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

a:

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

No hace ninguna diferencia también.

Ravexina
fuente

Respuestas:

84

bash-completion es un conjunto de secuencias de comandos bash que permite la finalización personalizada de comandos específicos.

Esto no es solo para archivos y directorios, sino también, por ejemplo, para los comandos. Entonces escribe parcial de comandos y al presionar Tabobtenemos una finalización automática de comandos.

Instalación

Paso 1: Instalar bash-complete

$ sudo apt-get install bash-completion

Y algunas veces funciona si lo reinstalamos con el siguiente comando:

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

Paso 2: habilite bash-complete en su .bashrcarchivo

Abra su gedit ~/.bashrcy si este contenido no existe allí, agréguelo al final y guárdelo.

# 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: Después de los cambios que necesita y establecer el origen ~/.bashrccon source ~/.bashrco volver a abrir su terminal. Debería estar arreglado ahora.

αғsнιη
fuente
1
Me gustaría confirmar que agregar el bloque de código anterior al archivo ~ / .bashrc funcionó para mí. Solo un comentario; realmente no necesita cerrar sesión e iniciar sesión nuevamente para que funcione (es posible que no desee finalizar lo que trabaja), simplemente puede ejecutar source ~/.bashrc.
nullgeppetto
¡Tuve que volver a abrir la Terminal para que funcione!
Gilberto Albino
2
La finalización de repente dejó de funcionar para mí, los pasos anteriores no solucionan el problema. ¿Alguna idea sobre cómo solucionar el problema? En ubuntu 16.04
Gudlaugur Egilsson
1
El paso 2 lo hace por mí. O obtenga la plantilla de/etc/skel/.bashrc
Hendy Irawan
1
@SergioIvanuzzo no está seguro de qué problema está enfrentando, puede mirar este unix.stackexchange.com/q/219342/72456 que ayuda, de lo contrario, abra su propia pregunta para el problema que tiene.
αғsнιη
27

Si su caso es la pestaña terminal no funciona Xfce,

La solución es la siguiente:

  1. Abrir Application Menu> Settings> Window Manager.
  2. Haga clic en la Keyboardpestaña
  3. Borrar la Switch window for same applicationconfiguración.

Captura de pantalla del Administrador de ventanas cómo borrar la ventana del interruptor para la misma aplicación

He encontrado la solución aquí

itsho
fuente
Tried aceptó un poco más, pero todo ya estaba en su lugar. Esta fue de hecho la solución para mí.
user1226868
Ídem. Gran pista
cerebrou
Muchas gracias, realmente estaba perdiendo la cabeza en este caso.
Dustin Cowles
2
Aún así, la solución que necesitaba a partir de mayo de 2018.
Clifgray
Gracias funcionó para mí
MMH
3

También puede estar en un shell que no admite autocompletar (por ejemplo: Bourne Shell | SH). Si desea que BASH se complete automáticamente, debe cambiar los shells, dígale a BASH (Bourne Again SHell) en su lugar con el comando

chsh -s /bin/bash

Fuente: Wiki de Ubuntu - Cambiar shells

Michael Lowden
fuente
1

En mi caso, estaba tratando de ejecutar un script ./myScript.sh, y la escritura ./my[tab]no se completaba automáticamente.

Tuve que agregar permisos de ejecución al archivo y la finalización automática funcionó.

Hezi
fuente