como lo resolví

como lo resolví

Estoy en Debian Jessie 8.6. Me di cuenta de que apt-getobtiene el autocompletado esperado de bash al presionar la pestaña para paquetes y comandos, pero cuando intento usarlo aptno funciona. Recuerdo haber usado xubuntu 16.04 donde funcionó, así que me parece extraño que aquí no funcione. ¿Hay alguna manera de habilitarlo apttambién para el comando? ¿Si es así, cómo?

Respuesta1

Debian no viene con 'bash-completion' instalado y habilitado.

Si llega a Debian desde, digamos, un entorno de Ubuntu, donde está preinstalado y habilitado de forma predeterminada, esto puede ser una fuente de cierta confusión.

Para habilitar/'arreglar' esto, ejecute (como root):

apt-get install bash-completion

Entonces tienes dos opciones. Tu también puedes:

 1. Habilítelo por usuario para usted o

 2. Habilítelo globalmente.

1. Si desea habilitarlo solo para su usuario, edítelo ~/.bashrcy agregue lo siguiente:

    if [ -f /etc/bash_completion ]; then
        . /etc/bash_completion
    fi

Para probarlo sin cerrar sesión y volver a iniciarla, ejecute:

    . ~/.bashrc

O abra un nuevo shell. Luego intente utilizar la función de tabulación con apt. Ese punto y espacio al principio ( .) es lo mismo que usar la sourcepalabra clave en bash, pero es más portátil.

Si desea que funcione cuando suingresa a la cuenta raíz, haga lo mismo en el directorio de inicio de la raíz (generalmente /root).

2.Para habilitarlo globalmente, haga los cambios desde (1) en el archivo /etc/bash.bashrcen su lugar.

Para cualquiera que se pregunte por qué esto funciona, el .frente de /etc/bash_completionsí lo hace.noconsulte el directorio actual, ya que tiene espacios a su alrededor. En cambio, hace que el contenido del archivo dado se evalúe en el shell que se está ejecutando actualmente, en lugar de ejecutarse en un nuevo subshell.Está estandarizado aquí.

En Bash, esto .puede ser reemplazado por el comando source, pero POSIX no lo estandariza y es menos portátil, por lo que tiendo a disuadir a la gente de usarlo. En este caso, dado que es específicamente un programa para extender bash, en lugar de algo que necesita funcionar en un shell bourne o ksh, puedes sustituirlo sourcepor legibilidad.

Por cierto, este comportamiento (no abrir un sub-shell) es similar a la forma en que los scripts .BAT de DOS/Windows funcionan normalmente, cambiando el estado del shell en el que se ejecutan. Esta es la razón por la que si ingresa cda una ruta diferente en un script de shell , no estará en esa ruta cuando el script salga como si estuviera en un .BAT.

Respuesta2

En Debian 9 Stretch simplemente edite /etc/bash.bashrc y descomente:

# 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

Respuesta3

como lo resolví

Tuve problemas de autocompletar al intentar completar automáticamente wgety apt-get install wg[TAB][TAB]logré resolverlo eliminando el --no-generateparámetro de las moscas a continuación:

/usr/share/bash-completion/completions/apt-cache
/usr/share/bash-completion/completions/apt-get

Vale la pena mencionar que estos archivos están disponibles sólo después de la instalación bash-completion.

El --no-generateparámetro al que me refiero se puede ver en la línea siguiente, pero eliminé ALL --no-generate, no solo de esta línea: https://github.com/scop/bash-completion/blob/master/completions/apt-get#L28

¿Cómo llegué a este punto?

Llegué a este punto después de ejecutar set -vel anterior apt-get install wg[TAB][TAB], que mostró que el comando ejecutado fue:

apt-cache --no-generate pkgnames wg

y el resultado fue un error:

E: Could not open file  - open (2: No such file or directory)

Cuando ejecuté apt-cache pkgnames wgsin el --no-generateobtuve correctamente la lista para autocompletar:

root@484f5c8f56ba:/# apt-cache pkgnames wg
wgalician-minimos
wget2
wgaelic
wget
wgerman-medical
wget2-dev

Espero que esto ayude.

Respuesta4

Copie este archivo de configuración de Ubuntu: /usr/share/bash-completion/completions/apt al mismo directorio en Jessie. También puedes obtener el archivo aquí:http://pastebin.com/PRBMt3an

información relacionada