ฉันจะรันไฟล์. sh หรือ. คำสั่งในเทอร์มินัลได้อย่างไร


84

ฉันอยากจะเรียกใช้สคริปต์ที่ฉันดาวน์โหลดออนไลน์โดยตรงจาก Finder แต่เพียงแค่ดับเบิลคลิกที่ไฟล์ไม่ทำงาน

คำตอบ:


101

เปิด Terminal ให้พิมพ์sh /path/to/fileแล้วกด Enter

เร็วกว่าคือการพิมพ์shและเว้นวรรคแล้วลากไฟล์ไปที่หน้าต่างแล้วปล่อยไอคอนที่ใดก็ได้บนหน้าต่าง


3
คุณคิดว่าจะเกิดอะไรขึ้นถ้าเชลล์สคริปต์เขียนด้วยไวยากรณ์ของเชลล์อื่นเช่น tcsh, zsh หรือ ksh คำต่อท้ายshหมายถึงเชลล์สคริปต์ที่ไม่ใช่ "เรียกใช้สคริปต์ในเชลล์นี้"
fd0

3
@ fd0 สาย shebangจะดูแลสิ่งนั้น
14492

4
@ user14492- เมื่อคุณเรียกใช้เชลล์สคริปต์เนื่องจากshell shell_scriptบรรทัด shebang ถูกละเว้น เชลล์อ่านบรรทัดแรกเป็นความคิดเห็น
fd0

@ fd0 ฉันไม่เข้าใจ เป็นวิธีการsh /path/to/fileใด ๆ ความหมายที่แตกต่างจากทางเลือก/path/to/file.sh?
Pacerier

2
@ Pacerier- ในรูปแบบแรกผู้ใช้ที่เรียกใช้จะต้องสามารถอ่านไฟล์และเลือกล่ามที่จะอ่านไฟล์ ในรูปแบบที่สองการอนุญาตของไฟล์จะต้องอ่านและดำเนินการสำหรับผู้ใช้ที่เรียกใช้และล่ามจะถูกกำหนดโดย hash bang ในบรรทัดแรกของสคริปต์ ในทั้งสองกรณีเคอร์เนลจะไม่ตีความคำต่อท้ายในไฟล์
fd0

12

หรือคุณสามารถทำได้

cd /directory/with/executable
chmod +x executable     # only required if your file is not already executable
./executable

ซึ่งจะรันไฟล์เรียกทำงานด้วยเชลล์ที่ระบุ (ถ้าระบุใน shebang #!/bin/(shell)


1
ในคำถามที่ระบุว่า "เรียกใช้สคริปต์ที่ฉันดาวน์โหลดทางออนไลน์" ไฟล์ที่ดาวน์โหลดจากอินเทอร์เน็ตมักจะมีการตั้งค่าการอนุญาตเป็น 644
nohillside

@patrix ฉันคิดว่ามันไม่ใช่แค่อินเทอร์เน็ต แต่ทุกไฟล์ที่คัดลอกมาจากระบบไฟล์อื่นไปยังไฟล์ของคุณเพราะรูปแบบเริ่มต้นในบัญชีของคุณ
rwenz3l

8
chmod u+x myfile.sh
cp myfile.sh /usr/local/bin

แก้ไข~/.bash_profileและเพิ่มบรรทัดต่อไปนี้:

alias myfile=./myfile.sh

รันบรรทัดคำสั่งต่อไปนี้:

source ~/.bash_profile

จากนั้นคุณจะสามารถเรียกใช้ไฟล์ของคุณเป็นโปรแกรม

$ myfile


ใน Ubuntu สคริปต์ใด ๆ ในเส้นทางของคุณสามารถดำเนินการได้ตราบใดที่คุณมี#~/bin/shในขณะOSXที่สคริปต์ควรมี.shส่วนขยายและaliasแต่ละสคริปต์ : -O
Fabrizio Bertoglio

5

ทำตามขั้นตอนเหล่านี้เพื่อเรียกใช้ไฟล์สคริปต์:

  1. คลิกขวาที่ไฟล์. sh

  2. เลื่อนเมาส์ไปที่เปิดด้วย

  3. เลือกอื่น ๆ ...

  4. คุณควรอยู่ในโฟลเดอร์Applications เปิดโฟลเดอร์Utilitiesและเลือก Terminal.app

  5. หากคุณไม่สามารถเลือก Terminal.app เปลี่ยนการใช้งานที่เปิดใช้งานจากโปรแกรมแนะนำการใช้งานทั้งหมด มันอยู่ที่ด้านล่างของหน้าต่าง

  6. หากคุณต้องการที่จะเปิดทุก.shไฟล์ที่มี Terminal.app ติ๊กเสมอเปิดด้วย

  7. กดปุ่มOpenที่มุมล่างขวาของหน้าต่าง


3

เหตุผลที่มันไม่ทำงานหลังจากดาวน์โหลดคือการอนุญาตของไฟล์ไม่อนุญาต เมื่อต้องการเปิดใช้สิทธิ์ดำเนินการเปิด Terminal chmod 755 /path/to/scriptและประเภท แทนที่จะพิมพ์เส้นทางแบบเต็มคุณสามารถลากสคริปต์ไปยังหน้าต่างเทอร์มินัลจาก Finder /path/to/scriptจากนั้นในการดำเนินการเพียงแค่ใส่ อีกครั้งคุณสามารถลากและวางไฟล์ลงในหน้าต่างเทอร์มินัล ไวยากรณ์นี้ควรรันสคริปต์โดยใช้เชลล์ที่ถูกต้องตามที่กำหนดไว้ในบรรทัดแรกของสคริปต์


ไฟล์. sh ของฉันเปิดขึ้นในตัวแก้ไขข้อความที่ฉันสร้างไฟล์ด้วย ฉันจะเปิดมันในเทอร์มินัลแทนได้อย่างไร? ฉันตั้งสิทธิ์ที่ถูกต้องแล้ว
บาร์ต

@bart คุณต้องเพิ่มนามสกุล. command เพื่อเรียกใช้งานสคริปต์ภายใน finder โดยตรง
rwenz3l
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.