프로그램을 실행하기 전에 매개변수를 확인하세요.

프로그램을 실행하기 전에 매개변수를 확인하세요.

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/foofoo/usr/share/zsh/functions/Completion/_foo

답변2

Bash 명령줄 완성은 Bash 스크립트를 통해 사용자 정의할 수 있습니다. Gentoo Linux에서는 명령을 사용하여 활성화하려는 완성 기능을 쉽게 관리할 수 있습니다 eselect bashcomp. 활성화되면 시스템 전체 스크립트에 대한 심볼릭 링크가 디렉터리에 생성됩니다 ~/.bash_completion.d/. 이 스크립트를 bash를 사용하여 자동 완성을 완료하는 방법을 배우기 위한 첫 번째 리소스로 사용할 수 있습니다.

관련 정보