在OS X下直接运行Shell脚本

Windows下的BAT和CMD文件很常见,在OS X下,sh文件不执行。

放狗弄了一下很好弄:

1. 把文件保存为.command格式(无后缀也是执行,但不推荐吧)

2.用chmod a+x 脚本文件名 添加执行权限;

3.双击就可以运行了。

Continue Reading

OS X多网卡路由配置

以前在Windows下也遇到过类似的情况,两个网卡,各分配一地址。一个上INternet,一个上内网。

大多数情况下都能正常工作:)但有时候路由不正常。

OS X下的操作方法是:

sudo route add -host 172.16.5.30 172.16.242.2

 

sudo是提升权限。
route add -host 172.16.5.30是目标主机,172.16.242.2是希望目标主机所走的网关(不是网卡IP而是网关IP)。

网上有些教程提示要用su命令,但在OS X下总提示sorry。原因是:默认情况下OS X的root用户是被禁用的。使用su brallow(实际用户),系统不提示sorry了,但是命令仍然执行不成功,因为权限没有被提升为root帐户。

补充一下添加整个网段的:

sudo route add -net 172.16.5 172.16.242.2

 

Continue Reading

OS X下更换图标

今天突然想把桌面的图标整理一下:)整理完之后发现为了让操作更有效率,最好的方法是给不同的文件夹更换一下图标。

网上搜索了很多方法,都没成。

经过摸过,提供以下注意事项:

1. EI Caption版本之后,OS X默认不支持给Alias(更换图标),你的所有操作有效,但显示不出更换后的效果。因为需要关闭系统的安全设置才能实现Alias图标的更换,而我并不希望这样做,所以没研究后续的方法。

2. 尽管如此,仍然是可以修改Alias图标的。方法就是:直接修改它指向的文件夹的图标。这个EI Caption仍然是支持的。

3. 很多教程说:拖拽(DragDrop)或复制粘贴(cmd+C->cmd+V)可以更换图标。这样说没错,但前提一定是:你选择的是图像而不是图像文件。你必须用Preview打开图标文件(PNG或ICO均可,如果是PNG请保持外框透明,不然效果很差),全选图像(Cmd+A)再执行cmd+C,cmd+V的操作。如果你操作的是文件:)那么得到的只是文件类型图标。

这就是直接拖放图标文件的效果:

4. 修改文件夹图标后,重新生成一次ailas就OK了。

Continue Reading

OS X文件打开方式的技巧

OS X下我常用SublimeText打开文本文件,原因就不多说了。
但系统上还是保留了UltraEdit,这样一下就出现了一个情况:
用SublimeText保存的文件(无扩展名)双击是用UltraEdit打开的。

放狗搜索了一堆,大意是要修改UTI为
public.plain-text
类型的打开方式为SublimeText,改了,部分有用,但很多时候没用。

然后又试着将

public.text
public.utf16XXXX
public.utf8XXX
等几个也改为SublimeText,仍然没用。

再仔细看看RCDefaultApp这个插件,发现在App面板中UE有UTI的子树,但SublimeText只有Extension的子树,原因不明。继续研究UTI这个东西,终于找到了一个好文:

设置 Mac 下文件的默认打开程序 — duti 详解

https://segmentfault.com/a/1190000004395085

里面的细节就不再复述了,自己点开去看吧。
其中一个对我最有用的命令就是:mdls。使用方法:
mdls filename
显示该文件的UTI(UTI就是比扩展名更强大的东西,且MAC使用这个和应用关联起来)。这样一来就简单了,原来我之前SublimeText保存的文件都是public.data格式的,而这个UTI被UE在安装时关联了。

知道了原因,解决起来就非常简单了。

为避免将来引用的失败,原文中两个引用我也放过来:
https://developer.apple.com/library/mac/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html

http://superuser.com/questions/209145/how-to-get-a-files-uti-from-the-command-line-in-mac-os-x

顺便介绍两个命令:
获取应用的BundleID(无论是OS X还是iOS的应用均有一个唯一的BundleID)
osascript -e ‘id of app “APP Name”’
命令行设置BundleID与UTI关联
duti -s com.apple.Finder ftp

[code language=”plain”][/code]

Continue Reading