簡體   English   中英

如何將Ruby腳本制作為bash命令?

[英]How do I make a Ruby script into a bash command?

我有一個Ruby文件,並將其作為ruby file.rb "parameters" 我更喜歡將其作為regtask parameters運行,而不必每次都包含ruby和文件名。 我希望它與ls處於同一級別。 我將如何完成?

編輯文件,確保這是第一行,這樣您的系統就知道如何執行文件:

#!/usr/bin/env ruby

接下來,更改文件的權限以使其可執行:

chmod a+x file.rb

最后,重命名它並將其移動到將要執行的位置,而無需編寫其完整路徑:

mkdir -p ~/bin
mv file.rb ~/bin/regtask

(大多數系統會自動將~/bin添加到PATH如果存在);如果不存在,則必須自己在啟動文件中將其添加到PATH 。)

這應該有幫助。如果您遇到任何問題,請告訴我。

http://commandercoriander.net/blog/2013/02/16/making-a-ruby-script-executable/

使Ruby腳本可執行

這是* nix社區中的常識,但是對於許多新開發人員而言,將Ruby腳本轉換為可執行的命令行程序就像魔術一樣。 盡管Internet上還有其他參考,但對於此處的帖子,我將簡要說明如何從直接調用Ruby運行Ruby腳本到僅按其名稱運行腳本。

我們首先假設我們有一個簡單的Ruby腳本,該腳本在命令行上顯示“ hello”。 我們的腳本名稱將為greeter.rb 該文件包含一行Ruby代碼:

puts "Hello!"`

要運行腳本,我們必須輸入ruby greeter.rb 只輸入greeter並仍然運行腳本會不會很好呢? 是的,會的。

首先,我們需要告訴Bash如何處理文件,因為我們不會直接將腳本傳遞給Ruby。 為此,我們將以下內容添加到腳本的最上方:

#!/usr/bin/env ruby
puts "Hello!"

第一行是Bash指令,它通過詢問env命令指定的Ruby當前配置版本,基本上告訴Bash運行文件的程序。 有關env工作原理的更多信息,請嘗試在命令行中輸入man env

其次,我們需要使腳本可執行,這需要更改文件權限。 如果文件權限的概念是新概念,請在此處閱讀。 基本上,文件具有三種類型的權限。 它們可以被讀取,寫入和執行。 大多數文件通常以僅具有讀取和寫入訪問權限開始。 由於我們要執行腳本,因此我們將不得不授予其執行權限。

這樣做只是一個簡單的Bash命令。 在命令行上,導航到包含greeter.rb文件的目錄。 現在,要檢查權限,請運行:

ls -l greeter.rb

輸出將如下所示:

-rw-r--r--    1 username  staff   13 Feb 16  21:10 greeter.rb

您自己的用戶名將顯示在username的位置,並且創建日期自然會有所不同,但否則輸出將幾乎相同。 該行的第一部分是啟示性的部分。 字母rw指定讀取和寫入權限。

我們將添加執行權限,該權限將在該行中顯示為x。 要添加執行權限,請運行以下命令。

chmod 755 greeter.rb

現在,如果您使用ls -l greeter.rb再次檢查文件權限,則輸出應該有所不同。

-rwxr-xr-x  1 username  staff     13 Feb 16 21:20 greeter.rb

x的存在指示文件可以直接運行而無需先調用Ruby。 以下命令應使我們的文件說“你好”。

./greeter.rb

差不多好了。 現在,我們只需要刪除前綴./ ,該前綴告訴Bash在當前目錄中尋找greeter.rb 不過,在完成最后一步之前,讓我們將文件重命名為greeter

mv greeter.rb greeter

現在,最后一步。 每次我們調用Bash程序(例如lschmodmv等)時,Bash都會在預定義的文件夾列表中進行搜索以查找這些程序。 這稱為路徑。 要查看計算機上設置的路徑,請嘗試:

echo "$PATH"

輸出應該是各種系統關鍵文件夾的長字符串。 我們需要將應用程序放入這些文件夾之一。 傳統上,最好將/usr/bin//bin/類的文件夾保留下來。 相反,任何類型的用戶添加都應放在/usr/local/bin/ 如果該文件夾不存在,請使用以下命令創建它:

mkdir -p /usr/local/bin/

現在,我們可以將問候語移動到該文件夾​​中,或者將應用程序保留在原位置,僅在/usr/local/bin/文件夾中創建一個軟鏈接(或OS X術語中的別名)。 要創建別名,我們將使用ln命令。 greeter所在的目錄中,鍵入:

ln -s $PWD/greeter /usr/local/bin/注意, $PWD變量將擴展到我們的greeter腳本的絕對路徑。 現在,我們完成了,我們可以簡單地鍵入greeter來調用我們的Ruby腳本!

作為注腳,如果上述Bash命令中的任何一個看起來令人困惑,請嘗試通過鍵入man <command>查找其手冊頁。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM