使用FileUtils方法http://ruby-doc.org/core/classes/FileUtils.html比等價的Bash命令有什麼好處?使用Ruby FileUtils而不是Bash命令的好處?
回答
除了您不必擔心確保您的目標平臺上安裝了您正在使用的特定工具,以及超出正確引用shell怪異的問題(特別是在您遇到問題時儘管目標是Windows和Unix,Cygwin,GNUWin32等),如果您使用Ruby的FileUtils,則您的Ruby函數調用的開銷適中,而如果您使用外部實用程序,則會產生相當大的開銷一個外部過程每一個「呼叫」。跨多個平臺
它們更容易從Ruby腳本內部調用,因爲它們接受Ruby對象作爲參數。這意味着你不必處理逃跑,也不必每次打電話給他們。
你不必擔心做'系統時逃逸(」 cp「,file1,file2)'要麼(儘管你在做'system'(」cp#{file}#{file2}「)時纔會這樣做)。 – sepp2k 2010-09-11 02:08:54
轉義是什麼意思?什麼使用系統(「cp source_file destination_file」)轉義 – 2010-09-11 02:15:03
@ajsie:當使用'system'的單參數版本時,您需要轉義空格和特殊外殼字符。例如。 'system(「cp源文件目標文件」)'將不起作用,因爲空格不會被轉義。但是'system(「cp」,「source file」,「destination file」)'可以正常工作。 – sepp2k 2010-09-11 02:19:40
FileUtils方法在Windows上工作。
so shell can tools。 (即cygwin,GNU win32) – ghostdog74 2010-09-11 08:09:55
@ ghostdog74:僅當你先安裝它們。要點是:如果您使用FileUtils,您的腳本將在每個使用ruby的系統上運行。如果你使用cp,你的腳本將在每個系統上運行ruby和cp。沒有理由爲複製文件這樣簡單的事情添加額外的依賴關係。 – sepp2k 2010-09-11 11:58:27
你必須先安裝Ruby。 – ghostdog74 2010-09-12 08:23:18
當您將東西放到外殼中時,您正在爲這些應用程序添加依賴項。 FileUtils是純粹的紅寶石,所以它可以在ruby工作的任何地方工作(並且工作原理相同,或多或少)。
我不會說使用Ruby的FileUtils沒有什麼好處,因爲你可以在任何你有Ruby的地方使用它們(特別是如果你的任務在web開發中)。但這並不意味着你不能在其他平臺上使用這些shell工具。是的,您可以在* nix shell中編寫腳本,並且可以在使用cygwin或GNU win32(及其他)的Windows中進行很少修改或不進行修改的情況下運行它們。 就Ruby的FileUtils對shell的好處而言,它是最小的,因爲你可以用FileUtils做什麼,你也可以用shell來做。
- 作品不產生新的進程發出命令(因此它消耗更少的資源)
你必須執行ruby解釋器來運行ruby腳本。這是一個過程。不是嗎? – ghostdog74 2010-09-12 08:29:25
啊,我想我誤解了這個問題。我以爲他在問使用Ruby的shell命令。 – 2010-09-12 10:44:54
- 1. Bash:使用exit {{1:0}而不是退出$ 1的好處
- 2. ruby使用變量執行bash命令
- 3. Ruby on Rails:是否使用睡眠命令不好?多線程
- 4. 使用SqlCommand.ExecuteNonQuery而不是...的好處
- 5. 使用systemu而不是open3的好處?
- 6. 這是什麼ruby/bash命令執行?
- 7. -bash ruby命令未找到
- 8. 使用os.system(「bash code」)在Python腳本中調用bash命令是否很好用?
- 9. 從FileUtils獲取執行的命令?
- 10. 使用Ruby的運行時錯誤FileUtils
- 11. BASH getopt命令返回自己的參數而不是命令行參數
- 12. 從Linux上的命令隊列並行處理(bash,python,ruby ... whatever)
- 13. sed命令工作直列而不是內部的bash腳本
- 14. 使用命令模型的主要好處是什麼?
- 15. 在Ruby中使用fileutils重命名目錄
- 16. VIM中的一些bash命令將輸出發送到bash而不是VIM
- 17. Ruby正則表達式使用ruby命令,但不是shebang
- 18. 的bash腳本使用Ruby和變量運行FFmpeg的命令
- 19. Zenity bash命令不使用Java
- 20. 命令記錄終端不使用bash
- 21. 在bash使用printf命令
- 22. 當沒有找到命令時,bash`$?`返回0,而不是127
- 23. 如何運行具有Ruby腳本的.txt文件,而不使用命令行中的ruby命令
- 24. 在python 2.4中,如何使用csh而不是bash來執行外部命令?
- 25. bash命令行的處理流程
- 26. Mac上的Ruby FileUtils別名?
- 27. 執行命令,而不是在bash中設置爲變量
- 28. Ruby在Linux上執行Bash命令
- 29. 命令不認識bash命令別名
- 30. Ruby與不同用戶運行bash命令
,但您不得不擔心是否在目標上安裝了Ruby。 – ghostdog74 2010-09-12 08:24:12
這應該是很明顯的,因爲提問的人在談論Ruby模塊,該程序無疑是Ruby程序。 – 2010-09-12 08:35:27
我不是說它不是Ruby程序。我正在談論您的陳述「除了您不必擔心確保您的目標平臺上安裝了您正在使用的特定工具」這一事實。顯然,在運行他的Ruby程序之前,您還需要確保目標平臺具有Ruby。 – ghostdog74 2010-09-12 10:53:20