bash
특정 특정 파일 형식을 식별하는 방법은 무엇입니까 script
?
lilypond-file
예를 들어, 나는 를 컴파일 한 다음 자동으로 컴파일된 파일을 여는 작은 스크립트를 작성했습니다 pdf
.
#!/bin/bash
run() {
lilypond "$1"
name=$(basename "$1" .ly)
if [ -f "${name}.pdf" ]; then
xpdf -cont -remote LilyPreview "${name}.pdf" &
else
printf "\\n file %s.pdf is not present..!\\n\\n" "$name"
fi
}
run "$@"
폴더에 있는 파일 bash
만 제안 하고 기본 이름이 같은 파일은 무시하는지 어떻게 알 수 있나요 ?*.ly
*.pdf
*.midi
업데이트 2.3:
그래서 내가 실행하고 싶을 때: bashs 자동 완성도 존재 하는지 script.sh myfile.ly
제안합니다 . 나는 이 스크립트가 (편의를 위해서가 아니라) 파일을 읽기만 원한다는 것을 bash가 알기를 원합니다 .myfile.pdf
myfile.midi
*.ly
답변1
귀하의 항목에 ~/.bashrc
다음과 같은 항목을 추가하여 자동 완성을 활성화할 수 있습니다 script.sh
.
complete -f -X '!*.ly' script.sh
이 -f
옵션은 파일 이름을 지정하는 -X
필터 패턴입니다. (필터 패턴은 패턴과 일치하는 값을 제거하므로 !
패턴을 무효화하여 *.ly
그 이외의 모든 파일 이름을 제거하는 데 사용됩니다.