shell脚本编写完成后。可以通过与图形化操作软件连接,形成更加友好的交互式操作界面。
-
常用的制作图形化窗口的软件
1) dialog 包
2)kdialog 包
3)gdialog包
4) zenity 包
-
Zenity可以创建下列类型的简单对话框
1)日历
2)文件选择框
3)列表框
4)提示框
5)消息框
6)进度框
7)文本框
8)文本信息框
1 日历
日历选项
--calendar 显示日历对话框
--text=文字 设置对话框文字
--day=日 设置日
--month=月份 设置月份
--year=年份 设置年份
--date-format=模式 设置返回日期的格式
2 文件选择框
文件选择选项
--file-selection 显示文件选择对话框
--filename=文件名 设置文件名
--multiple 允许选中多个文件
--directory 允许只选择文件夹
--save 激活保存模式
--separator=分隔符 设置输出分隔符
--confirm-overwrite 若文件名已存在则确认是否覆盖文件
--file-filter=名称 | 模式1 模式2 … 设置文件名过滤器
3 列表框
列表选项
--list 显示列表对话框
--text=文字 设置对话框文字
--column=列 设置列标题
--checklist 第一列使用复选框
--radiolist 第一列使用单选钮
--imagelist 第一列使用图像
--separator=分隔符 设置输出分隔符
--multiple 允许选中多行
--editable 允许更改文字
--print-column=序号 打印指定列(默认为 1。“全部”可用于打印全部列)
--hide-column=序号 隐藏指定列
--hide-header 隐藏列头
--mid-search 改变默认列表文本搜索模式为从中间开始,而不是从头开始
4 提示框
通知图标选项
--notification 显示通知
--text=文字 设定通知文字
--listen 在 stdin 上监听命令
--hint=文字 设定通知提示
5 消息框
信息选项
--info 显示信息对话框
--text=文字 设置对话框文字
--icon-name=图标名 设置对话框图标
--no-wrap 不启用文本自动换行
--no-markup 不启用 pango 标记
--ellipsize 在对话框文本中启用简略显示。这可以修复带有长文本的窗口的尺寸过大。
6 进度框
进度选项
--progress 显示进度指示对话框
--text=文字 设置对话框文字
--percentage=百分比 设定初始百分比
--pulsate 跳动进度条
--auto-close 达到 100% 时关闭对话框
--auto-kill 若按下取消按钮则终止父进程
--no-cancel 隐藏取消按钮
--time-remaining 在进度快到 100% 时进行预估
7 文本框
文本信息选项
--text-info 显示文本信息对话框
--filename=文件名 打开文件
--editable 允许更改文字
--font=文字 设置文本字体
--checkbox=文字 启用 我已阅读并同意 复选框
--html 启用 HTML 支持
--no-interaction 不让用户与 WebView 进行交互。只在使用 --html 选项时有效
--url=URL 设置一个 URL 而非一个文件。只在使用 --html 选项时有效
--auto-scroll 自动滚动文本到末尾。只适于文本从标准输入获取的情况
文字输入选项
--entry 显示文本输入对话框
--text=文字 设置对话框文字
--entry-text=文字 设置输入文字
--hide-text 隐藏输入文字
8 文本信息框
文本信息选项
--text-info 显示文本信息对话框
--filename=文件名 打开文件
--editable 允许更改文字
--font=文字 设置文本字体
--checkbox=文字 启用 我已阅读并同意 复选框
--html 启用 HTML 支持
--no-interaction 不让用户与 WebView 进行交互。只在使用 --html 选项时有效
--url=URL 设置一个 URL 而非一个文件。只在使用 --html 选项时有效
--auto-scroll 自动滚动文本到末尾。只适于文本从标准输入获取的情况
## zenity 在大多数GNOME桌面linux发现版本上是最常见的包,本次练习使用zenity
cat wgs # 内部程序如下
chmod +x wgs
#!/usr/bin/bash
# a test for zenity
temp1=$(mktemp -t temp.XXXXXXXXX)
select=$(mktemp -t temp1.XXXXXXX)
download_Fastqc() {
fastqc -h
if [ $? -ne 0 ]
then
zenity --question --text "在环境变量中未找到fastqc程序,是否安装软件FastQC?"
if [ $? -eq 0 ]
then
zenity --notification --text "请选择安装的路径!"
local Fastqc_dict=$(zenity --file-selection --directory)
wget -P $Fastqc_dict https://www.bioinformatics.babraham.ac.uk/projects/fastqc/fastqc_v0.11.9.zip \
&& cd ${Fastqc_dict} && unzip fastqc_v0.11.9.zip && cd ${Fastqc_dict}/FastQC && chmod 755 fastqc\
&& echo "export PATH=\"${Fastqc_dict}/FastQC/:\$PATH\"" >> ~/.bashrc && source ~/.bashrc
else
break
fi
fi
}
Fastqc() {
fq_array=($(zenity --file-selection --multiple ----separator=" "))
zenity --notification --text "请选择结果存放路径!"
local outPutDir=$(zenity --file-selection --directory)
mkdir -p $outPutDir/$(date +"%Y%m%d")_fastqcResult/
zenity --notification --text "请选择fastq文件!"
zenity --file-selection --multiple --separator=" " > $temp1
fq_array=(`cat $temp1`)
fastqc ${fq_array[@]} -o $outPutDir/$(date +"%Y%m%d")_fastqcResult/
}
Trimmatic() {
zenity --info "this is Trimmatic"
}
Bwa() {
zenity --info "this is Bwa"
}
Gatk() {
zenity --info "this is Gatk"
}
while [ 1 ]
do
zenity --list --checklist --separator=" " --title "请选择如下功能(可复选)" --column "选项" --column "内容" \
FALSE "FastQC-查看fastq文件质量" FALSE "Trimmatic-fastq文件质控" FALSE "Bwa-fastq文件回帖" FALSE "GATK-Call VCF" FALSE "EXIT" >$select
if [ $? -eq 1 ];then
break
fi
selection=(`cat $select`)
len_selection=${#selection[@]}
if [ $len_selection -eq 1 ]
then
case ${selection[0]} in
"FastQC-查看fastq文件质量")
download_Fastqc
Fastqc ;;
"Trimmatic-fastq文件质控")
trimmatic ;;
"Bwa-fastq文件回帖")
bwa ;;
"GATK-Call VCF")
Gatk ;;
"EXIT")
break ;;
*)
zenity --info "Sorry,invalid selection!"
esac
fi
done
运行wgs(./wgs或bash wgs),结果如下:
文件还没有写完,现在支持单选功能,其他部分也没有写完。后面接续学习,再补充。