ฉันมีเชลล์สคริปต์ที่ได้รับอนุญาตให้ดำเนินการกับผู้ใช้ใน OS X แต่เมื่อฉันคลิกสองครั้งมันจะเปิดขึ้นในโปรแกรมแก้ไขข้อความ ฉันจะทำให้มันทำงานโดยดับเบิลคลิกได้อย่างไร
ฉันมีเชลล์สคริปต์ที่ได้รับอนุญาตให้ดำเนินการกับผู้ใช้ใน OS X แต่เมื่อฉันคลิกสองครั้งมันจะเปิดขึ้นในโปรแกรมแก้ไขข้อความ ฉันจะทำให้มันทำงานโดยดับเบิลคลิกได้อย่างไร
คำตอบ:
อันดับแรกในเทอร์มินัลทำให้สคริปต์สามารถดำเนินการได้โดยพิมพ์:
chmod a+x (yourscriptname)
จากนั้นใน Finder ให้คลิกขวาที่ไฟล์ของคุณแล้วเลือก "Open with" จากนั้นเลือก "Other ... "
ที่นี่คุณเลือกแอปพลิเคชันที่คุณต้องการให้ไฟล์ดำเนินการในกรณีนี้จะเป็นเทอร์มินัล ในการเลือกเทอร์มินัลคุณต้องเปลี่ยนจาก "แอปพลิเคชันที่แนะนำ" เป็น "แอปพลิเคชันทั้งหมด" (แอปพลิเคชัน Terminal.app สามารถพบได้ในโฟลเดอร์ Utilities)
โปรดทราบว่าหากคุณไม่ต้องการเชื่อมโยงไฟล์ทั้งหมดกับส่วนขยายนี้เพื่อให้ทำงานในเทอร์มินัลคุณไม่ควรเลือก "เปิดเสมอกับ"
.command
คือค่าเริ่มต้นที่สามารถเรียกใช้งานได้จาก Finder โดยไม่จำเป็นต้องสั่งให้ Finder ใช้วิธีเปิด
.command
นามสกุลไฟล์
คุณลองใช้.command
ส่วนขยายชื่อไฟล์แล้วหรือยัง
chmod +x
) แต่.command
ส่วนขยายเชื่อมโยงกับ Terminal แล้ว ทางแก้ปัญหาที่ยอดเยี่ยมขอบคุณ
ตั้งแต่ OSX 10.10 (โยเซมิตี) และตั้งแต่OS X 10.8 (Mountain Lion) อย่างน้อยพฤติกรรมจะเป็นดังนี้เมื่อคุณเปิดสคริปต์ปฏิบัติการ (ดับเบิลคลิก) จาก Finder :
.command
:
Preferences... > Profiles
คุณสามารถเลือกที่จะปิดหน้าต่างโดยอัตโนมัติเมื่อสคริปต์ออกcd -- "$(dirname "$BASH_SOURCE")"
หลังจากแถว shebangcd -- "$(dirname "$0")"
สอดคล้องchmod +x <script>
ใน Terminal มิฉะนั้นคุณจะเห็นอาการต่อไปนี้:.command
: Finder แสดงข้อความแสดงข้อผิดพลาดที่ทำให้เข้าใจผิดซึ่งแสดงให้เห็นว่าปัญหาสามารถแก้ไขได้ผ่านFile > Get Info
ซึ่งไม่เป็นความจริง - ใช้chmod +x
วิธีการที่แนะนำข้างต้น#!/bin/bash
): พฤติกรรมเป็นเหมือนคำต่อท้าย.sh
- ดูด้านล่าง.sh
ไม่ว่าจะปฏิบัติการหรือไม่:
TextEdit.app
Xcode.app
.scpt
หรือ.applescript
(แม้ว่าพวกเขาจะถูกทำเครื่องหมายว่าสามารถเรียกใช้งานได้ซึ่งไม่ใช่กรณี):
[1] หมายถึงปฏิบัติการ : สคริปต์ที่มีชุดบิตสิทธิ์อนุญาตใช้งานและผู้ใช้ที่โทร - ซึ่งสัมพันธ์กับความเป็นเจ้าของไฟล์ - ดังนั้นอาจได้รับอนุญาตให้เรียกใช้งาน
หากคุณใช้chmod a+x
เพื่อตั้งค่าบิตการอนุญาตทั้งหมด (ซึ่งเป็นเรื่องปกติ) ทุกคนสามารถเรียกใช้ได้ (สมมติว่าพวกเขายังได้รับอนุญาตให้อ่านไฟล์ตามบิตสิทธิ์การอ่านและความเป็นเจ้าของไฟล์)
osascript
คุณสามารถรวมไว้ใน.command
ไฟล์แทนการทำโปรไฟล์ด้วยตนเอง
osascript -e '...'
คำสั่งในส่วนท้ายของสคริปต์หรือไม่? คำสั่งเฉพาะคืออะไรและให้แน่ใจว่าแท็บด้านขวาถูกปิดแม้ว่าสคริปต์จะไม่ทำงานในแท็บหน้าสุด
osascript -e 'tell application "Terminal" to close front window' > /dev/null 2>&1 &
... มันอาจไม่ทำงานในทุกสถานการณ์แม้ว่าการเปลี่ยนเส้นทางที่ end เป็นกุญแจสำคัญจริงๆ - osascript สามารถปรับเปลี่ยนได้อย่างง่ายดาย (เช่นหน้าต่างอาจต้องเปลี่ยนเป็นแท็บหากนั่นเป็นพฤติกรรมเริ่มต้นของเทอร์มินัลเป็นต้น)
.command
รันสคริปต์ไฟล์แม้จะมีการตั้งค่าโปรไฟล์หรือไม่
bash
สคริปต์ให้เพิ่มread -p 'Press Return to close this window.'
เป็นคำสั่งสุดท้าย
หรือคุณสามารถสร้างแอปพลิเคชัน Mac OS X ปกติจากสคริปต์ของคุณโดยใช้Platypus
วิธีที่ง่ายคือเปลี่ยนส่วนขยายเป็น.command
หรือไม่มีส่วนขยาย
แต่นั่นจะเปิด Terminal และคุณจะต้องปิดมัน หากคุณไม่ต้องการเห็นผลลัพธ์ใด ๆ คุณสามารถใช้ Automator เพื่อสร้างแอปพลิเคชัน Mac ที่คุณสามารถดับเบิลคลิกเพิ่มไปยังแท่นวาง ฯลฯ
Automator
แอปพลิเคชันRun
ปุ่มที่มุมบนขวาเพื่อทดสอบFile > Save
เพื่อสร้างแอปพลิเคชันไม่จำเป็นต้องใช้แอพของบุคคลที่สามเช่นตุ่นปากเป็ด
เพียงสร้าง Apple Script ด้วย Script Editor และใช้คำสั่งdo shell script "shell commands"
สำหรับการเรียกคำสั่งโดยตรงหรือไฟล์เชลล์สคริปต์ที่ปฏิบัติการได้เก็บไฟล์สคริปต์ที่สามารถแก้ไขได้อย่างปลอดภัยจากที่ไหนสักแห่งแล้วส่งออกเพื่อสร้างแอปพลิเคชันสคริปต์ สคริปต์ของแอปสามารถเรียกใช้งานได้โดยดับเบิลคลิกหรือเลือกในโฟลเดอร์แถบ
คุณยังสามารถตั้งค่าเริ่มต้นตามนามสกุลไฟล์โดยใช้ RCDefaultApp:
http://www.rubicode.com/Software/RCDefaultApp/
อาจเป็นไปได้ว่าคุณสามารถตั้งค่า. sh ให้เปิดใน iTerm / Terminal เป็นต้นซึ่งจะต้องมีการอนุญาตจากผู้ใช้เช่น
chmod u+x filename.sh
chmod 774 filename
หมายเหตุ : ไฟล์ที่มีชื่อ 'ชื่อไฟล์' ที่มีสคริปต์ทุบตีไม่มีส่วนขยาย