Làm cách nào để thực thi tập lệnh Ruby trong Terminal?


231

Tôi đã thiết lập mọi thứ tôi cần trên máy Mac (Ruby, Rails, Homebrew, Git, v.v.) và tôi thậm chí đã viết một chương trình nhỏ. Bây giờ, làm thế nào để tôi thực hiện nó trong Terminal? Tôi đã viết chương trình bằng Redcar và lưu nó dưới dạng .rb, nhưng tôi không biết cách thực hiện nó thông qua Terminal. Tôi muốn chạy chương trình và xem nếu nó thực sự hoạt động. Làm thế nào để tôi làm điều này?


54
Tôi không biết ai đã bỏ phiếu cho câu hỏi đầu tiên của bạn, nhưng tôi nghĩ điều đó thật khắc nghiệt nên tôi đã bỏ phiếu lại. Chúc may mắn với tất cả mọi thứ, ban đầu có vẻ rất khó hiểu nhưng kiên trì và không lâu sau đó sẽ là bản chất thứ hai, và sau đó bạn sẽ giúp đỡ những người khác ở đây.
iain

11
Chuyển nhanh đến năm 2017 và hiện tại OP có 2.555 điểm và hơn 100 huy hiệu. :)
Daniel

Câu trả lời:


245

Chỉ cần gọi: ruby your_program.rb

hoặc là

  • bắt đầu chương trình của bạn với #!/usr/bin/env ruby,
  • làm cho tập tin của bạn thực thi bằng cách chạy chmod +x your_program.rb
  • và làm ./your_program.rb some_param

1
Khi tôi gọi ruby ​​your_program.rb, tôi nhận được điều này: ruby: Không có tệp hoặc thư mục như vậy - testapp.rb (LoadError)
Tom Maxwell

1
@TomMaxwell Khi anh ấy nói ruby your_program.rb, bạn phải thay thế 'your_program.rb' bằng bất cứ tên nào trong chương trình của bạn. Trong trường hợp này, dựa trên thông báo lỗi của bạn, nó có thể được cho là ruby testapp.rb. Mặc dù @Robin đúng ở chỗ bạn cần ở cùng thư mục với tệp Ruby.
Joshua Cheek

2
Tôi nghĩ rằng anh ấy đã làm, nếu không thì thông báo lỗi sẽ không phải là về testapp.rb. Nhưng dựa trên những bình luận khác của anh ấy, anh ấy không biết làm thế nào để cdvào thư mục Desktop của mình, vì vậy đó phải là nó.
Robin

1
làm thế nào nếu có một số yêu cầu trong tệp .rb?
Jacky

1
@Chris Trang, tôi thực sự đã có vấn đề này bằng cách sử dụng cách đầu tiên. Tôi đã thay đổi mod như bạn đề nghị và nó hoạt động! Cảm ơn rất nhiều!
nstein

36

Mở terminal của bạn và mở thư mục lưu tập tin.
Ví dụ/home/User1/program/test.rb

  1. Thiết bị đầu cuối mở
  2. cd /home/User1/program
  3. ruby test.rb

định dạng hoặc test.rb

class Test 
  def initialize
   puts "I love India"
  end
end

# initialize object
Test.new

đầu ra

I love India

2
Classnên class(với một c thấp hơn ). Nếu không nó sẽ không hoạt động.
DanielH

24

Giả sử trình thông dịch ruby ​​nằm trong PATH của bạn (nó nên như vậy), bạn chỉ cần chạy

ruby your_file.rb

Điều đó mang lại cho tôi một thông báo lỗi, vì vậy tôi đoán rằng tôi đã làm gì đó sai trong khi thiết lập. Làm thế nào để làm điều đó?
Tom Maxwell

ruby: Không có tệp hoặc thư mục như vậy - testapp.rb (LoadError)
Tom Maxwell

Testapp.rb là gì? Bạn có trong cùng một dir nơi nó là?
Sergio Tulentsev

Tôi nghĩ những gì bạn nói về thông dịch viên ruby ​​trong PATH của tôi là vấn đề. Tôi có lẽ đã không làm một cái gì đó chính xác; tôi phải mất rất nhiều thời gian để làm mọi thứ được thiết lập.
Tom Maxwell

2
cdlà một lệnh đầu cuối thay đổi thư mục hiện tại. Ví dụ: để truy cập thư mục "Máy tính để bàn" trong HOME_DIR của bạn, bạn phải làm cd ~/Desktop.
Sergio Tulentsev

15

Để gọi tập tin ruby, sử dụng: ruby your_program.rb

Để thực thi tập tin ruby ​​của bạn dưới dạng tập lệnh:

  1. bắt đầu chương trình của bạn với #!/usr/bin/env ruby

  2. chạy tập lệnh đó bằng cách sử dụng ./your_program.rb param

  3. Nếu bạn không thể thực thi kịch bản này, hãy kiểm tra quyền đối với tệp.

Nói chung để thực thi một tập lệnh, bạn cần cấp quyền thực thi. Nếu điều đó không được đưa ra, nó sẽ không hoạt động với lệnh trên. Kiểm tra quyền của bạn và sau đó sử dụng cùng một lệnh.
Priti Biyani

4

Chỉ cần gọi ruby XXXXX.rbtrong terminal, nếu trình thông dịch nằm trong biến $ PATH của bạn.

(điều này khó có thể là một điều đường ray, cho đến khi bạn có nó chạy.)


2

Mặc dù đã quá muộn để trả lời câu hỏi này, nhưng vẫn cho những người đến đây để xem giải pháp cho cùng một vấn đề giống như tôi và không nhận được câu trả lời thỏa đáng trên trang này, Lý do là bạn không có tệp của mình dưới dạng .rb mở rộng. Bạn hầu như có thể có nó trong chế độ văn bản đơn giản. Hãy để tôi giải thích. Liên kết toàn bộ giải pháp trên trang, ở đây bạn đi (giả sử tên tệp của bạn là abc.rb hoặc ít nhất là bạn đã tạo abc):

Nhập vào cửa sổ thiết bị đầu cuối:

cd ~/to/the/program/location
ruby abc.rb

và bạn đã hoàn thành

Nếu xảy ra lỗi sau

ruby: No such file or directory -- abc.rb (LoadError)

Sau đó vào thư mục mà bạn có tệp abc, đổi tên nó thành abc.rb Đóng gedit và mở lại tệp abc.rb. Áp dụng cùng một bộ lệnh và thành công!


2

Đối với những người không nhận được giải pháp cho câu trả lời cũ hơn, tôi chỉ cần đặt tên tệp của mình làm dòng đầu tiên trong mã của mình.

như vậy

 #ruby_file_name_here.rb

 puts "hello world"

1

Thiết bị đầu cuối mở

cd to/the/program/location
ruby program.rb

hoặc thêm #!/usr/bin/env rubyvào phần đầu tiên của chương trình của bạn (tập lệnh cho biết điều này được thực thi bằng Trình thông dịch Ruby)

Thiết bị đầu cuối mở

cd to/the/program/location
chmod 777 program.rb
./program.rb

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.