데비안-apt (apt-get 아님) 자동 완성 기능이 작동하지 않습니다


19

저는 데비안 제시 8.6에 있습니다. apt-get패키지 및 명령에 대한 탭을 누를 때 예상되는 bash 자동 완성 을 얻었지만 그것을 사용할 때 apt작동하지 않습니다. 나는 그것이 작동하는 곳에서 xubuntu 16.04를 사용하는 것을 기억하므로 여기서 작동하지 않는 것이 이상하다고 생각합니다. 명령에 사용할 수있는 방법이 apt있습니까? 그렇다면 어떻게?


당신에게 도움이 된 것이 있습니까?
Lynob

@Lynob 나는 우분투로 옮겼습니다. 그래서 당신을 도울 수 없습니다. 죄송합니다.
Andrea

답변:


20

데비안에는 'bash-completion'이 설치되어 활성화되어 있지 않습니다.

이 문제를 해결하려면 루트로 실행하십시오.

apt-get install bash-completion

그런 다음 두 가지 옵션이 있습니다. (1) 사용자별로 직접 활성화하거나 (2) 전체적으로 활성화 할 수 있습니다.

  1. 사용자에게만 사용 ~/.bashrc하려면 다음을 편집 하십시오.

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

    로그 아웃했다가 다시 로그인하지 않고 시도하려면 다음을 실행하십시오.

    . ~/.bashrc
    

    또는 새로운 껍질을여십시오. 그런 다음 apt와 함께 탭 완성을 사용하십시오. 시작 부분의 점과 공백 ( .)은 sourcebash 에서 키워드 를 사용하는 것과 동일 하지만 더 이식성이 뛰어납니다.

    su루트 계정에 들어갈 때 작동하게하려면 루트의 홈 디렉토리에서 동일한 작업을 수행하십시오 (일반적으로 /root).

  2. 전체적으로 사용하려면 파일에서 (1)의 변경을 수행하십시오 /etc/bash.bashrc.

왜 이것이 효과가 있는지 궁금해하는 사람 .은 앞에 디렉토리가 공백이 있기 때문에 현재 디렉토리를 참조 /etc/bash_completion하지 않습니다 . 대신 지정된 파일의 내용을 새 서브 쉘에서 실행하는 대신 현재 실행중인 쉘에서 평가합니다. 여기에 표준화되어 있습니다.

Bash에서는 이것이 .명령으로 대체 될 수 source있지만 POSIX는 표준화되어 있지 않으며 이식성이 떨어 지므로 사람들이 사용하지 못하게합니다. 이 경우에는 특히 bourne shell 또는에서 작동 해야하는 것이 아니라 bash를 확장하기위한 프로그램이므로 가독성을 ksh자유롭게 대체 할 수 있습니다 source.


1
나는 이미이 단계를 수행했지만 도움이되지 않았습니다. apt-get에서만 작동하지만 apt-get에서는 작동하지 않습니다.
안드레아

@Andrea 오, 죄송합니다. 귀하의 질문을 완전히 읽지 못했습니다. 나는 현재 데비안 상자에 있지 않습니다 (Windows에서는 불행히도 cygwin 만 가지고 있습니다).하지만 집에 돌아 왔을 때 데비안 컴퓨터에서 알아 내려고 노력할 것입니다.
Wyatt8740

5

데비안 9 스트레치에서 /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 파일은 작동하지 않았다 이유는, 윈도우 CR LF 줄 바꿈했다. 줄 형식을 Unix LF 줄 바꿈으로 변환해야했기 때문에 새 터미널을 시작한 후에 일했습니다.
klor

올바른 줄 바꿈이있는 'apt'파일은 다음과 같습니다. filedropper.com/apt_1
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
Ceisc

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.