Làm cách nào để tôi tạo tập tin này. Thực thi thông qua nhấp đúp chuột?


165

Trước hết tôi đang sử dụng Mac.

Tiếp theo, tôi cần thực thi "file.sh" này, chúng tôi sẽ gọi nó. Mỗi khi tôi cần thực thi, tôi phải mở Terminal và gõ:

cd /Users/Jacob/Documents/folderWithFileInIt
bash file.sh

Điều này không sao, nhưng tôi cảm thấy sẽ nhanh hơn rất nhiều nếu tôi thực hiện tập tin khi nhấp đúp chuột, bạn có nghĩ vậy không?

Vì vậy, câu hỏi của tôi là, làm thế nào để tôi thực hiện tập tin này thông qua nhấp đúp chuột?

Ý tưởng của tôi là:

a) gõ một cái gì đó như chmod vào terminal và thay đổi quyền?

b) tạo một tập tin, đặt mã tôi đã viết ở trên ^ và sau đó làm cho tập tin đó có thể thực thi được không?

c) thực hiện tự động hóa bằng cách nào đó để làm điều này?

Cách nào là tốt nhất, hoặc có cách nào tốt hơn? Ngoài ra, vui lòng giải thích càng nhiều càng tốt, tôi mới biết về Terminal. Cảm ơn.


1
Nếu bạn muốn một tập lệnh đẹp, dễ bấm, thì có, Automator là công cụ phù hợp. Bạn dường như biết rằng từ câu hỏi của bạn, vậy câu hỏi của bạn là gì?
Rob Napier

Câu hỏi tương tự, nhưng tôi có dmg jdk, một số thư mục ứng dụng để tạo ra các biểu tượng, một số Jar ..nhưng tôi đang thất bại trong việc chạy / tạo qua công cụ tự động hoặc .command
Santosh

Câu trả lời:


349

Theo mặc định, *.shcác tệp được mở trong trình soạn thảo văn bản (Xcode hoặc TextEdit). Để tạo một tập lệnh shell sẽ thực thi trong Terminal khi bạn mở nó, hãy đặt tên cho nó bằng phần mở rộng lệnh Lệnh, ví dụ , file.command. Theo mặc định, chúng được gửi đến Terminal, tệp này sẽ thực thi tệp dưới dạng tập lệnh shell.

Bạn cũng sẽ cần đảm bảo tệp có thể được thực thi, ví dụ:

chmod +x file.command

Không có điều này, Terminal sẽ từ chối thực hiện nó.

Lưu ý rằng tập lệnh không phải bắt đầu bằng #!tiền tố trong kịch bản cụ thể này, vì Terminal đặc biệt sắp xếp để thực thi nó với trình bao mặc định của bạn. (Tất nhiên, bạn có thể thêm một #!dòng nếu bạn muốn tùy chỉnh shell nào được sử dụng hoặc nếu bạn muốn đảm bảo rằng bạn có thể thực thi nó từ dòng lệnh trong khi sử dụng shell khác.)

Cũng lưu ý rằng Terminal thực thi kịch bản shell mà không thay đổi thư mục làm việc. Bạn sẽ cần bắt đầu tập lệnh của mình bằng một cdlệnh nếu bạn thực sự cần nó để chạy với một thư mục làm việc cụ thể.


1
Cảm ơn câu trả lời hữu ích hơn.
Jacob

46
Ngoài ra, bạn có thể sử dụng cd "`dirname "$0"`"để đặt thư mục làm việc hiện tại vào thư mục chứa skript shell của bạn.
Gearsdigital

3
Vì lý do thẩm mỹ, bạn cũng nên nhấp chuột phải vào tệp .command và mở infos. Ở đó bạn có tùy chọn để ẩn hậu tố (dưới tên & hậu tố).
Bijan

Tôi sử dụng phương pháp này để chạy các ứng dụng thông qua open -n ...lệnh. Nó hoạt động, nhưng mỗi khi cửa sổ Terminal mở và hiển thị cho tôi "[Quá trình hoàn tất]". Có thể ngăn chặn sự xuất hiện của cửa sổ Terminal?
Nik

1
@Nik Không có điểm nào để chạy nó trong Terminal nếu bạn không muốn nó hiển thị trong cửa sổ terminal. Thay vào đó, làm cho nó trở thành một gói ứng dụng có khả năng thực thi là tập lệnh shebang. Hoặc tạo một applet AppleScript hoặc Automator chạy tập lệnh. Bạn cũng có thể sử dụng Tùy chọn đầu cuối để thay đổi cấu hình để đóng cửa sổ khi quá trình thoát, nhưng đó không phải là giải pháp tốt nhất nếu bạn chỉ muốn chạy tập lệnh shell mà không có sự tương tác của người dùng.
Chris Trang

31

Xóa phần mở rộng hoàn toàn và sau đó bấm đúp vào nó. Hầu hết các kịch bản shell hệ thống là như thế này. Miễn là nó có shebang, nó sẽ hoạt động.


1
BTW, "shebang" chủ yếu là dòng này trước bất kỳ dòng nào: #! / Bin / sh nhưng nó có thể khác, đọc liên kết được cung cấp cho các trường hợp khác.
Lukas Liesis

Cách tiếp cận này không cần làm chmod?
Atul

11

Bạn chỉ có thể yêu cầu Finder mở .shtệp trong Terminal:

  1. Chọn tập tin
  2. Nhận thông tin (cmd-i) trên đó
  3. Trong phần "Mở bằng", chọn "Khác" trong menu bật lên
  4. Chọn Terminal làm ứng dụng

Điều này sẽ có tác dụng chính xác giống như đổi tên nó thành .commandngoại trừ bạn không phải đổi tên nó :)


8
  1. Ra mắt nhà ga
  2. Loại -> tên tệp nano
  3. Dán nội dung tệp Batch và lưu nó
  4. Nhập -> chmod + x fileName
  5. Nó sẽ tạo tập tin exe bây giờ bạn có thể nhấp đúp và nó.

Tên tệp nên trong dấu ngoặc kép. Vì tôi đang sử dụng Mac-> Trong trường hợp của tôi, nội dung của tệp bó

cd / Users / yourName / Documents / SeleniumServer

java -jar selenium-server-standalone-3.3.1.jar -role hub

Nó sẽ hoạt động chắc chắn


0

bạn có thể thay đổi tập tin thực thi bằng cách sử dụng chmodnhư thế này

chmod 755 file.sh

và sử dụng lệnh này để thực thi

./file.sh

Chào mừng đến với SO! Câu trả lời của bạn không thêm bất cứ điều gì vào câu trả lời đã được chấp nhận. Vui lòng giải thích tại sao điều này khác với các câu trả lời khác đã tồn tại.
GabrielOshiro
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.