Mac OSX Dock から実行するシェル スクリプトを設定するにはどうすればよいですか? ショートカットを作成するだけで、エディターでファイルが開くようです。編集用に開くのではなく、実行するように指示するためにどこかに設定する必要があるフラグはありますか?
10 に答える
「シェル スクリプトの実行」という 1 つのステップで Automator ワークフローを作成できます。
次にFile > Save As
、ファイル形式を「アプリケーション」に変更します。アプリケーションを開くと、シェル スクリプト ステップが実行され、コマンドが実行され、完了後に終了します。
これの利点は、非常に簡単に実行できることです。ユーザー入力を非常に簡単に取得し (たとえば、多数のファイルを選択する)、それをシェル スクリプトの入力に渡すことができます (標準入力または引数として)。
(Automator はあなたの/Applications
フォルダにあります!)
ターミナル ウィンドウが必要ない場合は、シェル スクリプトを作成Example
して filename に移動するだけで、任意の実行可能ファイルをアプリケーションにすることができますExample.app/Contents/MacOS/Example
。この新しいアプリケーションは、他のアプリケーションと同じようにドックに配置して、クリックするだけで実行できます。
注:アプリの名前は、スクリプト名と正確に一致する必要があります。したがって、最上位ディレクトリはである必要がありExample.app
、Contents/MacOS
サブディレクトリ内のスクリプトの名前Example
は である必要があり、スクリプトは実行可能である必要があります。
端末ウィンドウを表示する必要がある場合、簡単な解決策はありません。おそらく Applescript で何かを行うことができますが、それはあまりきれいではありません。
OSX Mavericks の場合:
- シェル スクリプトを作成します。
シェル スクリプトを実行可能にします。
chmod +x your-shell-script.sh
スクリプトの名前を変更して、
.app
接尾辞を付けます。mv your-shell-script.sh your-shell-script.app
- スクリプトを OSX ドックにドラッグします。
スクリプトの名前を
.sh
サフィックスに戻します。mv your-shell-script.app your-shell-script.sh
- Finder でファイルを右クリックし、[情報を見る] オプションをクリックします。
- ウィンドウの下部で、ターミナルで開くようにシェル スクリプトを設定します。
Dock のスクリプトをクリックすると、ターミナル ウィンドウがポップアップしてスクリプトが実行されます。
ボーナス:スクリプトが完了したときにターミナルを閉じるには、最後に追加し、ターミナル設定を変更して、この SO answerexit 0
で行うように「正常に終了した場合はシェルを閉じる」ようにします。
私はこれが古いことを知っていますが、他の人に役立つ場合:
スクリプトを実行する必要があり、端末をポップアップして結果を確認できるようにする場合は、Abyss Knight が言ったように実行して、拡張子を .command に変更します。それをダブルクリックすると、ターミナル ウィンドウが開き、実行されます。
ただし、automator または appleScript から実行するにはこれが必要でした。したがって、これを取得して新しいターミナルを開くには、「シェルスクリプトを実行」から実行したコマンドは「open myShellScript.command」であり、新しいターミナルで開きました。
スクリプトが実行可能で、拡張子がない限り、Dock の右側 (ドキュメント側) にそのままドラッグできます。クリックすると、エディターを開く代わりにターミナル ウィンドウで実行されます。
拡張子 (foo.sh など) が必要な場合は、Finder のファイル情報ウィンドウに移動し、その特定のスクリプトの既定のアプリケーションを変更できます (TextEdit、TextMate、コンピューターに設定されている既定のアプリケーション)。 .sh ファイル) をターミナルに転送します。その後、テキスト エディターで開く代わりに実行されます。繰り返しますが、Dock の右側にドラッグする必要があります。
スクリプト エディタで:
do shell script "/full/path/to/your/script -with 'all desired args'
"
アプリケーション バンドルとして保存します。
スクリプトの効果を得ることだけが目的である限り、これは問題なく機能します。STDOUT または STDERR は表示されません。
joe が述べたように、シェル スクリプトを作成してから、シェル スクリプトを呼び出すための applescript スクリプトを作成すると、これが実現され、非常に便利です。
シェルスクリプト
好みのテキスト エディターでシェル スクリプトを作成します。たとえば、次のようにします。
mono "/Volumes/Media/~Users/me/Software/keepass/keepass.exe"
(これにより、mono フレームワークを使用して w32 実行可能ファイルが実行されます)
私の例では「StartKeepass.sh」というシェルスクリプトを保存します。
アップルスクリプト
AppleScript エディターを開き、シェル スクリプトを呼び出します。
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
- 外部シェルコマンドを呼び出すapplescriptコマンド"sh ...."
- これは、ステップ 1 で作成したシェル スクリプト (フル パス) です (直接コマンドを実行することもできます。シェル スクリプトを省略して、ここで mono コマンドを実行することもできます)。user name
-特定のユーザーとしてコマンドを実行することをapplescriptに宣言します"<enter username here>
-ユーザー名に置き換えます(引用符を付けます)ex「josh」password
- あなたのパスワードをapplescriptに宣言します"<enter password here>"
- あなたのパスワードに置き換えます (引用符を付けてください) ex "mypass"with administrative privileges
- 管理者として実行することを宣言します
.APP を作成する
AppleScript を filename.scpt として保存します。私の場合は RunKeepass.scpt
as... として保存し、ファイル形式をアプリケーションに変更すると、私の場合は RunKeepass.app になります。
アプリ ファイルをアプリ フォルダーにコピーします。
このスレッドが役立つと思います: http://forums.macosxhints.com/archive/index.php/t-70973.html
言い換えると、.command 拡張子を付けて名前を変更するか、AppleScript を作成してシェルを実行することができます。