Debian-apt(apt-getではない)オートコンプリートが機能しない


19

私はDebian Jessie 8.6を使用しています。apt-getパッケージとコマンドのタブを押すと、予想されるbashオートコンプリートを取得することに気付きましたが、それを使用しようとすると機能しaptません。私はxubuntu 16.04を使用したところを使用したことを覚えているので、ここでは機能しないことが不思議に思います。コマンドに対しても有効にする方法はありaptますか?もしそうなら、どのように?


何かうまくいきましたか?
リノブ

@Lynob私は結局Ubuntuに移行したので、私はあなたを助けることができません、ごめんなさい。
アンドレア

回答:


19

Debianには「bash-completion」がインストールされ、有効にされていません。

これを修正するには、次を実行します(rootとして):

apt-get install bash-completion

次に、2つのオプションがあります。(1)ユーザーごとに有効にするか、(2)グローバルに有効にすることができます。

  1. 自分のユーザーだけで有効にする場合は、編集し~/.bashrcて次を追加します。

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

    ログアウトして再度ログインせずに試すには、次を実行します。

    . ~/.bashrc
    

    または、新しいシェルを開きます。次に、aptでタブ補完を使用してみます。先頭のドットとスペース(.)は、sourcebashでキーワードを使用するのと同じですが、より移植性があります。

    suルートアカウントに移動したときに機能するようにするには、ルートのホームディレクトリで同じ操作を行います(通常は/root)。

  2. グローバルに有効にするには、/etc/bash.bashrc代わりにファイルで(1)から変更を行います。

これがなぜ機能するのか疑問に思っている人にとっては.、前にあるの/etc/bash_completionは現在のディレクトリを指していませ。代わりに、新しいサブシェルで実行されるのではなく、現在実行中のシェルで指定されたファイルの内容が評価されます。ここで標準化されています。

Bashでは、これ.はコマンドsourceで置き換えることができますが、これはPOSIXで標準化されておらず、移植性が低いため、人々を使用から遠ざける傾向があります。この場合、bourneシェルまたはkshで動作する必要があるものではなく、具体的にはbashを拡張するためのプログラムであるためsource、読みやすさを自由に置き換えることができます。


1
私はすでにこれらの手順を実行しましたが、それは役に立ちませんでした。apt-getでのみ機能しますが、aptでは機能しません。
アンドレア

@アンドレアああ、すみません、私はあなたの質問を完全に読んでいなかったと思います。私は現時点ではDebianのボックスにいません(Windowsでは、残念ながらcygwinしかありません)が、家に帰ったときにdebianマシンからそれを見つけようとします。
Wyatt8740

4

Debian 9 Stretchでは、/ etc / bash.bashrcを編集してコメント解除します。

# 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

3

この設定ファイルをUbuntuからコピーします:/ usr / share / bash-completion / completions / aptをJessieの同じディレクトリにコピーします。ここからファイルを入手することもできます:http : //pastebin.com/PRBMt3an


これは私が必要なものです。しかし、aptの自動補完は機能しません。コピーした後、ダウンロードしたaptファイルの名前を/ usr / share / bash-completion / completions /に変更しました。それを機能させる方法は?
klor

pastebin.com/PRBMt3anファイルは、それが機能しなかった理由です、WindowsのCR LFの改行にありました。行形式をUnix LF改行に変換しなければならなかったので、新しい端末を起動してから作業しました。
klor

正しいラインフィードの「apt」ファイルを次に示し
klor

1

解決方法

オートコンプリートwgetでオートコンプリートの問題が発生apt-get install wg[TAB][TAB]したため--no-generate、以下のハエからパラメーターを削除して問題を解決しました。

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

これらのファイルは、インストール後にのみ使用できることに注意してくださいbash-completion

--no-generate私が参照してるパラメータは、以下の行で見ることができますが、私はすべてを削除し --no-generate、だけでなく、このラインから: https://github.com/scop/bash-completion/blob/master/completions/apt-get# L28

どうやってこの点に来たのですか?

set -v前に実行した後、このポイントに到達しましたapt-get install wg[TAB][TAB]。実行されたコマンドは次のとおりでした。

apt-cache --no-generate pkgnames wg

出力はエラーでした:

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

apt-cache pkgnames wgなしで実行すると、--no-generateオートコンプリートのリストが正しく取得されました。

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

お役に立てれば。


それはまさに私が必要としていたものでした。ありがとう:D
セイス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.