ในการเรียกใช้คำสั่ง Terminal จากสคริปต์บน macOS ให้ใส่คำสั่งเหล่านั้นลงในสคริปต์เชลล์แบบข้อความธรรมดา ทำให้สคริปต์นั้นสามารถเรียกใช้งานได้ จากนั้นเรียกใช้จาก Finder หรือ Terminal หรือใช้.commandส่วนขยายเพื่อเปิดโดยการดับเบิ้ลคลิก สคริปต์จะไม่ข้ามการควบคุมความเป็นส่วนตัวของ macOS หรือให้สิทธิ์ผู้ดูแลระบบ
สคริปต์เชลล์ขนาดสั้นเริ่มต้นด้วย shebang ที่เลือกใช้ zsh
1. เขียนคำสั่งลงในไฟล์ข้อความธรรมดา
สคริปต์เชลล์คือไฟล์ข้อความที่มีคำสั่งต่างๆ เริ่มต้นด้วยshebang บรรทัดแรกที่บอก macOS ว่าควรใช้เชลล์ใดในการตีความไฟล์ ปัจจุบันเชลล์เริ่มต้นสำหรับหน้าต่าง Terminal ใหม่คือ zsh แต่ผู้ดูแลระบบสามารถตั้งค่าเชลล์เริ่มต้นอื่นได้ ตามที่ Apple อธิบายไว้ในคู่มือ Terminal ตัวอย่างนี้ใช้ zsh อย่างชัดเจน:
#!/bin/zsh
# Print a message when the script runs
echo "Script is running"
ใส่คำสั่งไว้ในบรรทัดแยกกันใต้ shebang shebang จะเลือกตัวแปลภาษา ดังนั้นจึงต้องใช้ไวยากรณ์ที่ตัวแปลภาษานั้นรองรับ ตัวอย่างเช่น สคริปต์ Bash สามารถเริ่มต้นด้วย ` <script>` คู่มือสคริปต์เชลล์ #!/bin/bashของ Apple อธิบายพื้นฐานไว้
คุณสามารถใช้ TextEdit ได้ แต่ต้องแน่ใจว่าไฟล์เป็นข้อความธรรมดา: เอกสาร TextEdit ใหม่บางฉบับอาจเป็นข้อความแบบ Rich Text เลือกFormat > Make Plain Text หรือตั้งค่ารูปแบบเอกสารใหม่ของ TextEdit เป็น Plain Text ในการตั้งค่า การจัดรูปแบบ Rich Text ไม่ใช่ Shell Code Apple ได้อธิบายตัวเลือกเหล่านี้ไว้ในคู่มือ TextEdit นอกจากนี้ โปรแกรมแก้ไขโค้ดหรือโปรแกรมแก้ไขบรรทัดคำสั่งก็nanoใช้งานได้เช่นกัน
บันทึกสคริปต์โดยใช้ส่วนขยาย .command ในตำแหน่งที่คุณสามารถค้นหาได้
2. บันทึกโดยใช้.commandส่วนขยาย
บันทึกไฟล์ข้อความธรรมดาด้วยชื่อที่สื่อความหมาย เช่นMyScript.command`.script.txt` นามสกุลไฟล์ `.script.txt` จะช่วยให้ Finder เปิดสคริปต์ใน Terminal เมื่อคุณดับเบิ้ลคลิก เอกสารสำหรับนักพัฒนาของ Apple ที่เก็บไว้ในคลังข้อมูลอธิบายขั้นตอนการทำงานแบบดับเบิ้ลคลิกสำหรับสคริปต์เชลล์ ตรวจสอบชื่อไฟล์สุดท้ายใน Finder: ถ้าลงท้ายด้วย `.script.txt` .command.txtให้เปลี่ยนชื่อไฟล์เพื่อให้เหลือเพียงนามสกุล `.script.txt` เท่านั้น.commandเก็บตัวอย่างไว้ในตำแหน่งที่เหมาะสม เช่น เดสก์ท็อป ขณะที่คุณกำลังตั้งค่า
หาก macOS ถามว่าต้องการใช้ส่วนขยายใด ให้เลือกส่วนขยายเดิม.commandและตรวจสอบให้แน่ใจว่า Finder ยังไม่ได้เพิ่มส่วนขยาย.txtดังกล่าว
3. ทำให้สคริปต์สามารถเรียกใช้งานได้
เปิดเทอร์มินัลและให้สิทธิ์บัญชีของคุณในการเรียกใช้ไฟล์ สำหรับตัวอย่างที่บันทึกไว้บนเดสก์ท็อป ให้ป้อน:
chmod u+x "$HOME/Desktop/MyScript.command"
กดปุ่ม Enter u+xเพื่อเพิ่มสิทธิ์ในการเรียกใช้งานให้กับเจ้าของไฟล์ เครื่องหมายอัญประกาศจะป้องกันเส้นทางที่มีช่องว่าง เปลี่ยนเส้นทางตัวอย่างหากจำเป็น ลากไฟล์ลงในเทอร์มินัล หรือใช้เมนู Option-click ของ Finder เพื่อคัดลอกเส้นทางของไฟล์ Apple แสดงวิธีการเดียวกันในคำแนะนำเกี่ยวกับไฟล์ที่สามารถเรียกใช้งาน ได้
คำสั่ง chmod จะเพิ่มสิทธิ์ในการเรียกใช้งานให้กับเจ้าของไฟล์
4. รันสคริปต์
ดับเบิ้ลคลิกMyScript.commandใน Finder เพื่อเรียกใช้ใน Terminal ผลลัพธ์และข้อผิดพลาดจะปรากฏที่นั่น หรือป้อนพาธแบบเต็ม:
"$HOME/Desktop/MyScript.command"
หรือเปลี่ยนไปที่โฟลเดอร์ก่อน แล้วจึงใส่เครื่องหมายโคลอน./(:) นำหน้าชื่อไฟล์
cd "$HOME/Desktop"
./MyScript.command
คำสั่ง นี้./บอกให้เชลล์เรียกใช้ไฟล์ในโฟลเดอร์ปัจจุบันคู่มือคำสั่งเทอร์มินัล ของ Apple อธิบายวิธีการเรียกใช้ไฟล์ปฏิบัติการโดยใช้พาธของไฟล์
เรียกใช้ไฟล์โดยระบุพาthของไฟล์ และตรวจสอบผลลัพธ์ใน Terminal
แก้ไขปัญหาข้อผิดพลาดทั่วไป
“ไม่ได้รับอนุญาต”: ตรวจสอบให้แน่ใจว่าคุณได้เรียกchmod u+xใช้คำสั่งกับไฟล์ที่ถูกต้อง หากจำเป็น ให้ลองเรียกใช้คำสั่งซ้ำอีกครั้งโดยใช้พาธที่ถูกต้องของไฟล์ การทำให้ไฟล์สามารถเรียกใช้งานได้ไม่ได้หมายความว่าทุกคำสั่งภายในไฟล์นั้นจะได้รับอนุญาต
“ไม่พบไฟล์หรือไดเร็กทอรีดังกล่าว”: โปรดตรวจสอบตำแหน่งที่ตั้งและการสะกด รวมถึงนามสกุลไฟล์ด้วย ไฟล์ที่บันทึกโดยไม่ได้ตั้งใจMyScript.command.txtจะไม่ตรงกับคำสั่งข้างต้น การลากไฟล์เข้าไปในเทอร์มินัลอาจช่วยแทรกพาธของไฟล์ได้
คำสั่งทำงานได้เมื่อพิมพ์ แต่ไม่ทำงานเมื่อเขียนในสคริปต์: สคริปต์อาจใช้เชลล์ที่แตกต่างกัน หรืออาศัยนามแฝง ตัวแปรสภาพแวดล้อม หรือไดเร็กทอรีการทำงานจากเซสชันเทอร์มินัลแบบโต้ตอบของคุณ ใช้ shebang ที่ถูกต้อง หลีกเลี่ยงการใช้นามแฝง และระบุเส้นทางไฟล์อย่างชัดเจน หากคำสั่งต้องการโฟลเดอร์เฉพาะ ให้เพิ่มcdบรรทัดที่เหมาะสมไว้ใกล้กับส่วนต้นของสคริปต์
ทำความเข้าใจเรื่องสิทธิ์การเข้าถึงก่อนแชร์
บิตการเรียกใช้งานนั้นแยกต่างหากจากสิทธิ์ความเป็นส่วนตัว โดยปกติสคริปต์จะทำงานโดยใช้บัญชีของคุณ ใช้sudoเฉพาะกับคำสั่งที่ต้องการสิทธิ์ผู้ดูแลระบบเท่านั้น
ระบบปฏิบัติการ macOS อาจขอสิทธิ์เข้าถึงโฟลเดอร์ที่ได้รับการป้องกันหรือแอปพลิเคชันอื่นๆ โปรดตรวจสอบคำขอแต่ละรายการและอนุญาตเฉพาะสิ่งที่จำเป็นเท่านั้น ตรวจสอบเมนู Apple > การตั้งค่าระบบ > ความเป็นส่วนตัวและความปลอดภัย สำหรับไฟล์และโฟลเดอร์ และการตั้งค่าความเป็นส่วนตัวที่เกี่ยวข้อง การอนุมัติขึ้นอยู่กับสิทธิ์การเข้าถึงที่ร้องขอและแอปพลิเคชันที่ร้องขอ ไม่ใช่สิทธิ์แบบครอบคลุมต่อคำสั่ง และจะไม่ติดไปกับสคริปต์ที่แชร์
ก่อนที่จะรันหรือแชร์สคริปต์ โปรดอ่านทุกบรรทัดและตรวจสอบให้แน่ใจว่าคุณเข้าใจว่ามันเปลี่ยนแปลงอะไรบ้าง.commandไฟล์มีความสะดวกเพราะสามารถรันได้ทันทีที่เปิด ดังนั้นควรใช้ไฟล์จากแหล่งที่มาที่คุณเชื่อถือได้เท่านั้น