![프로그램을 실행하기 전에 매개변수를 확인하세요.](https://linux55.com/image/29648/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%9D%84%20%EC%8B%A4%ED%96%89%ED%95%98%EA%B8%B0%20%EC%A0%84%EC%97%90%20%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%EB%A5%BC%20%ED%99%95%EC%9D%B8%ED%95%98%EC%84%B8%EC%9A%94..png)
bash를 입력 unzip
하고 키를 누르면상표, 자동 완성 기능은 확장자가 .zip인 파일에서만 작동합니다. 당신은 그렇게 않았다 방법? 이미지 파일만 허용하는 프로그램을 만들고 싶은 경우 자동 완성을 특정 확장자(예: .jpg 및 .png만)로 제한하려면 어떻게 해야 합니까?
이것은 일종의 시스템 설정인가요, 아니면 언어(bash, C++, Python)에 따라 달라지는 프로그래밍 설정인가요?
답변1
프로그램 자체는 전달된 모든 파일 이름을 실행합니다. 완성 접미사에 대한 제한은 .zip
프로그램의 기능과 아무 관련이 없습니다. 완료는 쉘에 의해 수행됩니다. 를 누르면 Tab쉘은 명령줄을 어느 정도 구문 분석하여 컨텍스트에 대한 완료 규칙을 찾습니다. 셸에 따라 컨텍스트 분석 및 완료 규칙은 다소 복잡할 수 있습니다. 예를 들어 완성 기능이 있는 대부분의 쉘은 명령줄에 다음이 포함되어 echo $P
있고 를 누르면 Tab시작되는 변수 이름을 찾습니다 P
. 기본적으로 쉘은 일반적인 경우이므로 파일 이름을 완성합니다.
Bash, tcsh 및 zsh에는 완료 프로세스를 프로그래밍 가능하게 만드는 방법이 있습니다. 커서 아래의 명령을 구문 분석하고 테이블에서 해당 특정 명령에 대한 규칙을 찾습니다. 프로그래밍 방식으로 완료되면 프로그램 테이블의 항목은 unzip
첫 번째 인수가 기존 파일이어야 .zip
하고 후속 인수가 zip 아카이브 구성원의 이름이어야 함을 나타내야 합니다.
완료 규칙은 프로그램 자체에는 포함되어 있지 않지만, 동일한 패키지에 프로그램과 함께 제공될 수 있습니다. 예를 들어, 명령이 포함된 패키지에는 bash가 명령 인수를 완성하는 방법을 설명하는 파일과 zsh에 대한 유사한 파일이 /usr/bin/foo
포함될 수 있습니다 ./etc/bash_completion/foo
foo
/usr/share/zsh/functions/Completion/_foo
답변2
Bash 명령줄 완성은 Bash 스크립트를 통해 사용자 정의할 수 있습니다. Gentoo Linux에서는 명령을 사용하여 활성화하려는 완성 기능을 쉽게 관리할 수 있습니다 eselect bashcomp
. 활성화되면 시스템 전체 스크립트에 대한 심볼릭 링크가 디렉터리에 생성됩니다 ~/.bash_completion.d/
. 이 스크립트를 bash를 사용하여 자동 완성을 완료하는 방법을 배우기 위한 첫 번째 리소스로 사용할 수 있습니다.