Làm thế nào để tôi thực thi các tập lệnh dòng lệnh?


17

Trong Windows, tôi có thể tạo .battập tin. Tôi nhấp đúp chuột vào nó và tất cả các dòng được diễn giải như thể tôi đã nhập nó vào bảng điều khiển.

Trong OS X, tôi phải sử dụng tập tin hoặc chương trình nào? Nếu tôi muốn viết một tập tin với;

 echo hello world

Tôi muốn nhấp đúp vào tệp này và để nó thực thi trong bảng điều khiển. Làm thế nào tôi làm điều này?


tập tin có cần chạy khi nhấp đúp chuột không, hay bạn chỉ muốn chạy tập tin bằng cách gõ tên tập tin?
Phil M


tập tin nhấp đúp nhanh hơn :)
Rodrigo

Câu trả lời:


24

Nền tảng thiết bị đầu cuối trong OS X giống như nền tảng được sử dụng trong Linux. Những gì bạn đang tìm kiếm đặc biệt thường được gọi là "Shell Scripting".

Shell mặc định khi bạn mở Terminal.app(nằm trong /Applications/Utilties) là shell bash.

OS X đã có trình xử lý shell tích hợp có thể truy cập thông qua Finder và các ứng dụng khác thông qua .commandtiện ích mở rộng, mặc dù không bực bội khi không .shmở rộng. Tuy nhiên, việc thiết lập tập lệnh lên để chạy qua Finder thậm chí còn phức tạp hơn.

  1. Tạo một tập lệnh shell đơn giản, như ví dụ của bạn Tôi đã tạo một ứng dụng Hello World:
#!/bin/bash
echo "Hello World"
  1. Lưu tập tin này như HelloWorld.command.

  2. Cho phép tập tin này được thực thi. chmod u+x HelloWorld.commandnên làm điều đó

  3. Mở thư mục nơi bạn đã lưu tệp này trong Finder. Sau đó nhấp đúp chuột vào HelloWorld.commandtập tin.

Điều này sẽ mở ra một thiết bị đầu cuối và thực thi tập lệnh, đầu ra trên máy tính của tôi là như sau:

$ /Users/jason/Appluggest/HelloWorld.command; lối ra;
Xin chào thế giới
đăng xuất

[Quá trình hoàn thành]

Cách khác để thực thi tệp này là trong khi vẫn ở trong Terminal, chỉ cần đưa ra ./HelloWorld.commandgiả sử bạn đang ở trong cùng thư mục với tệp.

Làm như vậy sẽ dẫn đến đầu ra đơn giản hơn nhiều:

Ứng dụng jason-mac $ ./HelloWorld.command
Xin chào Thế giới
ứng dụng jason-mac $

Bạn vừa tạo và thực thi một tập lệnh shell trong OS X!


Bên cạnh đó: Thật bực bội khi OS X không làm điều này với các tệp ".sh", chỉ các tệp ".command". Vâng, có thể thay đổi điều này, nhưng .command đã tồn tại, vì vậy đây là giải pháp được đề xuất của tôi.
Jason Salaz

Bạn có muốn đặt câu hỏi làm thế nào để tiêm .sh vào cơ sở dữ liệu dịch vụ khởi chạy không?
bmike

Rõ ràng là bạn đã có ý tưởng (ý nghĩ thậm chí không có trong đầu tôi), vì vậy bạn được hoan nghênh thực hiện nó.
Jason Salaz

Tôi có ý tưởng từ bạn - ở đây đi, tôi tự hỏi tất cả mọi thứ ...
bmike

Nó cho tôi:chown: u+x: Invalid argument
Rodrigo

4

Tương đương với Bảng điều khiển hoặc Dấu nhắc lệnh trong Windows là ứng dụng Terminal nằm trong / Ứng dụng / Tiện ích /

Tương đương với DOS (hoặc bất cứ thứ gì họ gọi nó ngày nay) là "bash"

Tương đương với một tệp bó (.bat) trong Windows là tập lệnh shell (.sh)

Chỉ cần thực hiện tìm kiếm Google cho "bash" "tham khảo" và bạn sẽ tìm ra phần còn lại. Tôi cũng sẽ khuyên bạn nên mua Bash Cookbook (O'Reilly).

Cụ thể, đây sẽ là những gì bạn sẽ nhập vào một cửa sổ đầu cuối để có được tập lệnh "hello world":

Để tạo tập tin:

    echo "echo hello world" > file.sh

Để thay đổi quyền để làm cho tập tin thực thi:

    chmod 755 file.sh

Để chạy tập lệnh:

    ./file.sh

Nếu bạn muốn có thể nhấp đúp vào nó từ Finder, nhấp chuột phải (hoặc nhấp chuột điều khiển) vào tệp và chọn Nhận thông tin, sau đó trong Open With, chọn ứng dụng Terminal. Hoặc bạn có thể sử dụng phần mở rộng .command thay vì phần mở rộng .sh.


2

Bạn có thể muốn cung cấp cho AppleScript một cái nhìn. Cuốn sách này của Sal Soghoian được nhiều người xem là cuốn sách về AppleScript.

Một cách hay khác để người dùng tự động hóa ứng dụng Mac là sử dụng Automator . Bạn có thể muốn thử nó là tốt. Hi vọng điêu nay co ich.

Cập nhật

Có vẻ như bạn đang tìm kiếm một cái gì đó như kịch bản shell Unix. Đây hai hướng dẫn là tốt và dường như để bù đắp những điều cơ bản.


Tôi đã thấy điều này, nhưng AppleScript không phải là tập lệnh đầu cuối. Tôi nghĩ bạn có thể làm: "Đi đến terminal và viết lệnh x". Chà, không phải là phong cách .bat (và khó khăn hơn một chút)
Rodrigo

Có vẻ như các kịch bản shell Unix là những gì bạn đang tìm kiếm.
Christian Correa

0

Kịch bản Shell. Tôi không nghĩ Ask Another sẽ là nơi thích hợp để thảo luận sâu hơn nhưng có một hướng dẫn rất chi tiết ở đây: http://tldp.org/LDP/abs/html/index.html

Mac OS X được chứng nhận UNIX từ 10,5 trở đi (phải không?) Nên sự khôn ngoan này ở đây cũng có thể áp dụng cho Linux và các HĐH giống UNIX khác.

(theo cách ít phức tạp hơn, Automator của Mac OS X khá mạnh mẽ, cũng như AppleScript Editor, cả hai đều có thể thực thi các tập lệnh shell và các lệnh khác với các chương trình và gói chúng thành một gói .app thuận tiện cho Launchpad hoặc chia sẻ với bạn bè)


Từ phần giới thiệu của hướng dẫn mà tôi đã liên kết: "Một chương trình shell, được gọi là script, là một công cụ dễ sử dụng để xây dựng các ứng dụng bằng cách" dán lại "các cuộc gọi hệ thống, công cụ, tiện ích và nhị phân được biên dịch. Các lệnh, tiện ích và công cụ UNIX có sẵn để gọi bằng tập lệnh shell. Nếu điều đó là không đủ, các lệnh shell bên trong, chẳng hạn như kiểm tra và xây dựng vòng lặp, cho vay thêm sức mạnh và tính linh hoạt cho các tập lệnh. "
Swizzlr

Và bởi "nơi thích hợp" Tôi nghĩ kịch bản shell thực sự được thảo luận tốt nhất trên SuperUser: superuser.com/questions/tagged/shell-script
Swizzlr


-2

Đối với mac là tệp .sh aka Shell script


Nhưng khi gọi nó từ người tìm, bạn sẽ muốn sử dụng .command. .shlà một kiểu tệp chưa được xử lý từ trình tìm kiếm (theo mặc định).
Jason Salaz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.