如何bash
识别特定的特定文件类型script
?
例如,我编写了一个小脚本来编译 a 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:
所以当我想运行: 时script.sh myfile.ly
,bashs 自动完成也会建议它们myfile.pdf
是否myfile.midi
存在。我想让 bash 知道这个脚本只想读取*.ly
文件(而不是为了方便)。
答案1
在您的 中~/.bashrc
,您可以添加类似的内容来为您的 启用自动完成功能script.sh
:
complete -f -X '!*.ly' script.sh
该-f
选项指定文件名,并且-X
是过滤器模式(请注意,过滤器模式会删除与该模式匹配的值,因此!
用于否定该模式,以便*.ly
删除除此之外的所有文件名。