shell-命令行打开程序的进化

    xiaoxiao2021-03-25  136

    通过命令行打开应用很酷的,当删掉快捷方式后,别人拿到你的电脑连应用都打不开。但是这一个简单的脚本还是经过了几代改进。

    1代

    只是实现打开程序的功能

    #!/bin/bash echo "1.eclipse 2.firefox q:quit" read -t 40 -p "input choice:" choice case "$choice" in "1") #打开eclipse /home/SoftwareDev/eclipse/eclipse/eclipse ;; "4") #firefox /usr/bin/firefox ;; "q") ;; *) echo "input error!" esac

    结果:

    root@jimo:/home/workspace# ./open.sh 1.eclipse 2.firefox q:quit input choice:1 org.eclipse.m2e.logback.configuration: The org.eclipse.m2e.logback.configuration bundle was activated before the state location was initialized. Will retry ........

    这没问题,但是打开的应用是terminal的子进程,所以关闭终端就会关闭应用,这个问题在打开的程序过多时尤为严重,很多终端确实不太舒服。

    2代

    所以我通过nohup将应用转入后台:

    nohup 命令 & "1") #打开eclipse nohup /home/SoftwareDev/eclipse/eclipse/eclipse & ;; "2") #firefox nohup /usr/bin/firefox & ;;

    这样在打开应用后就可以手动关闭终端了。

    3代

    但是,作为喜欢自动化的我怎么会手动关闭呢,岂不是太low了,于是过了一段时间又进行了修改,通过字符截取获得terminal的pid,然后杀死进程来关闭终端。

    先看看如何取得pid

    root@jimo:~# ps PID TTY TIME CMD 30942 pts/3 00:00:00 bash 30959 pts/3 00:00:00 ps root@jimo:~# ps | grep bash 30942 pts/3 00:00:00 bash root@jimo:~# ps | grep bash | awk '{print $1}' 30942 root@jimo:~#

    杀死:

    kill -9 PID #-9代表强行杀死。

    所以最终这样(加上有颜色的选项):

    echo -e "\033[33m 1--->\033[0m Eclipse" echo -e "\033[33m 2--->\033[0m firefox" ... ... pid=$(ps | grep bash | awk '{print $1}') kill -9 $pid

    转载请注明原文地址: https://ju.6miu.com/read-5975.html

    最新回复(0)