簡體   English   中英

從 OS X Dock 執行 Shell 腳本?

[英]Executing Shell Scripts from the OS X Dock?

如何設置 shell 腳本以從 Mac OSX dock 執行? 似乎只需創建一個快捷方式即可在我的編輯器中打開該文件。 我需要在某處設置一個標志來告訴它運行而不是打開它進行編輯嗎?

您可以通過一個步驟創建 Automator 工作流程 - “運行 Shell 腳本”

然后File > Save As ,並將文件格式更改為“應用程序”。 當您打開應用程序時,它將運行 Shell 腳本步驟,執行命令,完成后退出。

這樣做的好處是它非常簡單,您可以非常輕松地獲取用戶輸入(例如,選擇一堆文件),然后將其傳遞給 shell 腳本的輸入(或者作為標准輸入,或者作為參數)。

(Automator 在您的/Applications文件夾中!)

示例工作流程

如果您不需要終端窗口,您只需創建一個 shell 腳本Example並將其移動到文件名Example.app/Contents/MacOS/Example即可將任何可執行文件設為應用程序。 您可以像其他任何應用程序一樣將這個新應用程序放置在您的 Dock 中,然后單擊執行它。

注意:應用程序的名稱必須與腳本名稱完全匹配。 所以頂級目錄必須是Example.app並且Contents/MacOS子目錄中的腳本必須命名為Example ,並且腳本必須是可執行的。

如果您確實需要顯示終端窗口,我沒有簡單的解決方案。 你可能可以用 Applescript 做一些事情,但這不是很干凈。

在 OSX Mavericks 上:

  1. 創建您的 shell 腳本。
  2. 使您的 shell 腳本可執行:

     chmod +x your-shell-script.sh
  3. 重命名您的腳本以具有.app后綴:

     mv your-shell-script.sh your-shell-script.app
  4. 將腳本拖到 OSX Dock。
  5. 將您的腳本重命名回.sh后綴:

     mv your-shell-script.app your-shell-script.sh
  6. 在 Finder 中右鍵單擊該文件,然后單擊“獲取信息”選項。
  7. 在窗口底部,將 shell 腳本設置為使用終端打開。

現在,當您單擊 Dock 中的腳本時,將彈出一個終端窗口並執行您的腳本。

獎勵:要在腳本完成后關閉終端,請在末尾添加exit 0並將終端設置更改為“如果干凈退出則關閉 shell”,就像在此 SO answer 中所說的那樣。

我知道這是舊的,但以防萬一它對其他人有幫助:

如果您需要運行腳本並希望終端彈出以便您可以看到結果,您可以像深淵騎士所說的那樣並將擴展名更改為 .command。 如果您雙擊它,它將打開一個終端窗口並運行。

但是,我需要它來從 automator 或 appleScript 運行。 因此,為了打開一個新終端,我從“運行 shell 腳本”運行的命令是“打開 myShellScript.command”,它在新終端中打開。

只要您的腳本是可執行的並且沒有任何擴展名,您就可以將其按原樣拖動到 Dock 的右側(文檔側),單擊時它將在終端窗口中運行,而不是打開編輯器。

如果您想要一個擴展名(如 foo.sh),您可以轉到 Finder 中的文件信息窗口並更改該特定腳本的默認應用程序(TextEdit、TextMate,無論您的計算機上為.sh 文件)到終端。 然后它將只執行而不是在文本編輯器中打開。 同樣,您必須將其拖到 Dock 的右側。

我認為這個線程可能會有所幫助: http : //forums.macosxhints.com/archive/index.php/t-70973.html

換句話說,您可以使用 .command 擴展名重命名它,或者創建一個 AppleScript 來運行 shell。

在腳本編輯器中:

do shell script "/full/path/to/your/script -with 'all desired args'

另存為應用程序包。

只要您想做的就是獲得腳本的效果,這將正常工作。 您不會看到 STDOUT 或 STDERR。

正如 joe 所提到的,創建 shell 腳本,然后創建一個 applescript 腳本來調用 shell 腳本,將完成此操作,並且非常方便。

外殼腳本

  1. 在您喜歡的文本編輯器中創建您的 shell 腳本,例如:

    mono "/Volumes/Media/~Users/me/Software/keepass/keepass.exe"

    (這運行 w32 可執行文件,使用單聲道框架)

  2. 保存 shell 腳本,例如“StartKeepass.sh”

蘋果腳本

  1. 打開AppleScript Editor,調用shell腳本

    do shell script "sh /Volumes/Media/~Users/me/Software/StartKeepass.sh" user name "<enter username here>" password "<Enter password here>" with administrator privileges

    • do shell script - 調用外部shell命令的applescript命令
    • "sh ...." - 這是您在第一步中創建的 shell 腳本(完整路徑)(您也可以運行直接命令,我可以省略 shell 腳本並在此處運行我的單聲道命令)
    • user name - 向 applescript 聲明您希望以特定用戶身份運行命令
    • "<enter username here> - 替換為您的用戶名(保留引號),例如“josh”
    • password - 聲明你的密碼
    • "<enter password here>" - 替換為您的密碼(保留引號)例如“mypass”
    • with administrative privileges - 聲明您要以管理員身份運行

創建您的 .APP

  1. 將您的 Applescript 保存為 filename.scpt,在我的情況下為 RunKeepass.scpt

  2. 另存為...你的applescript並將文件格式更改為應用程序,在我的情況下導致RunKeepass.app

  3. 將您的應用程序文件復制到您的應用程序文件夾

在 macOS Monterey 12.3 中實現該目標的確切步驟

  1. 打開Automator
  2. File -> New
  3. 選擇Application
  4. Go 到Library -> Utilities
  5. 雙擊Run Shell Script
  6. 輸入您要運行的任何命令。 例如,嘗試使用命令切換深色模式:
osascript -e 'tell app "System Events" to tell appearance preferences to set dark mode to not dark mode'
  1. File -> Save
  2. 將保存的文件拖到 Dock,大功告成!

pip 安裝 mac-appify

我在接受的解決方案上遇到了問題,但此命令對我有用。

安裝

pip install mac-appify

/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/appify ~/bin/webex_start.sh ~/Desktop/webex.app

有人寫...

我只是將所有以“.sh”結尾的文件設置為用終端打開。 它工作正常,您不必更改要運行的每個 shell 腳本的名稱。

暫無
暫無

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

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