Mac OSX dock'undan yürütmek için bir kabuk komut dosyasını nasıl ayarlarım? Sadece bir kısayol oluşturmanın dosyayı düzenleyicimde açacağı anlaşılıyor. Düzenlemek için açmak yerine çalıştırmak için bir yere ayarlamam gereken bir bayrak var mı?
Mac OSX dock'undan yürütmek için bir kabuk komut dosyasını nasıl ayarlarım? Sadece bir kısayol oluşturmanın dosyayı düzenleyicimde açacağı anlaşılıyor. Düzenlemek için açmak yerine çalıştırmak için bir yere ayarlamam gereken bir bayrak var mı?
Yanıtlar:
Tek adımda bir Automator iş akışı oluşturabilirsiniz - "Kabuk Betiğini Çalıştır"
Ardından File > Save As
, Dosya Biçimini "Uygulama" olarak değiştirin. Uygulamayı açtığınızda, Komut Denetimi adımını çalıştırarak komutu yürüterek tamamlandıktan sonra çıkacaktır.
Bunun yararı yapmak gerçekten basittir ve kullanıcı girişini (örneğin, bir grup dosya seçerek) kolayca alabilir, ardından kabuk betiğinin girişine (stdin veya argümanlar olarak) aktarabilirsiniz.
(Automator /Applications
klasörünüzde!)
open -a SomeAppThing.app --args --etc=2
odaklanmalısınız. Alternatif olarak Applescript (örn. osascript -e 'tell application "Google Chrome" to activate'
)
Terminal penceresine ihtiyacınız yoksa, herhangi bir yürütülebilir dosyayı bir kabuk betiği oluşturarak Example
ve dosya adına taşıyarak bir Uygulama yapabilirsiniz Example.app/Contents/MacOS/Example
. Bu yeni uygulamayı diğer tüm platformlar gibi dokunuza yerleştirebilir ve bir tıklama ile yürütebilirsiniz.
NOT: Uygulamanın adı kod adıyla tam olarak eşleşmelidir. Bu nedenle, üst düzey dizinin olması Example.app
ve Contents/MacOS
alt dizindeki komut dosyasının adlandırılması Example
ve komut dosyasının yürütülebilir olması gerekir.
Terminal penceresinin görüntülenmesi gerekiyorsa, basit bir çözümüm yok. Muhtemelen Applescript ile bir şeyler yapabilirsiniz, ama bu çok temiz değil.
example.sh.app
değil, sadece olmalı example.app
. Bunlar uyuşmuyorsa hasarlı uygulama hakkında bir uyarı alacaksınız
.app
ve bu yapıya sahip bir klasör oluşturursanız , yürütülebilir bir uygulama olarak değerlendirilir. Finder'daki klasörün içeriğini incelemek istiyorsanız, üzerine sağ tıklamanız ve "paket içeriğini görüntüle" yi seçmeniz gerekir (çünkü üzerine çift tıklamak uygulamayı çalıştırır). Terminalde, sadece bir klasör gibi görünecektir. (Finder'ın klasörü kendi başına .app olarak yeniden adlandırmanıza izin verip vermeyeceğinden emin değilim; Terminal'de yeniden adlandırmanız gerekebilir.)
OSX Mavericks'te:
Kabuk betiğinizi çalıştırılabilir yapın:
chmod +x your-shell-script.sh
.app
Soneki olması için komut dosyanızı yeniden adlandırın :
mv your-shell-script.sh your-shell-script.app
Komut dosyanızı bir .sh
sonek olarak yeniden adlandırın :
mv your-shell-script.app your-shell-script.sh
Artık bağlantı istasyonundaki komut dosyasını tıklattığınızda, bir terminal penceresi açılır ve komut dosyanızı yürütür.
Bonus: Komut dosyanız tamamlandığında terminalin kapanmasını exit 0
sağlamak için sonuna ekleyin ve bu SO yanıtında olduğu gibi terminal ayarlarını "temiz bir şekilde çıkarsa kabuğu temizle kapat" olarak değiştirin .
Bu eski olduğunu biliyorum ama başkalarına yardımcı olması durumunda:
Bir komut dosyası çalıştırmanız ve terminalin açılmasını istiyorsanız, Abyss Knight'ın söylediği gibi yapabileceğiniz sonuçları görebilirsiniz ve uzantıyı .command olarak değiştirin. Üzerine çift tıklarsanız, bir terminal penceresi açılır ve çalışır.
Ancak bunu automator veya appleScript'ten çalıştırmak için gerekliydi. Bu nedenle, yeni bir terminal açmak için "run shell script" den çalıştırdığım komut "open myShellScript.command" idi ve yeni bir terminalde açıldı.
Komut dosyanız yürütülebilir ve herhangi bir uzantıya sahip olmadığı sürece Dock'un sağ tarafına (Belge tarafı) olduğu gibi sürükleyebilirsiniz ve bir düzenleyici açmak yerine tıklandığında terminal penceresinde çalışacaktır.
Bir uzantıya (foo.sh gibi) sahip olmak istiyorsanız, Finder'daki dosya bilgisi penceresine gidebilir ve o komut dosyası için varsayılan uygulamayı her ne olursa olsun (TextEdit, TextMate, bilgisayarınızda varsayılan olarak ne olursa olsun) değiştirebilirsiniz. .sh dosyaları) Terminal'e. Daha sonra bir metin düzenleyicide açmak yerine yürütülür. Yine, Dock'un sağ tarafına sürüklemeniz gerekecek.
Bu konunun yararlı olabileceğini düşünüyorum: http://forums.macosxhints.com/archive/index.php/t-70973.html
Başka bir deyişle, .command uzantısıyla yeniden adlandırabilir veya kabuğu çalıştırmak için bir AppleScript oluşturabilirsiniz.
Bahsedildiği gibi joe, kabuk komut dosyasını oluşturmak ve sonra kabuk komut dosyasını çağırmak için bir elma komut dosyası oluşturmak, bunu başaracak ve oldukça kullanışlıdır.
En sevdiğiniz metin düzenleyicide kabuk komut dosyanızı oluşturun, örneğin:
mono "/Volumes/Media/~Users/me/Software/keepass/keepass.exe"
(bu, mono çerçeveyi kullanarak w32 yürütülebilir dosyasını çalıştırır)
Kabuk betiğini kaydet, örneğin "StartKeepass.sh"
AppleScript Editor'ı açın ve kabuk komut dosyasını çağırın
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
- dış kabuk komutlarını çağırmak için applecript komutu"sh ...."
- Bu, birinci adımda oluşturulan kabuk komut dosyanızdır (tam yol) (ayrıca doğrudan komutları çalıştırabilirsiniz, kabuk komut dosyasını atlayabilir ve burada mono komutumu çalıştırabilirim)user name
- komutu belirli bir kullanıcı olarak çalıştırmak istediğiniz el yazısını beyan eder"<enter username here>
- kullanıcı adınızla değiştirin (tırnak işaretleri koruyun) ex "josh"password
- şifrenizi applecript olarak beyan eder"<enter password here>"
- şifrenizi değiştirin (tırnak işaretlerini koruyun) ex "mypass"with administrative privileges
- yönetici olarak çalıştırmak istediğinizi beyan ederEl yazınızı dosyaadı.scpt olarak kaydet, benim durumumda RunKeepass.scpt
elma yazınız olarak kaydedin ve dosya biçimini uygulamaya dönüştürün, bu da benim durumumda RunKeepass.app ile sonuçlandı
Uygulama dosyanızı uygulamalar klasörünüze kopyalayın
Komut Dosyası Düzenleyicisi'nde:
do shell script "/full/path/to/your/script -with 'all desired args'
"
Uygulama paketi olarak kaydedin.
Yapmak istediğiniz tek şey komut dosyasının etkisini elde etmek olduğu sürece, bu iyi çalışır. STDOUT veya STDERR görmeyeceksiniz.