ฉันจะตั้งค่าเชลล์สคริปต์ให้ดำเนินการจาก Dock Mac OSX ได้อย่างไร ดูเหมือนว่าการสร้างทางลัดจะเป็นการเปิดไฟล์ในโปรแกรมแก้ไขของฉัน มีการตั้งค่าสถานะที่ฉันต้องการตั้งค่าบางแห่งเพื่อบอกให้เรียกใช้แทนที่จะเปิดเพื่อแก้ไขหรือไม่
ฉันจะตั้งค่าเชลล์สคริปต์ให้ดำเนินการจาก Dock Mac OSX ได้อย่างไร ดูเหมือนว่าการสร้างทางลัดจะเป็นการเปิดไฟล์ในโปรแกรมแก้ไขของฉัน มีการตั้งค่าสถานะที่ฉันต้องการตั้งค่าบางแห่งเพื่อบอกให้เรียกใช้แทนที่จะเปิดเพื่อแก้ไขหรือไม่
คำตอบ:
คุณสามารถสร้างเวิร์กโฟลว์อัตโนมัติด้วยขั้นตอนเดียว - "เรียกใช้เชลล์สคริปต์"
จากนั้นFile > Save As
และเปลี่ยนรูปแบบไฟล์เป็น "แอปพลิเคชัน" เมื่อคุณเปิดแอปพลิเคชันมันจะเรียกใช้ขั้นตอน Shell Script ดำเนินการคำสั่งออกหลังจากเสร็จสิ้น
ข้อดีของการทำเช่นนี้คือมันง่ายมากที่จะทำและคุณสามารถรับอินพุตของผู้ใช้ได้อย่างง่ายดาย (เช่นการเลือกไฟล์จำนวนมาก) จากนั้นส่งไปยังอินพุตของเชลล์สคริปต์ (ไม่ว่าจะเป็น stdin หรือเป็นอาร์กิวเมนต์)
(Automator อยู่ใน/Applications
โฟลเดอร์ของคุณ!)
open -a SomeAppThing.app --args --etc=2
ควรมุ่งเน้น หรือคุณสามารถโฟกัสได้โดยใช้ Applescript (เช่นosascript -e 'tell application "Google Chrome" to activate'
)
หากคุณไม่จำเป็นต้องมีหน้าต่าง terminal คุณสามารถทำให้แฟ้มที่ปฏิบัติการใด ๆ แอพลิเคชันเพียงโดยการสร้างสคริปต์เปลือกและย้ายไปยังชื่อไฟล์Example
Example.app/Contents/MacOS/Example
คุณสามารถวางแอปพลิเคชั่นใหม่นี้ลงใน Dock ของคุณเหมือนที่อื่นและรันด้วยการคลิก
หมายเหตุ:ชื่อแอพจะต้องตรงกับชื่อสคริปต์ทุกประการ ดังนั้นไดเรกทอรีระดับบนสุดจะต้องมีExample.app
และสคริปต์ในContents/MacOS
ไดเรกทอรีย่อยจะต้องตั้งชื่อExample
และสคริปต์จะต้องสามารถดำเนินการได้
หากคุณต้องการให้หน้าต่างเทอร์มินัลปรากฏขึ้นฉันไม่มีวิธีแก้ปัญหาง่ายๆ คุณอาจทำอะไรกับ Applescript แต่ก็ไม่สะอาดมาก
example.sh.app
example.app
คุณจะได้รับคำเตือนเกี่ยวกับแอพที่เสียหายหากสิ่งเหล่านี้ไม่ตรงกัน
.app
ด้วยและด้วยโครงสร้างนั้นจะถือว่าเป็นแอปพลิเคชันที่ปฏิบัติการได้ หากคุณต้องการดูเนื้อหาของโฟลเดอร์นั้นใน Finder คุณจะต้องคลิกขวาและเลือก "ดูเนื้อหาแพ็คเกจ" (เพราะการดับเบิลคลิกที่ไฟล์จะเรียกใช้แอปพลิเคชัน) ใน Terminal มันจะปรากฏเป็นโฟลเดอร์ (ฉันไม่แน่ใจว่า Finder จะให้คุณเปลี่ยนชื่อโฟลเดอร์เป็น. app ด้วยตัวเองหรือคุณอาจต้องเปลี่ยนชื่อใน Terminal)
บน OSX Mavericks:
ทำให้เชลล์สคริปต์ของคุณทำงานได้:
chmod +x your-shell-script.sh
เปลี่ยนชื่อสคริปต์ของคุณเพื่อ.app
ต่อท้าย:
mv your-shell-script.sh your-shell-script.app
เปลี่ยนชื่อสคริปต์ของคุณกลับเป็น.sh
คำต่อท้าย:
mv your-shell-script.app your-shell-script.sh
ตอนนี้เมื่อคุณคลิกที่สคริปต์ใน dock หน้าต่างเทอร์มินัลจะปรากฏขึ้นและรันสคริปต์ของคุณ
โบนัส: หากต้องการให้เทอร์มินัลปิดเมื่อสคริปต์ของคุณเสร็จสมบูรณ์ให้เพิ่มexit 0
ที่ส่วนท้ายและเปลี่ยนการตั้งค่าเทอร์มินัลเป็น "ปิดเชลล์หากออกจากระบบเรียบร้อย" เหมือนที่บอกไว้ในคำตอบ SOนี้
ฉันรู้ว่านี่เก่า แต่ในกรณีที่เป็นประโยชน์กับผู้อื่น:
หากคุณต้องการเรียกใช้สคริปต์และต้องการให้เทอร์มินัลปรากฏขึ้นเพื่อให้คุณเห็นผลลัพธ์ที่คุณสามารถทำได้เช่น Abyss Knight กล่าวและเปลี่ยนนามสกุลเป็น. command หากคุณดับเบิลคลิกที่มันมันจะเปิดหน้าต่างเทอร์มินัลและเรียกใช้
ฉันต้องการมันเพื่อเรียกใช้จาก automator หรือ appleScript เพื่อให้สิ่งนี้เปิดเทอร์มินัลใหม่คำสั่งที่ฉันรันจาก "run shell script" คือ "open myShellScript.command" และมันเปิดในเทอร์มินัลใหม่
ตราบใดที่สคริปต์ของคุณสามารถเรียกใช้งานได้และไม่มีส่วนขยายใด ๆ คุณสามารถลากตามที่เป็นไปทางด้านขวา (ด้านเอกสาร) ของ Dock และสคริปต์จะทำงานในหน้าต่างเทอร์มินัลเมื่อคลิกแทนการเปิดตัวแก้ไข
หากคุณต้องการมีส่วนขยาย (เช่น foo.sh) คุณสามารถไปที่หน้าต่างข้อมูลไฟล์ใน Finder และเปลี่ยนแอปพลิเคชั่นเริ่มต้นสำหรับสคริปต์นั้นจากสิ่งที่มันเป็น (TextEdit, TextMate ไม่ว่าค่าเริ่มต้นจะถูกตั้งไว้ที่ใดบนคอมพิวเตอร์ของคุณ ไฟล์. sh) ไปยัง Terminal จากนั้นจะดำเนินการแทนการเปิดในโปรแกรมแก้ไขข้อความ คุณจะต้องลากมันไปทางด้านขวาของ Dock อีกครั้ง
ฉันคิดว่ากระทู้นี้อาจมีประโยชน์: http://forums.macosxhints.com/archive/index.php/t-70973.html
ในการถอดความคุณสามารถเปลี่ยนชื่อด้วยส่วนขยาย. คำสั่งหรือสร้าง AppleScript เพื่อเรียกใช้เชลล์
ตามที่โจพูดไว้แล้วการสร้างเชลล์สคริปต์จากนั้นสร้างสคริปต์ applescript เพื่อเรียกใช้เชลล์สคริปต์จะทำให้สำเร็จและมีประโยชน์มาก
สร้างเชลล์สคริปต์ของคุณในโปรแกรมแก้ไขข้อความที่คุณชื่นชอบตัวอย่างเช่น
mono "/Volumes/Media/~Users/me/Software/keepass/keepass.exe"
(สิ่งนี้จะเรียกใช้ w32 ที่ปฏิบัติการได้โดยใช้ mono framework)
บันทึกเชลล์สคริปต์สำหรับตัวอย่าง "StartKeepass.sh" ของฉัน
เปิด AppleScript Editor และเรียกใช้เชลล์สคริปต์
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 ...."
- นี่คือเชลล์สคริปต์ของคุณ (พา ธ แบบเต็ม) สร้างขึ้นในขั้นตอนที่หนึ่ง (คุณยังสามารถเรียกใช้คำสั่งโดยตรงได้ฉันสามารถละเว้นเชลล์สคริปต์และเรียกใช้คำสั่งโมโนได้ที่นี่)user name
- ประกาศถึง applescript ที่คุณต้องการเรียกใช้คำสั่งในฐานะผู้ใช้ที่ระบุ"<enter username here>
- แทนที่ด้วยชื่อผู้ใช้ของคุณ (รักษาราคา) เช่น "josh"password
- ประกาศให้ใช้รหัสผ่านของคุณ"<enter password here>"
- แทนที่ด้วยรหัสผ่านของคุณ (รักษาราคา) ex "mypass"with administrative privileges
- ประกาศว่าคุณต้องการเรียกใช้ในฐานะผู้ดูแลระบบบันทึก applescript ของคุณเป็น filename.scpt ในกรณีของฉัน RunKeepass.scpt
บันทึกเป็น ... applescript ของคุณและเปลี่ยนรูปแบบไฟล์เป็นแอปพลิเคชันส่งผลให้ RunKeepass.app ในกรณีของฉัน
คัดลอกไฟล์แอปไปยังโฟลเดอร์แอพของคุณ
ในเครื่องมือแก้ไขสคริปต์:
do shell script "/full/path/to/your/script -with 'all desired args'
"
บันทึกเป็นชุดแอปพลิเคชัน
ตราบใดที่คุณต้องการทำคือได้รับผลของสคริปต์สิ่งนี้จะใช้ได้ดี คุณจะไม่เห็น STDOUT หรือ STDERR
มีคนเขียน ...
ฉันเพิ่งตั้งไฟล์ทั้งหมดที่ลงท้ายด้วย ".sh" เพื่อเปิดด้วย Terminal ใช้งานได้ดีและคุณไม่ต้องเปลี่ยนชื่อของเชลล์สคริปต์แต่ละตัวที่คุณต้องการเรียกใช้