教育linux shell

02 图形化界面中的shell 编程

2021-08-09  本文已影响0人  123678

shell脚本编写完成后。可以通过与图形化操作软件连接,形成更加友好的交互式操作界面。

1) dialog 包
2)kdialog 包
3)gdialog包
4) 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 …     设置文件名过滤器
2021-08-09 17-37-33 的屏幕截图.png

3 列表框

列表选项
  --list                                 显示列表对话框
  --text=文字                            设置对话框文字
  --column=列                            设置列标题
  --checklist                            第一列使用复选框
  --radiolist                            第一列使用单选钮
  --imagelist                            第一列使用图像
  --separator=分隔符                     设置输出分隔符
  --multiple                             允许选中多行
  --editable                             允许更改文字
  --print-column=序号                    打印指定列(默认为 1。“全部”可用于打印全部列)
  --hide-column=序号                     隐藏指定列
  --hide-header                          隐藏列头
  --mid-search                           改变默认列表文本搜索模式为从中间开始,而不是从头开始
2021-08-09 18-02-08 的屏幕截图.png

4 提示框

通知图标选项
  --notification                         显示通知
  --text=文字                            设定通知文字
  --listen                               在 stdin 上监听命令
  --hint=文字                            设定通知提示
2021-08-09 18-12-38 的屏幕截图.png

5 消息框

信息选项
  --info                                 显示信息对话框
  --text=文字                            设置对话框文字
  --icon-name=图标名                     设置对话框图标
  --no-wrap                              不启用文本自动换行
  --no-markup                            不启用 pango 标记
  --ellipsize                            在对话框文本中启用简略显示。这可以修复带有长文本的窗口的尺寸过大。
2021-08-09 18-17-16 的屏幕截图.png

6 进度框

进度选项
  --progress                             显示进度指示对话框
  --text=文字                            设置对话框文字
  --percentage=百分比                    设定初始百分比
  --pulsate                              跳动进度条
  --auto-close                           达到 100% 时关闭对话框
  --auto-kill                            若按下取消按钮则终止父进程
  --no-cancel                            隐藏取消按钮
  --time-remaining                       在进度快到 100% 时进行预估
2021-08-09 18-22-48 的屏幕截图.png

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                            隐藏输入文字
2021-08-09 22-30-44 的屏幕截图.png

8 文本信息框

文本信息选项
  --text-info                            显示文本信息对话框
  --filename=文件名                      打开文件
  --editable                             允许更改文字
  --font=文字                            设置文本字体
  --checkbox=文字                        启用 我已阅读并同意 复选框
  --html                                 启用 HTML 支持
  --no-interaction                       不让用户与 WebView 进行交互。只在使用 --html 选项时有效
  --url=URL                              设置一个 URL 而非一个文件。只在使用 --html 选项时有效
  --auto-scroll                          自动滚动文本到末尾。只适于文本从标准输入获取的情况
2021-08-09 22-38-21 的屏幕截图.png
## 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),结果如下:


主列表框 2021-08-09 16-32-28 的屏幕截图.png 2021-08-09 16-32-35 的屏幕截图.png 2021-08-09 16-32-42 的屏幕截图.png 2021-08-09 16-33-06 的屏幕截图.png

文件还没有写完,现在支持单选功能,其他部分也没有写完。后面接续学习,再补充。

上一篇下一篇

猜你喜欢

热点阅读