iPhone || MAC

在Terminal下打开Finder

我经常有这样的行为,在命令行下处理处理一些东西,然后就想打开用图形界面打开这个路径。或者说我现在在Terminal下,想用图形界面查看一下某个路径下的东西,但是我又不想切到桌面去,在去一个个打开路径。所以在gnome下,我经常在terminal下敲nautilus [dir].

MAC下,做这种事情很麻烦,因为他本来的主要设计目标就不是使用terminal的用户。我曾经说MAC不大适合开发人员,其中一点原因就是,MAC下想要复制一个路径很麻烦。我在Finder中进入到某个界面,我想看我到哪个路径了,或者是我想在程序中使用当前路径某个文件的地址时,我用右键Get Info的方式可以看到这些信息,但是!我无法复制。这个让我很郁闷,于是乎我只能打开terminal,cd到我想要的之后,再去拷贝。同样,我如果在terminal下找到了某个东西,想要进入到该路径的Finder下,我只能打开Finder,然后一层层进去,或者是用快捷键打开跳转窗口,然后在输入我想要去的全路径!非常麻烦!

我之想要我在linux下的直接“nautilus .”的方式。通过ps -e | grep -i finder的方式,我找到了他的可执行文件路径应该是: /System/Library/CoreServices/Finder.app/Contents/MacOS/Finder 。于是我键入以下内容:

/System/Library/CoreServices/Finder.app/Contents/MacOS/Finder .

可是很郁闷的,根本就无法执行。多次尝试后,我就放弃了。

今天,我在修改程序的一堆配置文件,和查看相关的图片文件的时候,我终于又爆发了!实在受不了这样的切换和查找,非常麻烦和厌烦。重新开始找这个方法。终于明白了,我犯了一个严重的错误,MAC系统打开Finder不是这么打开的。作为.app格式,他的独立体是.app,而不是单纯的可执行文件。在打开一个app程序的时候,系统会为app程序的plist配置做一些事情,所以我不能直接那么调用!但是Finder.app是个路径,又不能直接执行。问了一个果粉开发人员之后,终于明白,苹果下打开一个.app是这么干的:open *.app [argu]。

所以,正确的方法应该是:

open  /System/Library/CoreServices/Finder.app [dir]

我终于可以很方便的从Terminal打开Finder了。但是苹果变态的这个路径方式太恶心了,不再/usr/bin等目录下,我只能写个脚本或者alias,省得每次敲那么多字进去。给他弄了个alias,改叫guiopen, 我现在就经常又开始“guiopen .”了。

(2) 条评论

关于iPhone安装软件

拿到iphone之后,不装软件的话,不免觉得有点暴殄天物。

用现在市面上流行的协助管理iphone的软件安装或者卸载软件,一般都会有一个重启桌面的过程(总是要在那边转圈圈,真是麻烦),而如果连续安装多个软件的话,不免很慢,多少觉得麻烦。

还有一部分人安装iphone的软件,包括开发人员调试软件,都是用scp直接copy到iphone的/Applications目录底下的,反正安装软件大多做的都是这种事情。但是仅仅的把软件目录拷贝到/Applications/目录底下,桌面是不会出来你的软件图标的。那么,我要怎么让我的软件图标出来呢?

方法1:删掉/var/mobile/Library/Caches/com.apple.mobile.installation.plist(如果我没记错文件名的话),然后重启SpringBoard进程,就会转圈圈,转完圈圈你就发现你的图标出来了。

方法2:不重启SpringBoard的方法,仅限程序中使用。在一些安装软件的软件中,例如Cydia,装很多的软件都不用重启SpringBoard就可以在屏幕上看到新安装的软件了。一般来说,软件的安装,其实就是简单的将应用软件的东西拷贝到某些指定位置,剩下的动作就是刷新缓存,告知SpringBoard我装新东西了。

在1.x下,你只要在程序中简单的发送个信号notify_post();中间的参数我忘记了,SpringBoard就会自己刷新了。但是我没有1.x的机子,也没有实验过,所以不知道正确性如何。

而在2.x下,想不重启SpringBoard就让安装好的软件图标显示出来就有点麻烦了。你必须自己重构/var/mobile/Library/Caches/com.apple.mobile.installation.plist文件,自己扫描一遍/Applications/目录下的文件,按照原来的格式声称com.apple.mobile.installation.plist文件,然后发送消息告诉SpringBoard,这回发送的信号是notify_post(”com.apple.mobile.application_installed”);这样子,不用重启,你就会发现你的软件图标已经显示好了。
Note:上述方法只适合那些简单软件的安装,像有些软件安装是需要unload SpringBoard才能正常工作的软件是不能用这个方法来做的,因为这样可能会让你的软件某些和SpringBoard相关的功能工作不正常。详细的安装过程可以参看开源软件Cydia的源码

今天身体状态不是很好,下午头疼了一下午,一下班就杀回来,睡到11:30才起,然后1点半去睡,就是睡不着,就又起来把这篇原来就写好,但是一直没发的草稿整理了一下发出来了。呵呵,当时为了找这些方法对着Cydia的代码半天,还真是头疼,那代码……真的不是人看的,好恐怖的编码风格,我到现在还很怵。

(3) 条评论