簡體   English   中英

使用終端檢查 MacOS 上是否安裝了應用程序

[英]Check if an app is installed on MacOS using the Terminal

我正在用 TypeScript/NodeJs 制作一個小的跨平台 CLI 工具。 它的關鍵特性要求它需要檢查主機上安裝了哪些瀏覽器。 在 Linux 和 Windows 上,它可以完美運行。 我對如何實現這一目標進行了大量研究,目前我正在使用 Windows 的“reg query”和基於 Unix 的操作系統 - Linux 的“which”,但我不知道從哪里開始使用 MacOS。

我知道這是一個類 Unix 操作系統,但我無法測試我的工具。 有人可以幫助我,因為我實際上沒有 MacBook,所以我無法測試我應該使用哪個 bash 命令。 我不是要你寫完整的代碼,只是要使用哪個命令,或者甚至更好,一個正常工作的命令的工作示例(屏幕截圖)。 我知道我可以使用“which”、“type”甚至“open -Ra”(不確定這個)我只是不知道他們的輸出是什么。

命令:

mdfind "kMDItemKind == 'Application'"

將輸出系統上已安裝的應用程序列表(每行一個)及其路徑。 例如:

/Applications/Safari Technology Preview.app
/應用程序/Safari.app

您可以在此列表中搜索您支持的瀏覽器。

這取決於“已安裝”的含義。 我可以想到兩種不同的定義:

  1. 出現在 Launchpad 中的應用程序。
  2. 出現在系統信息 > 應用程序中的應用程序可以通過從終端open -a {app}或導航到應用程序文件夾並雙擊它來啟動。 它們的位置覆蓋整個 Spotlight 索引:通常是整個硬盤驅動器減去 Spotlight 排除項。

對於#1,我們可以擴展@mschmidt 的答案,例如:

mdfind -name 'Google Chrome.app' -onlyin /Applications -onlyin ~/Applications -onlyin /System/Applications

(我不確定這些是 Launchpad 使用的唯一根。)

對於#2,我們可以使用:

mdfind -name 'Google Chrome.app'

這可以在 Spotlight 的任何地方找到它,這確實是open -a可以打開的。

在 Catalina 上測試。

Mac OS 建立在 Unix 版本的 Free BSD 上。 許多 Linux 命令可能也適用於 Mac。 要訪問操作系統的該部分,可以使用終端仿真器“Terminal”和“iTerm”。 “which”命令在 Mac 上運行良好。

如果您的挑戰只是在 Mac 計算機上找到瀏覽器,我將使用通過管道傳輸到 grep 的 ls 命令。 Mac 計算機上的大多數應用程序都存儲在“應用程序”文件夾中。 此文件夾位於根級別。 要查找特定的瀏覽器,我會輸入:

> cd Applications 
> ls -l | grep -i BrowserName

您可以為您知道的每個瀏覽器執行此操作。 我不知道如何找到一般的瀏覽器。 如果你這樣做了,你可以在 Mac 上嘗試相同的命令。

如果您需要更多幫助,請隨時發表評論。

您還可以使用以下內容:

mdfind -name 'kMDItemFSName=="*.app"' -onlyin /Volumes/Macintosh_HD/Applications/

或者

mdfind -name 'kMDItemFSName=="*.app"' -onlyin /Volumes/Macintosh\ HD/Applications/ |cut -d "/" -f3|grep .app

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM