Mac OS X의 명령에 대한 배쉬 완성


38

우분투에서와 같이 명령을 입력 할 때 프로그램 이름을 자동 완성 fink하고 얻는 방법은 무엇입니까?macportsapt-get

예를 들어 내가 입력하면

sudo port install ca

를 누르면 tab터미널이 자동 완성되거나 사용 가능한 명령이 표시됩니다.

OS X는 이후에도 자동 완성 명령을 수행하지 않습니다 sudo!

답변:


69

bash-completion은 다음에 대한 완성도를 높입니다.

  • sudo및 이후의 명령 이름which
  • Macports 및 Homebrew 패키지 이름 (선택 사항)
  • 다음 known_hosts과 같은 명령 에 대한 호스트 이름ssh
  • 폴더 CDPATH

등등. 을 사용하여 완료 명령 목록을 인쇄하고을 사용 complete -p하여 함수의 소스를 볼 수 있습니다 declare -f.

Homebrew 또는 MacPorts 및 Bash 설치

먼저, 지침에 따라 Homebrew 또는 MacPorts 를 설치해야 합니다. 참고 : 둘 다 충돌하므로 설치하지 마십시오.

그런 다음 최신 버전의 Bash를 설치하십시오. OS X의 내장 Bash는 약간 오래되었으며 Bash> 4.1을 통해 더 많은 완료 옵션을 얻을 수 있습니다.

brew install bash

또는

sudo port install bash

Homebrew 또는 MacPorts 사용 여부에 따라

Homebrew로 bash-completion 설치

를 설치하려면 bash-completion다음을 수행해야합니다.

brew install bash-completion

그리고 당신의 다음을 추가하십시오 ~/.bash_profile:

if [ -f $(brew --prefix)/etc/bash_completion ]; then
  . $(brew --prefix)/etc/bash_completion
fi

Homebrew는 현재 Bash 3.x에서 여전히 작동하는 이전 버전의 bash-completion (1.3)을 설치하지만 여전히 Bash 4.x를 사용하는 것이 좋습니다.

MacPorts로 bash- 완료 설치

MacPorts를 사용하는 경우 :

sudo port install bash-completion

그런 다음에 추가하십시오 ~/.bash_profile.

if [ -f /opt/local/etc/profile.d/bash_completion.sh ]; then
  . /opt/local/etc/profile.d/bash_completion.sh
fi

포트 이름 완성을 활성화하는 방법에 대한 지침 은 trac.macports.org/wiki/howto/bash-completion 을 참조하십시오 .


MacPorts의 bash-completion패키지는 이후에 추가 인수로 패키지 이름 완성을 지원합니다 port <verb>. 48-58 행을 참조 하십시오 . 이 동작에 암시되어 MacPorts를 위키 "있는 상태, 의 명령에 대해 예를 들어이 단지 파일과 디렉토리에 대한 아니라, 또한 port그래서 당신은 입력합니다. port <Tab>모든 가능한 명령 목록을 얻는다. "는 명시 적으로 언급하고 있지만, 동사의 완성 (매우 간단합니다).
Daniel Beck

패키지 이름 자동 완성되며 위키에서는 언급하지 않습니다. 링크 된 스크립트 코드를 참조하십시오.
Daniel Beck

variants.confMacPorts를 자체 완료되지 않습니다; variant.conf는 링크 한 위키 페이지에 설명 된대로 모든 포트에 대해 자동으로 설정되는 변형을 정의합니다 . 해당 라인을 추가하면 설치 한 포트에 대해 bash 완료 지원이 활성화됩니다.
Kevin Reid

homebrew의 자동 완성에 대한 팁을 주셔서 감사합니다. 그 자체만으로도이 답변은 투표권을 얻었습니다.
Paul Wagland

훌륭합니다. make자동 완성 기능을 사용하도록 설정 했습니다.
Мати Тернер
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.