小编Lri*_*Lri的帖子

在 shell 脚本中获取 OS X 应用程序的包标识符

一种选择是使用 AppleScript:

$ osascript -e 'id of app "Finder"'
com.apple.finder
Run Code Online (Sandbox Code Playgroud)

你也可以做这样的事情:

$ bundle=$(mdfind -onlyin / kMDItemKind==Application | grep -i "/Finder.app$" | head -1)
$ defaults read "$bundle/Contents/Info" CFBundleIdentifier
com.apple.finder
Run Code Online (Sandbox Code Playgroud)

不过,这两者都相当慢(在我的 Air 上大约 0.05-0.2 秒)。有没有更快或更简单的选择?

macos

67
推荐指数
4
解决办法
6万
查看次数

如何在 Mac 上安装软件包?(MacPorts、Fink,还有更好的吗?)

在我的 Mac OS X 机器上,您如何推荐我安装命令行软件和其他软件包?我一直在使用 MacPorts,它似乎总是很慢,大概是因为它必须即时编译软件包。

我更喜欢有二进制包的包管理系统,这样我每次想下载新东西时都不需要编译。我认为 Fink 有一些软件包的二进制文件,但我通常看到推荐使用 MacPorts 作为系统。

你认为哪个效果更好,为什么?(或者还有其他我没听说过的系统吗?)

package-management macports fink homebrew macos

41
推荐指数
2
解决办法
7652
查看次数

在 Mac OS X 上打开同一个应用程序的两个实例

我正在寻找一个技巧来两次打开同一个应用程序。让我解释。

例如,我有一个名为 SQLite 数据库浏览器的应用程序,但它一次只能处理一个 SQL 数据库。我想启动另一个 SQLite DB 浏览器,以便我可以打开另一个 SQL DB 文件。我怎么做?

macos

21
推荐指数
1
解决办法
2万
查看次数

在命令行上安装 DMG 时绕过许可协议

我正在使用 puppet 自动化我的 Mac 安装。作为其中的一部分,我需要安装几个 .dmg 格式的程序。

我使用以下方法安装它们:

sudo /usr/bin/hdiutil mount -plist -nobrowse -readonly -quiet -mountrandom /tmp Program.dmg
Run Code Online (Sandbox Code Playgroud)

问题是某些 .dmg 文件附带了许可证,因此脚本无法接受许可证。(使用 puppet 运行时没有 stdin/out,所以我无法手动批准它继续。)

有没有办法预先批准或强制批准许可证?

dmg-image hdiutil macos

16
推荐指数
4
解决办法
6172
查看次数

删除 OS X 上的服务

我希望完全删除某些服务,或者至少从“键盘”首选项窗格中的列表中删除。我试过了:

  1. 服务洗涤器。它只从菜单中删除服务——您从 10.6 开始就可以从系统偏好设置中执行此操作。
  2. 删除~/Library/Services/和 中的文件/Library/Services/。只是大多数第三方应用程序没有将他们的服务放在那里。
  3. defaults delete /Applications/SomeApp.app/Contents/Info NSServices. 它确实从系统偏好设置的列表中删除了服务。但它也会使包的代码签名无效,并且更改可以通过更新恢复。

我想你只需要接受最后一个选项,并codesign在需要时分配新的签名。但是有没有更简单的方法呢?

services macos

15
推荐指数
1
解决办法
5243
查看次数

有没有更快的方法来更改与 OS X 上的文件类型关联的默认应用程序?

有什么比使用RCDefaultAppMagic Launch更方便的,或者只是重复按下 Finder 信息面板中的“全部更改”按钮?

我想写一个 shell 脚本来修改 Info.plist 文件中的 CFBundleDocumentTypes 数组。但是每个应用程序都有多个需要更改的键(有时是一个图标)。

lsregister 不能用于对启动服务数据库进行特定修改。

$ `locate lsregister` -h
lsregister: [OPTIONS] [ <path>... ]
                      [ -apps <domain>[,domain]... ]
                      [ -libs <domain>[,domain]... ]
                      [ -all  <domain>[,domain]... ]

Paths are searched for applications to register with the Launch Service database.
Valid domains are "system", "local", "network" and "user". Domains can also
be specified using only the first letter.

  -kill     Reset the Launch Services database before doing anything else
  -seed     If …
Run Code Online (Sandbox Code Playgroud)

macos

14
推荐指数
1
解决办法
5716
查看次数

使 Backspace 键转到 Finder 中的上一个文件夹

有没有办法修改 OSX,使其表现得更像 Windows 7。具体来说,我真的希望能够按 BACKSPACE 并让 Finder 显示前一个文件夹......就像 Windows 和 Firefox 一样。

我希望这很清楚。

finder macos

11
推荐指数
3
解决办法
2万
查看次数

ubuntu 中等效的 command+k(在 mac 中)是什么

我习惯command + k在mac中清理终端。这在通过服务器日志进行调试时特别有用。Ubuntu 系统中的等价物是什么?

terminal command-line ubuntu

11
推荐指数
1
解决办法
9679
查看次数

OS X 脚本中更漂亮的文本对话框

我对这些默认的 AppleScript 和cocoaDialog对话框感到厌烦

我想用更接近这个的东西替换它们:

有没有人制作过像 cocoaDialog 这样的 shell 可执行文件,并具有自定义的 Windows 外观?是否有其他选项可以在 shell 脚本或 AppleScripts 中获得不那么难看的文本对话框?

applescript objective-c cocoadialog macos

9
推荐指数
1
解决办法
682
查看次数

将带有 .service 等扩展名的文件夹视为常规文件夹,而不是 Finder 中的包

有没有办法强制 Finder 将文件夹whatever.service视为文件夹而不是服务?

说得很清楚,重现我的问题很容易。我刚刚创建了一个新文件夹,将其重命名为name.service,但无法再打开该文件夹。此外,文件信息不允许我更改类型或选择其他程序打开。

finder macos

8
推荐指数
1
解决办法
2755
查看次数