MacOS

MacOS用户如果有用命令行的话,大多数人应该知道open .会打开Finder。事实上它能打开所有的目录,比如:

$ open ~/Library/Preferences
$ open /etc
$ open ../..

你还能同时打开多个目录:

$ open ~/Documents ~/Desktop ~/Downloads
$ open ~/D*

然后它还能打开各种文件,比如:

$ open document.pdf

会使用默认的程序(通常是Preview)打开当前目录下的document.pdf,同样你也能一次性打开多个文件:

$ open ~/Desktop/Screen\ Shot\ *.png

你还能指定使用什么程序来打开文件,使用-a参数:

$ open -a Preview ~/Desktop/Screen\ Shot\ *.png
$ open -a TextEdit web.html

上面的指令会使用Preview来打开多个截屏的图片,使用TextEdit打开网页。

打开网络位置也是可以的,比如打开某个网页,访问远程的计算机等:

$ open https://scriptingosx.com   # default browser
$ open vnc://TestMac.local       # Screen Sharing

总有一个姿势会爽到你

我自己平时用得最多的就是打开文件,比如我跑程序,中间有生成文件,我就想打开看一眼,就不用去Finder里翻,直接命令行打开它。而且不单单是shell,比如我在R里做了某些分析,生成了某个文件,我也是直接就可以打开它,用system(“open the_file”)搞定。

再者我在命令行,我想打开某个文件,但不想窗口跳出来,因为我还想待在命令行里,还想要窗口聚焦在Terminal,可以用-g参数打开文件。

再比如你copy了个文件,你可以用pbpaste | open -f -a TextEditor打开,这些打开了TextEditor的同时,你copy的东西已经自动paste到里面了。-f参数就是从STDIN中读入,这有个好处是比如你用awk处理了一些文本文件,你可以通过管道直接就把结果贴在了文本编辑器里(没有文件生成)。

Windows用户

Windows用户怎么搞?毕竟有了WSL之后,生信的人用Windows也越来越多了,而且搞不好以后会比MacOS更成为开发的主流,毕竟MacBook以后换ARM也是可能的。相应的windows命令就是start,没错就是开始菜单的start,我想绝大多数人都没用过这个指令。可以说不管你是什么文件,你只要start 文件名,它就会用系统默认的程序打开,如果它不知道该用什么打开呢?如果被软件管理类的软件接管了,那么它可能会提醒你可以装什么软件来打开:

正常的情况下,不知道怎么打开,或者出现上图的情况,你把它关掉,这时候它会让你选程序去打开它,就是这么方便。

Linux

对于Linux用户来说,那命令行是分分钟的事,我们也有一个可以打开各种文件的指令,它的工作原理也一样,使用系统默认的程序去打开,那么这个指令就是xdg-open。

R

R用户也可以直接在R终端里打开文件,使用系统默认的程序。这样做好处还是挺多的,比如你做某个分析,出了一些中间结果,你想看一下,就不用退出R,去终端操作,也不用另开终端或文件管理器,再定位到你当前的工作目录。直接在R里o(文件名),然后它就会根据你的系统去调用open, start或xdg-open,然后这三个神奇的指令中的一个,就会把该干的活都干了,要打开当前的工作目录的话就是o('.').

至于这个o函数在那里,就在rvcheck这个包里,因为这个包没有依赖,代码很简单,所以我写到~/.Rprofile中,打开R的时候,自动加载,方便我平时想在R中打开文件。

比如下图,我打开一个压缩包: