通过命令行打开应用很酷的,当删掉快捷方式后,别人拿到你的电脑连应用都打不开。但是这一个简单的脚本还是经过了几代改进。
只是实现打开程序的功能
#!/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的子进程,所以关闭终端就会关闭应用,这个问题在打开的程序过多时尤为严重,很多终端确实不太舒服。
所以我通过nohup将应用转入后台:
nohup 命令 & "1") #打开eclipse nohup /home/SoftwareDev/eclipse/eclipse/eclipse & ;; "2") #firefox nohup /usr/bin/firefox & ;;这样在打开应用后就可以手动关闭终端了。
但是,作为喜欢自动化的我怎么会手动关闭呢,岂不是太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