如何使用终端启动任意的应用

我下载了一个软件叫UberWriter,可是终端没找到如何直接调用它的方法,直接使用这个名字是无效的,因为并没有它的可执行程序链接,于是我在网上找到了这篇文章,翻译了过来.

别对我翻译质量有太高要求,因为四级我都没过.

本文针对的是Linux系统.Windows勿看无用.

来源是这里:How to: Start any application from the terminal - JonathanMH

从终端打开应用可以让你的工作流程更加简单,当我在做一个项目的时候,我早已习惯于在shell终端直接打开文件,我切换(navigate:导航)到项目的文件夹,然后开始编辑文本,无论是markdown文档还是源代码都一样.

通常,我直接在终端输入gvim file.md,然后就能看到gvim的软件界面打开了.但是并不是所有的软件都支持直接从终端命令行打开然后编辑文件.

好消息是,其实这很容易实现.在我的这个例子中,我想通过终端使用uberwriter打开文件.

找到一个运行的应用的程序路径

1
ps aux | grep application_name

通过上面这个命令,就能找到一个应用的进程信息.显示如下:

1
2
$ ps aux | grep uberwriter
geronimo 4383 0.6 1.3 536748 47108 ? Sl 21:08 0:00 /usr/bin/python3 /opt/extras.ubuntu.com/uberwriter/bin/uberwriter

这回告诉你,这个应用在哪里运行.从这里可以看出,这个应用位于/opt目录下,这也解释了为什么这个程序名不能在终端被直接调用.

从终端调用Uberwriter

从大学开始,我从事大量的写作工作,写书或者写博客等等,我希望能够直接从终端打开文件,但是通常,我需要在菜单栏目启动我想要的编辑器.
为了实现(achieve)不在/usr/bin等目录下建立启动脚本的同时,在终端直接启动这些程序,我们只能创建自己的脚本.
如果我想要在终端中启动它,我每次都需要输入以下一大串命令:

1
python3 /opt/extras.ubuntu.com/uberwriter/bin/uberwriter.py filename &

因为我很懒,我只想输入uberwriter filename

我需要将这个脚本的完整路径添加到我的自定义脚本文件里去,并且在~/.bashrc中输入:

1
2
# include /home/user/scripts for user scripts
export PATH=~/scripts/:$PATH

然后,我在scripts目录下创建一个名叫uberwriter的可执行文件,并且内容为:

1
python3 /opt/extras.ubuntu.com/uberwriter/bin/uberwriter.py $1 &

在shell编程中,$1就是命令行添加的第一个参数.

&可以让终端将这个进程挂到后台,这样终端就能做其他事情了.

为其他任意程序使用这个方法

许多程序通过类似的方法就能工作,即时它默认看起来似乎不可执行.你可以编写你自己的脚本,并且做得更好.这种方法也适用于Mac OS系统,如果
你在终端上花了很多时间,它可能会派上用场.